gridjs-spreadsheet 25.10.0 → 25.12.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/example/pom.xml CHANGED
@@ -17,7 +17,7 @@
17
17
  </repositories>
18
18
  <groupId>com.aspose.gridjs</groupId>
19
19
  <artifactId>gridjsdemo</artifactId>
20
- <version>25.10</version>
20
+ <version>25.12</version>
21
21
  <name>gridjsdemo</name>
22
22
  <description>GridJs Demo project for Spring Boot</description>
23
23
  <properties>
@@ -51,12 +51,12 @@
51
51
  <dependency>
52
52
  <groupId>com.aspose</groupId>
53
53
  <artifactId>aspose-cells</artifactId>
54
- <version>25.10</version>
54
+ <version>25.12</version>
55
55
  </dependency>
56
56
  <dependency>
57
57
  <groupId>com.aspose</groupId>
58
58
  <artifactId>aspose-cells</artifactId>
59
- <version>25.10</version>
59
+ <version>25.12</version>
60
60
  <classifier>gridjs</classifier>
61
61
  </dependency>
62
62
  <!-- <dependency>
@@ -7,9 +7,9 @@
7
7
  x="0px"
8
8
  y="0px"
9
9
  width="262"
10
- height="130"
11
- viewBox="0 0 262 130"
12
- enable-background="new 0 0 262 72"
10
+ height="148"
11
+ viewBox="0 0 262 148"
12
+ enable-background="new 0 0 262 148"
13
13
  xml:space="preserve"
14
14
  sodipodi:docname="method-draw-image-new.svg"
15
15
  inkscape:version="1.3 (0e150ed, 2023-07-21)"
@@ -1004,4 +1004,24 @@
1004
1004
  id="g49"> &#10; <text
1005
1005
  text-anchor="middle"
1006
1006
  font-size="11px"
1007
- id="text48">fx</text> &#10; </g> &#10; </g>&#10; </svg>
1007
+ id="text48">fx</text> &#10; </g> &#10; </g>&#10;
1008
+
1009
+ <g id="translate" transform="matrix(1,0,0,1,0,126)" aria-label="Translate">
1010
+ <title>Translate</title>
1011
+ <!-- Globe base -->
1012
+ <circle cx="9" cy="9" r="8" fill="#1976D2"/>
1013
+ <!-- Latitude line -->
1014
+ <path d="M1 9 a8 4 0 0 0 16 0" fill="none" stroke="#FFFFFF" stroke-width="1"/>
1015
+ <!-- Longitude line -->
1016
+ <path d="M9 1 a4 8 0 0 1 0 16 a4 8 0 0 1 0 -16" fill="none" stroke="#FFFFFF" stroke-width="1"/>
1017
+ <!-- Clockwise arrow -->
1018
+ <path d="M5 13 a4 4 0 0 0 8 0" fill="none" stroke="#FFFFFF" stroke-width="1.5" stroke-linecap="round"/>
1019
+ <path d="M13 13 L13 11 L11 13" fill="none" stroke="#FFFFFF" stroke-width="1.5" stroke-linecap="round"/>
1020
+ <!-- Counter?clockwise arrow -->
1021
+ <path d="M13 5 a4 4 0 0 0 -8 0" fill="none" stroke="#FFFFFF" stroke-width="1.5" stroke-linecap="round"/>
1022
+ <path d="M5 5 L5 7 L7 5" fill="none" stroke="#FFFFFF" stroke-width="1.5" stroke-linecap="round"/>
1023
+ <!-- Small "A?Ω" glyph -->
1024
+ <text x="9" y="11.5" text-anchor="middle" font-family="sans-serif" font-size="5px" fill="#FFFFFF">A?Ω</text>
1025
+ </g>
1026
+ &#10;
1027
+ </svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gridjs-spreadsheet",
3
- "version": "25.10.0",
3
+ "version": "25.12.0",
4
4
  "description": "this is the client side script for GridJs which is a lightweight, scalable, and customizable toolkit that provides cross-platform web applications, enables convenient development for editing or viewing Excel/Spreadsheet files, offers simple deployment, and provides easy-to-use APIs based on JSON format.",
5
5
  "types": "index.d.ts",
6
6
  "main": "xspreadsheet.js",
package/readme.md CHANGED
@@ -127,6 +127,7 @@ const s = new Spreadsheet("#gridjs-demo")
127
127
  showToolbar: true,
128
128
  showGrid: true,
129
129
  showContextmenu: true,
130
+ local: 'en',
130
131
  view: {
131
132
  height: () => document.documentElement.clientHeight,
132
133
  width: () => document.documentElement.clientWidth,
@@ -359,6 +360,16 @@ v25.10:
359
360
  - Support APIs to set customToast
360
361
  - Support CSS identify for model window
361
362
 
363
+ v25.11:
364
+
365
+ - Support fill color settings for charts
366
+ - Support 'Fill Color ' and 'Font Color' button dropdown selection and click to fill
367
+
368
+ v25.12:
369
+
370
+ - Support sort by cell color/font color
371
+ - Support add multiple selection validation list
372
+
362
373
  ## License
363
374
 
364
375
  MIT
package/xspreadsheet.css CHANGED
@@ -222,6 +222,7 @@ body {
222
222
  .x-spreadsheet-dropdown .x-spreadsheet-dropdown-content {
223
223
  position: absolute;
224
224
  z-index: 200;
225
+ width: max-content;
225
226
  background: white;
226
227
  border: 1px solid #ccc;
227
228
  border-radius: 2px;
@@ -426,6 +427,15 @@ body {
426
427
  width: 100%;
427
428
  height: 100%;
428
429
  }
430
+ .x-spreadsheet-batch-insert-row {
431
+ position: absolute;
432
+ display: flex;
433
+ align-items: center;
434
+ padding: 8px 6px;
435
+ background: #f5f6f7;
436
+ border-top: 1px solid #e0e2e4;
437
+ z-index: 15;
438
+ }
429
439
  .x-spreadsheet-editor,
430
440
  .x-spreadsheet-selector {
431
441
  box-sizing: content-box;
@@ -555,7 +565,7 @@ body {
555
565
  cursor: default;
556
566
  text-align: left;
557
567
  overflow: hidden;
558
- width: max-content;
568
+ width: 100%;
559
569
  display: flex;
560
570
  align-items: center;
561
571
  gap: 8px;
@@ -653,6 +663,10 @@ body {
653
663
  .x-spreadsheet-suggest {
654
664
  width: 200px;
655
665
  }
666
+ .x-spreadsheet-validation-list-item-selected {
667
+ background: rgba(33, 133, 208, 0.1) !important;
668
+ border-left: 3px solid #2185D0;
669
+ }
656
670
  .x-spreadsheet-filter {
657
671
  border: 1px solid #e9e9e9;
658
672
  font-size: 12px;
@@ -801,6 +815,14 @@ body {
801
815
  .x-spreadsheet-bottombar-actions .x-spreadsheet-dropdown {
802
816
  margin: 0 6px;
803
817
  }
818
+ .x-spreadsheet-bottombar-actions .x-spreadsheet-dropdown-content .x-spreadsheet-item {
819
+ width: 180px !important;
820
+ max-width: 180px;
821
+ display: block;
822
+ white-space: nowrap;
823
+ overflow: hidden;
824
+ text-overflow: ellipsis;
825
+ }
804
826
  .x-spreadsheet-menu > li {
805
827
  flex-shrink: 0;
806
828
  line-height: 1.25em;
@@ -1269,6 +1291,24 @@ body {
1269
1291
  color: rgba(0, 0, 0, 0.87);
1270
1292
  user-select: none;
1271
1293
  box-shadow: inset 0 1px 2px hsla(0, 0%, 4%, 0.06);
1294
+ transition: box-shadow 0.2s ease;
1295
+ }
1296
+ .x-spreadsheet-form-select::after {
1297
+ content: '';
1298
+ position: absolute;
1299
+ top: 50%;
1300
+ right: 10px;
1301
+ width: 0;
1302
+ height: 0;
1303
+ border-left: 5px solid transparent;
1304
+ border-right: 5px solid transparent;
1305
+ border-top: 6px solid #6c757d;
1306
+ pointer-events: none;
1307
+ transform: translateY(-50%);
1308
+ transition: transform 0.2s ease;
1309
+ }
1310
+ .x-spreadsheet-form-select.open::after {
1311
+ transform: translateY(-50%) rotate(180deg);
1272
1312
  }
1273
1313
  .x-spreadsheet-form-select .input-text {
1274
1314
  text-overflow: ellipsis;
@@ -1277,7 +1317,9 @@ body {
1277
1317
  width: auto;
1278
1318
  height: 30px;
1279
1319
  line-height: 30px;
1280
- padding: 0 8px;
1320
+ padding: 0 26px 0 10px;
1321
+ display: flex;
1322
+ align-items: center;
1281
1323
  }
1282
1324
  .x-spreadsheet-form-fields {
1283
1325
  display: flex;
@@ -1294,7 +1336,6 @@ body {
1294
1336
  }
1295
1337
  .x-spreadsheet-form-field {
1296
1338
  display: block;
1297
- vertical-align: middle;
1298
1339
  margin-left: 10px;
1299
1340
  margin-bottom: 10px;
1300
1341
  }
@@ -1309,6 +1350,96 @@ body {
1309
1350
  color: #f04134;
1310
1351
  font-size: 0.9em;
1311
1352
  }
1353
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-content {
1354
+ background: linear-gradient(180deg, #f9fbff 0%, #ffffff 45%);
1355
+ padding: 24px;
1356
+ }
1357
+ .x-spreadsheet-modal-link .x-spreadsheet-item {
1358
+ cursor: pointer;
1359
+ width: 100%;
1360
+ }
1361
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-body {
1362
+ display: flex;
1363
+ flex-direction: column;
1364
+ gap: 18px;
1365
+ }
1366
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-section {
1367
+ padding: 18px 20px;
1368
+ display: flex;
1369
+ flex-direction: column;
1370
+ gap: 20px;
1371
+ }
1372
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-field,
1373
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-section .x-spreadsheet-form-field {
1374
+ width: 100%;
1375
+ }
1376
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-field-group {
1377
+ display: grid;
1378
+ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
1379
+ gap: 16px;
1380
+ }
1381
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-field-group > .x-spreadsheet-form-fields {
1382
+ width: 100%;
1383
+ }
1384
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-section .x-spreadsheet-form-field {
1385
+ display: flex;
1386
+ flex-wrap: wrap;
1387
+ align-items: center;
1388
+ }
1389
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-section .x-spreadsheet-form-field .label {
1390
+ flex: 0 0 120px;
1391
+ margin-bottom: 6px;
1392
+ }
1393
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-section .x-spreadsheet-form-field .tip {
1394
+ flex: 0 0 100%;
1395
+ margin-left: 120px;
1396
+ font-size: 12px;
1397
+ }
1398
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-section .x-spreadsheet-form-input,
1399
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-section .x-spreadsheet-form-select {
1400
+ flex: 1;
1401
+ width: 100%;
1402
+ }
1403
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-section .x-spreadsheet-form-input input {
1404
+ width: 100%;
1405
+ }
1406
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-actions {
1407
+ padding: 18px 24px 0;
1408
+ margin: 0 -24px -8px;
1409
+ border-top: 1px solid #e3e8ef;
1410
+ background: #fff;
1411
+ }
1412
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-actions .x-spreadsheet-buttons {
1413
+ padding: 0;
1414
+ }
1415
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-actions .x-spreadsheet-button {
1416
+ min-width: 90px;
1417
+ }
1418
+ @media screen and (max-width: 520px) {
1419
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-content {
1420
+ padding: 16px;
1421
+ }
1422
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-section {
1423
+ padding: 14px 16px;
1424
+ gap: 16px;
1425
+ }
1426
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-section .x-spreadsheet-form-field {
1427
+ flex-direction: column;
1428
+ align-items: stretch;
1429
+ }
1430
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-section .x-spreadsheet-form-field .label {
1431
+ flex: none;
1432
+ width: 100%;
1433
+ margin-bottom: 4px;
1434
+ }
1435
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-section .x-spreadsheet-form-field .tip {
1436
+ margin-left: 0;
1437
+ }
1438
+ .x-spreadsheet-modal-link .x-spreadsheet-modal-link-actions {
1439
+ padding: 16px 16px 0;
1440
+ margin: 0 -16px -8px;
1441
+ }
1442
+ }
1312
1443
  .x-spreadsheet-dimmer {
1313
1444
  display: none;
1314
1445
  position: absolute;
@@ -1487,7 +1618,7 @@ form fieldset select {
1487
1618
  display: inline-block;
1488
1619
  }
1489
1620
  .x-spreadsheet-icon .x-spreadsheet-icon-img {
1490
- background-image: url(d8a61c22046be134a6e067e41bcf53b5.svg);
1621
+ background-image: url(fa58a9189afab326b8fd7fe6b4751ae5.svg);
1491
1622
  position: absolute;
1492
1623
  width: 262px;
1493
1624
  height: 444px;
@@ -1573,6 +1704,10 @@ form fieldset select {
1573
1704
  left: -18px;
1574
1705
  top: -108px;
1575
1706
  }
1707
+ .x-spreadsheet-icon .x-spreadsheet-icon-img.translate {
1708
+ left: 0;
1709
+ top: -126px;
1710
+ }
1576
1711
  .x-spreadsheet-icon .x-spreadsheet-icon-img.showformulas {
1577
1712
  left: -36px;
1578
1713
  top: -108px;
@@ -2139,7 +2274,6 @@ input[type=number]::-webkit-outer-spin-button {
2139
2274
  }
2140
2275
  .x-spreadsheet-bar-label {
2141
2276
  flex: 0 0 auto;
2142
- display: inline-block;
2143
2277
  width: 60px;
2144
2278
  height: 100%;
2145
2279
  box-sizing: border-box;