@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.
- package/dist/cjs/{app-globals-46ab4eb3.js → app-globals-391d9a14.js} +4 -3
- package/dist/cjs/{child-nodes-event-prevent-slimmer-0245d631.js → child-nodes-event-prevent-slimmer-bed95a1b.js} +2 -2
- package/dist/cjs/{element-appender-slimmer-2b251c0a.js → element-appender-slimmer-415d261a.js} +725 -536
- package/dist/cjs/{event-emit-slimmer-d409d0ac.js → event-emit-slimmer-b321e3f5.js} +1 -1
- package/dist/cjs/{feature-flag-controller-078da332.js → feature-flag-controller-f0619cc7.js} +5 -0
- package/dist/cjs/index-d6bf3435.js +15 -0
- package/dist/cjs/index.cjs.js +6 -5
- package/dist/cjs/{internal-vega-event-manager-4d9a8e67.js → internal-vega-event-manager-9ffb3ed1.js} +10 -3
- package/dist/cjs/loader.cjs.js +7 -6
- package/dist/cjs/vega-accordion.cjs.entry.js +3 -3
- package/dist/cjs/vega-app-header-button.cjs.entry.js +5 -5
- package/dist/cjs/vega-banner.cjs.entry.js +4 -4
- package/dist/cjs/vega-breadcrumb.cjs.entry.js +5 -5
- package/dist/cjs/vega-button-circle.cjs.entry.js +5 -5
- package/dist/cjs/vega-button-group_2.cjs.entry.js +5 -5
- package/dist/cjs/vega-button-link.cjs.entry.js +5 -5
- package/dist/cjs/vega-button.cjs.entry.js +5 -5
- package/dist/cjs/vega-calendar_3.cjs.entry.js +5 -5
- package/dist/cjs/vega-carousel.cjs.entry.js +3 -3
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +5 -5
- package/dist/cjs/vega-chip.cjs.entry.js +5 -5
- package/dist/cjs/vega-color-picker.cjs.entry.js +11 -5
- package/dist/cjs/vega-combo-box.cjs.entry.js +359 -175
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +12 -9
- package/dist/cjs/vega-dialog_2.cjs.entry.js +5 -5
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +34 -20
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/{vega-event-id-e40ac8f0.js → vega-event-id-419d36a8.js} +2 -0
- package/dist/cjs/vega-field-label.cjs.entry.js +3 -3
- package/dist/cjs/vega-file-uploader.cjs.entry.js +3 -3
- package/dist/cjs/vega-flex.cjs.entry.js +1 -1
- package/dist/cjs/vega-form.cjs.entry.js +5 -5
- package/dist/cjs/vega-image-uploader.cjs.entry.js +5 -5
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +5 -5
- package/dist/cjs/vega-input-numeric.cjs.entry.js +5 -5
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +5 -5
- package/dist/cjs/vega-input-range.cjs.entry.js +5 -5
- package/dist/cjs/vega-input-select.cjs.entry.js +18 -6
- package/dist/cjs/vega-input.cjs.entry.js +3 -3
- package/dist/cjs/vega-item-toggle.cjs.entry.js +3 -3
- package/dist/cjs/vega-left-nav_5.cjs.entry.js +4 -4
- package/dist/cjs/vega-page-notification_2.cjs.entry.js +1 -1
- package/dist/cjs/vega-pagination.cjs.entry.js +7 -7
- package/dist/cjs/vega-popover_2.cjs.entry.js +8 -8
- package/dist/cjs/vega-progress-tracker.cjs.entry.js +3 -3
- package/dist/cjs/vega-radio_2.cjs.entry.js +5 -5
- package/dist/cjs/vega-segment-control.cjs.entry.js +3 -3
- package/dist/cjs/vega-selection-chip_2.cjs.entry.js +5 -5
- package/dist/cjs/vega-selection-tile_2.cjs.entry.js +5 -5
- package/dist/cjs/vega-sidenav_3.cjs.entry.js +10 -10
- package/dist/cjs/vega-signature-capture.cjs.entry.js +3 -3
- package/dist/cjs/{vega-skeleton-loader-controller-4bd8cc88.js → vega-skeleton-loader-controller-4a016b04.js} +2 -12
- package/dist/cjs/vega-stepper.cjs.entry.js +5 -5
- package/dist/cjs/vega-tab-group_2.cjs.entry.js +5 -5
- package/dist/cjs/vega-table_8.cjs.entry.js +5 -5
- package/dist/cjs/vega-textarea.cjs.entry.js +5 -5
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +7 -7
- package/dist/cjs/vega-toggle-switch.cjs.entry.js +3 -3
- package/dist/cjs/vega-tooltip_2.cjs.entry.js +6 -6
- package/dist/cjs/vega.cjs.js +7 -6
- package/dist/collection/components/vega-color-picker/vega-color-picker.css +8 -8
- package/dist/collection/components/vega-color-picker/vega-color-picker.js +30 -3
- package/dist/collection/components/vega-combo-box/slimmers/controllers/vega-combo-box-keyboard-controller.js +114 -0
- package/dist/collection/components/vega-combo-box/slimmers/controllers/vega-combo-box-value-controller.js +23 -0
- package/dist/collection/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.js +147 -0
- package/dist/collection/components/vega-combo-box/slimmers/renderers/vega-combo-box-renderer.js +50 -0
- package/dist/collection/components/vega-combo-box/vega-combo-box.js +30 -177
- package/dist/collection/components/vega-date-picker/slimmers/controllers/vega-date-picker-element-appender-controller.js +2 -0
- package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-search-renderer.js +19 -5
- package/dist/collection/components/vega-dropdown/vega-dropdown.js +55 -9
- package/dist/collection/components/vega-input-select/slimmers/controllers/vega-input-select-dropdown-controller.js +7 -1
- package/dist/collection/components/vega-input-select/vega-input-select.js +55 -2
- package/dist/collection/components/vega-sidenav/vega-sidenav-group/vega-sidenav-group.js +4 -4
- package/dist/collection/components/vega-sidenav/vega-sidenav-link/vega-sidenav-link.js +9 -9
- package/dist/collection/components/vega-sidenav/vega-sidenav.js +12 -12
- package/dist/collection/constants/ui.js +1 -0
- package/dist/collection/helpers/event-manager/event-id/component-event-id-map.js +10 -3
- package/dist/collection/helpers/event-manager/event-id/vega-event-id.js +1 -0
- package/dist/collection/helpers/event-manager/test/vega-event-manager.test.js +2 -1
- package/dist/collection/helpers/feature-control/feature-flags-map.js +5 -0
- package/dist/collection/helpers/slimmers/element-appender-container/body-positioned-wrapper/body-positioned-wrapper.abstract.js +13 -0
- package/dist/collection/helpers/slimmers/element-appender-container/{position-relative-to-wrapper.js → body-positioned-wrapper/position-relative-to-wrapper.js} +23 -21
- package/dist/collection/helpers/slimmers/element-appender-container/{vega-modal-wrapper.js → body-positioned-wrapper/vega-modal-wrapper.js} +18 -15
- package/dist/collection/helpers/slimmers/element-appender-container/{vega-popover-wrapper.js → body-positioned-wrapper/vega-popover-wrapper.js} +20 -19
- package/dist/collection/helpers/slimmers/element-appender-container/default-wrapper.js +19 -19
- package/dist/collection/helpers/slimmers/element-appender-container/element-appender-container-controller.js +3 -3
- package/dist/collection/helpers/slimmers/element-appender-slimmer.js +10 -0
- package/dist/collection/helpers/slimmers/position-calculation/base-position-calculation-strategy.js +345 -0
- package/dist/collection/helpers/slimmers/position-calculation/body-position-calculation-strategy.js +66 -0
- package/dist/collection/helpers/slimmers/position-calculation/position-calculation-controller.js +121 -0
- package/dist/collection/helpers/slimmers/position-calculation/screen-position-calculation-strategy.js +59 -0
- package/dist/collection/{utils/test/position.test.js → helpers/slimmers/position-calculation/test/body-position-calculation-strategy.test.js} +135 -45
- package/dist/collection/helpers/slimmers/position-calculation/test/screen-position-calculation-strategy.test.js +113 -0
- package/dist/collection/helpers/ui/element-appender.js +21 -70
- package/dist/collection/helpers/ui/test/element-appender.test.js +53 -0
- package/dist/collection/utils/pagination.js +2 -2
- package/dist/esm/{app-globals-d90e7905.js → app-globals-00a57fbe.js} +3 -2
- package/dist/esm/{child-nodes-event-prevent-slimmer-4ecbc8aa.js → child-nodes-event-prevent-slimmer-db288af1.js} +2 -2
- package/dist/esm/{element-appender-slimmer-6cf76806.js → element-appender-slimmer-48d826b2.js} +719 -530
- package/dist/esm/{event-emit-slimmer-cb9d6f6c.js → event-emit-slimmer-44cb4573.js} +1 -1
- package/dist/esm/{feature-flag-controller-10780eeb.js → feature-flag-controller-297c4b9b.js} +5 -0
- package/dist/esm/index-fda6b5ee.js +13 -0
- package/dist/esm/index.js +5 -4
- package/dist/esm/{internal-vega-event-manager-1ebfd1eb.js → internal-vega-event-manager-8154661e.js} +10 -3
- package/dist/esm/loader.js +7 -6
- package/dist/esm/vega-accordion.entry.js +3 -3
- package/dist/esm/vega-app-header-button.entry.js +5 -5
- package/dist/esm/vega-banner.entry.js +4 -4
- package/dist/esm/vega-breadcrumb.entry.js +5 -5
- package/dist/esm/vega-button-circle.entry.js +5 -5
- package/dist/esm/vega-button-group_2.entry.js +5 -5
- package/dist/esm/vega-button-link.entry.js +5 -5
- package/dist/esm/vega-button.entry.js +5 -5
- package/dist/esm/vega-calendar_3.entry.js +5 -5
- package/dist/esm/vega-carousel.entry.js +3 -3
- package/dist/esm/vega-checkbox_2.entry.js +5 -5
- package/dist/esm/vega-chip.entry.js +5 -5
- package/dist/esm/vega-color-picker.entry.js +12 -6
- package/dist/esm/vega-combo-box.entry.js +362 -178
- package/dist/esm/vega-date-picker_2.entry.js +12 -9
- package/dist/esm/vega-dialog_2.entry.js +5 -5
- package/dist/esm/vega-dropdown_5.entry.js +34 -20
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/{vega-event-id-7465a011.js → vega-event-id-b1655cbc.js} +2 -1
- package/dist/esm/vega-field-label.entry.js +3 -3
- package/dist/esm/vega-file-uploader.entry.js +3 -3
- package/dist/esm/vega-flex.entry.js +1 -1
- package/dist/esm/vega-form.entry.js +5 -5
- package/dist/esm/vega-image-uploader.entry.js +5 -5
- package/dist/esm/vega-input-credit-card.entry.js +5 -5
- package/dist/esm/vega-input-numeric.entry.js +5 -5
- package/dist/esm/vega-input-phone-number.entry.js +5 -5
- package/dist/esm/vega-input-range.entry.js +5 -5
- package/dist/esm/vega-input-select.entry.js +18 -6
- package/dist/esm/vega-input.entry.js +3 -3
- package/dist/esm/vega-item-toggle.entry.js +3 -3
- package/dist/esm/vega-left-nav_5.entry.js +4 -4
- package/dist/esm/vega-page-notification_2.entry.js +1 -1
- package/dist/esm/vega-pagination.entry.js +7 -7
- package/dist/esm/vega-popover_2.entry.js +8 -8
- package/dist/esm/vega-progress-tracker.entry.js +3 -3
- package/dist/esm/vega-radio_2.entry.js +5 -5
- package/dist/esm/vega-segment-control.entry.js +3 -3
- package/dist/esm/vega-selection-chip_2.entry.js +5 -5
- package/dist/esm/vega-selection-tile_2.entry.js +5 -5
- package/dist/esm/vega-sidenav_3.entry.js +10 -10
- package/dist/esm/vega-signature-capture.entry.js +3 -3
- package/dist/esm/{vega-skeleton-loader-controller-def7bf3f.js → vega-skeleton-loader-controller-cec6753f.js} +2 -12
- package/dist/esm/vega-stepper.entry.js +5 -5
- package/dist/esm/vega-tab-group_2.entry.js +5 -5
- package/dist/esm/vega-table_8.entry.js +5 -5
- package/dist/esm/vega-textarea.entry.js +5 -5
- package/dist/esm/vega-time-picker_2.entry.js +7 -7
- package/dist/esm/vega-toggle-switch.entry.js +3 -3
- package/dist/esm/vega-tooltip_2.entry.js +6 -6
- package/dist/esm/vega.js +7 -6
- package/dist/types/components/vega-color-picker/vega-color-picker.d.ts +6 -0
- package/dist/types/components/vega-combo-box/slimmers/controllers/vega-combo-box-keyboard-controller.d.ts +29 -0
- package/dist/types/components/vega-combo-box/slimmers/controllers/vega-combo-box-value-controller.d.ts +14 -0
- package/dist/types/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.d.ts +41 -0
- package/dist/types/components/vega-combo-box/slimmers/renderers/vega-combo-box-renderer.d.ts +17 -0
- package/dist/types/components/vega-combo-box/vega-combo-box.d.ts +8 -48
- package/dist/types/components/vega-dropdown/slimmers/renderers/vega-dropdown-search-renderer.d.ts +1 -0
- package/dist/types/components/vega-dropdown/types.d.ts +5 -0
- package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +21 -1
- package/dist/types/components/vega-input-select/slimmers/controllers/vega-input-select-dropdown-controller.d.ts +1 -0
- package/dist/types/components/vega-input-select/vega-input-select.d.ts +20 -0
- package/dist/types/components/vega-sidenav/vega-sidenav-group/vega-sidenav-group.d.ts +3 -3
- package/dist/types/components/vega-sidenav/vega-sidenav-link/vega-sidenav-link.d.ts +7 -7
- package/dist/types/components/vega-sidenav/vega-sidenav.d.ts +8 -8
- package/dist/types/components.d.ts +58 -26
- package/dist/types/constants/ui.d.ts +1 -1
- package/dist/types/helpers/event-manager/event-id/vega-event-id.d.ts +1 -0
- package/dist/types/helpers/feature-control/feature-flag.d.ts +2 -1
- package/dist/types/helpers/slimmers/element-appender-container/body-positioned-wrapper/body-positioned-wrapper.abstract.d.ts +15 -0
- 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
- package/dist/types/helpers/slimmers/element-appender-container/{vega-modal-wrapper.d.ts → body-positioned-wrapper/vega-modal-wrapper.d.ts} +5 -5
- package/dist/types/helpers/slimmers/element-appender-container/{vega-popover-wrapper.d.ts → body-positioned-wrapper/vega-popover-wrapper.d.ts} +5 -5
- package/dist/types/helpers/slimmers/element-appender-container/default-wrapper.d.ts +2 -2
- package/dist/types/helpers/slimmers/element-appender-container/element-appender-container-controller.d.ts +3 -3
- package/dist/types/helpers/slimmers/element-appender-slimmer.d.ts +1 -0
- package/dist/types/helpers/slimmers/position-calculation/base-position-calculation-strategy.d.ts +138 -0
- package/dist/types/helpers/slimmers/position-calculation/body-position-calculation-strategy.d.ts +34 -0
- package/dist/types/helpers/slimmers/position-calculation/position-calculation-controller.d.ts +54 -0
- package/dist/types/helpers/slimmers/position-calculation/screen-position-calculation-strategy.d.ts +34 -0
- package/dist/types/helpers/slimmers/position-calculation/test/body-position-calculation-strategy.test.d.ts +15 -0
- package/dist/types/helpers/ui/element-appender.d.ts +9 -24
- package/dist/types/types/components.type.d.ts +1 -0
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/{p-cf998fc5.entry.js → p-00c5aee5.entry.js} +1 -1
- package/dist/vega/{p-f6d4c1ff.entry.js → p-042b4b3f.entry.js} +1 -1
- package/dist/vega/{p-817a83c6.entry.js → p-07a8cf89.entry.js} +1 -1
- package/dist/vega/p-0abe1ade.entry.js +1 -0
- package/dist/vega/{p-74fcdbc6.entry.js → p-0f0e4198.entry.js} +1 -1
- package/dist/vega/{p-d7800ca2.entry.js → p-14f5a9ad.entry.js} +1 -1
- package/dist/vega/p-15023bad.entry.js +1 -0
- package/dist/vega/{p-38f26c82.entry.js → p-1be2fd46.entry.js} +1 -1
- package/dist/vega/p-1bfcb6b7.entry.js +1 -0
- package/dist/vega/{p-b0a6421a.entry.js → p-20d9c07c.entry.js} +1 -1
- package/dist/vega/p-2306c736.js +1 -0
- package/dist/vega/{p-8ef03eed.js → p-302e7589.js} +1 -1
- package/dist/vega/p-34710a3c.entry.js +1 -0
- package/dist/vega/p-3903ce7a.entry.js +1 -0
- package/dist/vega/{p-0bbcc81a.entry.js → p-438caeb3.entry.js} +1 -1
- package/dist/vega/{p-319efe6c.js → p-4ffd7493.js} +1 -1
- package/dist/vega/{p-ed4a26e7.entry.js → p-57d9bde6.entry.js} +1 -1
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/{p-ff7bd85f.entry.js → p-623fe226.entry.js} +1 -1
- package/dist/vega/{p-1d94428c.entry.js → p-63bee4f1.entry.js} +1 -1
- package/dist/vega/{p-6ac3ba21.entry.js → p-64ff6318.entry.js} +1 -1
- package/dist/vega/{p-86eda597.entry.js → p-72ecc510.entry.js} +1 -1
- package/dist/vega/p-79019d08.js +1 -0
- package/dist/vega/p-7941701a.entry.js +1 -0
- package/dist/vega/{p-689ee038.entry.js → p-799cb0a4.entry.js} +1 -1
- package/dist/vega/{p-1678b69f.entry.js → p-7a6a0740.entry.js} +1 -1
- package/dist/vega/p-80785fcf.entry.js +1 -0
- package/dist/vega/{p-0ae9b900.entry.js → p-83ef4c13.entry.js} +1 -1
- package/dist/vega/{p-ad31be2c.entry.js → p-87cd0d6a.entry.js} +1 -1
- package/dist/vega/{p-b771268b.entry.js → p-8cfe4027.entry.js} +1 -1
- package/dist/vega/{p-5dbcab1b.entry.js → p-9281cdb2.entry.js} +1 -1
- package/dist/vega/p-95b25b97.entry.js +1 -0
- package/dist/vega/p-9b45e5dc.entry.js +1 -0
- package/dist/vega/{p-0a91f217.entry.js → p-9b9c0afb.entry.js} +1 -1
- package/dist/vega/{p-92aaed64.entry.js → p-9ba68531.entry.js} +2 -2
- package/dist/vega/{p-dacf5572.entry.js → p-a66ea015.entry.js} +1 -1
- package/dist/vega/{p-d0756d70.entry.js → p-a67748c6.entry.js} +1 -1
- package/dist/vega/{p-53bb8cde.entry.js → p-a6e1d9bc.entry.js} +1 -1
- package/dist/vega/{p-8b0533c4.entry.js → p-b1a249ef.entry.js} +1 -1
- package/dist/vega/{p-cf4fea44.entry.js → p-b6e49ee9.entry.js} +1 -1
- package/dist/vega/{p-d045099d.entry.js → p-be6041fc.entry.js} +1 -1
- package/dist/vega/{p-2ae04da9.entry.js → p-bf38199b.entry.js} +1 -1
- package/dist/vega/p-bf3fbb9b.js +1 -0
- package/dist/vega/p-c06e7880.js +1 -0
- package/dist/vega/{p-e42a2a12.entry.js → p-c3c2890e.entry.js} +1 -1
- package/dist/vega/{p-b3417358.entry.js → p-c6ed1982.entry.js} +1 -1
- package/dist/vega/p-cdebfee7.entry.js +1 -0
- package/dist/vega/p-cea70476.entry.js +1 -0
- package/dist/vega/{p-e4d6e2c8.entry.js → p-d3c07efa.entry.js} +1 -1
- package/dist/vega/p-d71f968e.entry.js +1 -0
- package/dist/vega/{p-30693931.entry.js → p-e165c9f1.entry.js} +1 -1
- package/dist/vega/{p-19769aba.js → p-e5d7b4b8.js} +1 -1
- package/dist/vega/{p-ebb93b96.entry.js → p-e6f91767.entry.js} +1 -1
- package/dist/vega/p-ed237efc.js +1 -0
- package/dist/vega/{p-a105e4de.js → p-f2851f16.js} +1 -1
- package/dist/vega/{p-975c5a3a.entry.js → p-fb3233db.entry.js} +1 -1
- package/dist/vega/{p-a0f5d2cc.entry.js → p-ff22a95f.entry.js} +1 -1
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +4 -2
- package/dist/collection/utils/position.js +0 -373
- package/dist/types/utils/position.d.ts +0 -17
- package/dist/vega/p-001c0b51.entry.js +0 -1
- package/dist/vega/p-0064f5b1.entry.js +0 -1
- package/dist/vega/p-19ef612a.js +0 -1
- package/dist/vega/p-1f03b576.entry.js +0 -1
- package/dist/vega/p-270b0d1a.entry.js +0 -1
- package/dist/vega/p-28c78b79.entry.js +0 -1
- package/dist/vega/p-31d530d2.entry.js +0 -1
- package/dist/vega/p-3f5e44c1.js +0 -1
- package/dist/vega/p-651e5c7d.entry.js +0 -1
- package/dist/vega/p-68823025.js +0 -1
- package/dist/vega/p-6b8277eb.js +0 -1
- package/dist/vega/p-7d02f723.entry.js +0 -1
- package/dist/vega/p-8bd09712.entry.js +0 -1
- package/dist/vega/p-a14be625.entry.js +0 -1
- package/dist/vega/p-cc272fbc.entry.js +0 -1
- package/dist/vega/p-e2c25432.entry.js +0 -1
- /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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
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-
|
|
2
|
-
import { V as VegaLoader, a as VegaNotify, b as VegaThemeManager, c as VegaEventManager, d as VegaZIndexManager,
|
|
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';
|