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

Add strict valid date support to Datebox without lenient mode

    Details

    • Type: New Feature
    • Status: Closed
    • Priority: Normal
    • Resolution: Done
    • Affects Version/s: 8.5.2
    • Fix Version/s: 8.6.0
    • Component/s: None
    • Security Level: Jimmy
    • Labels:
      None
    • gh.sprint.customfield.default.name:
      ZK 8.6.0 S1, ZK 8.6.0 S2

      Description

      In current datebox, if the user type a date that doesn't exist in the real calendar, it will automatically be calculated based on the closest existing date.
      for example:
      Jan 0 2018 = (Jan 1 2018) - (1day) = Dec 31 2017
      Jan 32 2018 = (Jan 31 2018) + (1day) = Feb 1 2018

      If a developper want to prevent this calculation, a partial solution is to use lenient=false on the datebox.
      However, this is not perfect, since lenient false will also prevent the datebox from trying to parse non-perfect template inputs

      New feature:
      Add a new attribute to the datebox to decide to allow for this calculation or not, not affected by lenient mode.
      for example:
      <datebox lenient="true" strictDate="true"/>
      would allow imperfect patterns, but block date calculation.

      <datebox lenient="false" strictDate="false"/>
      would only accept valid date patterns, but also allow calculation if the result is not a real world date. (0 Jan > 31 Dec, 32 Jan > 1 Feb, etc)

      Current calculation:
      https://github.com/zkoss/zk/blob/master/zul/src/archive/web/js/zul/db/datefmt.js#L394

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                klyvechen klyvechen
                Reporter:
                MDuchemin MDuchemin
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - 4 hours
                  4h
                  Remaining:
                  Remaining Estimate - 4 hours
                  4h
                  Logged:
                  Time Spent - Not Specified
                  Not Specified