Uploaded image for project: 'ZK'
  1. ZK
  2. ZK-3685

Datebox shows its popup out of the visible range

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Normal Normal
    • 8.5.0
    • 8.0.5
    • None
    • Security Level: Jimmy

      Steps to Reproduce

      1. load the attached zul with chrome mobile device toolbar to simulate "iPad Pro"
      2. scroll down to the bottom
      3. click the testing datebox to open its popup

      Current Result

      the popup appears at the position out of the visible range, you need to scroll down the whole page to see the popup.

      Expected Result

      the popup shows up at the bottom of the visible range

      Debug Info

      Root Cause

      • <div vflex="1" style="border:solid 5px;overflow:auto"> cause the issue.
      • incorrect calculation for "top" at pps.top = jq.px((zk.ios ? window.innerHeight : innerHeight) + scrollOffset[1]); within _syncPosition()
        zk(cave).scrollOffset() adds all scroll offset by iterating every parent elements, which is incorrect for such case. Since page bottom position is not affected by a scrollbar inside an element e.g. <div>

      Workaround

      • eliminate the scrollbar of the datebox's parent
      • calculate it based on scroll position on a page, in _syncPosition()
        pps.top = jq.px((zk.ios ? window.innerHeight : innerHeight) + window.scrollY);

      solution

      popup implementations of combobox and datebox are very similar, it's better to combine them as a method from their parent class or a helper function.

            wenninghsu wenninghsu
            hawk hawk
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0 minutes
                0m
                Logged:
                Time Spent - 1 hour
                1h