@@ -1490,6 +1490,86 @@ describe("calcite-input-number", () => {
1490
1490
expect ( await input . getProperty ( "value" ) ) . toBe ( numberStringFormatter . localize ( initialValue ) ) ;
1491
1491
} ) ;
1492
1492
1493
+ it ( "allows editing numbers that start with zeros and have a group separator and minus sign" , async ( ) => {
1494
+ const page = await newE2EPage ( ) ;
1495
+ await page . setContent ( html `< calcite-input-number group-separator > </ calcite-input-number > ` ) ;
1496
+
1497
+ const calciteInput = await page . find ( "calcite-input-number" ) ;
1498
+ const input = await page . find ( "calcite-input-number >>> input" ) ;
1499
+ await calciteInput . callMethod ( "setFocus" ) ;
1500
+ await page . waitForChanges ( ) ;
1501
+ await typeNumberValue ( page , "-7000" ) ;
1502
+ await page . waitForChanges ( ) ;
1503
+ expect ( await calciteInput . getProperty ( "value" ) ) . toBe ( "-7000" ) ;
1504
+ expect ( await input . getProperty ( "value" ) ) . toBe ( "-7,000" ) ;
1505
+
1506
+ await page . keyboard . press ( "ArrowLeft" ) ;
1507
+ await page . keyboard . press ( "ArrowLeft" ) ;
1508
+ await page . keyboard . press ( "ArrowLeft" ) ;
1509
+ await page . keyboard . press ( "ArrowLeft" ) ;
1510
+ await page . keyboard . press ( "Backspace" ) ;
1511
+ await page . waitForChanges ( ) ;
1512
+ expect ( await calciteInput . getProperty ( "value" ) ) . toBe ( "-0" ) ;
1513
+ expect ( await input . getProperty ( "value" ) ) . toBe ( "-000" ) ;
1514
+
1515
+ await page . keyboard . press ( "Home" ) ;
1516
+ await page . keyboard . press ( "ArrowRight" ) ;
1517
+ await page . keyboard . type ( "5" ) ;
1518
+ await page . waitForChanges ( ) ;
1519
+ expect ( await calciteInput . getProperty ( "value" ) ) . toBe ( "-5000" ) ;
1520
+ expect ( await input . getProperty ( "value" ) ) . toBe ( "-5,000" ) ;
1521
+
1522
+ await page . keyboard . press ( "Home" ) ;
1523
+ await page . keyboard . press ( "ArrowRight" ) ;
1524
+ await page . keyboard . press ( "ArrowRight" ) ;
1525
+ await page . keyboard . press ( "Backspace" ) ;
1526
+ await page . keyboard . press ( "Home" ) ;
1527
+ await page . keyboard . press ( "ArrowRight" ) ;
1528
+ await page . keyboard . type ( "7" ) ;
1529
+ await page . waitForChanges ( ) ;
1530
+ expect ( await calciteInput . getProperty ( "value" ) ) . toBe ( "-7000" ) ;
1531
+ expect ( await input . getProperty ( "value" ) ) . toBe ( "-7,000" ) ;
1532
+ } ) ;
1533
+
1534
+ it ( "allows editing numbers that start with zeros and have decimals in the ar locale and arab numbering system" , async ( ) => {
1535
+ const initialValue = "10000.0001" ;
1536
+ numberStringFormatter . numberFormatOptions = {
1537
+ locale : "ar" ,
1538
+ numberingSystem : "arab" ,
1539
+ useGrouping : false ,
1540
+ } ;
1541
+
1542
+ const page = await newE2EPage ( ) ;
1543
+ await page . setContent (
1544
+ html `< calcite-input-number lang ="ar " numbering-system ="arab " value ="${ initialValue } "> </ calcite-input-number > ` ,
1545
+ ) ;
1546
+
1547
+ const calciteInput = await page . find ( "calcite-input-number" ) ;
1548
+ const input = await page . find ( "calcite-input-number >>> input" ) ;
1549
+ await calciteInput . callMethod ( "setFocus" ) ;
1550
+ await page . waitForChanges ( ) ;
1551
+
1552
+ expect ( await calciteInput . getProperty ( "value" ) ) . toBe ( initialValue ) ;
1553
+ expect ( await input . getProperty ( "value" ) ) . toBe ( numberStringFormatter . localize ( initialValue ) ) ;
1554
+
1555
+ await page . keyboard . press ( "Home" ) ;
1556
+ await page . keyboard . press ( "Delete" ) ;
1557
+ await page . waitForChanges ( ) ;
1558
+
1559
+ expect ( await calciteInput . getProperty ( "value" ) ) . toBe ( "0.0001" ) ;
1560
+ expect ( await input . getProperty ( "value" ) ) . toBe (
1561
+ // the localize method converts the string to a number, which removes the leading zeros
1562
+ // so we need to manually add them back in the test when confirming the expected value
1563
+ `${ numberStringFormatter . localize ( "0" ) . repeat ( 3 ) } ${ numberStringFormatter . localize ( "0.0001" ) } ` ,
1564
+ ) ;
1565
+
1566
+ await typeNumberValue ( page , "2" ) ;
1567
+ await page . waitForChanges ( ) ;
1568
+
1569
+ expect ( await calciteInput . getProperty ( "value" ) ) . toBe ( "20000.0001" ) ;
1570
+ expect ( await input . getProperty ( "value" ) ) . toBe ( numberStringFormatter . localize ( "20000.0001" ) ) ;
1571
+ } ) ;
1572
+
1493
1573
it ( "cannot be modified when readOnly is true" , async ( ) => {
1494
1574
const page = await newE2EPage ( ) ;
1495
1575
await page . setContent ( html `< calcite-input-number read-only value ="123 " clearable > </ calcite-input-number > ` ) ;
0 commit comments