@globalpayments/vega 2.29.0 → 2.30.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 (267) hide show
  1. package/dist/cjs/{app-globals-46ab4eb3.js → app-globals-391d9a14.js} +4 -3
  2. package/dist/cjs/{child-nodes-event-prevent-slimmer-0245d631.js → child-nodes-event-prevent-slimmer-bed95a1b.js} +2 -2
  3. package/dist/cjs/{element-appender-slimmer-2b251c0a.js → element-appender-slimmer-415d261a.js} +725 -536
  4. package/dist/cjs/{event-emit-slimmer-d409d0ac.js → event-emit-slimmer-b321e3f5.js} +1 -1
  5. package/dist/cjs/{feature-flag-controller-078da332.js → feature-flag-controller-f0619cc7.js} +5 -0
  6. package/dist/cjs/index-d6bf3435.js +15 -0
  7. package/dist/cjs/index.cjs.js +6 -5
  8. package/dist/cjs/{internal-vega-event-manager-4d9a8e67.js → internal-vega-event-manager-9ffb3ed1.js} +10 -3
  9. package/dist/cjs/loader.cjs.js +7 -6
  10. package/dist/cjs/vega-accordion.cjs.entry.js +3 -3
  11. package/dist/cjs/vega-app-header-button.cjs.entry.js +5 -5
  12. package/dist/cjs/vega-banner.cjs.entry.js +4 -4
  13. package/dist/cjs/vega-breadcrumb.cjs.entry.js +5 -5
  14. package/dist/cjs/vega-button-circle.cjs.entry.js +5 -5
  15. package/dist/cjs/vega-button-group_2.cjs.entry.js +5 -5
  16. package/dist/cjs/vega-button-link.cjs.entry.js +5 -5
  17. package/dist/cjs/vega-button.cjs.entry.js +5 -5
  18. package/dist/cjs/vega-calendar_3.cjs.entry.js +5 -5
  19. package/dist/cjs/vega-carousel.cjs.entry.js +3 -3
  20. package/dist/cjs/vega-checkbox_2.cjs.entry.js +5 -5
  21. package/dist/cjs/vega-chip.cjs.entry.js +5 -5
  22. package/dist/cjs/vega-color-picker.cjs.entry.js +11 -5
  23. package/dist/cjs/vega-combo-box.cjs.entry.js +359 -175
  24. package/dist/cjs/vega-date-picker_2.cjs.entry.js +12 -9
  25. package/dist/cjs/vega-dialog_2.cjs.entry.js +5 -5
  26. package/dist/cjs/vega-dropdown_5.cjs.entry.js +34 -20
  27. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  28. package/dist/cjs/{vega-event-id-e40ac8f0.js → vega-event-id-419d36a8.js} +2 -0
  29. package/dist/cjs/vega-field-label.cjs.entry.js +3 -3
  30. package/dist/cjs/vega-file-uploader.cjs.entry.js +3 -3
  31. package/dist/cjs/vega-flex.cjs.entry.js +1 -1
  32. package/dist/cjs/vega-form.cjs.entry.js +5 -5
  33. package/dist/cjs/vega-image-uploader.cjs.entry.js +5 -5
  34. package/dist/cjs/vega-input-credit-card.cjs.entry.js +5 -5
  35. package/dist/cjs/vega-input-numeric.cjs.entry.js +5 -5
  36. package/dist/cjs/vega-input-phone-number.cjs.entry.js +5 -5
  37. package/dist/cjs/vega-input-range.cjs.entry.js +5 -5
  38. package/dist/cjs/vega-input-select.cjs.entry.js +18 -6
  39. package/dist/cjs/vega-input.cjs.entry.js +3 -3
  40. package/dist/cjs/vega-item-toggle.cjs.entry.js +3 -3
  41. package/dist/cjs/vega-left-nav_5.cjs.entry.js +4 -4
  42. package/dist/cjs/vega-page-notification_2.cjs.entry.js +1 -1
  43. package/dist/cjs/vega-pagination.cjs.entry.js +7 -7
  44. package/dist/cjs/vega-popover_2.cjs.entry.js +8 -8
  45. package/dist/cjs/vega-progress-tracker.cjs.entry.js +3 -3
  46. package/dist/cjs/vega-radio_2.cjs.entry.js +5 -5
  47. package/dist/cjs/vega-segment-control.cjs.entry.js +3 -3
  48. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +5 -5
  49. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +5 -5
  50. package/dist/cjs/vega-sidenav_3.cjs.entry.js +10 -10
  51. package/dist/cjs/vega-signature-capture.cjs.entry.js +3 -3
  52. package/dist/cjs/{vega-skeleton-loader-controller-4bd8cc88.js → vega-skeleton-loader-controller-4a016b04.js} +2 -12
  53. package/dist/cjs/vega-stepper.cjs.entry.js +5 -5
  54. package/dist/cjs/vega-tab-group_2.cjs.entry.js +5 -5
  55. package/dist/cjs/vega-table_8.cjs.entry.js +5 -5
  56. package/dist/cjs/vega-textarea.cjs.entry.js +5 -5
  57. package/dist/cjs/vega-time-picker_2.cjs.entry.js +7 -7
  58. package/dist/cjs/vega-toggle-switch.cjs.entry.js +3 -3
  59. package/dist/cjs/vega-tooltip_2.cjs.entry.js +6 -6
  60. package/dist/cjs/vega.cjs.js +7 -6
  61. package/dist/collection/components/vega-color-picker/vega-color-picker.css +8 -8
  62. package/dist/collection/components/vega-color-picker/vega-color-picker.js +30 -3
  63. package/dist/collection/components/vega-combo-box/slimmers/controllers/vega-combo-box-keyboard-controller.js +114 -0
  64. package/dist/collection/components/vega-combo-box/slimmers/controllers/vega-combo-box-value-controller.js +23 -0
  65. package/dist/collection/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.js +147 -0
  66. package/dist/collection/components/vega-combo-box/slimmers/renderers/vega-combo-box-renderer.js +50 -0
  67. package/dist/collection/components/vega-combo-box/vega-combo-box.js +30 -177
  68. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-element-appender-controller.js +2 -0
  69. package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-search-renderer.js +19 -5
  70. package/dist/collection/components/vega-dropdown/vega-dropdown.js +55 -9
  71. package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-dropdown-controller.js +7 -1
  72. package/dist/collection/components/vega-input-select/vega-input-select.js +55 -2
  73. package/dist/collection/components/vega-sidenav/vega-sidenav-group/vega-sidenav-group.js +4 -4
  74. package/dist/collection/components/vega-sidenav/vega-sidenav-link/vega-sidenav-link.js +9 -9
  75. package/dist/collection/components/vega-sidenav/vega-sidenav.js +12 -12
  76. package/dist/collection/constants/ui.js +1 -0
  77. package/dist/collection/helpers/event-manager/event-id/component-event-id-map.js +10 -3
  78. package/dist/collection/helpers/event-manager/event-id/vega-event-id.js +1 -0
  79. package/dist/collection/helpers/event-manager/test/vega-event-manager.test.js +2 -1
  80. package/dist/collection/helpers/feature-control/feature-flags-map.js +5 -0
  81. package/dist/collection/helpers/slimmers/element-appender-container/body-positioned-wrapper/body-positioned-wrapper.abstract.js +13 -0
  82. package/dist/collection/helpers/slimmers/element-appender-container/{position-relative-to-wrapper.js → body-positioned-wrapper/position-relative-to-wrapper.js} +23 -21
  83. package/dist/collection/helpers/slimmers/element-appender-container/{vega-modal-wrapper.js → body-positioned-wrapper/vega-modal-wrapper.js} +18 -15
  84. package/dist/collection/helpers/slimmers/element-appender-container/{vega-popover-wrapper.js → body-positioned-wrapper/vega-popover-wrapper.js} +20 -19
  85. package/dist/collection/helpers/slimmers/element-appender-container/default-wrapper.js +19 -19
  86. package/dist/collection/helpers/slimmers/element-appender-container/element-appender-container-controller.js +3 -3
  87. package/dist/collection/helpers/slimmers/element-appender-slimmer.js +10 -0
  88. package/dist/collection/helpers/slimmers/position-calculation/base-position-calculation-strategy.js +345 -0
  89. package/dist/collection/helpers/slimmers/position-calculation/body-position-calculation-strategy.js +66 -0
  90. package/dist/collection/helpers/slimmers/position-calculation/position-calculation-controller.js +121 -0
  91. package/dist/collection/helpers/slimmers/position-calculation/screen-position-calculation-strategy.js +59 -0
  92. package/dist/collection/{utils/test/position.test.js → helpers/slimmers/position-calculation/test/body-position-calculation-strategy.test.js} +135 -45
  93. package/dist/collection/helpers/slimmers/position-calculation/test/screen-position-calculation-strategy.test.js +113 -0
  94. package/dist/collection/helpers/ui/element-appender.js +21 -70
  95. package/dist/collection/helpers/ui/test/element-appender.test.js +53 -0
  96. package/dist/collection/utils/pagination.js +2 -2
  97. package/dist/esm/{app-globals-d90e7905.js → app-globals-00a57fbe.js} +3 -2
  98. package/dist/esm/{child-nodes-event-prevent-slimmer-4ecbc8aa.js → child-nodes-event-prevent-slimmer-db288af1.js} +2 -2
  99. package/dist/esm/{element-appender-slimmer-6cf76806.js → element-appender-slimmer-48d826b2.js} +719 -530
  100. package/dist/esm/{event-emit-slimmer-cb9d6f6c.js → event-emit-slimmer-44cb4573.js} +1 -1
  101. package/dist/esm/{feature-flag-controller-10780eeb.js → feature-flag-controller-297c4b9b.js} +5 -0
  102. package/dist/esm/index-fda6b5ee.js +13 -0
  103. package/dist/esm/index.js +5 -4
  104. package/dist/esm/{internal-vega-event-manager-1ebfd1eb.js → internal-vega-event-manager-8154661e.js} +10 -3
  105. package/dist/esm/loader.js +7 -6
  106. package/dist/esm/vega-accordion.entry.js +3 -3
  107. package/dist/esm/vega-app-header-button.entry.js +5 -5
  108. package/dist/esm/vega-banner.entry.js +4 -4
  109. package/dist/esm/vega-breadcrumb.entry.js +5 -5
  110. package/dist/esm/vega-button-circle.entry.js +5 -5
  111. package/dist/esm/vega-button-group_2.entry.js +5 -5
  112. package/dist/esm/vega-button-link.entry.js +5 -5
  113. package/dist/esm/vega-button.entry.js +5 -5
  114. package/dist/esm/vega-calendar_3.entry.js +5 -5
  115. package/dist/esm/vega-carousel.entry.js +3 -3
  116. package/dist/esm/vega-checkbox_2.entry.js +5 -5
  117. package/dist/esm/vega-chip.entry.js +5 -5
  118. package/dist/esm/vega-color-picker.entry.js +12 -6
  119. package/dist/esm/vega-combo-box.entry.js +362 -178
  120. package/dist/esm/vega-date-picker_2.entry.js +12 -9
  121. package/dist/esm/vega-dialog_2.entry.js +5 -5
  122. package/dist/esm/vega-dropdown_5.entry.js +34 -20
  123. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  124. package/dist/esm/{vega-event-id-7465a011.js → vega-event-id-b1655cbc.js} +2 -1
  125. package/dist/esm/vega-field-label.entry.js +3 -3
  126. package/dist/esm/vega-file-uploader.entry.js +3 -3
  127. package/dist/esm/vega-flex.entry.js +1 -1
  128. package/dist/esm/vega-form.entry.js +5 -5
  129. package/dist/esm/vega-image-uploader.entry.js +5 -5
  130. package/dist/esm/vega-input-credit-card.entry.js +5 -5
  131. package/dist/esm/vega-input-numeric.entry.js +5 -5
  132. package/dist/esm/vega-input-phone-number.entry.js +5 -5
  133. package/dist/esm/vega-input-range.entry.js +5 -5
  134. package/dist/esm/vega-input-select.entry.js +18 -6
  135. package/dist/esm/vega-input.entry.js +3 -3
  136. package/dist/esm/vega-item-toggle.entry.js +3 -3
  137. package/dist/esm/vega-left-nav_5.entry.js +4 -4
  138. package/dist/esm/vega-page-notification_2.entry.js +1 -1
  139. package/dist/esm/vega-pagination.entry.js +7 -7
  140. package/dist/esm/vega-popover_2.entry.js +8 -8
  141. package/dist/esm/vega-progress-tracker.entry.js +3 -3
  142. package/dist/esm/vega-radio_2.entry.js +5 -5
  143. package/dist/esm/vega-segment-control.entry.js +3 -3
  144. package/dist/esm/vega-selection-chip_2.entry.js +5 -5
  145. package/dist/esm/vega-selection-tile_2.entry.js +5 -5
  146. package/dist/esm/vega-sidenav_3.entry.js +10 -10
  147. package/dist/esm/vega-signature-capture.entry.js +3 -3
  148. package/dist/esm/{vega-skeleton-loader-controller-def7bf3f.js → vega-skeleton-loader-controller-cec6753f.js} +2 -12
  149. package/dist/esm/vega-stepper.entry.js +5 -5
  150. package/dist/esm/vega-tab-group_2.entry.js +5 -5
  151. package/dist/esm/vega-table_8.entry.js +5 -5
  152. package/dist/esm/vega-textarea.entry.js +5 -5
  153. package/dist/esm/vega-time-picker_2.entry.js +7 -7
  154. package/dist/esm/vega-toggle-switch.entry.js +3 -3
  155. package/dist/esm/vega-tooltip_2.entry.js +6 -6
  156. package/dist/esm/vega.js +7 -6
  157. package/dist/types/components/vega-color-picker/vega-color-picker.d.ts +6 -0
  158. package/dist/types/components/vega-combo-box/slimmers/controllers/vega-combo-box-keyboard-controller.d.ts +29 -0
  159. package/dist/types/components/vega-combo-box/slimmers/controllers/vega-combo-box-value-controller.d.ts +14 -0
  160. package/dist/types/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.d.ts +41 -0
  161. package/dist/types/components/vega-combo-box/slimmers/renderers/vega-combo-box-renderer.d.ts +17 -0
  162. package/dist/types/components/vega-combo-box/vega-combo-box.d.ts +8 -48
  163. package/dist/types/components/vega-dropdown/slimmers/renderers/vega-dropdown-search-renderer.d.ts +1 -0
  164. package/dist/types/components/vega-dropdown/types.d.ts +5 -0
  165. package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +21 -1
  166. package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-dropdown-controller.d.ts +1 -0
  167. package/dist/types/components/vega-input-select/vega-input-select.d.ts +20 -0
  168. package/dist/types/components/vega-sidenav/vega-sidenav-group/vega-sidenav-group.d.ts +3 -3
  169. package/dist/types/components/vega-sidenav/vega-sidenav-link/vega-sidenav-link.d.ts +7 -7
  170. package/dist/types/components/vega-sidenav/vega-sidenav.d.ts +8 -8
  171. package/dist/types/components.d.ts +58 -26
  172. package/dist/types/constants/ui.d.ts +1 -1
  173. package/dist/types/helpers/event-manager/event-id/vega-event-id.d.ts +1 -0
  174. package/dist/types/helpers/feature-control/feature-flag.d.ts +2 -1
  175. package/dist/types/helpers/slimmers/element-appender-container/body-positioned-wrapper/body-positioned-wrapper.abstract.d.ts +15 -0
  176. package/dist/types/helpers/slimmers/element-appender-container/{position-relative-to-wrapper.d.ts → body-positioned-wrapper/position-relative-to-wrapper.d.ts} +5 -5
  177. package/dist/types/helpers/slimmers/element-appender-container/{vega-modal-wrapper.d.ts → body-positioned-wrapper/vega-modal-wrapper.d.ts} +5 -5
  178. package/dist/types/helpers/slimmers/element-appender-container/{vega-popover-wrapper.d.ts → body-positioned-wrapper/vega-popover-wrapper.d.ts} +5 -5
  179. package/dist/types/helpers/slimmers/element-appender-container/default-wrapper.d.ts +2 -2
  180. package/dist/types/helpers/slimmers/element-appender-container/element-appender-container-controller.d.ts +3 -3
  181. package/dist/types/helpers/slimmers/element-appender-slimmer.d.ts +1 -0
  182. package/dist/types/helpers/slimmers/position-calculation/base-position-calculation-strategy.d.ts +138 -0
  183. package/dist/types/helpers/slimmers/position-calculation/body-position-calculation-strategy.d.ts +34 -0
  184. package/dist/types/helpers/slimmers/position-calculation/position-calculation-controller.d.ts +54 -0
  185. package/dist/types/helpers/slimmers/position-calculation/screen-position-calculation-strategy.d.ts +34 -0
  186. package/dist/types/helpers/slimmers/position-calculation/test/body-position-calculation-strategy.test.d.ts +15 -0
  187. package/dist/types/helpers/ui/element-appender.d.ts +9 -24
  188. package/dist/types/types/components.type.d.ts +1 -0
  189. package/dist/vega/index.esm.js +1 -1
  190. package/dist/vega/{p-cf998fc5.entry.js → p-00c5aee5.entry.js} +1 -1
  191. package/dist/vega/{p-f6d4c1ff.entry.js → p-042b4b3f.entry.js} +1 -1
  192. package/dist/vega/{p-817a83c6.entry.js → p-07a8cf89.entry.js} +1 -1
  193. package/dist/vega/p-0abe1ade.entry.js +1 -0
  194. package/dist/vega/{p-74fcdbc6.entry.js → p-0f0e4198.entry.js} +1 -1
  195. package/dist/vega/{p-d7800ca2.entry.js → p-14f5a9ad.entry.js} +1 -1
  196. package/dist/vega/p-15023bad.entry.js +1 -0
  197. package/dist/vega/{p-38f26c82.entry.js → p-1be2fd46.entry.js} +1 -1
  198. package/dist/vega/p-1bfcb6b7.entry.js +1 -0
  199. package/dist/vega/{p-b0a6421a.entry.js → p-20d9c07c.entry.js} +1 -1
  200. package/dist/vega/p-2306c736.js +1 -0
  201. package/dist/vega/{p-8ef03eed.js → p-302e7589.js} +1 -1
  202. package/dist/vega/p-34710a3c.entry.js +1 -0
  203. package/dist/vega/p-3903ce7a.entry.js +1 -0
  204. package/dist/vega/{p-0bbcc81a.entry.js → p-438caeb3.entry.js} +1 -1
  205. package/dist/vega/{p-319efe6c.js → p-4ffd7493.js} +1 -1
  206. package/dist/vega/{p-ed4a26e7.entry.js → p-57d9bde6.entry.js} +1 -1
  207. package/dist/vega/p-5f377954.js +1 -1
  208. package/dist/vega/{p-ff7bd85f.entry.js → p-623fe226.entry.js} +1 -1
  209. package/dist/vega/{p-1d94428c.entry.js → p-63bee4f1.entry.js} +1 -1
  210. package/dist/vega/{p-6ac3ba21.entry.js → p-64ff6318.entry.js} +1 -1
  211. package/dist/vega/{p-86eda597.entry.js → p-72ecc510.entry.js} +1 -1
  212. package/dist/vega/p-79019d08.js +1 -0
  213. package/dist/vega/p-7941701a.entry.js +1 -0
  214. package/dist/vega/{p-689ee038.entry.js → p-799cb0a4.entry.js} +1 -1
  215. package/dist/vega/{p-1678b69f.entry.js → p-7a6a0740.entry.js} +1 -1
  216. package/dist/vega/p-80785fcf.entry.js +1 -0
  217. package/dist/vega/{p-0ae9b900.entry.js → p-83ef4c13.entry.js} +1 -1
  218. package/dist/vega/{p-ad31be2c.entry.js → p-87cd0d6a.entry.js} +1 -1
  219. package/dist/vega/{p-b771268b.entry.js → p-8cfe4027.entry.js} +1 -1
  220. package/dist/vega/{p-5dbcab1b.entry.js → p-9281cdb2.entry.js} +1 -1
  221. package/dist/vega/p-95b25b97.entry.js +1 -0
  222. package/dist/vega/p-9b45e5dc.entry.js +1 -0
  223. package/dist/vega/{p-0a91f217.entry.js → p-9b9c0afb.entry.js} +1 -1
  224. package/dist/vega/{p-92aaed64.entry.js → p-9ba68531.entry.js} +2 -2
  225. package/dist/vega/{p-dacf5572.entry.js → p-a66ea015.entry.js} +1 -1
  226. package/dist/vega/{p-d0756d70.entry.js → p-a67748c6.entry.js} +1 -1
  227. package/dist/vega/{p-53bb8cde.entry.js → p-a6e1d9bc.entry.js} +1 -1
  228. package/dist/vega/{p-8b0533c4.entry.js → p-b1a249ef.entry.js} +1 -1
  229. package/dist/vega/{p-cf4fea44.entry.js → p-b6e49ee9.entry.js} +1 -1
  230. package/dist/vega/{p-d045099d.entry.js → p-be6041fc.entry.js} +1 -1
  231. package/dist/vega/{p-2ae04da9.entry.js → p-bf38199b.entry.js} +1 -1
  232. package/dist/vega/p-bf3fbb9b.js +1 -0
  233. package/dist/vega/p-c06e7880.js +1 -0
  234. package/dist/vega/{p-e42a2a12.entry.js → p-c3c2890e.entry.js} +1 -1
  235. package/dist/vega/{p-b3417358.entry.js → p-c6ed1982.entry.js} +1 -1
  236. package/dist/vega/p-cdebfee7.entry.js +1 -0
  237. package/dist/vega/p-cea70476.entry.js +1 -0
  238. package/dist/vega/{p-e4d6e2c8.entry.js → p-d3c07efa.entry.js} +1 -1
  239. package/dist/vega/p-d71f968e.entry.js +1 -0
  240. package/dist/vega/{p-30693931.entry.js → p-e165c9f1.entry.js} +1 -1
  241. package/dist/vega/{p-19769aba.js → p-e5d7b4b8.js} +1 -1
  242. package/dist/vega/{p-ebb93b96.entry.js → p-e6f91767.entry.js} +1 -1
  243. package/dist/vega/p-ed237efc.js +1 -0
  244. package/dist/vega/{p-a105e4de.js → p-f2851f16.js} +1 -1
  245. package/dist/vega/{p-975c5a3a.entry.js → p-fb3233db.entry.js} +1 -1
  246. package/dist/vega/{p-a0f5d2cc.entry.js → p-ff22a95f.entry.js} +1 -1
  247. package/dist/vega/vega.esm.js +1 -1
  248. package/package.json +4 -2
  249. package/dist/collection/utils/position.js +0 -373
  250. package/dist/types/utils/position.d.ts +0 -17
  251. package/dist/vega/p-001c0b51.entry.js +0 -1
  252. package/dist/vega/p-0064f5b1.entry.js +0 -1
  253. package/dist/vega/p-19ef612a.js +0 -1
  254. package/dist/vega/p-1f03b576.entry.js +0 -1
  255. package/dist/vega/p-270b0d1a.entry.js +0 -1
  256. package/dist/vega/p-28c78b79.entry.js +0 -1
  257. package/dist/vega/p-31d530d2.entry.js +0 -1
  258. package/dist/vega/p-3f5e44c1.js +0 -1
  259. package/dist/vega/p-651e5c7d.entry.js +0 -1
  260. package/dist/vega/p-68823025.js +0 -1
  261. package/dist/vega/p-6b8277eb.js +0 -1
  262. package/dist/vega/p-7d02f723.entry.js +0 -1
  263. package/dist/vega/p-8bd09712.entry.js +0 -1
  264. package/dist/vega/p-a14be625.entry.js +0 -1
  265. package/dist/vega/p-cc272fbc.entry.js +0 -1
  266. package/dist/vega/p-e2c25432.entry.js +0 -1
  267. /package/dist/types/{utils/test/position.test.d.ts → helpers/slimmers/position-calculation/test/screen-position-calculation-strategy.test.d.ts} +0 -0
@@ -1,13 +1,69 @@
1
- import { getPositionBox } from '../../utils/position';
2
- import { LogUtility } from '../log';
3
- describe('getPositionBox', () => {
4
- const innerHTML = `
5
- <vega-modal>
6
- <div class='target'> test target </div>
7
- </vega-modal>
8
- <div class='element'>test element</div>
9
- `;
10
- document.body.innerHTML = innerHTML;
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { InjectVegaSlimmer } from 'vega-slimmer/core';
8
+ import { LogUtility } from '../../../../utils/log';
9
+ import { PositionCalculationController } from '../position-calculation-controller';
10
+ import { ElementAppenderContainerController } from '../../element-appender-container/element-appender-container-controller';
11
+ export class PositionCalculationMockedComponent {
12
+ constructor() {
13
+ this.elementAppenderContainerController = new ElementAppenderContainerController();
14
+ this.positionCalculationController = new PositionCalculationController();
15
+ this.isScreenPosition = false;
16
+ this.setHtml();
17
+ }
18
+ setIsScreenPosition(isScreenPosition) {
19
+ this.isScreenPosition = isScreenPosition;
20
+ }
21
+ getPositionBox(container, element, target, placement, alignment, translocation = { X: 0, Y: 0 }) {
22
+ this.container = container;
23
+ this.showConfig = {
24
+ target: target,
25
+ appendableElement: element,
26
+ placement: placement,
27
+ alignment: alignment,
28
+ translocation: translocation,
29
+ isScreenPosition: this.isScreenPosition,
30
+ };
31
+ this.positionCalculationController.setCalculationStrategy();
32
+ this.positionCalculationController.adjustPosition();
33
+ let placementResult;
34
+ let alignmentResult;
35
+ element.className.split(' ').forEach((item) => {
36
+ if (item.includes('vega-placement')) {
37
+ placementResult = item.replace('vega-placement-', '');
38
+ }
39
+ if (item.includes('vega-alignment')) {
40
+ alignmentResult = item.replace('vega-alignment-', '');
41
+ }
42
+ });
43
+ return {
44
+ top: Number(element.style.top.replace('px', '')),
45
+ left: Number(element.style.left.replace('px', '')),
46
+ placement: placementResult,
47
+ alignment: alignmentResult,
48
+ };
49
+ }
50
+ setHtml() {
51
+ document.body.innerHTML = `
52
+ <vega-modal>
53
+ <div class='target'> test target </div>
54
+ </vega-modal>
55
+ <div class='element'>test element</div>
56
+ `;
57
+ }
58
+ }
59
+ __decorate([
60
+ InjectVegaSlimmer()
61
+ ], PositionCalculationMockedComponent.prototype, "elementAppenderContainerController", void 0);
62
+ __decorate([
63
+ InjectVegaSlimmer()
64
+ ], PositionCalculationMockedComponent.prototype, "positionCalculationController", void 0);
65
+ describe('component.getPositionBox', () => {
66
+ const component = new PositionCalculationMockedComponent();
11
67
  const element = document.querySelector('.element');
12
68
  const target = document.querySelector('.target');
13
69
  const container = document.querySelector('vega-modal');
@@ -32,7 +88,7 @@ describe('getPositionBox', () => {
32
88
  width: 100,
33
89
  height: 100,
34
90
  });
35
- getPositionBox(container, element, target);
91
+ component.getPositionBox(container, element, target);
36
92
  expect(LogUtility.warn).toHaveBeenCalledWith(`Calculate position should make container as 'position: relative', otherwise the result might not be accurate.`);
37
93
  });
38
94
  describe('directions', () => {
@@ -48,7 +104,7 @@ describe('getPositionBox', () => {
48
104
  top: 100,
49
105
  left: 100,
50
106
  });
51
- const positionBox = getPositionBox(container, element, target, [
107
+ const positionBox = component.getPositionBox(container, element, target, [
52
108
  'left',
53
109
  'bottom',
54
110
  'right',
@@ -63,7 +119,7 @@ describe('getPositionBox', () => {
63
119
  top: 100,
64
120
  left: 100,
65
121
  });
66
- const positionBox = getPositionBox(container, element, target);
122
+ const positionBox = component.getPositionBox(container, element, target);
67
123
  expect(positionBox).toEqual({ top: 50, left: 100, placement: 'top', alignment: 'start' });
68
124
  });
69
125
  test('return result as expected when with single placement', () => {
@@ -75,13 +131,13 @@ describe('getPositionBox', () => {
75
131
  left: 100,
76
132
  });
77
133
  let positionBox;
78
- positionBox = getPositionBox(container, element, target, 'left');
134
+ positionBox = component.getPositionBox(container, element, target, 'left');
79
135
  expect(positionBox).toEqual({ top: 100, left: 50, placement: 'left', alignment: 'start' });
80
- positionBox = getPositionBox(container, element, target, 'top');
136
+ positionBox = component.getPositionBox(container, element, target, 'top');
81
137
  expect(positionBox).toEqual({ top: 50, left: 100, placement: 'top', alignment: 'start' });
82
- positionBox = getPositionBox(container, element, target, 'right');
138
+ positionBox = component.getPositionBox(container, element, target, 'right');
83
139
  expect(positionBox).toEqual({ top: 100, left: 200, placement: 'right', alignment: 'start' });
84
- positionBox = getPositionBox(container, element, target, 'bottom');
140
+ positionBox = component.getPositionBox(container, element, target, 'bottom');
85
141
  expect(positionBox).toEqual({ top: 200, left: 100, placement: 'bottom', alignment: 'start' });
86
142
  });
87
143
  test('return result as expected when container scroll', () => {
@@ -95,13 +151,13 @@ describe('getPositionBox', () => {
95
151
  let positionBox;
96
152
  container.scrollTop = 20;
97
153
  container.scrollLeft = 20;
98
- positionBox = getPositionBox(container, element, target, 'left');
154
+ positionBox = component.getPositionBox(container, element, target, 'left');
99
155
  expect(positionBox).toEqual({ top: 100, left: 50, placement: 'left', alignment: 'start' });
100
- positionBox = getPositionBox(container, element, target, 'top');
156
+ positionBox = component.getPositionBox(container, element, target, 'top');
101
157
  expect(positionBox).toEqual({ top: 50, left: 100, placement: 'top', alignment: 'start' });
102
- positionBox = getPositionBox(container, element, target, 'right');
158
+ positionBox = component.getPositionBox(container, element, target, 'right');
103
159
  expect(positionBox).toEqual({ top: 100, left: 200, placement: 'right', alignment: 'start' });
104
- positionBox = getPositionBox(container, element, target, 'bottom');
160
+ positionBox = component.getPositionBox(container, element, target, 'bottom');
105
161
  expect(positionBox).toEqual({ top: 200, left: 100, placement: 'bottom', alignment: 'start' });
106
162
  });
107
163
  test('return result as expected when top have not enough placement', () => {
@@ -112,7 +168,7 @@ describe('getPositionBox', () => {
112
168
  top: 100,
113
169
  left: 100,
114
170
  });
115
- const positionBox = getPositionBox(container, element, target, 'top');
171
+ const positionBox = component.getPositionBox(container, element, target, 'top');
116
172
  expect(positionBox).toEqual({ top: 100, left: 50, placement: 'left', alignment: 'start' });
117
173
  });
118
174
  test('return result as expected when top have not enough placement and with translocation', () => {
@@ -123,7 +179,7 @@ describe('getPositionBox', () => {
123
179
  top: 100,
124
180
  left: 100,
125
181
  });
126
- const positionBox = getPositionBox(container, element, target, 'top', undefined, {
182
+ const positionBox = component.getPositionBox(container, element, target, 'top', undefined, {
127
183
  X: 10,
128
184
  Y: 20,
129
185
  });
@@ -137,7 +193,7 @@ describe('getPositionBox', () => {
137
193
  top: 100,
138
194
  left: 100,
139
195
  });
140
- const positionBox = getPositionBox(container, element, target, 'top');
196
+ const positionBox = component.getPositionBox(container, element, target, 'top');
141
197
  expect(positionBox).toEqual({ top: 200, left: 100, placement: 'bottom', alignment: 'start' });
142
198
  });
143
199
  test('return result as expected when top, left and bottom have not enough placement', () => {
@@ -148,7 +204,7 @@ describe('getPositionBox', () => {
148
204
  top: 100,
149
205
  left: 100,
150
206
  });
151
- const positionBox = getPositionBox(container, element, target, 'top');
207
+ const positionBox = component.getPositionBox(container, element, target, 'top');
152
208
  expect(positionBox).toEqual({ top: 100, left: 200, placement: 'right', alignment: 'start' });
153
209
  });
154
210
  test('return result as expected when container scrollHeight/scrollWidth is big than body scrollHeight/scrollWidth', () => {
@@ -161,12 +217,12 @@ describe('getPositionBox', () => {
161
217
  top: 200,
162
218
  left: 200,
163
219
  });
164
- const positionBox = getPositionBox(container, element, target, [
220
+ const positionBox = component.getPositionBox(container, element, target, [
165
221
  'bottom',
166
222
  'top',
167
223
  ]);
168
224
  expect(positionBox).toEqual({ top: 400, left: 200, placement: 'bottom', alignment: 'start' });
169
- const positionBox1 = getPositionBox(container, element, target, [
225
+ const positionBox1 = component.getPositionBox(container, element, target, [
170
226
  'right',
171
227
  'left',
172
228
  ]);
@@ -182,9 +238,43 @@ describe('getPositionBox', () => {
182
238
  Object.assign(target, { offsetTop: 0 });
183
239
  Object.assign(target, { offsetLeft: 0 });
184
240
  spyOn(LogUtility, 'warn');
185
- getPositionBox(container, target, element);
241
+ component.getPositionBox(container, target, element);
186
242
  expect(LogUtility.warn).toBeCalled();
187
243
  });
244
+ test('return result as expected when top center have enough placement', () => {
245
+ Object.assign(container, { scrollHeight: 530 });
246
+ Object.assign(container, { scrollWidth: 530 });
247
+ mockElementReturn(element, 'getBoundingClientRect', { width: 200, height: 200 });
248
+ mockElementReturn(target, 'getBoundingClientRect', {
249
+ width: 100,
250
+ height: 100,
251
+ top: 300,
252
+ left: 80,
253
+ });
254
+ expect(component.getPositionBox(container, element, target, ['top', 'left'], ['center', 'start'])).toEqual({
255
+ top: 100,
256
+ left: 30,
257
+ placement: 'top',
258
+ alignment: 'center',
259
+ });
260
+ });
261
+ test('return result as expected when left center have enough placement', () => {
262
+ Object.assign(container, { scrollHeight: 530 });
263
+ Object.assign(container, { scrollWidth: 530 });
264
+ mockElementReturn(element, 'getBoundingClientRect', { width: 200, height: 200 });
265
+ mockElementReturn(target, 'getBoundingClientRect', {
266
+ width: 100,
267
+ height: 100,
268
+ top: 80,
269
+ left: 300,
270
+ });
271
+ expect(component.getPositionBox(container, element, target, ['left', 'top'], ['center', 'start'])).toEqual({
272
+ top: 30,
273
+ left: 100,
274
+ placement: 'left',
275
+ alignment: 'center',
276
+ });
277
+ });
188
278
  });
189
279
  describe('with translocation', () => {
190
280
  beforeAll(() => {
@@ -197,17 +287,17 @@ describe('getPositionBox', () => {
197
287
  });
198
288
  });
199
289
  test('return result as expected when container not scrolled', () => {
200
- const positionBox = getPositionBox(container, element, target, 'top', undefined, {
290
+ const positionBox = component.getPositionBox(container, element, target, 'top', undefined, {
201
291
  X: 100,
202
292
  Y: 100,
203
293
  });
204
294
  expect(positionBox).toEqual({ top: -60, left: 200, placement: 'top', alignment: 'start' });
205
- const positionBox1 = getPositionBox(container, element, target, 'right', undefined, {
295
+ const positionBox1 = component.getPositionBox(container, element, target, 'right', undefined, {
206
296
  X: 100,
207
297
  Y: 100,
208
298
  });
209
299
  expect(positionBox1).toEqual({ top: 200, left: 300, placement: 'right', alignment: 'start' });
210
- const positionBox2 = getPositionBox(container, element, target, 'left', undefined, {
300
+ const positionBox2 = component.getPositionBox(container, element, target, 'left', undefined, {
211
301
  X: 100,
212
302
  Y: 100,
213
303
  });
@@ -216,46 +306,46 @@ describe('getPositionBox', () => {
216
306
  test('return result as expected when container scrolled', () => {
217
307
  container.scrollTop = 20;
218
308
  container.scrollLeft = 20;
219
- const positionBox = getPositionBox(container, element, target, 'top', undefined, {
309
+ const positionBox = component.getPositionBox(container, element, target, 'top', undefined, {
220
310
  X: 100,
221
311
  Y: 100,
222
312
  });
223
313
  expect(positionBox).toEqual({ top: -40, left: 220, placement: 'top', alignment: 'start' });
224
- const positionBox1 = getPositionBox(container, element, target, 'right', undefined, {
314
+ const positionBox1 = component.getPositionBox(container, element, target, 'right', undefined, {
225
315
  X: 100,
226
316
  Y: 100,
227
317
  });
228
318
  expect(positionBox1).toEqual({ top: 220, left: 320, placement: 'right', alignment: 'start' });
229
319
  });
230
320
  test('return result as expected when alignment set', () => {
231
- const positionBox1 = getPositionBox(container, element, target, 'bottom', 'start');
321
+ const positionBox1 = component.getPositionBox(container, element, target, 'bottom', 'start');
232
322
  expect(positionBox1).toEqual({ top: 200, left: 100, placement: 'bottom', alignment: 'start' });
233
- const positionBox2 = getPositionBox(container, element, target, 'bottom', 'center');
323
+ const positionBox2 = component.getPositionBox(container, element, target, 'bottom', 'center');
234
324
  expect(positionBox2).toEqual({
235
325
  top: 200,
236
326
  left: 120,
237
327
  placement: 'bottom',
238
328
  alignment: 'center',
239
329
  });
240
- const positionBox3 = getPositionBox(container, element, target, 'bottom', 'end');
330
+ const positionBox3 = component.getPositionBox(container, element, target, 'bottom', 'end');
241
331
  expect(positionBox3).toEqual({ top: 200, left: 140, placement: 'bottom', alignment: 'end' });
242
- const positionBox4 = getPositionBox(container, element, target, 'top', 'start');
332
+ const positionBox4 = component.getPositionBox(container, element, target, 'top', 'start');
243
333
  expect(positionBox4).toEqual({ top: 40, left: 100, placement: 'top', alignment: 'start' });
244
- const positionBox5 = getPositionBox(container, element, target, 'top', 'center');
334
+ const positionBox5 = component.getPositionBox(container, element, target, 'top', 'center');
245
335
  expect(positionBox5).toEqual({ top: 40, left: 120, placement: 'top', alignment: 'center' });
246
- const positionBox6 = getPositionBox(container, element, target, 'top', 'end');
336
+ const positionBox6 = component.getPositionBox(container, element, target, 'top', 'end');
247
337
  expect(positionBox6).toEqual({ top: 40, left: 140, placement: 'top', alignment: 'end' });
248
- const positionBox7 = getPositionBox(container, element, target, 'left', 'start');
338
+ const positionBox7 = component.getPositionBox(container, element, target, 'left', 'start');
249
339
  expect(positionBox7).toEqual({ top: 100, left: 40, placement: 'left', alignment: 'start' });
250
- const positionBox8 = getPositionBox(container, element, target, 'left', 'center');
340
+ const positionBox8 = component.getPositionBox(container, element, target, 'left', 'center');
251
341
  expect(positionBox8).toEqual({ top: 120, left: 40, placement: 'left', alignment: 'center' });
252
- const positionBox9 = getPositionBox(container, element, target, 'left', 'end', undefined);
342
+ const positionBox9 = component.getPositionBox(container, element, target, 'left', 'end', undefined);
253
343
  expect(positionBox9).toEqual({ top: 140, left: 40, placement: 'left', alignment: 'end' });
254
- const positionBox10 = getPositionBox(container, element, target, 'right', 'start');
344
+ const positionBox10 = component.getPositionBox(container, element, target, 'right', 'start');
255
345
  expect(positionBox10).toEqual({ top: 100, left: 200, placement: 'right', alignment: 'start' });
256
- const positionBox11 = getPositionBox(container, element, target, 'right', 'center');
346
+ const positionBox11 = component.getPositionBox(container, element, target, 'right', 'center');
257
347
  expect(positionBox11).toEqual({ top: 120, left: 200, placement: 'right', alignment: 'center' });
258
- const positionBox12 = getPositionBox(container, element, target, 'right', 'end');
348
+ const positionBox12 = component.getPositionBox(container, element, target, 'right', 'end');
259
349
  expect(positionBox12).toEqual({ top: 140, left: 200, placement: 'right', alignment: 'end' });
260
350
  });
261
351
  });
@@ -0,0 +1,113 @@
1
+ import { PositionCalculationMockedComponent } from './body-position-calculation-strategy.test';
2
+ describe('BodyPositionCalculationStrategy.getPositionBox', () => {
3
+ const component = new PositionCalculationMockedComponent();
4
+ component.setIsScreenPosition(true);
5
+ const innerHTML = `
6
+ <div class='container'>
7
+ <div class='target'> test target </div>
8
+ <div class='element'>test element</div>
9
+ </div>
10
+ `;
11
+ document.body.innerHTML = innerHTML;
12
+ const element = document.querySelector('.element');
13
+ const target = document.querySelector('.target');
14
+ const container = document.querySelector('.container');
15
+ function mockElementReturn(element, method, value) {
16
+ spyOn(element, method).and.returnValue(value);
17
+ }
18
+ beforeAll(() => {
19
+ Object.assign(window, { innerWidth: 500 });
20
+ Object.assign(window, { innerHeight: 500 });
21
+ });
22
+ describe('directions', () => {
23
+ beforeAll(() => {
24
+ mockElementReturn(element, 'getBoundingClientRect', { width: 50, height: 50 });
25
+ mockElementReturn(target, 'getBoundingClientRect', {
26
+ width: 100,
27
+ height: 100,
28
+ top: 100,
29
+ left: 100,
30
+ });
31
+ });
32
+ test('return result as expected in top', () => {
33
+ expect(component.getPositionBox(container, element, target, ['top'], ['start'])).toEqual({
34
+ top: 50,
35
+ left: 100,
36
+ placement: 'top',
37
+ alignment: 'start',
38
+ });
39
+ expect(component.getPositionBox(container, element, target, ['top'], ['center'])).toEqual({
40
+ top: 50,
41
+ left: 125,
42
+ placement: 'top',
43
+ alignment: 'center',
44
+ });
45
+ expect(component.getPositionBox(container, element, target, ['top'], ['end'])).toEqual({
46
+ top: 50,
47
+ left: 150,
48
+ placement: 'top',
49
+ alignment: 'end',
50
+ });
51
+ });
52
+ test('return result as expected in left', () => {
53
+ expect(component.getPositionBox(container, element, target, ['left'], ['start'])).toEqual({
54
+ top: 100,
55
+ left: 50,
56
+ placement: 'left',
57
+ alignment: 'start',
58
+ });
59
+ expect(component.getPositionBox(container, element, target, ['left'], ['center'])).toEqual({
60
+ top: 125,
61
+ left: 50,
62
+ placement: 'left',
63
+ alignment: 'center',
64
+ });
65
+ expect(component.getPositionBox(container, element, target, ['left'], ['end'])).toEqual({
66
+ top: 150,
67
+ left: 50,
68
+ placement: 'left',
69
+ alignment: 'end',
70
+ });
71
+ });
72
+ test('return result as expected in bottom', () => {
73
+ expect(component.getPositionBox(container, element, target, ['bottom'], ['start'])).toEqual({
74
+ top: 200,
75
+ left: 100,
76
+ placement: 'bottom',
77
+ alignment: 'start',
78
+ });
79
+ expect(component.getPositionBox(container, element, target, ['bottom'], ['center'])).toEqual({
80
+ top: 200,
81
+ left: 125,
82
+ placement: 'bottom',
83
+ alignment: 'center',
84
+ });
85
+ expect(component.getPositionBox(container, element, target, ['bottom'], ['end'])).toEqual({
86
+ top: 200,
87
+ left: 150,
88
+ placement: 'bottom',
89
+ alignment: 'end',
90
+ });
91
+ });
92
+ test('return result as expected in right', () => {
93
+ expect(component.getPositionBox(container, element, target, ['right'], ['start'])).toEqual({
94
+ top: 100,
95
+ left: 200,
96
+ placement: 'right',
97
+ alignment: 'start',
98
+ });
99
+ expect(component.getPositionBox(container, element, target, ['right'], ['center'])).toEqual({
100
+ top: 125,
101
+ left: 200,
102
+ placement: 'right',
103
+ alignment: 'center',
104
+ });
105
+ expect(component.getPositionBox(container, element, target, ['right'], ['end'])).toEqual({
106
+ top: 150,
107
+ left: 200,
108
+ placement: 'right',
109
+ alignment: 'end',
110
+ });
111
+ });
112
+ });
113
+ });
@@ -4,14 +4,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { getPositionBox } from '../../utils/position';
8
- import ResponsiveFormatFacade from '../formatter/responsive-map-formatter/responsive-format-facade';
9
7
  import { isElementVisible } from '../../utils/ui';
10
8
  import InternalVegaZIndexManager from '../zindex/internal-vega-z-index-manager';
11
9
  import { LogUtility } from '../../utils/log';
12
10
  import { InjectVegaSlimmer, createDynamicSlimmer, methodPlaceholder } from 'vega-slimmer/core';
13
11
  import { PageResizeObserverSlimmer } from '../slimmers/page-resize-observer-slimmer';
14
12
  import { ElementAppenderContainerController } from '../slimmers/element-appender-container/element-appender-container-controller';
13
+ import { PositionCalculationController } from '../slimmers/position-calculation/position-calculation-controller';
15
14
  /**
16
15
  * This class is responsible for attaching the appendable element to the host element and adjusting its position
17
16
  *
@@ -50,8 +49,6 @@ export class ElementAppender {
50
49
  // https://gethired.atlassian.net/browse/VD-1087
51
50
  if (isElementVisible(this.showConfig.target) &&
52
51
  isElementVisible(this.showConfig.appendableElement)) {
53
- this.adjustWidth();
54
- this.adjustHeight();
55
52
  this.adjustPosition();
56
53
  }
57
54
  },
@@ -60,6 +57,7 @@ export class ElementAppender {
60
57
  },
61
58
  ]);
62
59
  this.elementAppenderContainerController = new ElementAppenderContainerController();
60
+ this.positionCalculationController = new PositionCalculationController();
63
61
  this.showConfigCallback = showConfigCallback;
64
62
  this.showConfigCallbackTarget = showConfigCallbackTarget;
65
63
  const config = this.getShowConfig();
@@ -84,8 +82,6 @@ export class ElementAppender {
84
82
  /* A function that takes no parameters and returns nothing. It sets the position of the appendable
85
83
  element. */
86
84
  this.prepareShow();
87
- this.adjustWidth();
88
- this.adjustHeight();
89
85
  this.adjustPosition();
90
86
  this.setZIndex();
91
87
  this.toggleShow(true);
@@ -101,6 +97,18 @@ export class ElementAppender {
101
97
  this.resetContainerPosition();
102
98
  InternalVegaZIndexManager.removeZIndex(this.showConfig.appendableElement, 'base');
103
99
  }
100
+ /**
101
+ * Update position while window scroll.
102
+ */
103
+ onScroll() {
104
+ var _a;
105
+ const currentTargetRect = this.showConfig.target.getBoundingClientRect();
106
+ if (this.showConfig.isScreenPosition &&
107
+ (currentTargetRect.left !== ((_a = this.previousTargetRect) === null || _a === void 0 ? void 0 : _a.left) ||
108
+ currentTargetRect.top !== this.previousTargetRect.top)) {
109
+ this.adjustPosition(true);
110
+ }
111
+ }
104
112
  /* istanbul ignore next */
105
113
  /**
106
114
  * It removes the z-index from the appendable element, removes the appendable element from the DOM, and
@@ -212,76 +220,16 @@ export class ElementAppender {
212
220
  this.container.style.position = 'relative';
213
221
  }
214
222
  this.showConfig.appendableElement.style.boxSizing = 'border-box';
215
- }
216
- /**
217
- * It sets the width of the appendable element to the width of the target element if the
218
- * matchTargetWidth property is true, otherwise it sets the width of the appendable element to the
219
- * size property
220
- *
221
- * @returns {void}
222
- */
223
- adjustWidth() {
224
- if (this.showConfig.matchTargetWidth) {
225
- const { width: hostWidth } = this.showConfig.target.getBoundingClientRect();
226
- this.setRelatedWidth('width', hostWidth);
227
- }
228
- else {
229
- this.setRelatedWidth('width', this.showConfig.size);
230
- this.setRelatedWidth('minWidth', this.showConfig.minWidth);
231
- this.setRelatedWidth('maxWidth', this.showConfig.maxWidth);
232
- }
233
- }
234
- /**
235
- * It takes a name and a value, formats the value, and then sets the style of the element
236
- *
237
- * @param {'width' | 'maxWidth' | 'minWidth'} name - 'width' | 'maxWidth' | 'minWidth'
238
- * @param {ResponsiveType<SizeType>} value - ResponsiveType<SizeType>
239
- * @returns {void}
240
- */
241
- setRelatedWidth(name, value) {
242
- if (!value)
243
- return;
244
- const formattedValue = ResponsiveFormatFacade.format(value, 'size');
245
- if (formattedValue) {
246
- this.showConfig.appendableElement.style[name] =
247
- typeof formattedValue === 'number' ? `${formattedValue}px` : formattedValue;
248
- }
249
- }
250
- /**
251
- * > If the `matchContainerHeight` property is set to `true`, then the maximum height of the dropdown
252
- * is set to the height of the container minus the height of the target minus the top offset of the
253
- * target
254
- *
255
- * @returns {void}
256
- */
257
- adjustHeight() {
258
- if (this.showConfig.matchContainerHeight) {
259
- const { height: targetHeight } = this.showConfig.target.getBoundingClientRect();
260
- let maxHeight = this.container.scrollHeight - this.showConfig.target.offsetTop - targetHeight;
261
- if (this.showConfig.maxHeight) {
262
- maxHeight = Math.min(maxHeight, this.showConfig.maxHeight);
263
- }
264
- this.showConfig.appendableElement.style.maxHeight = `${maxHeight}px`;
265
- }
266
- else if (this.showConfig.maxHeight) {
267
- this.showConfig.appendableElement.style.maxHeight = `${this.showConfig.maxHeight}px`;
268
- }
223
+ this.positionCalculationController.setCalculationStrategy();
269
224
  }
270
225
  /**
271
226
  * A function that takes no parameters and returns nothing. It sets the position of the appendable element.
272
227
  *
228
+ * @param {boolean} usePreviousPlacement - Should keep use previous placement and alignment.
273
229
  * @returns {void}
274
230
  */
275
- adjustPosition() {
276
- const translocation = this.showConfig.translocation &&
277
- ResponsiveFormatFacade.format(this.showConfig.translocation, 'translocation');
278
- const positionBox = getPositionBox(this.container, this.showConfig.appendableElement, this.showConfig.target, this.showConfig.placement, this.showConfig.alignment, translocation);
279
- this.showConfig.appendableElement.style.left = `${positionBox.left}px`;
280
- this.showConfig.appendableElement.style.top = `${positionBox.top}px`;
281
- this.showConfig.appendableElement.classList.remove('vega-placement-left', 'vega-placement-right', 'vega-placement-top', 'vega-placement-bottom');
282
- this.showConfig.appendableElement.classList.remove('vega-alignment-start', 'vega-alignment-center', 'vega-alignment-end');
283
- this.showConfig.appendableElement.classList.add(`vega-placement-${positionBox.placement}`);
284
- this.showConfig.appendableElement.classList.add(`vega-alignment-${positionBox.alignment}`);
231
+ adjustPosition(usePreviousPlacement) {
232
+ this.positionCalculationController.adjustPosition(usePreviousPlacement);
285
233
  }
286
234
  /**
287
235
  * Sets the z-index of the appendable element to 11000.
@@ -317,3 +265,6 @@ __decorate([
317
265
  __decorate([
318
266
  InjectVegaSlimmer()
319
267
  ], ElementAppender.prototype, "elementAppenderContainerController", void 0);
268
+ __decorate([
269
+ InjectVegaSlimmer()
270
+ ], ElementAppender.prototype, "positionCalculationController", void 0);
@@ -423,3 +423,56 @@ test('should append element to positionRelativeTo element only once when the ele
423
423
  expect(element.parentElement).toEqual(container);
424
424
  expect(container.append).toBeCalledTimes(1);
425
425
  });
426
+ describe('screen position', () => {
427
+ document.body.innerHTML = innerHTML;
428
+ const element = document.querySelector('.dropdown');
429
+ const target = document.querySelector('.test-host');
430
+ beforeAll(() => {
431
+ Object.assign(window.screen, { width: 500 });
432
+ Object.assign(window.screen, { height: 500 });
433
+ spyOn(element, 'getBoundingClientRect').and.returnValue({ width: 50, height: 50 });
434
+ });
435
+ test('return result as expect when call show', () => {
436
+ const targetRectSpyOn = spyOn(target, 'getBoundingClientRect');
437
+ targetRectSpyOn.and.returnValue({
438
+ width: 100,
439
+ height: 100,
440
+ top: 100,
441
+ left: 100,
442
+ });
443
+ const drop1 = new ElementAppender({
444
+ target: target,
445
+ appendableElement: element,
446
+ placement: ['top', 'bottom'],
447
+ isScreenPosition: true,
448
+ });
449
+ drop1.show();
450
+ expect(element).toEqualHtml(`
451
+ <div class="dropdown vega-alignment-start vega-placement-top" style="box-sizing: border-box; position: fixed; left: 100px; top: 50px; z-index: 10001;"></div>
452
+ `);
453
+ drop1['previousTargetRect'] = {
454
+ left: 10,
455
+ top: 10,
456
+ };
457
+ drop1.onScroll();
458
+ expect(element).toEqualHtml(`
459
+ <div class="dropdown vega-alignment-start vega-placement-top" style="box-sizing: border-box; position: fixed; left: 100px; top: 50px; z-index: 10001;"></div>
460
+ `);
461
+ drop1['previousTargetRect'] = {
462
+ left: 100,
463
+ top: 10,
464
+ };
465
+ targetRectSpyOn.and.returnValue({
466
+ width: 100,
467
+ height: 100,
468
+ top: 40,
469
+ left: 100,
470
+ });
471
+ drop1.onScroll();
472
+ drop1['previousTargetRect'] = undefined;
473
+ drop1.onScroll();
474
+ expect(element).toEqualHtml(`
475
+ <div class="dropdown vega-alignment-start vega-placement-top" style="box-sizing: border-box; position: fixed; left: 100px; top: -10px; z-index: 10001;"></div>
476
+ `);
477
+ });
478
+ });
@@ -28,11 +28,11 @@ export const generatePagerItems = (current, total, pagerCount = MINIMAL_PAGER_IT
28
28
  for (let i = 0; i < pagerCount; i += 1) {
29
29
  items[i] = i + left;
30
30
  }
31
- if (items[0] > 1) {
31
+ if (Number(items[0]) > 1) {
32
32
  items[0] = 1;
33
33
  items[1] = ellipsisPlaceholder;
34
34
  }
35
- if (items[items.length - 1] <= total - 1) {
35
+ if (Number(items[items.length - 1]) <= total - 1) {
36
36
  items[items.length - 1] = total;
37
37
  items[items.length - 2] = ellipsisPlaceholder;
38
38
  }
@@ -1,5 +1,5 @@
1
- import { F as FeatureFlag } from './feature-flag-controller-10780eeb.js';
2
- import { V as VegaLoader, a as VegaNotify, b as VegaThemeManager, c as VegaEventManager, d as VegaZIndexManager, w as waitForVega, e as VegaSkeletonLoader } from './vega-skeleton-loader-controller-def7bf3f.js';
1
+ import { F as FeatureFlag } from './feature-flag-controller-297c4b9b.js';
2
+ import { V as VegaLoader, a as VegaNotify, b as VegaThemeManager, c as VegaEventManager, d as VegaZIndexManager, e as VegaSkeletonLoader } from './vega-skeleton-loader-controller-cec6753f.js';
3
3
  import { M as MapToComponentMethod, V as VegaSlimmer, s as setVegaLogLevel, G as GlobalSlimmersRegistry } from './global-slimmer-registry-17c4efd4.js';
4
4
  import { V as VegaDialog } from './vega-dialog-controller-8b343a17.js';
5
5
  import { v as vegaEnvManager } from './vega-env-manager-8f8dc473.js';
@@ -7,6 +7,7 @@ import { V as VegaIconManager } from './icon-manager-1ee2c968.js';
7
7
  import { V as VegaInternalTranslation, a as VegaTranslation, s as staticTranslations } from './translation-4eb3cf85.js';
8
8
  import { T as TypographyUrls } from './typography-a8fc4764.js';
9
9
  import { V as ValidCreditCardNumberRule } from './valid-credit-card-number-rule-2aef3ad5.js';
10
+ import { w as waitForVega } from './index-fda6b5ee.js';
10
11
  import { U as UPDATE_TRANSLATION } from './static-subject-title-500cf2a3.js';
11
12
  import { C as ChangeManager } from './change-manager-6a7eb88c.js';
12
13
  import { O as Observer } from './observer-3959f9dd.js';