@globalpayments/vega 2.29.0 → 2.31.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 (272) 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 +488 -178
  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 +40 -24
  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-items-slot-controller.js +57 -0
  64. package/dist/collection/components/vega-combo-box/slimmers/controllers/vega-combo-box-keyboard-controller.js +114 -0
  65. package/dist/collection/components/vega-combo-box/slimmers/controllers/vega-combo-box-source-controller.js +23 -0
  66. package/dist/collection/components/vega-combo-box/slimmers/controllers/vega-combo-box-value-controller.js +23 -0
  67. package/dist/collection/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.js +188 -0
  68. package/dist/collection/components/vega-combo-box/slimmers/renderers/vega-combo-box-renderer.js +50 -0
  69. package/dist/collection/components/vega-combo-box/vega-combo-box.js +40 -177
  70. package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-element-appender-controller.js +2 -0
  71. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-scrollable-controller.js +6 -4
  72. package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-search-renderer.js +19 -5
  73. package/dist/collection/components/vega-dropdown/vega-dropdown.js +55 -9
  74. package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-dropdown-controller.js +7 -1
  75. package/dist/collection/components/vega-input-select/vega-input-select.js +55 -2
  76. package/dist/collection/components/vega-sidenav/vega-sidenav-group/vega-sidenav-group.js +4 -4
  77. package/dist/collection/components/vega-sidenav/vega-sidenav-link/vega-sidenav-link.js +9 -9
  78. package/dist/collection/components/vega-sidenav/vega-sidenav.js +12 -12
  79. package/dist/collection/constants/ui.js +1 -0
  80. package/dist/collection/helpers/event-manager/event-id/component-event-id-map.js +10 -3
  81. package/dist/collection/helpers/event-manager/event-id/vega-event-id.js +1 -0
  82. package/dist/collection/helpers/event-manager/test/vega-event-manager.test.js +2 -1
  83. package/dist/collection/helpers/feature-control/feature-flags-map.js +5 -0
  84. package/dist/collection/helpers/slimmers/element-appender-container/body-positioned-wrapper/body-positioned-wrapper.abstract.js +13 -0
  85. package/dist/collection/helpers/slimmers/element-appender-container/{position-relative-to-wrapper.js → body-positioned-wrapper/position-relative-to-wrapper.js} +23 -21
  86. package/dist/collection/helpers/slimmers/element-appender-container/{vega-modal-wrapper.js → body-positioned-wrapper/vega-modal-wrapper.js} +18 -15
  87. package/dist/collection/helpers/slimmers/element-appender-container/{vega-popover-wrapper.js → body-positioned-wrapper/vega-popover-wrapper.js} +20 -19
  88. package/dist/collection/helpers/slimmers/element-appender-container/default-wrapper.js +19 -19
  89. package/dist/collection/helpers/slimmers/element-appender-container/element-appender-container-controller.js +3 -3
  90. package/dist/collection/helpers/slimmers/element-appender-slimmer.js +10 -0
  91. package/dist/collection/helpers/slimmers/position-calculation/base-position-calculation-strategy.js +345 -0
  92. package/dist/collection/helpers/slimmers/position-calculation/body-position-calculation-strategy.js +66 -0
  93. package/dist/collection/helpers/slimmers/position-calculation/position-calculation-controller.js +121 -0
  94. package/dist/collection/helpers/slimmers/position-calculation/screen-position-calculation-strategy.js +59 -0
  95. package/dist/collection/{utils/test/position.test.js → helpers/slimmers/position-calculation/test/body-position-calculation-strategy.test.js} +135 -45
  96. package/dist/collection/helpers/slimmers/position-calculation/test/screen-position-calculation-strategy.test.js +113 -0
  97. package/dist/collection/helpers/ui/element-appender.js +21 -70
  98. package/dist/collection/helpers/ui/test/element-appender.test.js +53 -0
  99. package/dist/collection/utils/pagination.js +2 -2
  100. package/dist/esm/{app-globals-d90e7905.js → app-globals-00a57fbe.js} +3 -2
  101. package/dist/esm/{child-nodes-event-prevent-slimmer-4ecbc8aa.js → child-nodes-event-prevent-slimmer-db288af1.js} +2 -2
  102. package/dist/esm/{element-appender-slimmer-6cf76806.js → element-appender-slimmer-48d826b2.js} +719 -530
  103. package/dist/esm/{event-emit-slimmer-cb9d6f6c.js → event-emit-slimmer-44cb4573.js} +1 -1
  104. package/dist/esm/{feature-flag-controller-10780eeb.js → feature-flag-controller-297c4b9b.js} +5 -0
  105. package/dist/esm/index-fda6b5ee.js +13 -0
  106. package/dist/esm/index.js +5 -4
  107. package/dist/esm/{internal-vega-event-manager-1ebfd1eb.js → internal-vega-event-manager-8154661e.js} +10 -3
  108. package/dist/esm/loader.js +7 -6
  109. package/dist/esm/vega-accordion.entry.js +3 -3
  110. package/dist/esm/vega-app-header-button.entry.js +5 -5
  111. package/dist/esm/vega-banner.entry.js +4 -4
  112. package/dist/esm/vega-breadcrumb.entry.js +5 -5
  113. package/dist/esm/vega-button-circle.entry.js +5 -5
  114. package/dist/esm/vega-button-group_2.entry.js +5 -5
  115. package/dist/esm/vega-button-link.entry.js +5 -5
  116. package/dist/esm/vega-button.entry.js +5 -5
  117. package/dist/esm/vega-calendar_3.entry.js +5 -5
  118. package/dist/esm/vega-carousel.entry.js +3 -3
  119. package/dist/esm/vega-checkbox_2.entry.js +5 -5
  120. package/dist/esm/vega-chip.entry.js +5 -5
  121. package/dist/esm/vega-color-picker.entry.js +12 -6
  122. package/dist/esm/vega-combo-box.entry.js +491 -181
  123. package/dist/esm/vega-date-picker_2.entry.js +12 -9
  124. package/dist/esm/vega-dialog_2.entry.js +5 -5
  125. package/dist/esm/vega-dropdown_5.entry.js +40 -24
  126. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  127. package/dist/esm/{vega-event-id-7465a011.js → vega-event-id-b1655cbc.js} +2 -1
  128. package/dist/esm/vega-field-label.entry.js +3 -3
  129. package/dist/esm/vega-file-uploader.entry.js +3 -3
  130. package/dist/esm/vega-flex.entry.js +1 -1
  131. package/dist/esm/vega-form.entry.js +5 -5
  132. package/dist/esm/vega-image-uploader.entry.js +5 -5
  133. package/dist/esm/vega-input-credit-card.entry.js +5 -5
  134. package/dist/esm/vega-input-numeric.entry.js +5 -5
  135. package/dist/esm/vega-input-phone-number.entry.js +5 -5
  136. package/dist/esm/vega-input-range.entry.js +5 -5
  137. package/dist/esm/vega-input-select.entry.js +18 -6
  138. package/dist/esm/vega-input.entry.js +3 -3
  139. package/dist/esm/vega-item-toggle.entry.js +3 -3
  140. package/dist/esm/vega-left-nav_5.entry.js +4 -4
  141. package/dist/esm/vega-page-notification_2.entry.js +1 -1
  142. package/dist/esm/vega-pagination.entry.js +7 -7
  143. package/dist/esm/vega-popover_2.entry.js +8 -8
  144. package/dist/esm/vega-progress-tracker.entry.js +3 -3
  145. package/dist/esm/vega-radio_2.entry.js +5 -5
  146. package/dist/esm/vega-segment-control.entry.js +3 -3
  147. package/dist/esm/vega-selection-chip_2.entry.js +5 -5
  148. package/dist/esm/vega-selection-tile_2.entry.js +5 -5
  149. package/dist/esm/vega-sidenav_3.entry.js +10 -10
  150. package/dist/esm/vega-signature-capture.entry.js +3 -3
  151. package/dist/esm/{vega-skeleton-loader-controller-def7bf3f.js → vega-skeleton-loader-controller-cec6753f.js} +2 -12
  152. package/dist/esm/vega-stepper.entry.js +5 -5
  153. package/dist/esm/vega-tab-group_2.entry.js +5 -5
  154. package/dist/esm/vega-table_8.entry.js +5 -5
  155. package/dist/esm/vega-textarea.entry.js +5 -5
  156. package/dist/esm/vega-time-picker_2.entry.js +7 -7
  157. package/dist/esm/vega-toggle-switch.entry.js +3 -3
  158. package/dist/esm/vega-tooltip_2.entry.js +6 -6
  159. package/dist/esm/vega.js +7 -6
  160. package/dist/types/components/vega-color-picker/vega-color-picker.d.ts +6 -0
  161. package/dist/types/components/vega-combo-box/slimmers/controllers/vega-combo-box-items-slot-controller.d.ts +19 -0
  162. package/dist/types/components/vega-combo-box/slimmers/controllers/vega-combo-box-keyboard-controller.d.ts +29 -0
  163. package/dist/types/components/vega-combo-box/slimmers/controllers/vega-combo-box-source-controller.d.ts +14 -0
  164. package/dist/types/components/vega-combo-box/slimmers/controllers/vega-combo-box-value-controller.d.ts +14 -0
  165. package/dist/types/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.d.ts +48 -0
  166. package/dist/types/components/vega-combo-box/slimmers/renderers/vega-combo-box-renderer.d.ts +17 -0
  167. package/dist/types/components/vega-combo-box/vega-combo-box.d.ts +12 -48
  168. package/dist/types/components/vega-dropdown/slimmers/renderers/vega-dropdown-search-renderer.d.ts +1 -0
  169. package/dist/types/components/vega-dropdown/types.d.ts +5 -0
  170. package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +21 -1
  171. package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-dropdown-controller.d.ts +1 -0
  172. package/dist/types/components/vega-input-select/vega-input-select.d.ts +20 -0
  173. package/dist/types/components/vega-sidenav/vega-sidenav-group/vega-sidenav-group.d.ts +3 -3
  174. package/dist/types/components/vega-sidenav/vega-sidenav-link/vega-sidenav-link.d.ts +7 -7
  175. package/dist/types/components/vega-sidenav/vega-sidenav.d.ts +8 -8
  176. package/dist/types/components.d.ts +58 -26
  177. package/dist/types/constants/ui.d.ts +1 -1
  178. package/dist/types/helpers/event-manager/event-id/vega-event-id.d.ts +1 -0
  179. package/dist/types/helpers/feature-control/feature-flag.d.ts +2 -1
  180. package/dist/types/helpers/slimmers/element-appender-container/body-positioned-wrapper/body-positioned-wrapper.abstract.d.ts +15 -0
  181. 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
  182. package/dist/types/helpers/slimmers/element-appender-container/{vega-modal-wrapper.d.ts → body-positioned-wrapper/vega-modal-wrapper.d.ts} +5 -5
  183. package/dist/types/helpers/slimmers/element-appender-container/{vega-popover-wrapper.d.ts → body-positioned-wrapper/vega-popover-wrapper.d.ts} +5 -5
  184. package/dist/types/helpers/slimmers/element-appender-container/default-wrapper.d.ts +2 -2
  185. package/dist/types/helpers/slimmers/element-appender-container/element-appender-container-controller.d.ts +3 -3
  186. package/dist/types/helpers/slimmers/element-appender-slimmer.d.ts +1 -0
  187. package/dist/types/helpers/slimmers/position-calculation/base-position-calculation-strategy.d.ts +138 -0
  188. package/dist/types/helpers/slimmers/position-calculation/body-position-calculation-strategy.d.ts +34 -0
  189. package/dist/types/helpers/slimmers/position-calculation/position-calculation-controller.d.ts +54 -0
  190. package/dist/types/helpers/slimmers/position-calculation/screen-position-calculation-strategy.d.ts +34 -0
  191. package/dist/types/helpers/slimmers/position-calculation/test/body-position-calculation-strategy.test.d.ts +15 -0
  192. package/dist/types/helpers/ui/element-appender.d.ts +9 -24
  193. package/dist/types/types/components.type.d.ts +1 -0
  194. package/dist/vega/index.esm.js +1 -1
  195. package/dist/vega/{p-cf998fc5.entry.js → p-00c5aee5.entry.js} +1 -1
  196. package/dist/vega/{p-f6d4c1ff.entry.js → p-042b4b3f.entry.js} +1 -1
  197. package/dist/vega/{p-817a83c6.entry.js → p-07a8cf89.entry.js} +1 -1
  198. package/dist/vega/p-0abe1ade.entry.js +1 -0
  199. package/dist/vega/{p-74fcdbc6.entry.js → p-0f0e4198.entry.js} +1 -1
  200. package/dist/vega/{p-d7800ca2.entry.js → p-14f5a9ad.entry.js} +1 -1
  201. package/dist/vega/p-15023bad.entry.js +1 -0
  202. package/dist/vega/{p-38f26c82.entry.js → p-1be2fd46.entry.js} +1 -1
  203. package/dist/vega/p-1bfcb6b7.entry.js +1 -0
  204. package/dist/vega/p-1e6c23e0.entry.js +1 -0
  205. package/dist/vega/{p-b0a6421a.entry.js → p-20d9c07c.entry.js} +1 -1
  206. package/dist/vega/p-2306c736.js +1 -0
  207. package/dist/vega/{p-8ef03eed.js → p-302e7589.js} +1 -1
  208. package/dist/vega/p-34710a3c.entry.js +1 -0
  209. package/dist/vega/{p-0bbcc81a.entry.js → p-438caeb3.entry.js} +1 -1
  210. package/dist/vega/{p-319efe6c.js → p-4ffd7493.js} +1 -1
  211. package/dist/vega/{p-ed4a26e7.entry.js → p-57d9bde6.entry.js} +1 -1
  212. package/dist/vega/p-5f377954.js +1 -1
  213. package/dist/vega/{p-ff7bd85f.entry.js → p-623fe226.entry.js} +1 -1
  214. package/dist/vega/{p-1d94428c.entry.js → p-63bee4f1.entry.js} +1 -1
  215. package/dist/vega/{p-6ac3ba21.entry.js → p-64ff6318.entry.js} +1 -1
  216. package/dist/vega/p-6e6ec77d.entry.js +1 -0
  217. package/dist/vega/{p-86eda597.entry.js → p-72ecc510.entry.js} +1 -1
  218. package/dist/vega/p-79019d08.js +1 -0
  219. package/dist/vega/p-7941701a.entry.js +1 -0
  220. package/dist/vega/{p-689ee038.entry.js → p-799cb0a4.entry.js} +1 -1
  221. package/dist/vega/{p-1678b69f.entry.js → p-7a6a0740.entry.js} +1 -1
  222. package/dist/vega/p-80785fcf.entry.js +1 -0
  223. package/dist/vega/{p-0ae9b900.entry.js → p-83ef4c13.entry.js} +1 -1
  224. package/dist/vega/{p-ad31be2c.entry.js → p-87cd0d6a.entry.js} +1 -1
  225. package/dist/vega/{p-b771268b.entry.js → p-8cfe4027.entry.js} +1 -1
  226. package/dist/vega/{p-5dbcab1b.entry.js → p-9281cdb2.entry.js} +1 -1
  227. package/dist/vega/p-95b25b97.entry.js +1 -0
  228. package/dist/vega/p-9b45e5dc.entry.js +1 -0
  229. package/dist/vega/{p-0a91f217.entry.js → p-9b9c0afb.entry.js} +1 -1
  230. package/dist/vega/{p-92aaed64.entry.js → p-9ba68531.entry.js} +2 -2
  231. package/dist/vega/{p-dacf5572.entry.js → p-a66ea015.entry.js} +1 -1
  232. package/dist/vega/{p-d0756d70.entry.js → p-a67748c6.entry.js} +1 -1
  233. package/dist/vega/{p-53bb8cde.entry.js → p-a6e1d9bc.entry.js} +1 -1
  234. package/dist/vega/{p-8b0533c4.entry.js → p-b1a249ef.entry.js} +1 -1
  235. package/dist/vega/{p-cf4fea44.entry.js → p-b6e49ee9.entry.js} +1 -1
  236. package/dist/vega/{p-d045099d.entry.js → p-be6041fc.entry.js} +1 -1
  237. package/dist/vega/{p-2ae04da9.entry.js → p-bf38199b.entry.js} +1 -1
  238. package/dist/vega/p-bf3fbb9b.js +1 -0
  239. package/dist/vega/p-c06e7880.js +1 -0
  240. package/dist/vega/{p-e42a2a12.entry.js → p-c3c2890e.entry.js} +1 -1
  241. package/dist/vega/{p-b3417358.entry.js → p-c6ed1982.entry.js} +1 -1
  242. package/dist/vega/p-cdebfee7.entry.js +1 -0
  243. package/dist/vega/{p-e4d6e2c8.entry.js → p-d3c07efa.entry.js} +1 -1
  244. package/dist/vega/p-d71f968e.entry.js +1 -0
  245. package/dist/vega/{p-30693931.entry.js → p-e165c9f1.entry.js} +1 -1
  246. package/dist/vega/{p-19769aba.js → p-e5d7b4b8.js} +1 -1
  247. package/dist/vega/{p-ebb93b96.entry.js → p-e6f91767.entry.js} +1 -1
  248. package/dist/vega/p-ed237efc.js +1 -0
  249. package/dist/vega/{p-a105e4de.js → p-f2851f16.js} +1 -1
  250. package/dist/vega/{p-975c5a3a.entry.js → p-fb3233db.entry.js} +1 -1
  251. package/dist/vega/{p-a0f5d2cc.entry.js → p-ff22a95f.entry.js} +1 -1
  252. package/dist/vega/vega.esm.js +1 -1
  253. package/package.json +4 -2
  254. package/dist/collection/utils/position.js +0 -373
  255. package/dist/types/utils/position.d.ts +0 -17
  256. package/dist/vega/p-001c0b51.entry.js +0 -1
  257. package/dist/vega/p-0064f5b1.entry.js +0 -1
  258. package/dist/vega/p-19ef612a.js +0 -1
  259. package/dist/vega/p-1f03b576.entry.js +0 -1
  260. package/dist/vega/p-270b0d1a.entry.js +0 -1
  261. package/dist/vega/p-28c78b79.entry.js +0 -1
  262. package/dist/vega/p-31d530d2.entry.js +0 -1
  263. package/dist/vega/p-3f5e44c1.js +0 -1
  264. package/dist/vega/p-651e5c7d.entry.js +0 -1
  265. package/dist/vega/p-68823025.js +0 -1
  266. package/dist/vega/p-6b8277eb.js +0 -1
  267. package/dist/vega/p-7d02f723.entry.js +0 -1
  268. package/dist/vega/p-8bd09712.entry.js +0 -1
  269. package/dist/vega/p-a14be625.entry.js +0 -1
  270. package/dist/vega/p-cc272fbc.entry.js +0 -1
  271. package/dist/vega/p-e2c25432.entry.js +0 -1
  272. /package/dist/types/{utils/test/position.test.d.ts → helpers/slimmers/position-calculation/test/screen-position-calculation-strategy.test.d.ts} +0 -0
@@ -0,0 +1,59 @@
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 { MapToComponentField } from 'vega-slimmer/core';
8
+ import { BasePositionCalculationStrategy } from './base-position-calculation-strategy';
9
+ /**
10
+ * calculate position by screen container
11
+ */
12
+ export class ScreenPositionCalculationStrategy extends BasePositionCalculationStrategy {
13
+ /**
14
+ * Get the position of the element in the container according to the target element and the placement
15
+ * If give a translocation, it will apply the translocation to the result.
16
+ *
17
+ * @param {boolean} usePreviousPlacement - Should keep use previous placement and alignment.
18
+ * @returns {ElementPositionBox} A function that takes in a container, element, target, placement, and translocation and
19
+ * returns an ElementPositionBox.
20
+ */
21
+ getPosition(usePreviousPlacement) {
22
+ const positionBox = usePreviousPlacement
23
+ ? this.getPositionBox([this.previousPositionBox.placement], [this.previousPositionBox.alignment])
24
+ : this.getPositionBox();
25
+ this.previousPositionBox = positionBox;
26
+ return positionBox;
27
+ }
28
+ /**
29
+ * It returns the position of an element relative to its container and also includes the scroll height of container.
30
+ *
31
+ * @returns {ElementBoundBox} An object with the properties width, height, top, and left.
32
+ */
33
+ getTargetBoundBox() {
34
+ const targetRect = this.showConfig.target.getBoundingClientRect();
35
+ return {
36
+ width: targetRect.width,
37
+ height: targetRect.height,
38
+ top: targetRect.top,
39
+ left: targetRect.left,
40
+ };
41
+ }
42
+ /**
43
+ * "Get the width and height of an element."
44
+ *
45
+ * The function takes a single parameter, a container element, and returns an object with two
46
+ * properties: width and height
47
+ *
48
+ * @returns {ElementScrollDimension} An object with two properties: width and height.
49
+ */
50
+ getElementScrollDimension() {
51
+ return {
52
+ width: window.innerWidth,
53
+ height: window.innerHeight,
54
+ };
55
+ }
56
+ }
57
+ __decorate([
58
+ MapToComponentField()
59
+ ], ScreenPositionCalculationStrategy.prototype, "showConfig", void 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);