@ni/nimble-components 21.4.0 → 21.5.1

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 (547) hide show
  1. package/dist/all-components-bundle.js +864 -73
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +3598 -3450
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/all-components.js.map +1 -1
  6. package/dist/esm/anchor/index.js.map +1 -1
  7. package/dist/esm/anchor/styles.js.map +1 -1
  8. package/dist/esm/anchor/template.js.map +1 -1
  9. package/dist/esm/anchor/types.js.map +1 -1
  10. package/dist/esm/anchor-base/index.js.map +1 -1
  11. package/dist/esm/anchor-button/index.js.map +1 -1
  12. package/dist/esm/anchor-button/styles.js.map +1 -1
  13. package/dist/esm/anchor-button/template.js.map +1 -1
  14. package/dist/esm/anchor-button/types.js.map +1 -1
  15. package/dist/esm/anchor-menu-item/index.js.map +1 -1
  16. package/dist/esm/anchor-menu-item/styles.js.map +1 -1
  17. package/dist/esm/anchor-menu-item/template.js.map +1 -1
  18. package/dist/esm/anchor-tab/index.js.map +1 -1
  19. package/dist/esm/anchor-tab/styles.js.map +1 -1
  20. package/dist/esm/anchor-tab/template.js.map +1 -1
  21. package/dist/esm/anchor-tabs/index.js.map +1 -1
  22. package/dist/esm/anchor-tabs/styles.js.map +1 -1
  23. package/dist/esm/anchor-tabs/template.js.map +1 -1
  24. package/dist/esm/anchor-tree-item/index.js.map +1 -1
  25. package/dist/esm/anchor-tree-item/styles.js.map +1 -1
  26. package/dist/esm/anchor-tree-item/template.js.map +1 -1
  27. package/dist/esm/anchored-region/index.js.map +1 -1
  28. package/dist/esm/anchored-region/styles.js +6 -1
  29. package/dist/esm/anchored-region/styles.js.map +1 -1
  30. package/dist/esm/banner/index.js.map +1 -1
  31. package/dist/esm/banner/styles.js.map +1 -1
  32. package/dist/esm/banner/template.js.map +1 -1
  33. package/dist/esm/banner/types.js.map +1 -1
  34. package/dist/esm/breadcrumb/index.js.map +1 -1
  35. package/dist/esm/breadcrumb/styles.js.map +1 -1
  36. package/dist/esm/breadcrumb/types.js.map +1 -1
  37. package/dist/esm/breadcrumb-item/index.js.map +1 -1
  38. package/dist/esm/breadcrumb-item/styles.js.map +1 -1
  39. package/dist/esm/button/index.js.map +1 -1
  40. package/dist/esm/button/styles.js.map +1 -1
  41. package/dist/esm/button/types.js.map +1 -1
  42. package/dist/esm/card/index.js.map +1 -1
  43. package/dist/esm/card/styles.js.map +1 -1
  44. package/dist/esm/card/template.js.map +1 -1
  45. package/dist/esm/card-button/index.js.map +1 -1
  46. package/dist/esm/card-button/styles.js.map +1 -1
  47. package/dist/esm/checkbox/index.js.map +1 -1
  48. package/dist/esm/checkbox/styles.js.map +1 -1
  49. package/dist/esm/combobox/index.js.map +1 -1
  50. package/dist/esm/combobox/styles.js.map +1 -1
  51. package/dist/esm/combobox/template.js.map +1 -1
  52. package/dist/esm/combobox/types.js.map +1 -1
  53. package/dist/esm/dialog/index.js.map +1 -1
  54. package/dist/esm/dialog/styles.js.map +1 -1
  55. package/dist/esm/dialog/template.js.map +1 -1
  56. package/dist/esm/drawer/index.js.map +1 -1
  57. package/dist/esm/drawer/styles.js.map +1 -1
  58. package/dist/esm/drawer/template.js.map +1 -1
  59. package/dist/esm/drawer/types.js.map +1 -1
  60. package/dist/esm/icon-base/index.js.map +1 -1
  61. package/dist/esm/icon-base/styles.js.map +1 -1
  62. package/dist/esm/icon-base/template.js.map +1 -1
  63. package/dist/esm/icon-base/types.js.map +1 -1
  64. package/dist/esm/icons/add.js.map +1 -1
  65. package/dist/esm/icons/all-icons.js.map +1 -1
  66. package/dist/esm/icons/arrow-down-right-and-arrow-up-left.js.map +1 -1
  67. package/dist/esm/icons/arrow-down.js.map +1 -1
  68. package/dist/esm/icons/arrow-expander-down.js.map +1 -1
  69. package/dist/esm/icons/arrow-expander-left.js.map +1 -1
  70. package/dist/esm/icons/arrow-expander-right.js.map +1 -1
  71. package/dist/esm/icons/arrow-expander-up.js.map +1 -1
  72. package/dist/esm/icons/arrow-in-circle.js.map +1 -1
  73. package/dist/esm/icons/arrow-left-from-line.js.map +1 -1
  74. package/dist/esm/icons/arrow-out-circle.js.map +1 -1
  75. package/dist/esm/icons/arrow-partial-rotate-left.js.map +1 -1
  76. package/dist/esm/icons/arrow-right-to-line.js.map +1 -1
  77. package/dist/esm/icons/arrow-rotate-right.js.map +1 -1
  78. package/dist/esm/icons/arrow-u-rotate-left.js.map +1 -1
  79. package/dist/esm/icons/arrow-up-left-and-arrow-down-right.js.map +1 -1
  80. package/dist/esm/icons/arrow-up-right-from-square.js.map +1 -1
  81. package/dist/esm/icons/arrow-up.js.map +1 -1
  82. package/dist/esm/icons/arrows-maximize.js.map +1 -1
  83. package/dist/esm/icons/arrows-repeat.js.map +1 -1
  84. package/dist/esm/icons/at.js.map +1 -1
  85. package/dist/esm/icons/bars.js.map +1 -1
  86. package/dist/esm/icons/bell-and-comment.js.map +1 -1
  87. package/dist/esm/icons/bell-circle.js.map +1 -1
  88. package/dist/esm/icons/bell-solid-circle.js.map +1 -1
  89. package/dist/esm/icons/bell.js.map +1 -1
  90. package/dist/esm/icons/block-with-ribbon.js.map +1 -1
  91. package/dist/esm/icons/bold-b.js.map +1 -1
  92. package/dist/esm/icons/book-magnifying-glass.js.map +1 -1
  93. package/dist/esm/icons/calendar-check-lines.js.map +1 -1
  94. package/dist/esm/icons/calendar-day.js.map +1 -1
  95. package/dist/esm/icons/calendar.js.map +1 -1
  96. package/dist/esm/icons/chart-diagram-child-focus.js.map +1 -1
  97. package/dist/esm/icons/chart-diagram-parent-focus-two-child.js.map +1 -1
  98. package/dist/esm/icons/chart-diagram-parent-focus.js.map +1 -1
  99. package/dist/esm/icons/chart-diagram.js.map +1 -1
  100. package/dist/esm/icons/check-dot.js.map +1 -1
  101. package/dist/esm/icons/check-large.js.map +1 -1
  102. package/dist/esm/icons/check.js.map +1 -1
  103. package/dist/esm/icons/circle-broken.js.map +1 -1
  104. package/dist/esm/icons/circle-check.js.map +1 -1
  105. package/dist/esm/icons/circle-filled.js.map +1 -1
  106. package/dist/esm/icons/circle-partial-broken.js.map +1 -1
  107. package/dist/esm/icons/circle-slash.js.map +1 -1
  108. package/dist/esm/icons/circle-x.js.map +1 -1
  109. package/dist/esm/icons/circle.js.map +1 -1
  110. package/dist/esm/icons/clipboard.js.map +1 -1
  111. package/dist/esm/icons/clock-cog.js.map +1 -1
  112. package/dist/esm/icons/clock-exclamation.js.map +1 -1
  113. package/dist/esm/icons/clock-triangle.js.map +1 -1
  114. package/dist/esm/icons/clock.js.map +1 -1
  115. package/dist/esm/icons/clone.js.map +1 -1
  116. package/dist/esm/icons/cloud-upload.js.map +1 -1
  117. package/dist/esm/icons/cloud-with-arrow.js.map +1 -1
  118. package/dist/esm/icons/cloud.js.map +1 -1
  119. package/dist/esm/icons/cog-database-inset.js.map +1 -1
  120. package/dist/esm/icons/cog-database.js.map +1 -1
  121. package/dist/esm/icons/cog-small-cog.js.map +1 -1
  122. package/dist/esm/icons/cog-zoomed.js.map +1 -1
  123. package/dist/esm/icons/cog.js.map +1 -1
  124. package/dist/esm/icons/comment.js.map +1 -1
  125. package/dist/esm/icons/computer-and-monitor.js.map +1 -1
  126. package/dist/esm/icons/copy-text.js.map +1 -1
  127. package/dist/esm/icons/copy.js.map +1 -1
  128. package/dist/esm/icons/dashboard-builder-legend.js.map +1 -1
  129. package/dist/esm/icons/dashboard-builder-templates.js.map +1 -1
  130. package/dist/esm/icons/dashboard-builder-tile.js.map +1 -1
  131. package/dist/esm/icons/dashboard-builder.js.map +1 -1
  132. package/dist/esm/icons/database-check.js.map +1 -1
  133. package/dist/esm/icons/database.js.map +1 -1
  134. package/dist/esm/icons/desktop.js.map +1 -1
  135. package/dist/esm/icons/donut-chart.js.map +1 -1
  136. package/dist/esm/icons/dot-solid-dot-stroke-measurement.js.map +1 -1
  137. package/dist/esm/icons/dot-solid-dot-stroke.js.map +1 -1
  138. package/dist/esm/icons/down-right-from-square.js.map +1 -1
  139. package/dist/esm/icons/download.js.map +1 -1
  140. package/dist/esm/icons/electronic-chip-zoomed.js.map +1 -1
  141. package/dist/esm/icons/exclamation-mark.js.map +1 -1
  142. package/dist/esm/icons/eye.js.map +1 -1
  143. package/dist/esm/icons/fancy-a.js.map +1 -1
  144. package/dist/esm/icons/file-arrow-curved-right.js.map +1 -1
  145. package/dist/esm/icons/file-drawer.js.map +1 -1
  146. package/dist/esm/icons/file-search.js.map +1 -1
  147. package/dist/esm/icons/file.js.map +1 -1
  148. package/dist/esm/icons/filter.js.map +1 -1
  149. package/dist/esm/icons/floppy-disk-checkmark.js.map +1 -1
  150. package/dist/esm/icons/floppy-disk-pen.js.map +1 -1
  151. package/dist/esm/icons/floppy-disk-star-arrow-right.js.map +1 -1
  152. package/dist/esm/icons/floppy-disk-three-dots.js.map +1 -1
  153. package/dist/esm/icons/floppy-disk.js.map +1 -1
  154. package/dist/esm/icons/folder-open.js.map +1 -1
  155. package/dist/esm/icons/folder.js.map +1 -1
  156. package/dist/esm/icons/forward-slash.js.map +1 -1
  157. package/dist/esm/icons/four-dots-square.js.map +1 -1
  158. package/dist/esm/icons/function.js.map +1 -1
  159. package/dist/esm/icons/gauge-simple.js.map +1 -1
  160. package/dist/esm/icons/grid-three-by-three.js.map +1 -1
  161. package/dist/esm/icons/grid-two-by-two.js.map +1 -1
  162. package/dist/esm/icons/hammer.js.map +1 -1
  163. package/dist/esm/icons/hashtag.js.map +1 -1
  164. package/dist/esm/icons/home.js.map +1 -1
  165. package/dist/esm/icons/hourglass.js.map +1 -1
  166. package/dist/esm/icons/indent.js.map +1 -1
  167. package/dist/esm/icons/indeterminant-checkbox.js.map +1 -1
  168. package/dist/esm/icons/info-circle.js.map +1 -1
  169. package/dist/esm/icons/info.js.map +1 -1
  170. package/dist/esm/icons/italic-i.js.map +1 -1
  171. package/dist/esm/icons/key.js.map +1 -1
  172. package/dist/esm/icons/laptop.js.map +1 -1
  173. package/dist/esm/icons/layer-group.js.map +1 -1
  174. package/dist/esm/icons/lightning-bolt.js.map +1 -1
  175. package/dist/esm/icons/link-cancel.js.map +1 -1
  176. package/dist/esm/icons/link.js.map +1 -1
  177. package/dist/esm/icons/list-tree-database.js.map +1 -1
  178. package/dist/esm/icons/list-tree.js.map +1 -1
  179. package/dist/esm/icons/list.js.map +1 -1
  180. package/dist/esm/icons/lock.js.map +1 -1
  181. package/dist/esm/icons/magnifying-glass.js.map +1 -1
  182. package/dist/esm/icons/markdown.js.map +1 -1
  183. package/dist/esm/icons/minus-wide.js.map +1 -1
  184. package/dist/esm/icons/minus.js.map +1 -1
  185. package/dist/esm/icons/mobile.js.map +1 -1
  186. package/dist/esm/icons/ni.js.map +1 -1
  187. package/dist/esm/icons/notebook.js.map +1 -1
  188. package/dist/esm/icons/number-list.js.map +1 -1
  189. package/dist/esm/icons/outdent.js.map +1 -1
  190. package/dist/esm/icons/paste.js.map +1 -1
  191. package/dist/esm/icons/pause.js.map +1 -1
  192. package/dist/esm/icons/pencil.js.map +1 -1
  193. package/dist/esm/icons/play.js.map +1 -1
  194. package/dist/esm/icons/pot-with-lid.js.map +1 -1
  195. package/dist/esm/icons/question.js.map +1 -1
  196. package/dist/esm/icons/rectangle-check-lines.js.map +1 -1
  197. package/dist/esm/icons/running-arrow.js.map +1 -1
  198. package/dist/esm/icons/screen-check-lines-calendar.js.map +1 -1
  199. package/dist/esm/icons/screen-check-lines.js.map +1 -1
  200. package/dist/esm/icons/server.js.map +1 -1
  201. package/dist/esm/icons/share-nodes.js.map +1 -1
  202. package/dist/esm/icons/shield-check.js.map +1 -1
  203. package/dist/esm/icons/shield-xmark.js.map +1 -1
  204. package/dist/esm/icons/signal-bars.js.map +1 -1
  205. package/dist/esm/icons/sine-graph.js.map +1 -1
  206. package/dist/esm/icons/skip-arrow.js.map +1 -1
  207. package/dist/esm/icons/spinner.js.map +1 -1
  208. package/dist/esm/icons/square-check.js.map +1 -1
  209. package/dist/esm/icons/square-t.js.map +1 -1
  210. package/dist/esm/icons/stop-square.js.map +1 -1
  211. package/dist/esm/icons/systemlink.js.map +1 -1
  212. package/dist/esm/icons/t.js.map +1 -1
  213. package/dist/esm/icons/tablet.js.map +1 -1
  214. package/dist/esm/icons/tag.js.map +1 -1
  215. package/dist/esm/icons/tags.js.map +1 -1
  216. package/dist/esm/icons/target-crosshairs-progress.js.map +1 -1
  217. package/dist/esm/icons/target-crosshairs.js.map +1 -1
  218. package/dist/esm/icons/three-dots-line.js.map +1 -1
  219. package/dist/esm/icons/three-vertical-lines.js.map +1 -1
  220. package/dist/esm/icons/thumbtack.js.map +1 -1
  221. package/dist/esm/icons/tile-size.js.map +1 -1
  222. package/dist/esm/icons/times.js.map +1 -1
  223. package/dist/esm/icons/trash.js.map +1 -1
  224. package/dist/esm/icons/triangle-filled.js.map +1 -1
  225. package/dist/esm/icons/triangle-two-lines-horizontal.js.map +1 -1
  226. package/dist/esm/icons/triangle.js.map +1 -1
  227. package/dist/esm/icons/true-false-rectangle.js.map +1 -1
  228. package/dist/esm/icons/two-squares-in-brackets.js.map +1 -1
  229. package/dist/esm/icons/two-triangles-between-lines.js.map +1 -1
  230. package/dist/esm/icons/unlink.js.map +1 -1
  231. package/dist/esm/icons/unlock.js.map +1 -1
  232. package/dist/esm/icons/up-right-from-square.js.map +1 -1
  233. package/dist/esm/icons/upload.js.map +1 -1
  234. package/dist/esm/icons/user.js.map +1 -1
  235. package/dist/esm/icons/watch.js.map +1 -1
  236. package/dist/esm/icons/waveform.js.map +1 -1
  237. package/dist/esm/icons/webvi-custom.js.map +1 -1
  238. package/dist/esm/icons/webvi-host.js.map +1 -1
  239. package/dist/esm/icons/window-code.js.map +1 -1
  240. package/dist/esm/icons/window-text.js.map +1 -1
  241. package/dist/esm/icons/wrench-hammer.js.map +1 -1
  242. package/dist/esm/icons/xmark-check.js.map +1 -1
  243. package/dist/esm/icons/xmark.js.map +1 -1
  244. package/dist/esm/label-provider/base/index.js.map +1 -1
  245. package/dist/esm/label-provider/core/index.d.ts +6 -0
  246. package/dist/esm/label-provider/core/index.js +10 -2
  247. package/dist/esm/label-provider/core/index.js.map +1 -1
  248. package/dist/esm/label-provider/core/label-token-defaults.js +3 -1
  249. package/dist/esm/label-provider/core/label-token-defaults.js.map +1 -1
  250. package/dist/esm/label-provider/core/label-tokens.d.ts +2 -0
  251. package/dist/esm/label-provider/core/label-tokens.js +8 -0
  252. package/dist/esm/label-provider/core/label-tokens.js.map +1 -1
  253. package/dist/esm/label-provider/rich-text/index.js.map +1 -1
  254. package/dist/esm/label-provider/rich-text/label-token-defaults.js.map +1 -1
  255. package/dist/esm/label-provider/rich-text/label-tokens.js.map +1 -1
  256. package/dist/esm/label-provider/table/index.js.map +1 -1
  257. package/dist/esm/label-provider/table/label-token-defaults.js.map +1 -1
  258. package/dist/esm/label-provider/table/label-tokens.js.map +1 -1
  259. package/dist/esm/list-option/index.js.map +1 -1
  260. package/dist/esm/list-option/styles.js.map +1 -1
  261. package/dist/esm/list-option/template.js.map +1 -1
  262. package/dist/esm/listbox/index.js.map +1 -1
  263. package/dist/esm/listbox/styles.js.map +1 -1
  264. package/dist/esm/mapping/base/index.js.map +1 -1
  265. package/dist/esm/mapping/base/template.js.map +1 -1
  266. package/dist/esm/mapping/base/types.js.map +1 -1
  267. package/dist/esm/mapping/icon/index.js.map +1 -1
  268. package/dist/esm/mapping/spinner/index.js.map +1 -1
  269. package/dist/esm/mapping/text/index.js.map +1 -1
  270. package/dist/esm/mapping/user/index.js.map +1 -1
  271. package/dist/esm/menu/index.js.map +1 -1
  272. package/dist/esm/menu/styles.js.map +1 -1
  273. package/dist/esm/menu-button/index.js.map +1 -1
  274. package/dist/esm/menu-button/styles.js.map +1 -1
  275. package/dist/esm/menu-button/template.js.map +1 -1
  276. package/dist/esm/menu-button/types.js.map +1 -1
  277. package/dist/esm/menu-item/index.js.map +1 -1
  278. package/dist/esm/menu-item/styles.js.map +1 -1
  279. package/dist/esm/number-field/index.js.map +1 -1
  280. package/dist/esm/number-field/styles.js.map +1 -1
  281. package/dist/esm/number-field/types.js.map +1 -1
  282. package/dist/esm/patterns/button/styles.js.map +1 -1
  283. package/dist/esm/patterns/button/types.js.map +1 -1
  284. package/dist/esm/patterns/dialog/types.js.map +1 -1
  285. package/dist/esm/patterns/dropdown/styles.js +0 -4
  286. package/dist/esm/patterns/dropdown/styles.js.map +1 -1
  287. package/dist/esm/patterns/dropdown/types.js.map +1 -1
  288. package/dist/esm/patterns/error/styles.js.map +1 -1
  289. package/dist/esm/patterns/error/template.js.map +1 -1
  290. package/dist/esm/patterns/error/types.js.map +1 -1
  291. package/dist/esm/patterns/expand-collapse/styles.js.map +1 -1
  292. package/dist/esm/radio/index.js.map +1 -1
  293. package/dist/esm/radio/styles.js.map +1 -1
  294. package/dist/esm/radio-group/index.js.map +1 -1
  295. package/dist/esm/radio-group/styles.js.map +1 -1
  296. package/dist/esm/rich-text/base/index.js.map +1 -1
  297. package/dist/esm/rich-text/base/types.js.map +1 -1
  298. package/dist/esm/rich-text/editor/index.js.map +1 -1
  299. package/dist/esm/rich-text/editor/models/create-tiptap-editor.js.map +1 -1
  300. package/dist/esm/rich-text/editor/styles.js.map +1 -1
  301. package/dist/esm/rich-text/editor/template.js.map +1 -1
  302. package/dist/esm/rich-text/editor/testing/rich-text-editor-utils.js.map +1 -1
  303. package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.js.map +1 -1
  304. package/dist/esm/rich-text/editor/testing/types.js.map +1 -1
  305. package/dist/esm/rich-text/editor/types.js.map +1 -1
  306. package/dist/esm/rich-text/mention-listbox/index.js.map +1 -1
  307. package/dist/esm/rich-text/mention-listbox/styles.js.map +1 -1
  308. package/dist/esm/rich-text/mention-listbox/template.js.map +1 -1
  309. package/dist/esm/rich-text/mention-listbox/types.js.map +1 -1
  310. package/dist/esm/rich-text/models/configuration.js.map +1 -1
  311. package/dist/esm/rich-text/models/editor-configuration.js.map +1 -1
  312. package/dist/esm/rich-text/models/markdown-parser-mention-configuration.js.map +1 -1
  313. package/dist/esm/rich-text/models/markdown-parser.js.map +1 -1
  314. package/dist/esm/rich-text/models/markdown-serializer.js.map +1 -1
  315. package/dist/esm/rich-text/models/mention-extension-configuration.js.map +1 -1
  316. package/dist/esm/rich-text/models/rich-text-tracker.js.map +1 -1
  317. package/dist/esm/rich-text/models/rich-text-validator.js.map +1 -1
  318. package/dist/esm/rich-text/models/testing/markdown-parser-utils.js.map +1 -1
  319. package/dist/esm/rich-text/viewer/index.js.map +1 -1
  320. package/dist/esm/rich-text/viewer/styles.js.map +1 -1
  321. package/dist/esm/rich-text/viewer/template.js.map +1 -1
  322. package/dist/esm/rich-text/viewer/testing/rich-text-viewer.pageobject.js.map +1 -1
  323. package/dist/esm/rich-text-mention/base/index.js.map +1 -1
  324. package/dist/esm/rich-text-mention/base/models/mapping-config.js.map +1 -1
  325. package/dist/esm/rich-text-mention/base/models/mention-internals.js.map +1 -1
  326. package/dist/esm/rich-text-mention/base/models/mention-validator.js.map +1 -1
  327. package/dist/esm/rich-text-mention/base/template.js.map +1 -1
  328. package/dist/esm/rich-text-mention/base/types.js.map +1 -1
  329. package/dist/esm/rich-text-mention/base/view/index.js.map +1 -1
  330. package/dist/esm/rich-text-mention/users/index.js.map +1 -1
  331. package/dist/esm/rich-text-mention/users/models/mapping-user-config.js.map +1 -1
  332. package/dist/esm/rich-text-mention/users/models/rich-text-mention-users-validator.js.map +1 -1
  333. package/dist/esm/rich-text-mention/users/view/index.js.map +1 -1
  334. package/dist/esm/rich-text-mention/users/view/styles.js.map +1 -1
  335. package/dist/esm/rich-text-mention/users/view/template.js.map +1 -1
  336. package/dist/esm/rich-text-mention/users/view/testing/rich-text-mention-users-view.pageobject.js.map +1 -1
  337. package/dist/esm/select/index.d.ts +251 -7
  338. package/dist/esm/select/index.js +653 -19
  339. package/dist/esm/select/index.js.map +1 -1
  340. package/dist/esm/select/models/select-form-associated.d.ts +16 -0
  341. package/dist/esm/select/models/select-form-associated.js +19 -0
  342. package/dist/esm/select/models/select-form-associated.js.map +1 -0
  343. package/dist/esm/select/styles.js +89 -1
  344. package/dist/esm/select/styles.js.map +1 -1
  345. package/dist/esm/select/template.js +71 -37
  346. package/dist/esm/select/template.js.map +1 -1
  347. package/dist/esm/select/testing/select.pageobject.d.ts +32 -0
  348. package/dist/esm/select/testing/select.pageobject.js +128 -0
  349. package/dist/esm/select/testing/select.pageobject.js.map +1 -0
  350. package/dist/esm/select/types.d.ts +9 -0
  351. package/dist/esm/select/types.js +8 -0
  352. package/dist/esm/select/types.js.map +1 -1
  353. package/dist/esm/spinner/index.js.map +1 -1
  354. package/dist/esm/spinner/styles.js.map +1 -1
  355. package/dist/esm/spinner/template.js.map +1 -1
  356. package/dist/esm/spinner/types.js.map +1 -1
  357. package/dist/esm/switch/index.js.map +1 -1
  358. package/dist/esm/switch/styles.js.map +1 -1
  359. package/dist/esm/switch/template.js.map +1 -1
  360. package/dist/esm/tab/index.js.map +1 -1
  361. package/dist/esm/tab/styles.js.map +1 -1
  362. package/dist/esm/tab-panel/index.js.map +1 -1
  363. package/dist/esm/tab-panel/styles.js.map +1 -1
  364. package/dist/esm/table/components/cell/index.js.map +1 -1
  365. package/dist/esm/table/components/cell/styles.js.map +1 -1
  366. package/dist/esm/table/components/cell/template.js.map +1 -1
  367. package/dist/esm/table/components/group-row/index.js.map +1 -1
  368. package/dist/esm/table/components/group-row/styles.js.map +1 -1
  369. package/dist/esm/table/components/group-row/template.js.map +1 -1
  370. package/dist/esm/table/components/header/index.js.map +1 -1
  371. package/dist/esm/table/components/header/styles.js.map +1 -1
  372. package/dist/esm/table/components/header/template.js.map +1 -1
  373. package/dist/esm/table/components/row/index.js.map +1 -1
  374. package/dist/esm/table/components/row/styles.js.map +1 -1
  375. package/dist/esm/table/components/row/template.js.map +1 -1
  376. package/dist/esm/table/index.js.map +1 -1
  377. package/dist/esm/table/models/array-to-tree.js.map +1 -1
  378. package/dist/esm/table/models/data-hierarchy-manager.js.map +1 -1
  379. package/dist/esm/table/models/expansion-manager.js.map +1 -1
  380. package/dist/esm/table/models/interactive-selection-manager.js.map +1 -1
  381. package/dist/esm/table/models/selection-managers/disabled-selection-manager.js.map +1 -1
  382. package/dist/esm/table/models/selection-managers/multi-selection-manager.js.map +1 -1
  383. package/dist/esm/table/models/selection-managers/selection-manager-base.js.map +1 -1
  384. package/dist/esm/table/models/selection-managers/single-selection-manager.js.map +1 -1
  385. package/dist/esm/table/models/sort-operations.js.map +1 -1
  386. package/dist/esm/table/models/table-layout-manager.js.map +1 -1
  387. package/dist/esm/table/models/table-update-tracker.js.map +1 -1
  388. package/dist/esm/table/models/table-validator.js.map +1 -1
  389. package/dist/esm/table/models/virtualizer.js.map +1 -1
  390. package/dist/esm/table/styles.js.map +1 -1
  391. package/dist/esm/table/template.js.map +1 -1
  392. package/dist/esm/table/testing/table.pageobject.js.map +1 -1
  393. package/dist/esm/table/types.js.map +1 -1
  394. package/dist/esm/table-column/anchor/cell-view/index.js.map +1 -1
  395. package/dist/esm/table-column/anchor/cell-view/styles.js.map +1 -1
  396. package/dist/esm/table-column/anchor/cell-view/template.js.map +1 -1
  397. package/dist/esm/table-column/anchor/index.js.map +1 -1
  398. package/dist/esm/table-column/base/cell-view/index.js.map +1 -1
  399. package/dist/esm/table-column/base/cell-view/template.js.map +1 -1
  400. package/dist/esm/table-column/base/group-header-view/index.js.map +1 -1
  401. package/dist/esm/table-column/base/group-header-view/template.js.map +1 -1
  402. package/dist/esm/table-column/base/index.js.map +1 -1
  403. package/dist/esm/table-column/base/models/column-internals.js.map +1 -1
  404. package/dist/esm/table-column/base/models/column-validator.js.map +1 -1
  405. package/dist/esm/table-column/base/styles.js.map +1 -1
  406. package/dist/esm/table-column/base/template.js.map +1 -1
  407. package/dist/esm/table-column/base/types.js.map +1 -1
  408. package/dist/esm/table-column/date-text/cell-view/index.js.map +1 -1
  409. package/dist/esm/table-column/date-text/group-header-view/index.js.map +1 -1
  410. package/dist/esm/table-column/date-text/index.js.map +1 -1
  411. package/dist/esm/table-column/date-text/models/format-helper.js.map +1 -1
  412. package/dist/esm/table-column/date-text/models/table-column-date-text-validator.js.map +1 -1
  413. package/dist/esm/table-column/date-text/testing/table-column-date-text.pageobject.js.map +1 -1
  414. package/dist/esm/table-column/date-text/types.js.map +1 -1
  415. package/dist/esm/table-column/duration-text/cell-view/index.js.map +1 -1
  416. package/dist/esm/table-column/duration-text/group-header-view/index.js.map +1 -1
  417. package/dist/esm/table-column/duration-text/index.js.map +1 -1
  418. package/dist/esm/table-column/duration-text/models/duration-formatter.js.map +1 -1
  419. package/dist/esm/table-column/duration-text/testing/table-column-duration-text.pageobject.js.map +1 -1
  420. package/dist/esm/table-column/enum-base/index.js.map +1 -1
  421. package/dist/esm/table-column/enum-base/models/mapping-config.js.map +1 -1
  422. package/dist/esm/table-column/enum-base/models/mapping-icon-config.js.map +1 -1
  423. package/dist/esm/table-column/enum-base/models/mapping-key-resolver.js.map +1 -1
  424. package/dist/esm/table-column/enum-base/models/mapping-spinner-config.js.map +1 -1
  425. package/dist/esm/table-column/enum-base/models/mapping-text-config.js.map +1 -1
  426. package/dist/esm/table-column/enum-base/models/table-column-enum-base-validator.js.map +1 -1
  427. package/dist/esm/table-column/enum-base/styles.js.map +1 -1
  428. package/dist/esm/table-column/enum-base/template.js.map +1 -1
  429. package/dist/esm/table-column/enum-base/types.js.map +1 -1
  430. package/dist/esm/table-column/enum-text/cell-view/index.js.map +1 -1
  431. package/dist/esm/table-column/enum-text/group-header-view/index.js.map +1 -1
  432. package/dist/esm/table-column/enum-text/index.js.map +1 -1
  433. package/dist/esm/table-column/enum-text/models/table-column-enum-text-validator.js.map +1 -1
  434. package/dist/esm/table-column/icon/cell-view/index.js.map +1 -1
  435. package/dist/esm/table-column/icon/cell-view/template.js.map +1 -1
  436. package/dist/esm/table-column/icon/group-header-view/index.js.map +1 -1
  437. package/dist/esm/table-column/icon/group-header-view/styles.js.map +1 -1
  438. package/dist/esm/table-column/icon/group-header-view/template.js.map +1 -1
  439. package/dist/esm/table-column/icon/index.js.map +1 -1
  440. package/dist/esm/table-column/icon/models/table-column-icon-validator.js.map +1 -1
  441. package/dist/esm/table-column/mixins/fractional-width-column.js.map +1 -1
  442. package/dist/esm/table-column/mixins/groupable-column.js.map +1 -1
  443. package/dist/esm/table-column/number-text/cell-view/index.js.map +1 -1
  444. package/dist/esm/table-column/number-text/group-header-view/index.js.map +1 -1
  445. package/dist/esm/table-column/number-text/index.js.map +1 -1
  446. package/dist/esm/table-column/number-text/models/number-text-unit-format.js.map +1 -1
  447. package/dist/esm/table-column/number-text/models/table-column-number-text-validator.js.map +1 -1
  448. package/dist/esm/table-column/number-text/template.js.map +1 -1
  449. package/dist/esm/table-column/number-text/types.js.map +1 -1
  450. package/dist/esm/table-column/testing/table-column-formatted-text.pageobject.js.map +1 -1
  451. package/dist/esm/table-column/text/cell-view/index.js.map +1 -1
  452. package/dist/esm/table-column/text/group-header-view/index.js.map +1 -1
  453. package/dist/esm/table-column/text/index.js.map +1 -1
  454. package/dist/esm/table-column/text-base/cell-view/index.js.map +1 -1
  455. package/dist/esm/table-column/text-base/cell-view/styles.js.map +1 -1
  456. package/dist/esm/table-column/text-base/cell-view/template.js.map +1 -1
  457. package/dist/esm/table-column/text-base/cell-view/types.js.map +1 -1
  458. package/dist/esm/table-column/text-base/group-header-view/index.js.map +1 -1
  459. package/dist/esm/table-column/text-base/group-header-view/styles.js.map +1 -1
  460. package/dist/esm/table-column/text-base/group-header-view/template.js.map +1 -1
  461. package/dist/esm/table-column/text-base/index.js.map +1 -1
  462. package/dist/esm/tabs/index.js.map +1 -1
  463. package/dist/esm/tabs/styles.js.map +1 -1
  464. package/dist/esm/tabs-toolbar/index.js.map +1 -1
  465. package/dist/esm/tabs-toolbar/styles.js.map +1 -1
  466. package/dist/esm/tabs-toolbar/template.js.map +1 -1
  467. package/dist/esm/testing/async-helpers.js.map +1 -1
  468. package/dist/esm/text-area/index.js.map +1 -1
  469. package/dist/esm/text-area/styles.js.map +1 -1
  470. package/dist/esm/text-area/template.js.map +1 -1
  471. package/dist/esm/text-area/types.js.map +1 -1
  472. package/dist/esm/text-field/index.js.map +1 -1
  473. package/dist/esm/text-field/styles.js.map +1 -1
  474. package/dist/esm/text-field/types.js.map +1 -1
  475. package/dist/esm/theme-provider/design-token-comments.js.map +1 -1
  476. package/dist/esm/theme-provider/design-token-names.js.map +1 -1
  477. package/dist/esm/theme-provider/design-tokens-static.js.map +1 -1
  478. package/dist/esm/theme-provider/design-tokens.js.map +1 -1
  479. package/dist/esm/theme-provider/index.js.map +1 -1
  480. package/dist/esm/theme-provider/styles.js.map +1 -1
  481. package/dist/esm/theme-provider/template.js.map +1 -1
  482. package/dist/esm/theme-provider/types.js.map +1 -1
  483. package/dist/esm/toggle-button/index.js.map +1 -1
  484. package/dist/esm/toggle-button/styles.js.map +1 -1
  485. package/dist/esm/toggle-button/template.js.map +1 -1
  486. package/dist/esm/toggle-button/types.js.map +1 -1
  487. package/dist/esm/toolbar/index.js.map +1 -1
  488. package/dist/esm/toolbar/styles.js.map +1 -1
  489. package/dist/esm/tooltip/index.js.map +1 -1
  490. package/dist/esm/tooltip/styles.js.map +1 -1
  491. package/dist/esm/tooltip/template.js.map +1 -1
  492. package/dist/esm/tooltip/types.js.map +1 -1
  493. package/dist/esm/tree-item/index.js.map +1 -1
  494. package/dist/esm/tree-item/styles.js.map +1 -1
  495. package/dist/esm/tree-view/index.js.map +1 -1
  496. package/dist/esm/tree-view/styles.js.map +1 -1
  497. package/dist/esm/tree-view/template.js.map +1 -1
  498. package/dist/esm/tree-view/types.js.map +1 -1
  499. package/dist/esm/unit/base/template.js.map +1 -1
  500. package/dist/esm/unit/base/unit.js.map +1 -1
  501. package/dist/esm/unit/byte/index.js.map +1 -1
  502. package/dist/esm/unit/volt/index.js.map +1 -1
  503. package/dist/esm/utilities/directive/overflow.js.map +1 -1
  504. package/dist/esm/utilities/models/converter.js.map +1 -1
  505. package/dist/esm/utilities/models/document-element-lang.js.map +1 -1
  506. package/dist/esm/utilities/models/string-normalizers.js.map +1 -1
  507. package/dist/esm/utilities/models/tracker.js.map +1 -1
  508. package/dist/esm/utilities/models/update-tracker.js.map +1 -1
  509. package/dist/esm/utilities/models/validator.js.map +1 -1
  510. package/dist/esm/utilities/style/accessibly-hidden.js.map +1 -1
  511. package/dist/esm/utilities/style/appearance.js.map +1 -1
  512. package/dist/esm/utilities/style/colors.js.map +1 -1
  513. package/dist/esm/utilities/style/direction.js.map +1 -1
  514. package/dist/esm/utilities/style/focus.js.map +1 -1
  515. package/dist/esm/utilities/style/multivalue-property-stylesheet-behavior.js.map +1 -1
  516. package/dist/esm/utilities/style/prefers-reduced-motion.js.map +1 -1
  517. package/dist/esm/utilities/style/theme.js.map +1 -1
  518. package/dist/esm/utilities/style/types.js.map +1 -1
  519. package/dist/esm/utilities/style/user-select.js.map +1 -1
  520. package/dist/esm/utilities/unit-format/decimal-unit-format.js.map +1 -1
  521. package/dist/esm/utilities/unit-format/default-unit-format.js.map +1 -1
  522. package/dist/esm/utilities/unit-format/scaled-unit/scaled-unit.js.map +1 -1
  523. package/dist/esm/utilities/unit-format/scaled-unit-format/intl-number-format-scaled-unit-format.js.map +1 -1
  524. package/dist/esm/utilities/unit-format/scaled-unit-format/manually-translated-scaled-unit-format.js.map +1 -1
  525. package/dist/esm/utilities/unit-format/scaled-unit-format/scaled-unit-format.js.map +1 -1
  526. package/dist/esm/utilities/unit-format/unit-format.js.map +1 -1
  527. package/dist/esm/utilities/unit-format/unit-scale/byte-1024-unit-scale.js.map +1 -1
  528. package/dist/esm/utilities/unit-format/unit-scale/byte-unit-scale.js.map +1 -1
  529. package/dist/esm/utilities/unit-format/unit-scale/passthrough-unit-scale.js.map +1 -1
  530. package/dist/esm/utilities/unit-format/unit-scale/unit-scale.js.map +1 -1
  531. package/dist/esm/utilities/unit-format/unit-scale/utilities/metrix-prefixes.js.map +1 -1
  532. package/dist/esm/utilities/unit-format/unit-scale/volt-unit-scale.js.map +1 -1
  533. package/dist/esm/utilities/wait-until-custom-elements-defined-async.js.map +1 -1
  534. package/dist/esm/wafer-map/index.js.map +1 -1
  535. package/dist/esm/wafer-map/modules/computations.js.map +1 -1
  536. package/dist/esm/wafer-map/modules/data-manager.js.map +1 -1
  537. package/dist/esm/wafer-map/modules/event-coordinator.js.map +1 -1
  538. package/dist/esm/wafer-map/modules/hover-handler.js.map +1 -1
  539. package/dist/esm/wafer-map/modules/prerendering.js.map +1 -1
  540. package/dist/esm/wafer-map/modules/rendering.js.map +1 -1
  541. package/dist/esm/wafer-map/modules/wafer-map-update-tracker.js.map +1 -1
  542. package/dist/esm/wafer-map/modules/wafer-map-validator.js.map +1 -1
  543. package/dist/esm/wafer-map/modules/zoom-handler.js.map +1 -1
  544. package/dist/esm/wafer-map/styles.js.map +1 -1
  545. package/dist/esm/wafer-map/template.js.map +1 -1
  546. package/dist/esm/wafer-map/types.js.map +1 -1
  547. package/package.json +5 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/select/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAEH,YAAY,EACZ,MAAM,IAAI,gBAAgB,EAE7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC;;GAEG;AACH,MAAM,OAAO,MAAO,SAAQ,gBAAgB;IAA5C;;QAEW,eAAU,GAAuB,kBAAkB,CAAC,SAAS,CAAC;QAa9D,iBAAY,GAAG,KAAK,CAAC;QAQ5B,gBAAgB;QAET,gBAAW,GAAG,KAAK,CAAC;IAuD/B,CAAC;IArDG,+DAA+D;IAC/C,cAAc;QAC1B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;YACnC,qDAAqD;YACrD,mDAAmD;YACnD,OAAO;SACV;QACD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,iCAAiC,EAAE,CAAC;IAC7C,CAAC;IAED,+DAA+D;IAC/C,qBAAqB,CACjC,IAAe,EACf,IAAe;QAEf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACtB;IACL,CAAC;IAEO,aAAa,CACjB,KAAiC,EACjC,KAAiC;QAEjC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;SAC5C;IACL,CAAC;IAEO,cAAc,CAClB,KAA8B,EAC9B,KAA8B;QAE9B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;SAC5C;IACL,CAAC;IAEO,gBAAgB;QACpB,IAAI,CAAC,iCAAiC,EAAE,CAAC;IAC7C,CAAC;IAEO,iCAAiC;QACrC,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAC1B,gCAAgC,EAChC,GAAG,IAAI,CAAC,SAAS,IAAI,CACxB,CAAC;SACL;IACL,CAAC;CACJ;AA9EG;IADC,IAAI;0CACgE;AAUrE;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;yCACG;AAGrC;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;4CAC1B;AAM5B;IADC,UAAU;sCACoB;AAI/B;IADC,UAAU;2CACgB;AAyD/B,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAgB;IAC/C,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,gBAAgB;IAC3B,QAAQ;IACR,MAAM;IACN,SAAS,EAAE,sBAAsB,CAAC,IAAI;IACtC,GAAG,EAAE,IAAI,CAAQ;WACV,sBAAsB;;;aAGpB,sBAAsB;UACzB,iBAAiB;KACtB;CACJ,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/select/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Based on: https://github.com/microsoft/fast/blob/%40microsoft/fast-foundation_v2.49.5/packages/web-components/fast-foundation/src/select/select.ts\nimport {\n attr,\n html,\n observable,\n Observable,\n volatile\n} from '@microsoft/fast-element';\nimport {\n AnchoredRegion,\n DesignSystem,\n Select as FoundationSelect,\n ListboxOption,\n SelectOptions,\n SelectPosition,\n applyMixins,\n StartEnd,\n DelegatesARIASelect,\n Listbox\n} from '@microsoft/fast-foundation';\nimport {\n keyArrowDown,\n keyArrowUp,\n keyEnd,\n keyEnter,\n keyEscape,\n keyHome,\n keySpace,\n keyTab,\n uniqueId\n} from '@microsoft/fast-web-utilities';\nimport { arrowExpanderDown16X16 } from '@ni/nimble-tokens/dist/icons/js';\nimport { styles } from './styles';\nimport { DropdownAppearance } from '../patterns/dropdown/types';\nimport { errorTextTemplate } from '../patterns/error/template';\nimport type { ErrorPattern } from '../patterns/error/types';\nimport { iconExclamationMarkTag } from '../icons/exclamation-mark';\nimport { template } from './template';\nimport type { ListOption } from '../list-option';\nimport { FilterMode } from './types';\nimport { diacriticInsensitiveStringNormalizer } from '../utilities/models/string-normalizers';\nimport { FormAssociatedSelect } from './models/select-form-associated';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-select': Select;\n }\n}\n\n// Used in overrides of base class methods\n// eslint-disable-next-line @typescript-eslint/no-invalid-void-type\ntype BooleanOrVoid = boolean | void;\n\n/**\n * A nimble-styled HTML select.\n */\nexport class Select extends FormAssociatedSelect implements ErrorPattern {\n @attr\n public appearance: DropdownAppearance = DropdownAppearance.underline;\n\n /**\n * Reflects the placement for the listbox when the select is open.\n *\n * @public\n */\n @attr({ attribute: 'position' })\n public positionAttribute?: SelectPosition;\n\n /**\n * A message explaining why the value is invalid.\n *\n * @public\n * @remarks\n * HTML Attribute: error-text\n */\n @attr({ attribute: 'error-text' })\n public errorText: string | undefined;\n\n @attr({ attribute: 'error-visible', mode: 'boolean' })\n public errorVisible = false;\n\n @attr({ attribute: 'filter-mode' })\n public filterMode: FilterMode = FilterMode.none;\n\n /**\n * @internal\n */\n @attr({ attribute: 'open', mode: 'boolean' })\n public open = false;\n\n /**\n * Holds the current state for the calculated position of the listbox.\n *\n * @public\n */\n @observable\n public position?: SelectPosition;\n\n /**\n * The ref to the internal `.control` element.\n *\n * @internal\n */\n @observable\n public control!: HTMLElement;\n\n /**\n * Reference to the internal listbox element.\n *\n * @internal\n */\n public listbox!: HTMLDivElement;\n\n /**\n * The unique id for the internal listbox element.\n *\n * @internal\n */\n public listboxId: string = uniqueId('listbox-');\n\n /**\n * @internal\n */\n @observable\n public scrollableRegion!: HTMLElement;\n\n /**\n * @internal\n */\n @observable\n public filterInput?: HTMLInputElement;\n\n /**\n * @internal\n */\n @observable\n public anchoredRegion!: AnchoredRegion;\n\n /** @internal */\n @observable\n public hasOverflow = false;\n\n /**\n * @internal\n */\n @observable\n public filteredOptions: ListboxOption[] = [];\n\n /**\n * @internal\n */\n @observable\n public filter = '';\n\n /**\n * @internal\n */\n @observable\n public committedSelectedOption: ListboxOption | undefined = undefined;\n\n /**\n * The max height for the listbox when opened.\n *\n * @internal\n */\n @observable\n public maxHeight = 0;\n\n /**\n * The component is collapsible when in single-selection mode with no size attribute.\n *\n * @internal\n */\n @volatile\n public get collapsible(): boolean {\n return !(this.multiple || typeof this.size === 'number');\n }\n\n private _value = '';\n private forcedPosition = false;\n private indexWhenOpened?: number;\n\n /**\n * @internal\n */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.forcedPosition = !!this.positionAttribute;\n this.initializeOpenState();\n }\n\n /**\n * The list of options. This mirrors FAST's override implementation for this\n * member for the Combobox to support a filtered list in the dropdown.\n *\n * @public\n * @remarks\n * Overrides `Listbox.options`.\n */\n public override get options(): ListboxOption[] {\n Observable.track(this, 'options');\n return this.filteredOptions?.length\n ? this.filteredOptions\n : (this._options as ListOption[]);\n }\n\n public override set options(value: ListboxOption[]) {\n this._options = value;\n Observable.notify(this, 'options');\n }\n\n public override get value(): string {\n Observable.track(this, 'value');\n return this._value;\n }\n\n public override set value(next: string) {\n const prev = this._value;\n let newValue = next;\n\n // use 'options' here instead of '_options' as 'selectedIndex' may be relative\n // to filtered set\n if (this.options?.length) {\n const newValueIndex = this.options.findIndex(\n el => el.value === newValue\n );\n const prevSelectedValue = this.options[this.selectedIndex]?.value ?? null;\n const nextSelectedValue = this.options[newValueIndex]?.value ?? null;\n\n if (\n newValueIndex === -1\n || prevSelectedValue !== nextSelectedValue\n ) {\n newValue = '';\n this.selectedIndex = newValueIndex;\n }\n\n newValue = this.firstSelectedOption?.value ?? newValue;\n }\n\n if (prev !== newValue && !(this.open && this.selectedIndex < 0)) {\n this._value = newValue;\n super.valueChanged(prev, newValue);\n if (!this.open) {\n this.committedSelectedOption = this._options.find(\n o => o.value === newValue\n );\n }\n Observable.notify(this, 'value');\n if (this.collapsible) {\n Observable.notify(this, 'displayValue');\n }\n }\n }\n\n /**\n * @internal\n */\n public get displayValue(): string {\n Observable.track(this, 'displayValue');\n return this.committedSelectedOption?.text ?? '';\n }\n\n /**\n * @internal\n */\n public anchoredRegionChanged(\n _prev: AnchoredRegion | undefined,\n _next: AnchoredRegion | undefined\n ): void {\n if (this.anchoredRegion && this.control) {\n this.anchoredRegion.anchorElement = this.control;\n }\n }\n\n /**\n * @internal\n */\n public controlChanged(\n _prev: HTMLElement | undefined,\n _next: HTMLElement | undefined\n ): void {\n if (this.anchoredRegion && this.control) {\n this.anchoredRegion.anchorElement = this.control;\n }\n }\n\n /**\n * @internal\n */\n public override slottedOptionsChanged(\n prev: Element[],\n next: Element[]\n ): void {\n const value = this.value;\n this._options.forEach(o => {\n const notifier = Observable.getNotifier(o);\n notifier.unsubscribe(this, 'value');\n });\n\n super.slottedOptionsChanged(prev, next);\n\n this._options.forEach(o => {\n const notifier = Observable.getNotifier(o);\n notifier.subscribe(this, 'value');\n });\n this.setProxyOptions();\n this.updateValue();\n // We need to force an update to the filteredOptions observable\n // (by calling 'filterOptions()) so that the template correctly updates.\n this.filterOptions();\n if (value) {\n this.value = value;\n }\n this.committedSelectedOption = this.options[this.selectedIndex];\n }\n\n /**\n * @internal\n */\n public override clickHandler(e: MouseEvent): BooleanOrVoid {\n // do nothing if the select is disabled\n if (this.disabled) {\n return;\n }\n\n if (this.open) {\n const captured = (e.target as HTMLElement).closest<ListOption>(\n 'option,[role=option]'\n );\n\n if (!captured?.disabled) {\n this.updateSelectedIndexFromFilteredSet();\n }\n\n if (captured?.disabled) {\n return;\n }\n }\n\n super.clickHandler(e);\n\n this.open = this.collapsible && !this.open;\n\n if (!this.open && this.indexWhenOpened !== this.selectedIndex) {\n this.updateValue(true);\n }\n }\n\n /**\n * Updates the value when an option's value changes.\n *\n * @param source - the source object\n * @param propertyName - the property to evaluate\n *\n * @internal\n * @override\n */\n public override handleChange(source: unknown, propertyName: string): void {\n super.handleChange(source, propertyName);\n if (propertyName === 'value') {\n this.updateValue();\n }\n }\n\n /**\n * Prevents focus when size is set and a scrollbar is clicked.\n *\n * @param e - the mouse event object\n *\n * @override\n * @internal\n */\n public override mousedownHandler(e: MouseEvent): BooleanOrVoid {\n if (e.offsetX >= 0 && e.offsetX <= this.listbox?.scrollWidth) {\n return super.mousedownHandler(e);\n }\n\n return this.collapsible;\n }\n\n /**\n * @internal\n */\n public regionLoadedHandler(): void {\n this.focusAndScrollOptionIntoView();\n }\n\n /**\n * Sets the multiple property on the proxy element.\n *\n * @param prev - the previous multiple value\n * @param next - the current multiple value\n */\n public override multipleChanged(\n prev: boolean | undefined,\n next: boolean\n ): void {\n super.multipleChanged(prev, next);\n\n if (this.proxy) {\n this.proxy.multiple = next;\n }\n }\n\n /**\n * @internal\n */\n public inputClickHandler(e: MouseEvent): void {\n e.stopPropagation(); // clicking in filter input shouldn't close dropdown\n }\n\n /**\n * @internal\n */\n public changeValueHandler(): void {\n this.committedSelectedOption = this.options.find(\n option => option.selected\n );\n }\n\n /**\n * @internal\n */\n public updateDisplayValue(): void {\n if (this.collapsible) {\n Observable.notify(this, 'displayValue');\n }\n }\n\n /**\n * Handle content changes on the control input.\n *\n * @param e - the input event\n * @internal\n */\n public inputHandler(e: InputEvent): boolean {\n this.filter = this.filterInput?.value ?? '';\n if (!this.committedSelectedOption) {\n this.committedSelectedOption = this._options.find(\n option => option.selected\n );\n }\n this.clearSelection();\n this.filterOptions();\n\n if (\n this.filteredOptions.length > 0\n && this.committedSelectedOption\n && !this.filteredOptions.includes(this.committedSelectedOption)\n ) {\n const enabledOptions = this.filteredOptions.filter(\n o => !o.disabled\n );\n if (enabledOptions.length > 0) {\n enabledOptions[0]!.selected = true;\n } else {\n // only filtered option is disabled\n this.selectedOptions = [];\n this.selectedIndex = -1;\n }\n } else if (this.committedSelectedOption) {\n this.committedSelectedOption.selected = true;\n }\n\n if (e.inputType.includes('deleteContent') || !this.filter.length) {\n return true;\n }\n\n e.stopPropagation();\n return true;\n }\n\n /**\n * @internal\n */\n public override focusoutHandler(e: FocusEvent): BooleanOrVoid {\n this.updateSelectedIndexFromFilteredSet();\n super.focusoutHandler(e);\n if (!this.open) {\n return true;\n }\n\n const focusTarget = e.relatedTarget as HTMLElement;\n if (this.isSameNode(focusTarget)) {\n this.focus();\n return true;\n }\n\n if (!this.options?.includes(focusTarget as ListboxOption)) {\n this.open = false;\n if (this.indexWhenOpened !== this.selectedIndex) {\n this.updateValue(true);\n }\n }\n return true;\n }\n\n /**\n * @internal\n */\n public override keydownHandler(e: KeyboardEvent): BooleanOrVoid {\n super.keydownHandler(e);\n const key = e.key;\n if (e.ctrlKey || e.shiftKey) {\n return true;\n }\n\n switch (key) {\n case keySpace: {\n // when dropdown is open allow user to enter a space for filter text\n if (this.open && this.filterMode !== FilterMode.none) {\n break;\n }\n\n e.preventDefault();\n if (this.collapsible && this.typeAheadExpired) {\n this.open = !this.open;\n }\n if (!this.open) {\n this.focus();\n }\n break;\n }\n case keyHome:\n case keyEnd: {\n e.preventDefault();\n break;\n }\n case keyEnter: {\n e.preventDefault();\n if (\n this.filteredOptions.length === 0\n || this.filteredOptions.every(o => o.disabled)\n ) {\n return false;\n }\n this.updateSelectedIndexFromFilteredSet();\n this.open = !this.open;\n if (!this.open) {\n this.focus();\n }\n break;\n }\n case keyEscape: {\n // clear filter as update to \"selectedIndex\" will result in processing\n // \"options\" and not \"_options\"\n this.filter = '';\n if (this.committedSelectedOption) {\n this.clearSelection();\n this.selectedIndex = this._options.indexOf(\n this.committedSelectedOption\n );\n }\n if (this.collapsible && this.open) {\n e.preventDefault();\n this.open = false;\n }\n // reset 'selected' state otherwise the selected state doesn't stick.\n const selectedOption = this._options[this.selectedIndex];\n if (selectedOption) {\n selectedOption.selected = true;\n }\n this.focus();\n break;\n }\n case keyTab: {\n if (this.collapsible && this.open) {\n e.preventDefault();\n this.open = false;\n }\n\n return true;\n }\n\n default: {\n break;\n }\n }\n\n if (!this.open && this.indexWhenOpened !== this.selectedIndex) {\n this.updateValue(true);\n this.indexWhenOpened = this.selectedIndex;\n }\n\n return !(key === keyArrowDown || key === keyArrowUp);\n }\n\n /**\n * Updates the proxy value when the selected index changes.\n *\n * @param prev - the previous selected index\n * @param next - the next selected index\n *\n * @internal\n */\n public override selectedIndexChanged(\n prev: number | undefined,\n next: number\n ): void {\n super.selectedIndexChanged(prev, next);\n this.updateValue();\n }\n\n /**\n * Synchronize the `aria-disabled` property when the `disabled` property changes.\n *\n * @param prev - The previous disabled value\n * @param next - The next disabled value\n *\n * @internal\n */\n public override disabledChanged(prev: boolean, next: boolean): void {\n if (super.disabledChanged) {\n super.disabledChanged(prev, next);\n }\n this.ariaDisabled = this.disabled ? 'true' : 'false';\n }\n\n /**\n * Reset the element to its first selectable option when its parent form is reset.\n *\n * @internal\n */\n public override formResetCallback(): void {\n this.setProxyOptions();\n // Call the base class's implementation setDefaultSelectedOption instead of the select's\n // override, in order to reset the selectedIndex without using the value property.\n super.setDefaultSelectedOption();\n if (this.selectedIndex === -1) {\n this.selectedIndex = 0;\n }\n }\n\n // Prevents parent classes from resetting selectedIndex to a positive\n // value while filtering, which can result in a disabled option being\n // selected.\n protected override setSelectedOptions(): void {\n if (this.open && this.selectedIndex === -1) {\n return;\n }\n\n super.setSelectedOptions();\n }\n\n protected override focusAndScrollOptionIntoView(): void {\n super.focusAndScrollOptionIntoView();\n if (this.open) {\n window.requestAnimationFrame(() => {\n this.filterInput?.focus();\n });\n }\n }\n\n protected positionChanged(\n _: SelectPosition | undefined,\n next: SelectPosition | undefined\n ): void {\n this.positionAttribute = next;\n this.setPositioning();\n }\n\n /**\n * Updates the proxy's size property when the size attribute changes.\n *\n * @param prev - the previous size\n * @param next - the current size\n *\n * @override\n * @internal\n */\n protected override sizeChanged(\n prev: number | undefined,\n next: number\n ): void {\n super.sizeChanged(prev, next);\n\n if (this.proxy) {\n this.proxy.size = next;\n }\n }\n\n protected openChanged(): void {\n if (!this.collapsible) {\n return;\n }\n\n if (this.open) {\n this.initializeOpenState();\n this.indexWhenOpened = this.selectedIndex;\n\n return;\n }\n\n this.filter = '';\n if (this.filterInput) {\n this.filterInput.value = '';\n }\n\n this.ariaControls = '';\n this.ariaExpanded = 'false';\n }\n\n /**\n * Updates the selectedness of each option when the list of selected options changes.\n *\n * @param prev - the previous list of selected options\n * @param next - the current list of selected options\n *\n * @override\n * @internal\n */\n protected override selectedOptionsChanged(\n prev: ListboxOption[] | undefined,\n next: ListboxOption[]\n ): void {\n super.selectedOptionsChanged(prev, next);\n this.options?.forEach((o, i) => {\n const proxyOption = this.proxy?.options.item(i);\n if (proxyOption) {\n proxyOption.selected = o.selected;\n }\n });\n }\n\n /**\n * Sets the selected index to match the first option with the selected attribute, or\n * the first selectable option.\n *\n * @override\n * @internal\n */\n protected override setDefaultSelectedOption(): void {\n const options: ListboxOption[] = this.options\n ?? Array.from(this.children).filter(o => Listbox.slottedOptionFilter(o as HTMLElement));\n\n const selectedIndex = options?.findIndex(\n el => el.hasAttribute('selected')\n || el.selected\n || el.value === this.value\n );\n\n if (selectedIndex !== -1) {\n this.selectedIndex = selectedIndex;\n return;\n }\n\n this.selectedIndex = 0;\n }\n\n private setPositioning(): void {\n if (!this.$fastController.isConnected) {\n // Don't call setPositioning() until we're connected,\n // since this.forcedPosition isn't initialized yet.\n return;\n }\n const currentBox = this.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const availableBottom = viewportHeight - currentBox.bottom;\n\n if (this.forcedPosition) {\n this.position = this.positionAttribute;\n } else if (currentBox.top > availableBottom) {\n this.position = SelectPosition.above;\n } else {\n this.position = SelectPosition.below;\n }\n\n this.positionAttribute = this.forcedPosition\n ? this.positionAttribute\n : this.position;\n\n this.maxHeight = this.position === SelectPosition.above\n ? Math.trunc(currentBox.top)\n : Math.trunc(availableBottom);\n this.updateListboxMaxHeightCssVariable();\n }\n\n /**\n * Filter available options by text value.\n *\n * @public\n */\n private filterOptions(): void {\n const filter = this.filter.toLowerCase();\n\n if (filter) {\n this.filteredOptions = this._options.filter(option => {\n return diacriticInsensitiveStringNormalizer(\n option.text\n ).includes(diacriticInsensitiveStringNormalizer(filter));\n });\n } else {\n this.filteredOptions = this._options;\n }\n\n this._options.forEach(o => {\n o.hidden = !this.filteredOptions.includes(o);\n });\n }\n\n /**\n * Sets the value and display value to match the first selected option.\n *\n * @param shouldEmit - if true, the input and change events will be emitted\n *\n * @internal\n */\n private updateValue(shouldEmit?: boolean): void {\n if (this.$fastController.isConnected) {\n this.value = this.firstSelectedOption?.value ?? '';\n }\n\n if (shouldEmit) {\n this.$emit('input');\n this.$emit('change', this, {\n bubbles: true,\n composed: undefined\n });\n }\n }\n\n /**\n * Resets and fills the proxy to match the component's options.\n *\n * @internal\n */\n private setProxyOptions(): void {\n if (this.proxy instanceof HTMLSelectElement && this.options) {\n this.proxy.options.length = 0;\n this.options.forEach(option => {\n const proxyOption = option.proxy\n || (option instanceof HTMLOptionElement\n ? option.cloneNode()\n : null);\n\n if (proxyOption) {\n this.proxy.options.add(proxyOption);\n }\n });\n }\n }\n\n private clearSelection(): void {\n this.options.forEach(option => {\n option.selected = false;\n });\n }\n\n private filterChanged(): void {\n this.filterOptions();\n }\n\n private maxHeightChanged(): void {\n this.updateListboxMaxHeightCssVariable();\n }\n\n private initializeOpenState(): void {\n if (!this.open) {\n this.ariaExpanded = 'false';\n this.ariaControls = '';\n return;\n }\n\n this.committedSelectedOption = this._options[this.selectedIndex];\n this.ariaControls = this.listboxId;\n this.ariaExpanded = 'true';\n\n this.setPositioning();\n this.focusAndScrollOptionIntoView();\n }\n\n private updateListboxMaxHeightCssVariable(): void {\n if (this.listbox) {\n this.listbox.style.setProperty(\n '--ni-private-select-max-height',\n `${this.maxHeight}px`\n );\n }\n }\n\n private updateSelectedIndexFromFilteredSet(): void {\n const selectedItem = this.filteredOptions.length > 0\n ? this.options[this.selectedIndex]\n ?? this.committedSelectedOption\n : this.committedSelectedOption;\n\n if (!selectedItem) {\n return;\n }\n // Clear filter so any logic resolving against 'this.options' resolves against all options,\n // since selectedIndex should be relative to entire set.\n this.filter = '';\n // translate selectedIndex for filtered list to selectedIndex for all items\n this.selectedIndex = this._options.indexOf(selectedItem);\n // force selected to true again if the selection hasn't actually changed\n if (selectedItem === this.committedSelectedOption) {\n selectedItem.selected = true;\n }\n }\n}\n\nconst nimbleSelect = Select.compose<SelectOptions>({\n baseName: 'select',\n baseClass: FoundationSelect,\n template,\n styles,\n indicator: arrowExpanderDown16X16.data,\n end: html<Select>`\n <${iconExclamationMarkTag}\n severity=\"error\"\n class=\"error-icon\"\n ></${iconExclamationMarkTag}>\n ${errorTextTemplate}\n `\n});\n\napplyMixins(Select, StartEnd, DelegatesARIASelect);\nDesignSystem.getOrCreate().withPrefix('nimble').register(nimbleSelect());\nexport const selectTag = 'nimble-select';\n"]}
@@ -0,0 +1,16 @@
1
+ import { FormAssociated, ListboxElement } from '@microsoft/fast-foundation';
2
+ declare class Select extends ListboxElement {
3
+ }
4
+ interface Select extends FormAssociated {
5
+ }
6
+ declare const FormAssociatedSelect_base: typeof Select;
7
+ /**
8
+ * A form-associated base class for the Select component. This was copied from the
9
+ * FAST FormAssociatedSelect (which is not exported by fast-foundation)
10
+ *
11
+ * @internal
12
+ */
13
+ export declare class FormAssociatedSelect extends FormAssociatedSelect_base {
14
+ proxy: HTMLSelectElement;
15
+ }
16
+ export {};
@@ -0,0 +1,19 @@
1
+ // Based on: https://github.com/microsoft/fast/blob/%40microsoft/fast-foundation_v2.49.5/packages/web-components/fast-foundation/src/select/select.form-associated.ts
2
+ /* eslint-disable max-classes-per-file */
3
+ import { FormAssociated, ListboxElement } from '@microsoft/fast-foundation';
4
+ // eslint-disable-next-line jsdoc/require-jsdoc
5
+ class Select extends ListboxElement {
6
+ }
7
+ /**
8
+ * A form-associated base class for the Select component. This was copied from the
9
+ * FAST FormAssociatedSelect (which is not exported by fast-foundation)
10
+ *
11
+ * @internal
12
+ */
13
+ export class FormAssociatedSelect extends FormAssociated(Select) {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.proxy = document.createElement('select');
17
+ }
18
+ }
19
+ //# sourceMappingURL=select-form-associated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-form-associated.js","sourceRoot":"","sources":["../../../../src/select/models/select-form-associated.ts"],"names":[],"mappings":"AAAA,qKAAqK;AACrK,yCAAyC;AACzC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5E,+CAA+C;AAC/C,MAAM,MAAO,SAAQ,cAAc;CAAG;AAItC;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,cAAc,CAAC,MAAM,CAAC;IAAhE;;QACW,UAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;CAAA","sourcesContent":["// Based on: https://github.com/microsoft/fast/blob/%40microsoft/fast-foundation_v2.49.5/packages/web-components/fast-foundation/src/select/select.form-associated.ts\n/* eslint-disable max-classes-per-file */\nimport { FormAssociated, ListboxElement } from '@microsoft/fast-foundation';\n\n// eslint-disable-next-line jsdoc/require-jsdoc\nclass Select extends ListboxElement {}\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface Select extends FormAssociated {}\n\n/**\n * A form-associated base class for the Select component. This was copied from the\n * FAST FormAssociatedSelect (which is not exported by fast-foundation)\n *\n * @internal\n */\nexport class FormAssociatedSelect extends FormAssociated(Select) {\n public proxy = document.createElement('select');\n}\n"]}
@@ -1,9 +1,14 @@
1
1
  import { css } from '@microsoft/fast-element';
2
+ import { White } from '@ni/nimble-tokens/dist/styledictionary/js/tokens';
2
3
  import { styles as dropdownStyles } from '../patterns/dropdown/styles';
3
4
  import { styles as errorStyles } from '../patterns/error/styles';
4
- import { borderWidth } from '../theme-provider/design-tokens';
5
+ import { borderRgbPartialColor, borderWidth, controlHeight, mediumPadding, placeholderFontColor, smallPadding } from '../theme-provider/design-tokens';
5
6
  import { appearanceBehavior } from '../utilities/style/appearance';
6
7
  import { DropdownAppearance } from './types';
8
+ import { focusVisible } from '../utilities/style/focus';
9
+ import { themeBehavior } from '../utilities/style/theme';
10
+ import { Theme } from '../theme-provider/types';
11
+ import { hexToRgbaCssColor } from '../utilities/style/colors';
7
12
  export const styles = css `
8
13
  ${dropdownStyles}
9
14
  ${errorStyles}
@@ -26,10 +31,93 @@ export const styles = css `
26
31
  [part='end'] {
27
32
  display: contents;
28
33
  }
34
+
35
+ .listbox {
36
+ overflow-x: clip;
37
+ }
38
+
39
+ .listbox.empty slot {
40
+ display: none;
41
+ }
42
+
43
+ .listbox.above {
44
+ flex-flow: column-reverse;
45
+ }
46
+
47
+ .filter-field {
48
+ display: flex;
49
+ flex-direction: row;
50
+ align-items: center;
51
+ height: ${controlHeight};
52
+ background: transparent;
53
+ }
54
+
55
+ .filter-field::before {
56
+ content: '';
57
+ position: absolute;
58
+ height: 0px;
59
+ border-bottom: rgba(${borderRgbPartialColor}, 0.1) 2px solid;
60
+ bottom: calc(${controlHeight} + ${smallPadding} - ${borderWidth});
61
+ }
62
+
63
+ .filter-field.above::before {
64
+ width: calc(100% - (2 * ${borderWidth}));
65
+ }
66
+
67
+ .filter-field::after {
68
+ content: '';
69
+ position: absolute;
70
+ height: 0px;
71
+ border-bottom: rgba(${borderRgbPartialColor}, 0.1) 2px solid;
72
+ top: calc(${controlHeight} + ${smallPadding} - ${borderWidth});
73
+ }
74
+
75
+ .filter-field:not(.above)::after {
76
+ width: calc(100% - (2 * ${borderWidth}));
77
+ }
78
+
79
+ .filter-icon {
80
+ padding-left: ${smallPadding};
81
+ }
82
+
83
+ .filter-input {
84
+ background: transparent;
85
+ border: none;
86
+ color: inherit;
87
+ font: inherit;
88
+ height: var(--ni-nimble-control-height);
89
+ padding: 0 ${smallPadding} 0 ${mediumPadding};
90
+ width: 100%;
91
+ }
92
+
93
+ .filter-input::placeholder {
94
+ color: ${placeholderFontColor};
95
+ }
96
+
97
+ .filter-input${focusVisible} {
98
+ outline: 0px;
99
+ }
100
+
101
+ .scrollable-region {
102
+ overflow: auto;
103
+ }
104
+
105
+ .no-results-label {
106
+ color: ${placeholderFontColor};
107
+ height: ${controlHeight};
108
+ display: inline-flex;
109
+ align-items: center;
110
+ padding: ${smallPadding} ${mediumPadding};
111
+ }
29
112
  `.withBehaviors(appearanceBehavior(DropdownAppearance.block, css `
30
113
  :host([error-visible]) .control {
31
114
  border-bottom-width: ${borderWidth};
32
115
  padding-bottom: 0;
33
116
  }
117
+ `), themeBehavior(Theme.color, css `
118
+ .filter-field,
119
+ .no-results-label {
120
+ background: ${hexToRgbaCssColor(White, 0.15)};
121
+ }
34
122
  `));
35
123
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/select/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,cAAc;MACd,WAAW;;MAEX;AACE;gGACgG,CAAC,EACrG;;;;;;;;;;;;;;;;CAgBH,CAAC,aAAa,CACX,kBAAkB,CACd,kBAAkB,CAAC,KAAK,EACxB,GAAG,CAAA;;uCAE4B,WAAW;;;SAGzC,CACJ,CACJ,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/select/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,kDAAkD,CAAC;AACzE,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EACH,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,YAAY,EACf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,cAAc;MACd,WAAW;;MAEX;AACE;gGACgG,CAAC,EACrG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiCc,aAAa;;;;;;;;8BAQD,qBAAqB;uBAC5B,aAAa,MAAM,YAAY,MAAM,WAAW;;;;kCAIrC,WAAW;;;;;;;8BAOf,qBAAqB;oBAC/B,aAAa,MAAM,YAAY,MAAM,WAAW;;;;kCAIlC,WAAW;;;;wBAIrB,YAAY;;;;;;;;;qBASf,YAAY,MAAM,aAAa;;;;;iBAKnC,oBAAoB;;;mBAGlB,YAAY;;;;;;;;;iBASd,oBAAoB;kBACnB,aAAa;;;mBAGZ,YAAY,IAAI,aAAa;;CAE/C,CAAC,aAAa,CACX,kBAAkB,CACd,kBAAkB,CAAC,KAAK,EACxB,GAAG,CAAA;;uCAE4B,WAAW;;;SAGzC,CACJ,EACD,aAAa,CACT,KAAK,CAAC,KAAK,EACX,GAAG,CAAA;;;8BAGmB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;;SAEnD,CACJ,CACJ,CAAC","sourcesContent":["import { css } from '@microsoft/fast-element';\nimport { White } from '@ni/nimble-tokens/dist/styledictionary/js/tokens';\nimport { styles as dropdownStyles } from '../patterns/dropdown/styles';\nimport { styles as errorStyles } from '../patterns/error/styles';\nimport {\n borderRgbPartialColor,\n borderWidth,\n controlHeight,\n mediumPadding,\n placeholderFontColor,\n smallPadding\n} from '../theme-provider/design-tokens';\nimport { appearanceBehavior } from '../utilities/style/appearance';\nimport { DropdownAppearance } from './types';\nimport { focusVisible } from '../utilities/style/focus';\nimport { themeBehavior } from '../utilities/style/theme';\nimport { Theme } from '../theme-provider/types';\nimport { hexToRgbaCssColor } from '../utilities/style/colors';\n\nexport const styles = css`\n ${dropdownStyles}\n ${errorStyles}\n\n ${\n /* We are using flex `order` to define the visual ordering of the selected value,\n error icon, and dropdown arrow because they are not \"interactive\" i.e. part of the tab order */ ''\n }\n [part='selected-value'] {\n order: 1;\n }\n\n [part='indicator'] {\n order: 3;\n }\n\n .error-icon {\n order: 2;\n }\n\n [part='end'] {\n display: contents;\n }\n\n .listbox {\n overflow-x: clip;\n }\n\n .listbox.empty slot {\n display: none;\n }\n\n .listbox.above {\n flex-flow: column-reverse;\n }\n\n .filter-field {\n display: flex;\n flex-direction: row;\n align-items: center;\n height: ${controlHeight};\n background: transparent;\n }\n\n .filter-field::before {\n content: '';\n position: absolute;\n height: 0px;\n border-bottom: rgba(${borderRgbPartialColor}, 0.1) 2px solid;\n bottom: calc(${controlHeight} + ${smallPadding} - ${borderWidth});\n }\n\n .filter-field.above::before {\n width: calc(100% - (2 * ${borderWidth}));\n }\n\n .filter-field::after {\n content: '';\n position: absolute;\n height: 0px;\n border-bottom: rgba(${borderRgbPartialColor}, 0.1) 2px solid;\n top: calc(${controlHeight} + ${smallPadding} - ${borderWidth});\n }\n\n .filter-field:not(.above)::after {\n width: calc(100% - (2 * ${borderWidth}));\n }\n\n .filter-icon {\n padding-left: ${smallPadding};\n }\n\n .filter-input {\n background: transparent;\n border: none;\n color: inherit;\n font: inherit;\n height: var(--ni-nimble-control-height);\n padding: 0 ${smallPadding} 0 ${mediumPadding};\n width: 100%;\n }\n\n .filter-input::placeholder {\n color: ${placeholderFontColor};\n }\n\n .filter-input${focusVisible} {\n outline: 0px;\n }\n\n .scrollable-region {\n overflow: auto;\n }\n\n .no-results-label {\n color: ${placeholderFontColor};\n height: ${controlHeight};\n display: inline-flex;\n align-items: center;\n padding: ${smallPadding} ${mediumPadding};\n }\n`.withBehaviors(\n appearanceBehavior(\n DropdownAppearance.block,\n css`\n :host([error-visible]) .control {\n border-bottom-width: ${borderWidth};\n padding-bottom: 0;\n }\n `\n ),\n themeBehavior(\n Theme.color,\n css`\n .filter-field,\n .no-results-label {\n background: ${hexToRgbaCssColor(White, 0.15)};\n }\n `\n )\n);\n"]}
@@ -3,6 +3,10 @@ import { endSlotTemplate, Listbox, startSlotTemplate } from '@microsoft/fast-fou
3
3
  import { anchoredRegionTag } from '../anchored-region';
4
4
  import { DropdownPosition } from '../patterns/dropdown/types';
5
5
  import { overflow } from '../utilities/directive/overflow';
6
+ import { iconMagnifyingGlassTag } from '../icons/magnifying-glass';
7
+ import { filterNoResultsLabel, filterSearchLabel } from '../label-provider/core/label-tokens';
8
+ import { FilterMode } from './types';
9
+ /* eslint-disable @typescript-eslint/indent */
6
10
  // prettier-ignore
7
11
  export const template = (context, definition) => html `
8
12
  <template
@@ -11,11 +15,9 @@ export const template = (context, definition) => html `
11
15
  x.collapsible && x.open && 'open',
12
16
  x.disabled && 'disabled',
13
17
  x.collapsible && x.position,
14
- ]
15
- .filter(Boolean)
16
- .join(' ')}"
17
- aria-activedescendant="${x => x.ariaActiveDescendant}"
18
- aria-controls="${x => x.ariaControls}"
18
+ ].filter(Boolean).join(' ')}"
19
+ aria-activedescendant="${x => (x.filterMode === FilterMode.none ? x.ariaActiveDescendant : null)}"
20
+ aria-controls="${x => (x.filterMode === FilterMode.none ? x.ariaControls : null)}"
19
21
  aria-disabled="${x => x.ariaDisabled}"
20
22
  aria-expanded="${x => x.ariaExpanded}"
21
23
  aria-haspopup="${x => (x.collapsible ? 'listbox' : null)}"
@@ -24,34 +26,36 @@ export const template = (context, definition) => html `
24
26
  role="combobox"
25
27
  tabindex="${x => (!x.disabled ? '0' : null)}"
26
28
  @click="${(x, c) => x.clickHandler(c.event)}"
29
+ @change="${x => x.changeValueHandler()}"
30
+ @contentchange="${x => x.updateDisplayValue()}"
27
31
  @focusin="${(x, c) => x.focusinHandler(c.event)}"
28
32
  @focusout="${(x, c) => x.focusoutHandler(c.event)}"
29
33
  @keydown="${(x, c) => x.keydownHandler(c.event)}"
30
34
  @mousedown="${(x, c) => x.mousedownHandler(c.event)}"
31
35
  >
32
36
  ${when(x => x.collapsible, html `
33
- <div
34
- class="control"
35
- part="control"
36
- ?disabled="${x => x.disabled}"
37
- ${ref('control')}
38
- >
39
- ${startSlotTemplate(context, definition)}
40
- <slot name="button-container">
41
- <div class="selected-value" part="selected-value" ${overflow('hasOverflow')} title=${x => (x.hasOverflow && x.displayValue ? x.displayValue : null)}>
42
- <slot name="selected-value">${x => x.displayValue}</slot>
43
- </div>
44
- <div aria-hidden="true" class="indicator" part="indicator">
45
- <slot name="indicator">
46
- ${definition.indicator || ''}
47
- </slot>
48
- </div>
49
- </slot>
50
- ${endSlotTemplate(context, definition)}
51
- </div>
52
- `)}
37
+ <div
38
+ class="control"
39
+ part="control"
40
+ ?disabled="${x => x.disabled}"
41
+ ${ref('control')}
42
+ >
43
+ ${startSlotTemplate(context, definition)}
44
+ <slot name="button-container">
45
+ <div class="selected-value" part="selected-value" ${overflow('hasOverflow')} title=${x => (x.hasOverflow && x.displayValue ? x.displayValue : null)}>
46
+ <slot name="selected-value">${x => x.displayValue}</slot>
47
+ </div>
48
+ <div aria-hidden="true" class="indicator" part="indicator">
49
+ <slot name="indicator">
50
+ ${definition.indicator || ''}
51
+ </slot>
52
+ </div>
53
+ </slot>
54
+ ${endSlotTemplate(context, definition)}
55
+ </div>
56
+ `)}
53
57
  <${anchoredRegionTag}
54
- ${ref('region')}
58
+ ${ref('anchoredRegion')}
55
59
  class="anchored-region"
56
60
  fixed-placement
57
61
  auto-update-mode="auto"
@@ -60,22 +64,52 @@ export const template = (context, definition) => html `
60
64
  horizontal-default-position="center"
61
65
  horizontal-positioning-mode="locktodefault"
62
66
  horizontal-scaling="anchor"
67
+ @loaded="${x => x.regionLoadedHandler()}"
63
68
  ?hidden="${x => (x.collapsible ? !x.open : false)}">
64
- <div
65
- class="listbox"
66
- id="${x => x.listboxId}"
67
- part="listbox"
68
- role="listbox"
69
- ?disabled="${x => x.disabled}"
70
- ${ref('listbox')}
71
- >
72
- <slot
73
- ${slotted({
69
+ <div class="listbox-background">
70
+ <div
71
+ class="
72
+ listbox
73
+ ${x => (x.filteredOptions.length === 0 ? 'empty' : '')}
74
+ ${x => x.positionAttribute}
75
+ "
76
+ id="${x => x.listboxId}"
77
+ part="listbox"
78
+ role="listbox"
79
+ ?disabled="${x => x.disabled}"
80
+ ${ref('listbox')}
81
+ >
82
+ ${when(x => x.filterMode !== FilterMode.none, html `
83
+ <div class="filter-field ${x => x.positionAttribute}">
84
+ <${iconMagnifyingGlassTag} class="filter-icon"></${iconMagnifyingGlassTag}>
85
+ <input
86
+ ${ref('filterInput')}
87
+ class="filter-input"
88
+ aria-controls="${x => x.ariaControls}"
89
+ aria-activedescendant="${x => x.ariaActiveDescendant}"
90
+ @input="${(x, c) => x.inputHandler(c.event)}"
91
+ @click="${(x, c) => x.inputClickHandler(c.event)}"
92
+ placeholder="${x => filterSearchLabel.getValueFor(x)}"
93
+ value="${x => x.filter}"
94
+ />
95
+ </div>
96
+ `)}
97
+ <div ${ref('scrollableRegion')}
98
+ class="scrollable-region">
99
+ <slot
100
+ ${slotted({
74
101
  filter: (n) => n instanceof HTMLElement && Listbox.slottedOptionFilter(n),
75
102
  flatten: true,
76
103
  property: 'slottedOptions',
77
104
  })}
78
- ></slot>
105
+ ></slot>
106
+ </div>
107
+ ${when(x => (x.filterMode !== FilterMode.none && x.filteredOptions.length === 0), html `
108
+ <span class="no-results-label ${x => x.positionAttribute}">
109
+ ${x => filterNoResultsLabel.getValueFor(x)}
110
+ </span>
111
+ `)}
112
+ </div>
79
113
  </div>
80
114
  </${anchoredRegionTag}>
81
115
  </template>
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/select/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/select/template.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n ref,\n slotted,\n ViewTemplate,\n when\n} from '@microsoft/fast-element';\nimport {\n endSlotTemplate,\n FoundationElementTemplate,\n Listbox,\n SelectOptions,\n startSlotTemplate\n} from '@microsoft/fast-foundation';\nimport type { Select } from '.';\nimport { anchoredRegionTag } from '../anchored-region';\nimport { DropdownPosition } from '../patterns/dropdown/types';\nimport { overflow } from '../utilities/directive/overflow';\nimport { iconMagnifyingGlassTag } from '../icons/magnifying-glass';\nimport {\n filterNoResultsLabel,\n filterSearchLabel\n} from '../label-provider/core/label-tokens';\nimport { FilterMode } from './types';\n\n/* eslint-disable @typescript-eslint/indent */\n// prettier-ignore\nexport const template: FoundationElementTemplate<\nViewTemplate<Select>,\nSelectOptions\n> = (context, definition) => html<Select>`\n <template\n class=\"${x => [\n x.collapsible && 'collapsible',\n x.collapsible && x.open && 'open',\n x.disabled && 'disabled',\n x.collapsible && x.position,\n ].filter(Boolean).join(' ')}\"\n aria-activedescendant=\"${x => (x.filterMode === FilterMode.none ? x.ariaActiveDescendant : null)}\"\n aria-controls=\"${x => (x.filterMode === FilterMode.none ? x.ariaControls : null)}\"\n aria-disabled=\"${x => x.ariaDisabled}\"\n aria-expanded=\"${x => x.ariaExpanded}\"\n aria-haspopup=\"${x => (x.collapsible ? 'listbox' : null)}\"\n aria-multiselectable=\"${x => x.ariaMultiSelectable}\"\n ?open=\"${x => x.open}\"\n role=\"combobox\"\n tabindex=\"${x => (!x.disabled ? '0' : null)}\"\n @click=\"${(x, c) => x.clickHandler(c.event as MouseEvent)}\"\n @change=\"${x => x.changeValueHandler()}\"\n @contentchange=\"${x => x.updateDisplayValue()}\"\n @focusin=\"${(x, c) => x.focusinHandler(c.event as FocusEvent)}\"\n @focusout=\"${(x, c) => x.focusoutHandler(c.event as FocusEvent)}\"\n @keydown=\"${(x, c) => x.keydownHandler(c.event as KeyboardEvent)}\"\n @mousedown=\"${(x, c) => x.mousedownHandler(c.event as MouseEvent)}\"\n >\n ${when(x => x.collapsible, html<Select>`\n <div\n class=\"control\"\n part=\"control\"\n ?disabled=\"${x => x.disabled}\"\n ${ref('control')}\n >\n ${startSlotTemplate(context, definition)}\n <slot name=\"button-container\">\n <div class=\"selected-value\" part=\"selected-value\" ${overflow('hasOverflow')} title=${x => (x.hasOverflow && x.displayValue ? x.displayValue : null)}>\n <slot name=\"selected-value\">${x => x.displayValue}</slot>\n </div>\n <div aria-hidden=\"true\" class=\"indicator\" part=\"indicator\">\n <slot name=\"indicator\">\n ${definition.indicator || ''}\n </slot>\n </div>\n </slot>\n ${endSlotTemplate(context, definition)}\n </div>\n `)\n }\n <${anchoredRegionTag}\n ${ref('anchoredRegion')}\n class=\"anchored-region\"\n fixed-placement\n auto-update-mode=\"auto\"\n vertical-default-position=\"${x => (x.positionAttribute === DropdownPosition.above ? 'top' : 'bottom')}\"\n vertical-positioning-mode=\"${x => (!x.positionAttribute ? 'dynamic' : 'locktodefault')}\"\n horizontal-default-position=\"center\"\n horizontal-positioning-mode=\"locktodefault\"\n horizontal-scaling=\"anchor\"\n @loaded=\"${x => x.regionLoadedHandler()}\"\n ?hidden=\"${x => (x.collapsible ? !x.open : false)}\">\n <div class=\"listbox-background\">\n <div\n class=\"\n listbox \n ${x => (x.filteredOptions.length === 0 ? 'empty' : '')}\n ${x => x.positionAttribute}\n \"\n id=\"${x => x.listboxId}\"\n part=\"listbox\"\n role=\"listbox\"\n ?disabled=\"${x => x.disabled}\"\n ${ref('listbox')}\n >\n ${when(x => x.filterMode !== FilterMode.none, html<Select>`\n <div class=\"filter-field ${x => x.positionAttribute}\">\n <${iconMagnifyingGlassTag} class=\"filter-icon\"></${iconMagnifyingGlassTag}>\n <input\n ${ref('filterInput')}\n class=\"filter-input\"\n aria-controls=\"${x => x.ariaControls}\"\n aria-activedescendant=\"${x => x.ariaActiveDescendant}\"\n @input=\"${(x, c) => x.inputHandler(c.event as InputEvent)}\"\n @click=\"${(x, c) => x.inputClickHandler(c.event as MouseEvent)}\"\n placeholder=\"${x => filterSearchLabel.getValueFor(x)}\"\n value=\"${x => x.filter}\"\n />\n </div>\n `)}\n <div ${ref('scrollableRegion')}\n class=\"scrollable-region\">\n <slot\n ${slotted({\n filter: (n: Node) => n instanceof HTMLElement && Listbox.slottedOptionFilter(n),\n flatten: true,\n property: 'slottedOptions',\n })}\n ></slot>\n </div>\n ${when(x => (x.filterMode !== FilterMode.none && x.filteredOptions.length === 0), html<Select>`\n <span class=\"no-results-label ${x => x.positionAttribute}\">\n ${x => filterNoResultsLabel.getValueFor(x)}\n </span>\n `)}\n </div>\n </div>\n </${anchoredRegionTag}>\n </template>\n`;\n"]}
@@ -0,0 +1,32 @@
1
+ import type { Select } from '..';
2
+ import type { ListOption } from '../../list-option';
3
+ /**
4
+ * Page object for the `nimble-select` component to provide consistent ways
5
+ * of querying and interacting with the component during tests.
6
+ */
7
+ export declare class SelectPageObject {
8
+ private readonly selectElement;
9
+ constructor(selectElement: Select);
10
+ openAndSetFilterText(filterText: string): Promise<void>;
11
+ closeDropdown(): Promise<void>;
12
+ setOptions(options: ListOption[]): Promise<void>;
13
+ getFilteredOptions(): ListOption[];
14
+ getSelectedOption(): ListOption | null;
15
+ /**
16
+ * Either opens or closes the dropdown depending on its current state
17
+ */
18
+ clickSelect(): Promise<void>;
19
+ clickSelectedItem(): void;
20
+ clickFilterInput(): Promise<void>;
21
+ clickOption(index: number): void;
22
+ clickAway(): Promise<void>;
23
+ pressEnterKey(): void;
24
+ pressEscapeKey(): void;
25
+ pressArrowDownKey(): void;
26
+ pressSpaceKey(): Promise<void>;
27
+ isDropdownVisible(): boolean;
28
+ isFilterInputVisible(): boolean;
29
+ isNoResultsLabelVisible(): boolean;
30
+ getFilterInputText(): string;
31
+ private getFilterInput;
32
+ }
@@ -0,0 +1,128 @@
1
+ import { keyEnter, keyEscape, keyArrowDown, keySpace } from '@microsoft/fast-web-utilities';
2
+ import { waitForUpdatesAsync } from '../../testing/async-helpers';
3
+ import { FilterMode } from '../types';
4
+ /**
5
+ * Page object for the `nimble-select` component to provide consistent ways
6
+ * of querying and interacting with the component during tests.
7
+ */
8
+ export class SelectPageObject {
9
+ constructor(selectElement) {
10
+ this.selectElement = selectElement;
11
+ }
12
+ async openAndSetFilterText(filterText) {
13
+ if (this.selectElement.filterMode === FilterMode.none) {
14
+ throw new Error('Can not set filter text with filterMode set to "none".');
15
+ }
16
+ await this.clickSelect();
17
+ const filterInput = this.getFilterInput();
18
+ if (filterInput) {
19
+ filterInput.value = filterText;
20
+ }
21
+ await waitForUpdatesAsync();
22
+ const inputEvent = new InputEvent('input');
23
+ filterInput?.dispatchEvent(inputEvent);
24
+ await waitForUpdatesAsync();
25
+ }
26
+ async closeDropdown() {
27
+ this.selectElement.open = false;
28
+ await waitForUpdatesAsync();
29
+ }
30
+ async setOptions(options) {
31
+ options.forEach(option => {
32
+ option.setAttribute('role', 'option');
33
+ });
34
+ this.selectElement.slottedOptions = options;
35
+ await waitForUpdatesAsync();
36
+ }
37
+ getFilteredOptions() {
38
+ return this.selectElement.filteredOptions;
39
+ }
40
+ getSelectedOption() {
41
+ return this.selectElement.selectedOptions[0] ?? null;
42
+ }
43
+ /**
44
+ * Either opens or closes the dropdown depending on its current state
45
+ */
46
+ async clickSelect() {
47
+ this.selectElement.dispatchEvent(new Event('click'));
48
+ await waitForUpdatesAsync();
49
+ }
50
+ clickSelectedItem() {
51
+ if (!this.selectElement.open) {
52
+ throw new Error('Select must be open to click selectedItem');
53
+ }
54
+ this.clickOption(this.selectElement.selectedIndex);
55
+ }
56
+ async clickFilterInput() {
57
+ if (!this.selectElement.filterInput) {
58
+ throw new Error('Filter input is not available.');
59
+ }
60
+ this.selectElement.filterInput.click();
61
+ await waitForUpdatesAsync();
62
+ }
63
+ clickOption(index) {
64
+ if (!this.selectElement.open) {
65
+ throw new Error('Select must be open to click selectedItem');
66
+ }
67
+ if (index >= this.selectElement.options.length) {
68
+ throw new Error('"index" greater than number of current displayed options');
69
+ }
70
+ const option = this.selectElement.options[index];
71
+ option.scrollIntoView();
72
+ const optionRect = option.getClientRects()[0];
73
+ const clickEvent = new MouseEvent('click', {
74
+ clientY: optionRect.y + optionRect.height / 2,
75
+ clientX: optionRect.width / 2,
76
+ bubbles: true
77
+ });
78
+ option.dispatchEvent(clickEvent);
79
+ }
80
+ async clickAway() {
81
+ this.selectElement.dispatchEvent(new Event('focusout'));
82
+ await waitForUpdatesAsync();
83
+ }
84
+ pressEnterKey() {
85
+ this.selectElement.dispatchEvent(new KeyboardEvent('keydown', { key: keyEnter }));
86
+ }
87
+ pressEscapeKey() {
88
+ this.selectElement.dispatchEvent(new KeyboardEvent('keydown', { key: keyEscape }));
89
+ }
90
+ pressArrowDownKey() {
91
+ this.selectElement.dispatchEvent(new KeyboardEvent('keydown', { key: keyArrowDown }));
92
+ }
93
+ async pressSpaceKey() {
94
+ const alreadyOpen = this.selectElement.open;
95
+ this.selectElement.dispatchEvent(new KeyboardEvent('keydown', { key: keySpace, bubbles: true }));
96
+ await waitForUpdatesAsync();
97
+ if (this.selectElement.filterMode === FilterMode.standard
98
+ && alreadyOpen) {
99
+ // add space to end of current filter
100
+ const filterValue = `${this.selectElement.filterInput?.value ?? ''} `;
101
+ if (this.selectElement.filterInput) {
102
+ this.selectElement.filterInput.value = filterValue;
103
+ }
104
+ this.selectElement.filterInput?.dispatchEvent(new InputEvent('input', { inputType: 'insertText' }));
105
+ }
106
+ await waitForUpdatesAsync();
107
+ }
108
+ isDropdownVisible() {
109
+ return (this.selectElement.shadowRoot?.querySelector('.listbox') !== null);
110
+ }
111
+ isFilterInputVisible() {
112
+ return (this.selectElement.shadowRoot?.querySelector('.filter-field')
113
+ !== null);
114
+ }
115
+ isNoResultsLabelVisible() {
116
+ return (this.selectElement.shadowRoot?.querySelector('.no-results-label') !== null);
117
+ }
118
+ getFilterInputText() {
119
+ return this.getFilterInput()?.value ?? '';
120
+ }
121
+ getFilterInput() {
122
+ if (this.selectElement.filterMode === FilterMode.none) {
123
+ throw new Error('Select has filterMode of "none" so there is no filter input');
124
+ }
125
+ return this.selectElement.shadowRoot?.querySelector('.filter-input');
126
+ }
127
+ }
128
+ //# sourceMappingURL=select.pageobject.js.map