diff --git a/zkdoc/release-note b/zkdoc/release-note index e4e6a0f8a1..804662d7ff 100644 --- a/zkdoc/release-note +++ b/zkdoc/release-note @@ -17,6 +17,7 @@ ZK 10.1.0 ZK-5787: aria-hidden elements do not contain focusable elements ZK-5743: clicking menuitem fires 2 onClick events in mobile browser ZK-5594: ListboxDataLoader doGroupsDataChange finds incorrect offset, causes class cast exception + ZK-5475: select a date with time produces an invalid result under locale pt * Upgrade Notes + Remove Htmls.encodeJavaScript(), Strings.encodeJavaScript(), Strings.escape() with Strings.ESCAPE_JAVASCRIPT, and replace them with OWASP Java Encoder APIs instead. diff --git a/zktest/src/main/webapp/test2/B101-ZK-5475.zul b/zktest/src/main/webapp/test2/B101-ZK-5475.zul new file mode 100644 index 0000000000..887908c1e3 --- /dev/null +++ b/zktest/src/main/webapp/test2/B101-ZK-5475.zul @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/zktest/src/main/webapp/test2/config.properties b/zktest/src/main/webapp/test2/config.properties index 27b8a328c2..c242fd57c4 100644 --- a/zktest/src/main/webapp/test2/config.properties +++ b/zktest/src/main/webapp/test2/config.properties @@ -3136,6 +3136,7 @@ B90-ZK-4431.zul=A,E,Multislider ##zats##B101-ZK-5787.zul=A,E,WCAG,Accessibility,Focus,Tabindex,Aria-hidden ##zats##B101-ZK-5743.zul=A,E,Compressed,JS,Debug-JS,TabletUI,Mobile,onClick ##zats##B101-ZK-5594.zul=A,E,Group,ListGroup,ROD,zkmax,Exception +##zats##B101-ZK-5475.zul=A,E,Datebox,PT,Locale,Format,Constraint ## # Features - 3.0.x version diff --git a/zktest/src/test/java/org/zkoss/zktest/zats/test2/B101_ZK_5475Test.java b/zktest/src/test/java/org/zkoss/zktest/zats/test2/B101_ZK_5475Test.java new file mode 100644 index 0000000000..cd919a72c9 --- /dev/null +++ b/zktest/src/test/java/org/zkoss/zktest/zats/test2/B101_ZK_5475Test.java @@ -0,0 +1,34 @@ +/* B101_ZK_5475Test.java + + Purpose: + + Description: + + History: + 2:48 PM 2024/9/18, Created by jumperchen + +Copyright (C) 2024 Potix Corporation. All Rights Reserved. +*/ +package org.zkoss.zktest.zats.test2; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +import org.zkoss.test.webdriver.WebDriverTestCase; + +/** + * @author jumperchen + */ +public class B101_ZK_5475Test extends WebDriverTestCase { + @Test + public void test() { + connect(); + assertEquals("13 de junho 2024 00:00:00", jq(".z-datebox-input").val()); + type(jq(".z-datebox-input"), "13 de junho 2024 00:00:01"); + blur(jq(".z-datebox-input")); + waitResponse(true); + assertEquals(0, jq(".z-errorbox").length()); + assertEquals("13 de junho 2024 00:00:01", jq(".z-datebox-input").val()); + } +} diff --git a/zul/src/main/resources/web/js/zul/db/datefmt.ts b/zul/src/main/resources/web/js/zul/db/datefmt.ts index 100e7c19e8..b41f7ce66f 100644 --- a/zul/src/main/resources/web/js/zul/db/datefmt.ts +++ b/zul/src/main/resources/web/js/zul/db/datefmt.ts @@ -267,6 +267,8 @@ var DateFmt = { era = eras[eraKey]; } + fmt = fmt.replace(/'.*?'/g, ' '); //ZK-5475 remove any string enclosed by single quotes + var refDate = refval._moment.toDate(), localeDateTimeFormat = new Intl.DateTimeFormat(localizedSymbols.LAN_TAG, { year: 'numeric' }), eraName = localizedSymbols.ERA || (eraKey ? eraKey : this.getEraName(refDate, localizedSymbols, localeDateTimeFormat)),