w-table-vue 1.0.21 → 1.0.23

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.
Files changed (44) hide show
  1. package/README.md +1 -1
  2. package/dist/w-table-vue.umd.js +3 -3
  3. package/dist/w-table-vue.umd.js.map +1 -1
  4. package/docs/examples/app.html +1 -1
  5. package/docs/examples/app.umd.js +2 -2
  6. package/docs/examples/app.umd.js.map +1 -1
  7. package/docs/examples/w-table-edit_default.html +18 -1
  8. package/docs/examples/w-table-edit_editable.html +18 -1
  9. package/docs/examples/w-table-edit_editable_checkId.html +18 -1
  10. package/docs/examples/w-table-edit_editable_checkId_opt.modifyDataWhenSave_save(call cmp. method).html +18 -1
  11. package/docs/examples/w-table-edit_editable_checkId_successMsgFromAddRow_errorMsgFromAddRow.html +18 -1
  12. package/docs/examples/w-table-edit_editable_enableDownloadWhenNoRows_tooltipDownloadExcelFileForHead_useHeadWhenDownload.html +570 -0
  13. package/docs/examples/w-table-edit_editable_inforPaddingStyle_menuBackgroundColor.html +18 -1
  14. package/docs/examples/w-table-edit_editable_language_checkId_tooltipAddRow.html +18 -1
  15. package/docs/examples/w-table-edit_editable_language_textLabelDataName_textPlaceholderDataName.html +18 -1
  16. package/docs/examples/w-table-edit_editable_no enableInfor.html +18 -1
  17. package/docs/examples/w-table-edit_editable_no enableMenu.html +18 -1
  18. package/docs/examples/w-table-edit_editable_opt.beforeAddRow.html +18 -1
  19. package/docs/examples/w-table-edit_editable_opt.kpCellFormat_no useCellFormatWhenDownload.html +18 -1
  20. package/docs/examples/w-table-edit_editable_opt.kpConvertKeysWhenUploadData.html +18 -1
  21. package/docs/examples/w-table-edit_editable_opt.optForUploadData.html +18 -1
  22. package/docs/examples/w-table-edit_editable_opt.optForUploadData.uploadMode (append, no popup).html +18 -1
  23. package/docs/examples/w-table-edit_editable_slot btns-right.html +18 -1
  24. package/docs/examples/w-table-edit_fixIds (fix id).html +18 -1
  25. package/docs/examples/w-table-edit_hideIds (hide mappingId).html +18 -1
  26. package/docs/examples/w-table-edit_name_description.html +18 -1
  27. package/docs/examples/w-table-edit_no enableInfor.html +18 -1
  28. package/docs/examples/w-table-edit_no enableMenu.html +18 -1
  29. package/docs/examples/w-table-edit_opt.kpCellFormat.html +18 -1
  30. package/docs/examples/w-table-edit_opt.kpHead.html +18 -1
  31. package/docs/examples/w-table-edit_removeIdsWhenDownload (remove id, mappingId, order, isActive).html +18 -1
  32. package/docs/examples/w-table-edit_slot btns-left.html +18 -1
  33. package/docs/examples/w-table-edit_slot btns-right.html +18 -1
  34. package/docs/examples/w-table-edit_slot cell-render.html +18 -1
  35. package/docs/examples/w-table-edit_slot cell-tooltip.html +18 -1
  36. package/docs/examples/w-table-edit_slot head-render.html +18 -1
  37. package/docs/examples/w-table-edit_slot head-tooltip.html +18 -1
  38. package/docs/examples/w-table-edit_slot infor (name_description).html +18 -1
  39. package/docs/examples/w-table-edit_sortColIds (sort by order).html +18 -1
  40. package/docs/index.html +1 -1
  41. package/docs/module-WTableEdit.html +33 -9
  42. package/package.json +4 -4
  43. package/src/AppZoneWTableEdit.vue +38 -0
  44. package/src/components/WTableEdit.vue +70 -10
@@ -43,7 +43,7 @@
43
43
  />
44
44
 
45
45
  <!-- w-table-vue -->
46
- <script src="https://cdn.jsdelivr.net/npm/w-table-vue@1.0.21/dist/w-table-vue.umd.js"></script>
46
+ <script src="https://cdn.jsdelivr.net/npm/w-table-vue@1.0.23/dist/w-table-vue.umd.js"></script>
47
47
 
48
48
  <style>
49
49
  .item {
@@ -531,6 +531,23 @@
531
531
  optForUploadData: {
532
532
  uploadMode: "append" //預先指定上傳模式, 點擊上傳按鈕時不顯示模式選擇彈窗, 直接開啟選檔視窗並附加於表格數據之後
533
533
  }
534
+ },
535
+ opt10: {
536
+ keys: keys1,
537
+ kpHeadFilterType: kpHeadFilterType1,
538
+ kpHead: {
539
+ //表頭名稱須非空且不重複, 才能由kpConvertKeysWhenUploadData對回欄位鍵值
540
+ make: "製造商",
541
+ model: "型號",
542
+ price: "價格"
543
+ },
544
+ kpConvertKeysWhenUploadData: {
545
+ //kpHead之反向對照, 使下載之表頭範本填寫後可上傳回來
546
+ 製造商: "make",
547
+ 型號: "model",
548
+ 價格: "price"
549
+ },
550
+ rows: [] //無數據列, 開啟enableDownloadWhenNoRows時仍可下載只有表頭之Excel檔案
534
551
  }
535
552
  },
536
553
  actions: []
@@ -43,7 +43,7 @@
43
43
  />
44
44
 
45
45
  <!-- w-table-vue -->
46
- <script src="https://cdn.jsdelivr.net/npm/w-table-vue@1.0.21/dist/w-table-vue.umd.js"></script>
46
+ <script src="https://cdn.jsdelivr.net/npm/w-table-vue@1.0.23/dist/w-table-vue.umd.js"></script>
47
47
 
48
48
  <style>
49
49
  .item {
@@ -537,6 +537,23 @@
537
537
  optForUploadData: {
538
538
  uploadMode: "append" //預先指定上傳模式, 點擊上傳按鈕時不顯示模式選擇彈窗, 直接開啟選檔視窗並附加於表格數據之後
539
539
  }
540
+ },
541
+ opt10: {
542
+ keys: keys1,
543
+ kpHeadFilterType: kpHeadFilterType1,
544
+ kpHead: {
545
+ //表頭名稱須非空且不重複, 才能由kpConvertKeysWhenUploadData對回欄位鍵值
546
+ make: "製造商",
547
+ model: "型號",
548
+ price: "價格"
549
+ },
550
+ kpConvertKeysWhenUploadData: {
551
+ //kpHead之反向對照, 使下載之表頭範本填寫後可上傳回來
552
+ 製造商: "make",
553
+ 型號: "model",
554
+ 價格: "price"
555
+ },
556
+ rows: [] //無數據列, 開啟enableDownloadWhenNoRows時仍可下載只有表頭之Excel檔案
540
557
  }
541
558
  },
542
559
  actions: []
@@ -43,7 +43,7 @@
43
43
  />
44
44
 
45
45
  <!-- w-table-vue -->
46
- <script src="https://cdn.jsdelivr.net/npm/w-table-vue@1.0.21/dist/w-table-vue.umd.js"></script>
46
+ <script src="https://cdn.jsdelivr.net/npm/w-table-vue@1.0.23/dist/w-table-vue.umd.js"></script>
47
47
 
48
48
  <style>
49
49
  .item {
@@ -532,6 +532,23 @@
532
532
  optForUploadData: {
533
533
  uploadMode: "append" //預先指定上傳模式, 點擊上傳按鈕時不顯示模式選擇彈窗, 直接開啟選檔視窗並附加於表格數據之後
534
534
  }
535
+ },
536
+ opt10: {
537
+ keys: keys1,
538
+ kpHeadFilterType: kpHeadFilterType1,
539
+ kpHead: {
540
+ //表頭名稱須非空且不重複, 才能由kpConvertKeysWhenUploadData對回欄位鍵值
541
+ make: "製造商",
542
+ model: "型號",
543
+ price: "價格"
544
+ },
545
+ kpConvertKeysWhenUploadData: {
546
+ //kpHead之反向對照, 使下載之表頭範本填寫後可上傳回來
547
+ 製造商: "make",
548
+ 型號: "model",
549
+ 價格: "price"
550
+ },
551
+ rows: [] //無數據列, 開啟enableDownloadWhenNoRows時仍可下載只有表頭之Excel檔案
535
552
  }
536
553
  },
537
554
  actions: []
@@ -43,7 +43,7 @@
43
43
  />
44
44
 
45
45
  <!-- w-table-vue -->
46
- <script src="https://cdn.jsdelivr.net/npm/w-table-vue@1.0.21/dist/w-table-vue.umd.js"></script>
46
+ <script src="https://cdn.jsdelivr.net/npm/w-table-vue@1.0.23/dist/w-table-vue.umd.js"></script>
47
47
 
48
48
  <style>
49
49
  .item {
@@ -516,6 +516,23 @@
516
516
  optForUploadData: {
517
517
  uploadMode: "append" //預先指定上傳模式, 點擊上傳按鈕時不顯示模式選擇彈窗, 直接開啟選檔視窗並附加於表格數據之後
518
518
  }
519
+ },
520
+ opt10: {
521
+ keys: keys1,
522
+ kpHeadFilterType: kpHeadFilterType1,
523
+ kpHead: {
524
+ //表頭名稱須非空且不重複, 才能由kpConvertKeysWhenUploadData對回欄位鍵值
525
+ make: "製造商",
526
+ model: "型號",
527
+ price: "價格"
528
+ },
529
+ kpConvertKeysWhenUploadData: {
530
+ //kpHead之反向對照, 使下載之表頭範本填寫後可上傳回來
531
+ 製造商: "make",
532
+ 型號: "model",
533
+ 價格: "price"
534
+ },
535
+ rows: [] //無數據列, 開啟enableDownloadWhenNoRows時仍可下載只有表頭之Excel檔案
519
536
  }
520
537
  },
521
538
  actions: []
package/docs/index.html CHANGED
@@ -71,7 +71,7 @@
71
71
  <br class="clear">
72
72
 
73
73
  <footer>
74
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Thu Sep 24 2026 09:38:18 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
74
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 06 2026 15:13:03 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
75
75
  </footer>
76
76
 
77
77
  <script>prettyPrint();</script>
@@ -152,16 +152,16 @@
152
152
  <td>輸入下載Excel檔案時欲移除的欄位字串或陣列,預設''</td>
153
153
  </tr><tr>
154
154
  <td><code>funGetLtdtHookWhenDownload</code></td>
155
- <td>Boolean</td>
155
+ <td>function</td>
156
156
  <td><code>null</code></td>
157
157
  <td>No</td>
158
- <td>輸入下載Excel檔案時針對ltdt數據階段的攔截處理函數,預設為null</td>
158
+ <td>輸入下載Excel檔案時針對ltdt數據階段的攔截處理函數,輸入為各列數據陣列,須同步回傳處理後之數據陣列(不支援Promise),無數據列時輸入為空陣列,函數拋錯時觸發error事件且不產生檔案,預設為null</td>
159
159
  </tr><tr>
160
160
  <td><code>funGetMatHookWhenDownload</code></td>
161
- <td>Boolean</td>
161
+ <td>function</td>
162
162
  <td><code>null</code></td>
163
163
  <td>No</td>
164
- <td>輸入下載Excel檔案時針對mat數據階段的攔截處理函數,預設為null</td>
164
+ <td>輸入下載Excel檔案時針對mat數據階段的攔截處理函數,輸入為首列為表頭之二維陣列(已經funGetLtdtHookWhenDownload處理),須同步回傳處理後之二維陣列(不支援Promise),無數據列且funGetLtdtHookWhenDownload未加入數據時只含表頭1列,函數拋錯時觸發error事件且不產生檔案,預設為null</td>
165
165
  </tr><tr>
166
166
  <td><code>useHeadWhenDownload</code></td>
167
167
  <td>Boolean</td>
@@ -174,6 +174,12 @@
174
174
  <td><code>true</code></td>
175
175
  <td>No</td>
176
176
  <td>輸入下載Excel檔案時是否依opt.kpCellFormat格式化各欄值布林值,true時下載內容與畫面一致(有格式化函數之欄為格式化後字串),false時下載原值,無opt.kpCellFormat時無作用,對應w-aggrid-vue之downloadData與downloadDisplayData之useFormat,預設為true</td>
177
+ </tr><tr>
178
+ <td><code>enableDownloadWhenNoRows</code></td>
179
+ <td>Boolean</td>
180
+ <td><code>false</code></td>
181
+ <td>No</td>
182
+ <td>輸入無數據列時是否仍顯示下載數據按鈕布林值,無數據列指表格主數據列為0列(opt.rows為空陣列或數據列已全部刪除,不含置頂置底列),此時按下載只有表頭1列之Excel檔案,表頭依opt.keys之順序並套用removeIdsWhenDownload與useHeadWhenDownload,與有數據時所下載檔案之第1列相同,提示文字改用tooltipDownloadExcelFileForHead;只影響下載數據按鈕,不影響下載過濾後數據按鈕;編輯與顯示模式皆適用,若僅欲於編輯模式顯示可綁定:enableDownloadWhenNoRows="editable";需提供opt.keys;若useHeadWhenDownload為true且欲將填寫後之檔案上傳回來,須以opt.kpConvertKeysWhenUploadData將表頭名稱對回欄位鍵值,且opt.kpHead之名稱須非空且不重複;預設為false</td>
177
183
  </tr><tr>
178
184
  <td><code>fileNameWhenDownload</code></td>
179
185
  <td>String</td>
@@ -240,6 +246,12 @@
240
246
  <td><code>'download filtered data to Excel file'</code></td>
241
247
  <td>No</td>
242
248
  <td>輸入下載過濾後數據成為Excel檔案按鈕tooltip字串,預設'download filtered data to Excel file'</td>
249
+ </tr><tr>
250
+ <td><code>tooltipDownloadExcelFileForHead</code></td>
251
+ <td>String</td>
252
+ <td><code>'download headers to Excel file'</code></td>
253
+ <td>No</td>
254
+ <td>輸入無數據列時下載數據按鈕(此時只下載表頭)之tooltip字串,需enableDownloadWhenNoRows為true才會使用,給予空字串則不顯示tooltip,已自訂tooltipDownloadExcelFile語系之呼叫端應一併給予,預設'download headers to Excel file'</td>
243
255
  </tr><tr>
244
256
  <td><code>tooltipUploadExcelFile</code></td>
245
257
  <td>String</td>
@@ -802,16 +814,16 @@
802
814
  <td>輸入下載Excel檔案時欲移除的欄位字串或陣列,預設''</td>
803
815
  </tr><tr>
804
816
  <td><code>funGetLtdtHookWhenDownload</code></td>
805
- <td>Boolean</td>
817
+ <td>function</td>
806
818
  <td><code>null</code></td>
807
819
  <td>No</td>
808
- <td>輸入下載Excel檔案時針對ltdt數據階段的攔截處理函數,預設為null</td>
820
+ <td>輸入下載Excel檔案時針對ltdt數據階段的攔截處理函數,輸入為各列數據陣列,須同步回傳處理後之數據陣列(不支援Promise),無數據列時輸入為空陣列,函數拋錯時觸發error事件且不產生檔案,預設為null</td>
809
821
  </tr><tr>
810
822
  <td><code>funGetMatHookWhenDownload</code></td>
811
- <td>Boolean</td>
823
+ <td>function</td>
812
824
  <td><code>null</code></td>
813
825
  <td>No</td>
814
- <td>輸入下載Excel檔案時針對mat數據階段的攔截處理函數,預設為null</td>
826
+ <td>輸入下載Excel檔案時針對mat數據階段的攔截處理函數,輸入為首列為表頭之二維陣列(已經funGetLtdtHookWhenDownload處理),須同步回傳處理後之二維陣列(不支援Promise),無數據列且funGetLtdtHookWhenDownload未加入數據時只含表頭1列,函數拋錯時觸發error事件且不產生檔案,預設為null</td>
815
827
  </tr><tr>
816
828
  <td><code>useHeadWhenDownload</code></td>
817
829
  <td>Boolean</td>
@@ -824,6 +836,12 @@
824
836
  <td><code>true</code></td>
825
837
  <td>No</td>
826
838
  <td>輸入下載Excel檔案時是否依opt.kpCellFormat格式化各欄值布林值,true時下載內容與畫面一致(有格式化函數之欄為格式化後字串),false時下載原值,無opt.kpCellFormat時無作用,對應w-aggrid-vue之downloadData與downloadDisplayData之useFormat,預設為true</td>
839
+ </tr><tr>
840
+ <td><code>enableDownloadWhenNoRows</code></td>
841
+ <td>Boolean</td>
842
+ <td><code>false</code></td>
843
+ <td>No</td>
844
+ <td>輸入無數據列時是否仍顯示下載數據按鈕布林值,無數據列指表格主數據列為0列(opt.rows為空陣列或數據列已全部刪除,不含置頂置底列),此時按下載只有表頭1列之Excel檔案,表頭依opt.keys之順序並套用removeIdsWhenDownload與useHeadWhenDownload,與有數據時所下載檔案之第1列相同,提示文字改用tooltipDownloadExcelFileForHead;只影響下載數據按鈕,不影響下載過濾後數據按鈕;編輯與顯示模式皆適用,若僅欲於編輯模式顯示可綁定:enableDownloadWhenNoRows="editable";需提供opt.keys;若useHeadWhenDownload為true且欲將填寫後之檔案上傳回來,須以opt.kpConvertKeysWhenUploadData將表頭名稱對回欄位鍵值,且opt.kpHead之名稱須非空且不重複;預設為false</td>
827
845
  </tr><tr>
828
846
  <td><code>fileNameWhenDownload</code></td>
829
847
  <td>String</td>
@@ -890,6 +908,12 @@
890
908
  <td><code>'download filtered data to Excel file'</code></td>
891
909
  <td>No</td>
892
910
  <td>輸入下載過濾後數據成為Excel檔案按鈕tooltip字串,預設'download filtered data to Excel file'</td>
911
+ </tr><tr>
912
+ <td><code>tooltipDownloadExcelFileForHead</code></td>
913
+ <td>String</td>
914
+ <td><code>'download headers to Excel file'</code></td>
915
+ <td>No</td>
916
+ <td>輸入無數據列時下載數據按鈕(此時只下載表頭)之tooltip字串,需enableDownloadWhenNoRows為true才會使用,給予空字串則不顯示tooltip,已自訂tooltipDownloadExcelFile語系之呼叫端應一併給予,預設'download headers to Excel file'</td>
893
917
  </tr><tr>
894
918
  <td><code>tooltipUploadExcelFile</code></td>
895
919
  <td>String</td>
@@ -1449,7 +1473,7 @@
1449
1473
  <br class="clear">
1450
1474
 
1451
1475
  <footer>
1452
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Thu Sep 24 2026 09:38:18 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
1476
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Tue Oct 06 2026 15:13:03 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
1453
1477
  </footer>
1454
1478
 
1455
1479
  <script>prettyPrint();</script>
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "w-table-vue",
3
- "version": "1.0.21",
3
+ "version": "1.0.23",
4
4
  "main": "dist/w-table-vue.umd.js",
5
5
  "dependencies": {
6
- "w-aggrid-vue": "^2.1.4",
7
- "w-component-vue": "^2.5.21",
8
- "wsemi": "^1.9.3"
6
+ "w-aggrid-vue": "^2.1.5",
7
+ "w-component-vue": "^2.5.26",
8
+ "wsemi": "^1.9.9"
9
9
  },
10
10
  "devDependencies": {
11
11
  "@vue/cli-plugin-babel": "^5.0.8",
@@ -581,6 +581,29 @@
581
581
  </div>
582
582
 
583
583
 
584
+ <div class="bk">
585
+ <demolink
586
+ :pkgname="'w-table-vue'"
587
+ :kbname="'w-table-edit'"
588
+ :casename="'editable & enableDownloadWhenNoRows & tooltipDownloadExcelFileForHead & useHeadWhenDownload & opt.kpConvertKeysWhenUploadData'"
589
+ ></demolink>
590
+
591
+ <w-table-edit
592
+ style="width:600px; height:400px;"
593
+ :name="WTableEdit.name"
594
+ :description="WTableEdit.description"
595
+ :opt="WTableEdit.opt10"
596
+ :editable="true"
597
+ :enableDownloadWhenNoRows="true"
598
+ :tooltipDownloadExcelFileForHead="'下載表頭範本'"
599
+ :useHeadWhenDownload="true"
600
+ @success="evSuccess"
601
+ @error="evError"
602
+ ></w-table-edit>
603
+
604
+ </div>
605
+
606
+
584
607
  <div class="bk">
585
608
  <demolink
586
609
  :pkgname="'w-table-vue'"
@@ -933,6 +956,21 @@ export default {
933
956
  uploadMode: 'append', //預先指定上傳模式, 點擊上傳按鈕時不顯示模式選擇彈窗, 直接開啟選檔視窗並附加於表格數據之後
934
957
  },
935
958
  },
959
+ 'opt10': {
960
+ keys: keys1,
961
+ kpHeadFilterType: kpHeadFilterType1,
962
+ kpHead: { //表頭名稱須非空且不重複, 才能由kpConvertKeysWhenUploadData對回欄位鍵值
963
+ make: '製造商',
964
+ model: '型號',
965
+ price: '價格',
966
+ },
967
+ kpConvertKeysWhenUploadData: { //kpHead之反向對照, 使下載之表頭範本填寫後可上傳回來
968
+ '製造商': 'make',
969
+ '型號': 'model',
970
+ '價格': 'price',
971
+ },
972
+ rows: [], //無數據列, 開啟enableDownloadWhenNoRows時仍可下載只有表頭之Excel檔案
973
+ },
936
974
  },
937
975
  'actions': [
938
976
  ],
@@ -80,9 +80,9 @@
80
80
  :icon="mdiDownload"
81
81
  :backgroundColor="'white'"
82
82
  :backgroundColorHover="'white'"
83
- :tooltip="tooltipDownloadExcelFile"
83
+ :tooltip="useTooltipDownloadExcelFile"
84
84
  @click="downloadData('raw')"
85
- v-if="hasEffRows"
85
+ v-if="hasBtnDownloadRaw"
86
86
  ></WButtonCircle>
87
87
 
88
88
  <WButtonCircle
@@ -92,7 +92,7 @@
92
92
  :backgroundColorHover="'white'"
93
93
  :tooltip="tooltipDownloadExcelFileForDisplay"
94
94
  @click="downloadData('display')"
95
- v-if="isFilter && hasEffRows"
95
+ v-if="hasBtnDownloadDisplay"
96
96
  ></WButtonCircle>
97
97
 
98
98
  <!-- 呼叫端於opt.optForUploadData.uploadMode預先指定上傳模式時, 以editable停用模式選擇彈窗(WPopup點擊觸發區即會自行開啟), 由clickUpload直接開啟選檔視窗 -->
@@ -173,11 +173,11 @@
173
173
  <WButtonCircle
174
174
  style="margin:5px;"
175
175
  :icon="mdiDownload"
176
- :tooltip="tooltipDownloadExcelFile"
176
+ :tooltip="useTooltipDownloadExcelFile"
177
177
  :backgroundColor="'white'"
178
178
  :backgroundColorHover="'white'"
179
179
  @click="downloadData('raw')"
180
- v-if="hasEffRows"
180
+ v-if="hasBtnDownloadRaw"
181
181
  ></WButtonCircle>
182
182
 
183
183
  <WButtonCircle
@@ -187,7 +187,7 @@
187
187
  :backgroundColor="'white'"
188
188
  :backgroundColorHover="'white'"
189
189
  @click="downloadData('display')"
190
- v-if="isFilter && hasEffRows"
190
+ v-if="hasBtnDownloadDisplay"
191
191
  ></WButtonCircle>
192
192
 
193
193
  <slot
@@ -302,10 +302,11 @@ import WAggridVue from 'w-aggrid-vue/src/components/WAggridVue.vue'
302
302
  * @vue-prop {String|Array} [fixIds=''] 輸入欲固定於左側欄位字串或陣列,可被opt.kpHeadFixLeft複寫,預設''
303
303
  * @vue-prop {String} [checkId=''] 輸入欲使用核選方塊欄位字串,可被opt.kpHeadCheckBox複寫,預設''
304
304
  * @vue-prop {String|Array} [removeIdsWhenDownload=''] 輸入下載Excel檔案時欲移除的欄位字串或陣列,預設''
305
- * @vue-prop {Boolean} [funGetLtdtHookWhenDownload=null] 輸入下載Excel檔案時針對ltdt數據階段的攔截處理函數,預設為null
306
- * @vue-prop {Boolean} [funGetMatHookWhenDownload=null] 輸入下載Excel檔案時針對mat數據階段的攔截處理函數,預設為null
305
+ * @vue-prop {Function} [funGetLtdtHookWhenDownload=null] 輸入下載Excel檔案時針對ltdt數據階段的攔截處理函數,輸入為各列數據陣列,須同步回傳處理後之數據陣列(不支援Promise),無數據列時輸入為空陣列,函數拋錯時觸發error事件且不產生檔案,預設為null
306
+ * @vue-prop {Function} [funGetMatHookWhenDownload=null] 輸入下載Excel檔案時針對mat數據階段的攔截處理函數,輸入為首列為表頭之二維陣列(已經funGetLtdtHookWhenDownload處理),須同步回傳處理後之二維陣列(不支援Promise),無數據列且funGetLtdtHookWhenDownload未加入數據時只含表頭1列,函數拋錯時觸發error事件且不產生檔案,預設為null
307
307
  * @vue-prop {Boolean} [useHeadWhenDownload=false] 輸入下載Excel檔案時是否將欄位鍵值轉換成head布林值,此需提供opt.kpHead物件,預設為false
308
308
  * @vue-prop {Boolean} [useCellFormatWhenDownload=true] 輸入下載Excel檔案時是否依opt.kpCellFormat格式化各欄值布林值,true時下載內容與畫面一致(有格式化函數之欄為格式化後字串),false時下載原值,無opt.kpCellFormat時無作用,對應w-aggrid-vue之downloadData與downloadDisplayData之useFormat,預設為true
309
+ * @vue-prop {Boolean} [enableDownloadWhenNoRows=false] 輸入無數據列時是否仍顯示下載數據按鈕布林值,無數據列指表格主數據列為0列(opt.rows為空陣列或數據列已全部刪除,不含置頂置底列),此時按下載只有表頭1列之Excel檔案,表頭依opt.keys之順序並套用removeIdsWhenDownload與useHeadWhenDownload,與有數據時所下載檔案之第1列相同,提示文字改用tooltipDownloadExcelFileForHead;只影響下載數據按鈕,不影響下載過濾後數據按鈕;編輯與顯示模式皆適用,若僅欲於編輯模式顯示可綁定:enableDownloadWhenNoRows="editable";需提供opt.keys;若useHeadWhenDownload為true且欲將填寫後之檔案上傳回來,須以opt.kpConvertKeysWhenUploadData將表頭名稱對回欄位鍵值,且opt.kpHead之名稱須非空且不重複;預設為false
309
310
  * @vue-prop {String} [fileNameWhenDownload='data.xlsx'] 輸入下載Excel檔案時儲存檔名稱字串,預設'data.xlsx'
310
311
  * @vue-prop {String} [sheetNameWhenDownload='data'] 輸入下載Excel檔案時sheet名稱字串,預設'data'
311
312
  * @vue-prop {Boolean} [editable=false] 輸入是否可編輯布林值,可被opt.defCellEditable複寫,預設為false
@@ -317,6 +318,7 @@ import WAggridVue from 'w-aggrid-vue/src/components/WAggridVue.vue'
317
318
  * @vue-prop {String} [tooltipDeleteSelectedRows='delete selected rows'] 輸入刪除選擇數據按鈕tooltip字串,預設'delete selected rows'
318
319
  * @vue-prop {String} [tooltipDownloadExcelFile='download data to Excel file'] 輸入下載數據成為Excel檔案按鈕tooltip字串,預設'download data to Excel file'
319
320
  * @vue-prop {String} [tooltipDownloadExcelFileForDisplay='download filtered data to Excel file'] 輸入下載過濾後數據成為Excel檔案按鈕tooltip字串,預設'download filtered data to Excel file'
321
+ * @vue-prop {String} [tooltipDownloadExcelFileForHead='download headers to Excel file'] 輸入無數據列時下載數據按鈕(此時只下載表頭)之tooltip字串,需enableDownloadWhenNoRows為true才會使用,給予空字串則不顯示tooltip,已自訂tooltipDownloadExcelFile語系之呼叫端應一併給予,預設'download headers to Excel file'
320
322
  * @vue-prop {String} [tooltipUploadExcelFile='upload data to Excel file'] 輸入上傳Excel數據檔案按鈕tooltip字串,預設'upload data to Excel file'
321
323
  * @vue-prop {String} [successMsgFromAddRow='add row successfully'] 輸入新增數據成功事件訊息字串,預設'add row successfully'
322
324
  * @vue-prop {String} [errorMsgFromAddRow='can not add row'] 輸入無法新增數據事件訊息字串,預設'can not add row'
@@ -501,6 +503,10 @@ export default {
501
503
  type: Boolean,
502
504
  default: true,
503
505
  },
506
+ enableDownloadWhenNoRows: {
507
+ type: Boolean,
508
+ default: false,
509
+ },
504
510
  fileNameWhenDownload: {
505
511
  type: String,
506
512
  default: 'data.xlsx',
@@ -545,6 +551,10 @@ export default {
545
551
  type: String,
546
552
  default: 'download filtered data to Excel file', //下載過濾後數據成為Excel檔案
547
553
  },
554
+ tooltipDownloadExcelFileForHead: {
555
+ type: String,
556
+ default: 'download headers to Excel file', //下載表頭成為Excel檔案
557
+ },
548
558
  tooltipUploadExcelFile: {
549
559
  type: String,
550
560
  default: 'upload data to Excel file', //上傳數據 Excel 檔案
@@ -627,6 +637,7 @@ export default {
627
637
  showPickUploadMode: false,
628
638
 
629
639
  paramsTemp: null,
640
+ kpHeadTemp: null,
630
641
 
631
642
  nameTrans: '',
632
643
  descriptionTrans: '',
@@ -676,9 +687,15 @@ export default {
676
687
  let checkId = vo.checkId
677
688
  let editable = vo.editable
678
689
 
690
+ //optKeys, 換表時(例如由空表換成另一張空表)rows可能深度相等, 須另比對keys才會重建, 否則欄位與表頭沿用前表
691
+ let optKeys = get(vo, 'opt.keys')
692
+
693
+ //optKpHead, 僅表頭名稱變更時不重建(重建會以opt.rows覆蓋編輯中之增刪), 改於下方只更新useOpt.kpHead
694
+ let optKpHead = get(vo, 'opt.kpHead')
695
+
679
696
  //paramsTemp
680
697
  let paramsTemp = {
681
- rows, hideIds, fixIds, checkId, editable
698
+ rows, hideIds, fixIds, checkId, editable, optKeys
682
699
  }
683
700
 
684
701
  //check, changeParamsForTable掛在dom上, 可能因為dom變更而被觸發, 或因數據為物件(例如rows)可能被修改, 於dom變更時被視為有變而觸發, 故需添加偵測外部數據是否有變才呼叫genOpt
@@ -689,6 +706,18 @@ export default {
689
706
 
690
707
  //save
691
708
  vo.paramsTemp = cloneDeep(paramsTemp)
709
+ vo.kpHeadTemp = cloneDeep(optKpHead)
710
+
711
+ }
712
+ else if (!isEqual(vo.kpHeadTemp, optKpHead)) {
713
+
714
+ //kpHead, 僅表頭名稱變更, 只更新useOpt.kpHead(w-aggrid-vue之changeParam會偵測而重建欄位), 不重建數據列
715
+ if (vo.useOpt !== null) {
716
+ vo.useOpt.kpHead = vo.useKpHead
717
+ }
718
+
719
+ //save
720
+ vo.kpHeadTemp = cloneDeep(optKpHead)
692
721
 
693
722
  }
694
723
 
@@ -768,6 +797,36 @@ export default {
768
797
  return size(get(vo, 'useOpt.rows', [])) > 0
769
798
  },
770
799
 
800
+ hasBtnDownloadRaw: function() {
801
+ //console.log('computed hasBtnDownloadRaw')
802
+
803
+ let vo = this
804
+
805
+ //下載數據按鈕, 有數據列時顯示; 無數據列時若enableDownloadWhenNoRows為true亦顯示, 此時下載只有表頭1列之Excel檔案
806
+ return vo.hasEffRows || vo.enableDownloadWhenNoRows
807
+ },
808
+
809
+ hasBtnDownloadDisplay: function() {
810
+ //console.log('computed hasBtnDownloadDisplay')
811
+
812
+ let vo = this
813
+
814
+ //下載過濾後數據按鈕, 過濾中且有數據列時顯示, 不受enableDownloadWhenNoRows影響
815
+ return vo.isFilter && vo.hasEffRows
816
+ },
817
+
818
+ useTooltipDownloadExcelFile: function() {
819
+ //console.log('computed useTooltipDownloadExcelFile')
820
+
821
+ let vo = this
822
+
823
+ //無數據列時下載數據按鈕實際只下載表頭, 故改用表頭版提示文字
824
+ if (vo.hasEffRows) {
825
+ return vo.tooltipDownloadExcelFile
826
+ }
827
+ return vo.tooltipDownloadExcelFileForHead
828
+ },
829
+
771
830
  hasEffUseOpt: function() {
772
831
  //console.log('computed hasEffUseOpt')
773
832
 
@@ -994,7 +1053,8 @@ export default {
994
1053
  if (iseobj(vo.opt)) {
995
1054
  let optTemp = cloneDeep(vo.opt)
996
1055
  each(optTemp, (v, k) => {
997
- if (k !== 'keys' && k !== 'rows' && k !== 'kpHead' && k !== 'editable') { //已於前面使用過就不複寫, 例如rows會被重排序一定不能被複寫回原數據
1056
+ //rowChecked與filterChange亦不複寫, 前面之包裝函數會更新rowsSelect與isFilter後再呼叫呼叫端之回呼, 若被複寫則刪除鈕與下載過濾後數據鈕無法出現
1057
+ if (k !== 'keys' && k !== 'rows' && k !== 'kpHead' && k !== 'editable' && k !== 'rowChecked' && k !== 'filterChange') { //已於前面使用過就不複寫, 例如rows會被重排序一定不能被複寫回原數據
998
1058
  useOpt[k] = v
999
1059
  }
1000
1060
  })