@shwfed/config 2.12.3 → 2.12.5

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 (222) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/runtime/components/actions/buttons/2026-05-11/com.shwfed.actions.button.modal.layout/runtime.vue +9 -2
  3. package/dist/runtime/components/actions/buttons/2026-05-11/com.shwfed.actions.button.modal.layout/schema.d.ts +8 -2
  4. package/dist/runtime/components/actions/buttons/2026-05-11/com.shwfed.actions.button.modal.layout/schema.js +3 -3
  5. package/dist/runtime/components/actions/components/group.vue +3 -1
  6. package/dist/runtime/components/actions/schema.d.ts +16 -4
  7. package/dist/runtime/components/actions/schema.js +5 -5
  8. package/dist/runtime/components/config/footer.d.vue.ts +4 -0
  9. package/dist/runtime/components/config/footer.vue +25 -12
  10. package/dist/runtime/components/config/footer.vue.d.ts +4 -0
  11. package/dist/runtime/components/config/history-picker.d.vue.ts +15 -0
  12. package/dist/runtime/components/config/history-picker.vue +155 -0
  13. package/dist/runtime/components/config/history-picker.vue.d.ts +15 -0
  14. package/dist/runtime/components/config/index.d.vue.ts +4 -0
  15. package/dist/runtime/components/config/index.vue +8 -1
  16. package/dist/runtime/components/config/index.vue.d.ts +4 -0
  17. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/config.d.vue.ts +22 -22
  18. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/config.vue.d.ts +22 -22
  19. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/runtime.vue +5 -3
  20. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/schema.d.ts +8 -2
  21. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/schema.js +2 -2
  22. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/runtime.vue +5 -3
  23. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/schema.d.ts +8 -2
  24. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/schema.js +2 -2
  25. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/config.d.vue.ts +16 -16
  26. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/config.vue.d.ts +16 -16
  27. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/runtime.vue +4 -3
  28. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/schema.d.ts +8 -2
  29. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/schema.js +1 -1
  30. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/config.d.vue.ts +16 -16
  31. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/config.vue.d.ts +16 -16
  32. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/runtime.vue +5 -3
  33. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/schema.d.ts +8 -2
  34. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/schema.js +2 -2
  35. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.d.vue.ts +24 -24
  36. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.vue.d.ts +24 -24
  37. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/runtime.vue +5 -3
  38. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/schema.d.ts +8 -2
  39. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/schema.js +2 -2
  40. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/config.d.vue.ts +18 -18
  41. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/config.vue.d.ts +18 -18
  42. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/runtime.vue +5 -3
  43. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/schema.d.ts +8 -2
  44. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/schema.js +2 -2
  45. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.d.vue.ts +26 -26
  46. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.vue.d.ts +26 -26
  47. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/runtime.vue +5 -3
  48. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/schema.d.ts +8 -2
  49. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/schema.js +2 -2
  50. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/config.d.vue.ts +2 -2
  51. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/config.vue.d.ts +2 -2
  52. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/runtime.vue +5 -3
  53. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/schema.d.ts +8 -2
  54. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/schema.js +2 -2
  55. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.d.vue.ts +4 -4
  56. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.vue.d.ts +4 -4
  57. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/runtime.vue +5 -3
  58. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/schema.d.ts +8 -2
  59. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/schema.js +2 -2
  60. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.d.vue.ts +30 -30
  61. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.vue.d.ts +30 -30
  62. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/runtime.vue +5 -3
  63. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/schema.d.ts +8 -2
  64. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/schema.js +2 -2
  65. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/config.d.vue.ts +8 -8
  66. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/config.vue.d.ts +8 -8
  67. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/runtime.vue +5 -3
  68. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/schema.d.ts +8 -2
  69. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/schema.js +2 -2
  70. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/config.d.vue.ts +22 -22
  71. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/config.vue.d.ts +22 -22
  72. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/runtime.vue +5 -3
  73. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/schema.d.ts +8 -2
  74. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/schema.js +2 -2
  75. package/dist/runtime/components/form/fields/2026-04-29/com.shwfed.form.field.combobox.single/runtime.vue +4 -3
  76. package/dist/runtime/components/form/fields/2026-04-29/com.shwfed.form.field.combobox.single/schema.d.ts +8 -2
  77. package/dist/runtime/components/form/fields/2026-04-29/com.shwfed.form.field.combobox.single/schema.js +1 -1
  78. package/dist/runtime/components/form/fields/2026-05-12/com.shwfed.form.field.upload/runtime.vue +5 -3
  79. package/dist/runtime/components/form/fields/2026-05-12/com.shwfed.form.field.upload/schema.d.ts +8 -2
  80. package/dist/runtime/components/form/fields/2026-05-12/com.shwfed.form.field.upload/schema.js +1 -1
  81. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/config.d.vue.ts +16 -16
  82. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/config.vue.d.ts +16 -16
  83. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/runtime.vue +4 -3
  84. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/schema.d.ts +8 -2
  85. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/schema.js +1 -1
  86. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/config.d.vue.ts +2 -2
  87. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/config.vue.d.ts +2 -2
  88. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/row.vue +6 -1
  89. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/runtime.vue +5 -3
  90. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/schema.d.ts +9 -3
  91. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/schema.js +2 -2
  92. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.checkbox.group/runtime.vue +4 -3
  93. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.checkbox.group/schema.d.ts +8 -2
  94. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.checkbox.group/schema.js +1 -1
  95. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/runtime.vue +4 -3
  96. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/schema.d.ts +8 -2
  97. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/schema.js +1 -1
  98. package/dist/runtime/components/form/fields/2026-05-18/com.shwfed.form.field.table/runtime.vue +5 -3
  99. package/dist/runtime/components/form/fields/2026-05-18/com.shwfed.form.field.table/schema.d.ts +8 -2
  100. package/dist/runtime/components/form/fields/2026-05-18/com.shwfed.form.field.table/schema.js +2 -1
  101. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.d.vue.ts +10 -10
  102. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.vue.d.ts +10 -10
  103. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/runtime.vue +4 -3
  104. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/schema.d.ts +8 -2
  105. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/schema.js +1 -1
  106. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.month/config.d.vue.ts +16 -16
  107. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.month/config.vue.d.ts +16 -16
  108. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.month/runtime.vue +5 -3
  109. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.month/schema.d.ts +8 -2
  110. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.month/schema.js +2 -2
  111. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.d.vue.ts +24 -24
  112. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.vue.d.ts +24 -24
  113. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/runtime.vue +5 -3
  114. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/schema.d.ts +8 -2
  115. package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/schema.js +2 -2
  116. package/dist/runtime/components/form/fields/2026-05-25/com.shwfed.form.field.combobox.multi/config.d.vue.ts +16 -16
  117. package/dist/runtime/components/form/fields/2026-05-25/com.shwfed.form.field.combobox.multi/config.vue.d.ts +16 -16
  118. package/dist/runtime/components/form/fields/2026-05-25/com.shwfed.form.field.combobox.multi/runtime.vue +4 -3
  119. package/dist/runtime/components/form/fields/2026-05-25/com.shwfed.form.field.combobox.multi/schema.d.ts +8 -2
  120. package/dist/runtime/components/form/fields/2026-05-25/com.shwfed.form.field.combobox.multi/schema.js +1 -1
  121. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +10 -10
  122. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +10 -10
  123. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/runtime.vue +4 -3
  124. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/schema.d.ts +8 -2
  125. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/schema.js +1 -1
  126. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +10 -10
  127. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +10 -10
  128. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/runtime.vue +4 -3
  129. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/schema.d.ts +8 -2
  130. package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/schema.js +1 -1
  131. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/runtime.vue +4 -3
  132. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/schema.d.ts +8 -2
  133. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/schema.js +1 -1
  134. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/runtime.vue +4 -3
  135. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/schema.d.ts +8 -2
  136. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/schema.js +1 -1
  137. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +10 -10
  138. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +10 -10
  139. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/runtime.vue +4 -3
  140. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/schema.d.ts +8 -2
  141. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/schema.js +1 -1
  142. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +10 -10
  143. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +10 -10
  144. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/runtime.vue +4 -3
  145. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/schema.d.ts +8 -2
  146. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/schema.js +1 -1
  147. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.d.vue.ts +10 -10
  148. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.vue.d.ts +10 -10
  149. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/runtime.vue +4 -3
  150. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/schema.d.ts +8 -2
  151. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/schema.js +1 -1
  152. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.d.vue.ts +10 -10
  153. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.vue.d.ts +10 -10
  154. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/runtime.vue +4 -3
  155. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/schema.d.ts +8 -2
  156. package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/schema.js +1 -1
  157. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/runtime.vue +5 -3
  158. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/schema.d.ts +8 -2
  159. package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/schema.js +1 -1
  160. package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/runtime.vue +5 -3
  161. package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/schema.d.ts +8 -2
  162. package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/schema.js +1 -1
  163. package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/runtime.vue +4 -3
  164. package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/schema.d.ts +8 -2
  165. package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/schema.js +1 -1
  166. package/dist/runtime/components/form/index.vue +5 -1
  167. package/dist/runtime/components/form/utils/derived.d.ts +9 -0
  168. package/dist/runtime/components/form/utils/derived.js +1 -1
  169. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.combobox-single/config.d.vue.ts +2 -2
  170. package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.combobox-single/config.vue.d.ts +2 -2
  171. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/config.d.vue.ts +6 -6
  172. package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/config.vue.d.ts +6 -6
  173. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi/config.d.vue.ts +2 -2
  174. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi/config.vue.d.ts +2 -2
  175. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/config.d.vue.ts +6 -6
  176. package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/config.vue.d.ts +6 -6
  177. package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi/config.d.vue.ts +2 -2
  178. package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi/config.vue.d.ts +2 -2
  179. package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-single/config.d.vue.ts +2 -2
  180. package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-single/config.vue.d.ts +2 -2
  181. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +10 -10
  182. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +10 -10
  183. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +10 -10
  184. package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +10 -10
  185. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +10 -10
  186. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +10 -10
  187. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +10 -10
  188. package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +10 -10
  189. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/config.vue +224 -133
  190. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/config.vue +224 -133
  191. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +10 -10
  192. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +10 -10
  193. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +10 -10
  194. package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +10 -10
  195. package/dist/runtime/components/table/customization.d.vue.ts +15 -0
  196. package/dist/runtime/components/table/customization.vue +633 -0
  197. package/dist/runtime/components/table/customization.vue.d.ts +15 -0
  198. package/dist/runtime/components/table/index.vue +69 -6
  199. package/dist/runtime/components/table/utils/customization.d.ts +158 -0
  200. package/dist/runtime/components/table/utils/customization.js +315 -0
  201. package/dist/runtime/components/ui/date-picker/DatePickerInput.d.vue.ts +1 -1
  202. package/dist/runtime/components/ui/date-picker/DatePickerInput.vue.d.ts +1 -1
  203. package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.d.vue.ts +1 -1
  204. package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.vue.d.ts +1 -1
  205. package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.d.vue.ts +1 -1
  206. package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.vue.d.ts +1 -1
  207. package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.d.vue.ts +2 -2
  208. package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.vue.d.ts +2 -2
  209. package/dist/runtime/vendor/cel-js/CLAUDE.md +6 -5
  210. package/dist/runtime/vendor/cel-js/PROMPT.md +97 -19
  211. package/dist/runtime/vendor/cel-js/lib/decimal.d.ts +4 -0
  212. package/dist/runtime/vendor/cel-js/lib/decimal.js +35 -0
  213. package/dist/runtime/vendor/cel-js/lib/evaluator.js +2 -0
  214. package/dist/runtime/vendor/cel-js/lib/functions.js +107 -134
  215. package/dist/runtime/vendor/cel-js/lib/macros.js +125 -16
  216. package/dist/runtime/vendor/cel-js/lib/math-builtins.d.ts +2 -0
  217. package/dist/runtime/vendor/cel-js/lib/math-builtins.js +39 -0
  218. package/dist/runtime/vendor/cel-js/lib/optional.d.ts +4 -0
  219. package/dist/runtime/vendor/cel-js/lib/optional.js +73 -21
  220. package/dist/runtime/vendor/cel-js/lib/parser.js +2 -6
  221. package/dist/runtime/vendor/cel-js/lib/registry.js +2 -2
  222. package/package.json +1 -1
@@ -0,0 +1,633 @@
1
+ <script setup>
2
+ import { Icon } from "@iconify/vue";
3
+ import { computed, ref } from "vue";
4
+ import { useI18n } from "vue-i18n";
5
+ import { getLocalizedText } from "../../share/locale";
6
+ import {
7
+ useTreeDnd
8
+ } from "../../composables/useTreeDnd";
9
+ import ResponsiveModal from "../modal.vue";
10
+ import {
11
+ AlertDialog,
12
+ AlertDialogAction,
13
+ AlertDialogCancel,
14
+ AlertDialogContent,
15
+ AlertDialogDescription,
16
+ AlertDialogFooter,
17
+ AlertDialogHeader,
18
+ AlertDialogTitle
19
+ } from "../ui/alert-dialog";
20
+ import { Button } from "../ui/button";
21
+ import { Separator } from "../ui/separator";
22
+ import { findColumn as findColumnEntry } from "./utils/resolve";
23
+ import { type as SELECT_COLUMN_TYPE } from "./columns/2026-04-14/com.shwfed.table.column.select/schema";
24
+ import { type as DRAG_HANDLE_COLUMN_TYPE } from "./columns/2026-05-21/com.shwfed.table.column.drag-handle/schema";
25
+ import {
26
+ applyRowDrop,
27
+ applyZoneDrop,
28
+ bandOf as bandOfBands,
29
+ bandOfGroup as bandOfGroupBands,
30
+ groupVisibleMembers as groupVisibleMembersBands,
31
+ weaveLockedColumns,
32
+ weldGroups
33
+ } from "./utils/customization";
34
+ defineOptions({ name: "ShwfedTableCustomization" });
35
+ const props = defineProps({
36
+ config: { type: Object, required: true },
37
+ tableApi: { type: Object, required: true }
38
+ });
39
+ const emit = defineEmits(["confirm", "reset"]);
40
+ const { t, locale } = useI18n({
41
+ inheritLocale: true,
42
+ messages: {
43
+ zh: {
44
+ "trigger": "\u81EA\u5B9A\u4E49\u8868\u683C",
45
+ "title": "\u8868\u683C\u8BBE\u7F6E",
46
+ "visible-pane": "\u663E\u793A\u5217",
47
+ "hidden-pane": "\u9690\u85CF\u5217",
48
+ "pinned-left": "\u56FA\u5B9A\u5728\u5DE6\u4FA7",
49
+ "pinned-right": "\u56FA\u5B9A\u5728\u53F3\u4FA7",
50
+ "pin-left-zone": "\u56FA\u5B9A\u5230\u5DE6\u4FA7",
51
+ "pin-right-zone": "\u56FA\u5B9A\u5230\u53F3\u4FA7",
52
+ "hide-hint": "\u62D6\u62FD\u5230\u6B64\u5904\u9690\u85CF",
53
+ "group-fallback": "\u5217\u5206\u7EC4",
54
+ "reset": "\u6062\u590D\u9ED8\u8BA4",
55
+ "reset-confirm-title": "\u6062\u590D\u9ED8\u8BA4\u8BBE\u7F6E\uFF1F",
56
+ "reset-confirm-body": "\u5C06\u653E\u5F03\u4F60\u5BF9\u672C\u8868\u683C\u7684\u6240\u6709\u81EA\u5B9A\u4E49\uFF08\u5217\u7684\u663E\u793A\u3001\u987A\u5E8F\u4E0E\u56FA\u5B9A\uFF09\uFF0C\u6062\u590D\u4E3A\u9ED8\u8BA4\u8BBE\u7F6E\u3002",
57
+ "cancel": "\u53D6\u6D88",
58
+ "confirm": "\u786E\u8BA4"
59
+ },
60
+ en: {
61
+ "trigger": "Customize table",
62
+ "title": "Table settings",
63
+ "visible-pane": "Visible columns",
64
+ "hidden-pane": "Hidden columns",
65
+ "pinned-left": "Pinned left",
66
+ "pinned-right": "Pinned right",
67
+ "pin-left-zone": "Pin to left",
68
+ "pin-right-zone": "Pin to right",
69
+ "hide-hint": "Drag here to hide",
70
+ "group-fallback": "Group",
71
+ "reset": "Reset to default",
72
+ "reset-confirm-title": "Reset to default?",
73
+ "reset-confirm-body": "This discards all your customizations to this table (column visibility, order, and pinning) and restores the default settings.",
74
+ "cancel": "Cancel",
75
+ "confirm": "Confirm"
76
+ },
77
+ ja: {
78
+ "trigger": "\u30C6\u30FC\u30D6\u30EB\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA",
79
+ "title": "\u30C6\u30FC\u30D6\u30EB\u8A2D\u5B9A",
80
+ "visible-pane": "\u8868\u793A\u4E2D\u306E\u5217",
81
+ "hidden-pane": "\u975E\u8868\u793A\u306E\u5217",
82
+ "pinned-left": "\u5DE6\u306B\u56FA\u5B9A\u4E2D",
83
+ "pinned-right": "\u53F3\u306B\u56FA\u5B9A\u4E2D",
84
+ "pin-left-zone": "\u5DE6\u306B\u56FA\u5B9A",
85
+ "pin-right-zone": "\u53F3\u306B\u56FA\u5B9A",
86
+ "hide-hint": "\u3053\u3053\u306B\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u975E\u8868\u793A",
87
+ "group-fallback": "\u30B0\u30EB\u30FC\u30D7",
88
+ "reset": "\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u623B\u3059",
89
+ "reset-confirm-title": "\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u623B\u3057\u307E\u3059\u304B\uFF1F",
90
+ "reset-confirm-body": "\u3053\u306E\u30C6\u30FC\u30D6\u30EB\u306E\u3059\u3079\u3066\u306E\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\uFF08\u5217\u306E\u8868\u793A\u30FB\u9806\u5E8F\u30FB\u56FA\u5B9A\uFF09\u3092\u7834\u68C4\u3057\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\u8A2D\u5B9A\u306B\u623B\u3057\u307E\u3059\u3002",
91
+ "cancel": "\u30AD\u30E3\u30F3\u30BB\u30EB",
92
+ "confirm": "\u78BA\u8A8D"
93
+ }
94
+ }
95
+ });
96
+ const LOCKED_TYPES = /* @__PURE__ */ new Set([SELECT_COLUMN_TYPE, DRAG_HANDLE_COLUMN_TYPE]);
97
+ const columnById = computed(() => new Map(props.config.columns.map((c) => [c.id, c])));
98
+ const lockedIds = computed(() => new Set(
99
+ props.config.columns.filter((c) => LOCKED_TYPES.has(c.type)).map((c) => c.id)
100
+ ));
101
+ function columnTypeLabel(id) {
102
+ const column = columnById.value.get(id);
103
+ if (!column) return "";
104
+ return findColumnEntry(column.type, column.compatibilityDate)?.metadata.name ?? column.type;
105
+ }
106
+ function columnLabel(id) {
107
+ const column = columnById.value.get(id);
108
+ const title = column ? getLocalizedText(column.title, locale.value) : void 0;
109
+ return title && title.length > 0 ? title : columnTypeLabel(id);
110
+ }
111
+ const groupById = computed(() => new Map(props.config.groups.map((g) => [g.id, g])));
112
+ function memberGroupId(id) {
113
+ const gid = columnById.value.get(id)?.groupId;
114
+ return gid && groupById.value.has(gid) ? gid : void 0;
115
+ }
116
+ function groupLabel(groupId) {
117
+ const title = getLocalizedText(
118
+ groupById.value.get(groupId)?.title,
119
+ locale.value
120
+ );
121
+ return title && title.length > 0 ? title : t("group-fallback");
122
+ }
123
+ function currentLeafOrder() {
124
+ const liveIds = props.config.columns.map((c) => c.id);
125
+ const liveSet = new Set(liveIds);
126
+ const ordered = props.tableApi.getState().columnOrder.filter((id) => liveSet.has(id));
127
+ const mentioned = new Set(ordered);
128
+ return [...ordered, ...liveIds.filter((id) => !mentioned.has(id))];
129
+ }
130
+ const open = ref(false);
131
+ const confirmResetOpen = ref(false);
132
+ const draft = ref({ left: [], main: [], right: [], hidden: [] });
133
+ function buildDraft() {
134
+ const state = props.tableApi.getState();
135
+ const customizable = currentLeafOrder().filter((id) => columnById.value.has(id) && !lockedIds.value.has(id));
136
+ const pinnedLeft = new Set(state.columnPinning.left ?? []);
137
+ const pinnedRight = new Set(state.columnPinning.right ?? []);
138
+ const next = { left: [], main: [], right: [], hidden: [] };
139
+ for (const id of customizable) {
140
+ if (state.columnVisibility[id] === false) next.hidden.push(id);
141
+ else if (pinnedLeft.has(id)) next.left.push(id);
142
+ else if (pinnedRight.has(id)) next.right.push(id);
143
+ else next.main.push(id);
144
+ }
145
+ draft.value = weldGroups(next, groupOf);
146
+ }
147
+ function onOpenChange(next) {
148
+ if (next) buildDraft();
149
+ open.value = next;
150
+ }
151
+ const groupOf = memberGroupId;
152
+ const bandOf = (id) => bandOfBands(draft.value, id);
153
+ const bandOfGroup = (groupId) => bandOfGroupBands(draft.value, groupOf, groupId);
154
+ const groupVisibleMembers = (groupId) => groupVisibleMembersBands(draft.value, groupOf, groupId);
155
+ const COLUMN_KIND = "table-customization-column";
156
+ const GROUP_KIND = "table-customization-group";
157
+ const ZONE_PIN_LEFT = "pin-left-zone";
158
+ const ZONE_PIN_RIGHT = "pin-right-zone";
159
+ const ZONE_MAIN = "main-zone";
160
+ const ZONE_HIDDEN = "hidden-zone";
161
+ function onRowDrop(e) {
162
+ const { source, target, instruction } = e;
163
+ if (instruction !== "reorder-above" && instruction !== "reorder-below") return;
164
+ draft.value = weldGroups(applyRowDrop(draft.value, groupOf, {
165
+ sourceKind: source.kind === GROUP_KIND ? "group" : "column",
166
+ sourceId: source.id,
167
+ sourceGroupId: typeof source.data.groupId === "string" ? source.data.groupId : void 0,
168
+ targetKind: target.kind === GROUP_KIND ? "group" : "column",
169
+ targetId: target.id,
170
+ before: instruction === "reorder-above"
171
+ }), groupOf);
172
+ }
173
+ function onZoneDrop(e) {
174
+ const band = e.zoneId === ZONE_PIN_LEFT ? "left" : e.zoneId === ZONE_PIN_RIGHT ? "right" : e.zoneId === ZONE_MAIN ? "main" : e.zoneId === ZONE_HIDDEN ? "hidden" : void 0;
175
+ if (!band) return;
176
+ draft.value = weldGroups(applyZoneDrop(draft.value, groupOf, {
177
+ sourceKind: e.source.kind === GROUP_KIND ? "group" : "column",
178
+ sourceId: e.source.id,
179
+ band
180
+ }), groupOf);
181
+ }
182
+ const dnd = useTreeDnd({ onRowDrop, onZoneDrop });
183
+ const pickDragHandle = (el) => el.querySelector(".drag-handle");
184
+ const STRUCTURAL_BLOCK = ["make-child", "reparent"];
185
+ function groupRowConfig(groupId) {
186
+ return {
187
+ kind: GROUP_KIND,
188
+ data: { band: bandOfGroup(groupId) },
189
+ canDrop: (src) => {
190
+ if (src.kind === GROUP_KIND) return src.id !== groupId;
191
+ return src.kind === COLUMN_KIND && !src.data.groupId;
192
+ },
193
+ blockInstructions: (src) => {
194
+ const block = [...STRUCTURAL_BLOCK];
195
+ if (src.kind === GROUP_KIND && src.id === groupId) {
196
+ block.push("reorder-above", "reorder-below");
197
+ }
198
+ return block;
199
+ },
200
+ dragHandle: pickDragHandle
201
+ };
202
+ }
203
+ function memberRowConfig(columnId, groupId) {
204
+ return {
205
+ kind: COLUMN_KIND,
206
+ data: { groupId, band: bandOf(columnId) },
207
+ // Members only accept SIBLINGS of the same group — this is what confines a
208
+ // member's drag to intra-group reorder (and un-hide back into the run).
209
+ canDrop: (src) => src.kind === COLUMN_KIND && src.data.groupId === groupId && src.id !== columnId,
210
+ blockInstructions: (src) => {
211
+ const block = [...STRUCTURAL_BLOCK];
212
+ if (src.id === columnId) block.push("reorder-above", "reorder-below");
213
+ return block;
214
+ },
215
+ dragHandle: pickDragHandle
216
+ };
217
+ }
218
+ function standaloneRowConfig(columnId) {
219
+ return {
220
+ kind: COLUMN_KIND,
221
+ data: { groupId: void 0, band: bandOf(columnId) },
222
+ canDrop: (src) => {
223
+ if (src.kind === GROUP_KIND) return true;
224
+ return src.kind === COLUMN_KIND && !src.data.groupId && src.id !== columnId;
225
+ },
226
+ blockInstructions: (src) => {
227
+ const block = [...STRUCTURAL_BLOCK];
228
+ if (src.id === columnId) block.push("reorder-above", "reorder-below");
229
+ return block;
230
+ },
231
+ dragHandle: pickDragHandle
232
+ };
233
+ }
234
+ function hiddenRowConfig(columnId) {
235
+ return {
236
+ kind: COLUMN_KIND,
237
+ data: { groupId: memberGroupId(columnId), band: "hidden" },
238
+ canDrop: () => false,
239
+ dragHandle: pickDragHandle
240
+ };
241
+ }
242
+ function hiddenGroupRowConfig() {
243
+ return {
244
+ kind: GROUP_KIND,
245
+ data: { band: "hidden" },
246
+ canDrop: () => false,
247
+ dragHandle: pickDragHandle
248
+ };
249
+ }
250
+ function pinZoneConfig(side) {
251
+ return {
252
+ canDrop: (src) => {
253
+ if (src.kind === GROUP_KIND) return bandOfGroup(src.id) !== side;
254
+ const gid = typeof src.data.groupId === "string" ? src.data.groupId : void 0;
255
+ if (gid) return bandOf(src.id) === "hidden" && bandOfGroup(gid) === void 0;
256
+ return bandOf(src.id) !== side;
257
+ }
258
+ };
259
+ }
260
+ function mainZoneConfig() {
261
+ return {
262
+ canDrop: (src) => {
263
+ if (src.kind === GROUP_KIND) return bandOfGroup(src.id) !== "main";
264
+ const gid = typeof src.data.groupId === "string" ? src.data.groupId : void 0;
265
+ if (gid) return bandOf(src.id) === "hidden" && bandOfGroup(gid) === void 0;
266
+ return true;
267
+ }
268
+ };
269
+ }
270
+ function hiddenZoneConfig() {
271
+ return {
272
+ canDrop: (src) => src.kind === GROUP_KIND ? groupVisibleMembers(src.id).length > 0 : bandOf(src.id) !== "hidden"
273
+ };
274
+ }
275
+ function bandEntries(band) {
276
+ const out = [];
277
+ let lastGid;
278
+ for (const id of draft.value[band]) {
279
+ const gid = memberGroupId(id);
280
+ if (gid) {
281
+ if (gid !== lastGid) out.push({ kind: "group", key: `g-${band}-${gid}`, groupId: gid });
282
+ out.push({ kind: "member", key: `c-${id}`, columnId: id, groupId: gid });
283
+ } else {
284
+ out.push({ kind: "column", key: `c-${id}`, columnId: id });
285
+ }
286
+ lastGid = gid;
287
+ }
288
+ return out;
289
+ }
290
+ const visibleEntries = computed(() => {
291
+ const left = bandEntries("left");
292
+ const main = bandEntries("main");
293
+ const right = bandEntries("right");
294
+ const out = [];
295
+ if (left.length > 0) {
296
+ out.push({ kind: "caption", key: "cap-left", text: t("pinned-left") });
297
+ out.push(...left);
298
+ }
299
+ if (left.length > 0 && (main.length > 0 || right.length > 0)) {
300
+ out.push({ kind: "separator", key: "sep-left" });
301
+ }
302
+ out.push(...main);
303
+ if (right.length > 0) {
304
+ if (left.length > 0 || main.length > 0) {
305
+ out.push({ kind: "separator", key: "sep-right" });
306
+ }
307
+ out.push({ kind: "caption", key: "cap-right", text: t("pinned-right") });
308
+ out.push(...right);
309
+ }
310
+ return out;
311
+ });
312
+ const hiddenEntries = computed(() => {
313
+ const out = [];
314
+ let lastGid;
315
+ for (const id of draft.value.hidden) {
316
+ const gid = memberGroupId(id);
317
+ if (gid && bandOfGroup(gid) === void 0) {
318
+ if (gid !== lastGid) out.push({ kind: "group", key: `hg-${gid}`, groupId: gid });
319
+ out.push({ kind: "member", key: `c-${id}`, columnId: id, groupId: gid });
320
+ lastGid = gid;
321
+ } else {
322
+ out.push({ kind: "column", key: `c-${id}`, columnId: id });
323
+ lastGid = void 0;
324
+ }
325
+ }
326
+ return out;
327
+ });
328
+ function onConfirm(close) {
329
+ const state = props.tableApi.getState();
330
+ const columnVisibility = {};
331
+ for (const band of ["left", "main", "right"]) {
332
+ for (const id of draft.value[band]) columnVisibility[id] = true;
333
+ }
334
+ for (const id of draft.value.hidden) columnVisibility[id] = false;
335
+ const columnOrder = weaveLockedColumns(
336
+ currentLeafOrder(),
337
+ lockedIds.value,
338
+ [...draft.value.left, ...draft.value.main, ...draft.value.right, ...draft.value.hidden]
339
+ );
340
+ const left = state.columnPinning.left?.filter((id) => lockedIds.value.has(id)) ?? [];
341
+ const right = state.columnPinning.right?.filter((id) => lockedIds.value.has(id)) ?? [];
342
+ left.push(...draft.value.left);
343
+ right.push(...draft.value.right);
344
+ emit("confirm", { columnVisibility, columnOrder, columnPinning: { left, right } });
345
+ close();
346
+ }
347
+ function onResetConfirmed(close) {
348
+ confirmResetOpen.value = false;
349
+ emit("reset");
350
+ close();
351
+ }
352
+ </script>
353
+
354
+ <template>
355
+ <ResponsiveModal
356
+ :open="open"
357
+ content-width="40rem"
358
+ @update:open="onOpenChange"
359
+ >
360
+ <template #trigger>
361
+ <button
362
+ type="button"
363
+ :aria-label="t('trigger')"
364
+ :title="t('trigger')"
365
+ :class="[
366
+ 'absolute right-0.5 top-1 z-20 flex size-6 items-center justify-center rounded',
367
+ 'text-zinc-600 opacity-30 hover:opacity-60 transition-opacity duration-180 cursor-pointer'
368
+ ]"
369
+ >
370
+ <Icon
371
+ icon="fluent:table-settings-20-regular"
372
+ class="size-4"
373
+ />
374
+ </button>
375
+ </template>
376
+
377
+ <template #title>
378
+ {{ t("title") }}
379
+ </template>
380
+
381
+ <div class="grid grid-cols-2 gap-4 text-sm">
382
+ <!-- Visible columns, banded by pin side -->
383
+ <section
384
+ class="flex min-h-48 flex-col gap-0.5"
385
+ data-slot="table-customization-visible"
386
+ >
387
+ <h4 class="pb-1 text-xs font-medium text-zinc-500">
388
+ {{ t("visible-pane") }}
389
+ </h4>
390
+
391
+ <div
392
+ v-if="draft.left.length === 0"
393
+ :ref="dnd.zoneRef(ZONE_PIN_LEFT, pinZoneConfig('left'))"
394
+ class="pin-zone"
395
+ :data-active="dnd.isZoneActive(ZONE_PIN_LEFT) ? 'true' : void 0"
396
+ >
397
+ <Icon
398
+ icon="fluent:pin-20-regular"
399
+ class="size-3.5"
400
+ />
401
+ <span>{{ t("pin-left-zone") }}</span>
402
+ </div>
403
+
404
+ <template
405
+ v-for="entry in visibleEntries"
406
+ :key="entry.key"
407
+ >
408
+ <p
409
+ v-if="entry.kind === 'caption'"
410
+ class="band-caption"
411
+ >
412
+ {{ entry.text }}
413
+ </p>
414
+
415
+ <Separator
416
+ v-else-if="entry.kind === 'separator'"
417
+ class="my-1"
418
+ />
419
+
420
+ <!-- Group header: the drag handle moves / pins the whole block. -->
421
+ <div
422
+ v-else-if="entry.kind === 'group'"
423
+ :ref="dnd.rowRef(entry.groupId, groupRowConfig(entry.groupId))"
424
+ class="row group-row"
425
+ data-slot="table-customization-group"
426
+ :data-instruction="dnd.instructionFor(entry.groupId) ?? void 0"
427
+ >
428
+ <Icon
429
+ icon="fluent:re-order-dots-vertical-20-filled"
430
+ class="drag-handle size-4 shrink-0 cursor-grab text-zinc-300"
431
+ />
432
+ <Icon
433
+ icon="fluent:folder-20-regular"
434
+ class="size-4 shrink-0 text-zinc-400"
435
+ />
436
+ <span class="flex-1 truncate">{{ groupLabel(entry.groupId) }}</span>
437
+ </div>
438
+
439
+ <!-- Grouped member: reorders among siblings or drags to hidden. -->
440
+ <div
441
+ v-else-if="entry.kind === 'member'"
442
+ :ref="dnd.rowRef(entry.columnId, memberRowConfig(entry.columnId, entry.groupId))"
443
+ class="row member-row"
444
+ data-slot="table-customization-column"
445
+ :data-instruction="dnd.instructionFor(entry.columnId) ?? void 0"
446
+ >
447
+ <Icon
448
+ icon="fluent:re-order-dots-vertical-20-filled"
449
+ class="drag-handle size-4 shrink-0 cursor-grab text-zinc-300"
450
+ />
451
+ <span class="flex-1 truncate">{{ columnLabel(entry.columnId) }}</span>
452
+ </div>
453
+
454
+ <!-- Ungrouped column. -->
455
+ <div
456
+ v-else
457
+ :ref="dnd.rowRef(entry.columnId, standaloneRowConfig(entry.columnId))"
458
+ class="row"
459
+ data-slot="table-customization-column"
460
+ :data-instruction="dnd.instructionFor(entry.columnId) ?? void 0"
461
+ >
462
+ <Icon
463
+ icon="fluent:re-order-dots-vertical-20-filled"
464
+ class="drag-handle size-4 shrink-0 cursor-grab text-zinc-300"
465
+ />
466
+ <span class="flex-1 truncate">{{ columnLabel(entry.columnId) }}</span>
467
+ </div>
468
+ </template>
469
+
470
+ <div
471
+ v-if="draft.right.length === 0"
472
+ :ref="dnd.zoneRef(ZONE_PIN_RIGHT, pinZoneConfig('right'))"
473
+ class="pin-zone"
474
+ :data-active="dnd.isZoneActive(ZONE_PIN_RIGHT) ? 'true' : void 0"
475
+ >
476
+ <Icon
477
+ icon="fluent:pin-20-regular"
478
+ class="size-3.5"
479
+ />
480
+ <span>{{ t("pin-right-zone") }}</span>
481
+ </div>
482
+
483
+ <!-- Empty-space catcher: dropping here appends to the main band. -->
484
+ <div
485
+ :ref="dnd.zoneRef(ZONE_MAIN, mainZoneConfig())"
486
+ class="filler-zone"
487
+ :data-active="dnd.isZoneActive(ZONE_MAIN) ? 'true' : void 0"
488
+ />
489
+ </section>
490
+
491
+ <!-- Hidden columns — separated from the visible pane by a hairline rule
492
+ rather than a boxed border, so the two lists read as one surface. -->
493
+ <section
494
+ class="flex min-h-48 flex-col gap-0.5 border-l border-zinc-100 pl-4"
495
+ data-slot="table-customization-hidden"
496
+ >
497
+ <h4 class="pb-1 text-xs font-medium text-zinc-500">
498
+ {{ t("hidden-pane") }}
499
+ </h4>
500
+
501
+ <template
502
+ v-for="entry in hiddenEntries"
503
+ :key="entry.key"
504
+ >
505
+ <!-- Fully-hidden group: its folder header drags the whole group
506
+ back to a visible band. -->
507
+ <div
508
+ v-if="entry.kind === 'group'"
509
+ :ref="dnd.rowRef(entry.groupId, hiddenGroupRowConfig())"
510
+ class="row group-row text-zinc-400"
511
+ data-slot="table-customization-group"
512
+ >
513
+ <Icon
514
+ icon="fluent:re-order-dots-vertical-20-filled"
515
+ class="drag-handle size-4 shrink-0 cursor-grab text-zinc-300"
516
+ />
517
+ <Icon
518
+ icon="fluent:folder-20-regular"
519
+ class="size-4 shrink-0 text-zinc-400"
520
+ />
521
+ <span class="flex-1 truncate">{{ groupLabel(entry.groupId) }}</span>
522
+ </div>
523
+
524
+ <!-- Member of a fully-hidden group: still individually revivable. -->
525
+ <div
526
+ v-else-if="entry.kind === 'member'"
527
+ :ref="dnd.rowRef(entry.columnId, hiddenRowConfig(entry.columnId))"
528
+ class="row member-row text-zinc-400"
529
+ data-slot="table-customization-column"
530
+ >
531
+ <Icon
532
+ icon="fluent:re-order-dots-vertical-20-filled"
533
+ class="drag-handle size-4 shrink-0 cursor-grab text-zinc-300"
534
+ />
535
+ <span class="flex-1 truncate">{{ columnLabel(entry.columnId) }}</span>
536
+ </div>
537
+
538
+ <!-- Standalone hidden column (or a member whose group is still
539
+ partly visible). -->
540
+ <div
541
+ v-else-if="entry.kind === 'column'"
542
+ :ref="dnd.rowRef(entry.columnId, hiddenRowConfig(entry.columnId))"
543
+ class="row text-zinc-400"
544
+ data-slot="table-customization-column"
545
+ >
546
+ <Icon
547
+ icon="fluent:re-order-dots-vertical-20-filled"
548
+ class="drag-handle size-4 shrink-0 cursor-grab text-zinc-300"
549
+ />
550
+ <span class="flex-1 truncate">{{ columnLabel(entry.columnId) }}</span>
551
+ </div>
552
+ </template>
553
+
554
+ <!-- Empty-space catcher: dropping here hides the column (or, for a
555
+ group header, its whole member run). -->
556
+ <div
557
+ :ref="dnd.zoneRef(ZONE_HIDDEN, hiddenZoneConfig())"
558
+ class="filler-zone flex items-center justify-center text-xs text-zinc-300"
559
+ :data-active="dnd.isZoneActive(ZONE_HIDDEN) ? 'true' : void 0"
560
+ >
561
+ <span v-if="draft.hidden.length === 0">{{ t("hide-hint") }}</span>
562
+ </div>
563
+ </section>
564
+ </div>
565
+
566
+ <template #footer="{ close }">
567
+ <div class="flex w-full items-center gap-2">
568
+ <Button
569
+ variant="ghost"
570
+ size="sm"
571
+ class="mr-auto text-zinc-500"
572
+ data-slot="table-customization-reset"
573
+ @click="confirmResetOpen = true"
574
+ >
575
+ <Icon icon="fluent:arrow-reset-20-regular" />
576
+ {{ t("reset") }}
577
+ </Button>
578
+ <Button
579
+ size="sm"
580
+ @click="close()"
581
+ >
582
+ <Icon icon="fluent:dismiss-20-regular" />
583
+ {{ t("cancel") }}
584
+ </Button>
585
+ <Button
586
+ variant="primary"
587
+ size="sm"
588
+ data-slot="table-customization-confirm"
589
+ @click="onConfirm(close)"
590
+ >
591
+ <Icon icon="fluent:checkmark-20-regular" />
592
+ {{ t("confirm") }}
593
+ </Button>
594
+
595
+ <!-- 恢复默认 is a wipe of the user's arrangement, so confirm first. On
596
+ confirm we reset AND close the whole modal (see `onResetConfirmed`). -->
597
+ <AlertDialog
598
+ :open="confirmResetOpen"
599
+ @update:open="(o) => {
600
+ confirmResetOpen = o;
601
+ }"
602
+ >
603
+ <AlertDialogContent>
604
+ <AlertDialogHeader>
605
+ <AlertDialogTitle>{{ t("reset-confirm-title") }}</AlertDialogTitle>
606
+ <AlertDialogDescription>{{ t("reset-confirm-body") }}</AlertDialogDescription>
607
+ </AlertDialogHeader>
608
+ <AlertDialogFooter>
609
+ <AlertDialogCancel
610
+ data-slot="table-customization-reset-cancel"
611
+ @click="confirmResetOpen = false"
612
+ >
613
+ <Icon icon="fluent:dismiss-20-regular" />
614
+ {{ t("cancel") }}
615
+ </AlertDialogCancel>
616
+ <AlertDialogAction
617
+ data-slot="table-customization-reset-confirm"
618
+ @click="onResetConfirmed(close)"
619
+ >
620
+ <Icon icon="fluent:arrow-reset-20-regular" />
621
+ {{ t("reset") }}
622
+ </AlertDialogAction>
623
+ </AlertDialogFooter>
624
+ </AlertDialogContent>
625
+ </AlertDialog>
626
+ </div>
627
+ </template>
628
+ </ResponsiveModal>
629
+ </template>
630
+
631
+ <style scoped>
632
+ .row{align-items:center;border-radius:.25rem;display:flex;font-size:.875rem;gap:.375rem;padding-block:.375rem;padding-inline:.5rem;position:relative;transition:background-color .1s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.row:hover{background:#fafafa}.group-row{color:#52525b;font-weight:500}.member-row{padding-left:1.75rem}[data-instruction=reorder-above]:before,[data-instruction=reorder-below]:after{background:var(--primary,#2563eb);content:"";height:2px;left:.5rem;pointer-events:none;position:absolute;right:.5rem;z-index:1}[data-instruction=reorder-above]:before{top:-1px}[data-instruction=reorder-below]:after{bottom:-1px}.band-caption{color:#a1a1aa;font-size:.625rem;font-weight:500;letter-spacing:.04em;padding:.125rem .5rem;text-transform:uppercase}.pin-zone{align-items:center;border-radius:.25rem;color:transparent;display:flex;font-size:.75rem;gap:.25rem;height:.5rem;justify-content:center;margin:.125rem 0;pointer-events:auto;transition:height .12s ease,color .12s ease,background-color .12s ease}.pin-zone>*{pointer-events:none}.pin-zone[data-active=true]{background-color:color-mix(in srgb,var(--primary,#2563eb) 8%,#fff);color:var(--primary,#2563eb);height:1.75rem}.filler-zone{border-radius:.25rem;flex:1 1 auto;min-height:2rem;transition:background-color .12s ease}.filler-zone>*{pointer-events:none}.filler-zone[data-active=true]{background-color:color-mix(in srgb,var(--primary,#2563eb) 8%,#fff)}
633
+ </style>
@@ -0,0 +1,15 @@
1
+ import type { Table } from '@tanstack/vue-table';
2
+ import type { TableConfigValue } from './schema.js';
3
+ type __VLS_Props = {
4
+ config: TableConfigValue;
5
+ tableApi: Table<unknown>;
6
+ };
7
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
8
+ reset: () => any;
9
+ confirm: (payload: Required<Pick<Partial<Omit<import("./utils/customization.js").TableCustomizationSnapshot, "v">>, "columnVisibility" | "columnOrder" | "columnPinning">>) => any;
10
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
11
+ onReset?: (() => any) | undefined;
12
+ onConfirm?: ((payload: Required<Pick<Partial<Omit<import("./utils/customization.js").TableCustomizationSnapshot, "v">>, "columnVisibility" | "columnOrder" | "columnPinning">>) => any) | undefined;
13
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
+ declare const _default: typeof __VLS_export;
15
+ export default _default;