nuxt-ui-tools 1.11.2 → 1.13.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.
Files changed (332) hide show
  1. package/README.md +11 -5
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +46 -0
  4. package/dist/runtime/dashboard/components/dashboard-stat.d.vue.ts +1 -1
  5. package/dist/runtime/dashboard/components/dashboard-stat.vue.d.ts +1 -1
  6. package/dist/runtime/file-preview/components/shell/file-preview-stage.d.vue.ts +2 -2
  7. package/dist/runtime/file-preview/components/shell/file-preview-stage.vue.d.ts +2 -2
  8. package/dist/runtime/form/fields/array-collapse/component.vue +2 -1
  9. package/dist/runtime/form/fields/array-list/component.vue +72 -63
  10. package/dist/runtime/form/fields/array-list/use-array-items.d.ts +1 -0
  11. package/dist/runtime/form/fields/array-list/use-array-items.js +4 -0
  12. package/dist/runtime/form/fields/array-table/component.vue +2 -1
  13. package/dist/runtime/form/types/api.d.ts +10 -2
  14. package/dist/runtime/i18n/locales/en.js +252 -130
  15. package/dist/runtime/i18n/locales/fr.js +252 -130
  16. package/dist/runtime/i18n/types.d.ts +242 -119
  17. package/dist/runtime/shared/types/query.d.ts +14 -4
  18. package/dist/runtime/shared/types/remote-options.d.ts +11 -0
  19. package/dist/runtime/shared/utils/define-remote-options.js +6 -0
  20. package/dist/runtime/shared/utils/file.d.ts +1 -1
  21. package/dist/runtime/spreadsheet/components/{steps/review/spreadsheet-review-overflow-alert.d.vue.ts → internal/spreadsheet-import-cell-editor.d.vue.ts} +8 -5
  22. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-cell-editor.vue +73 -0
  23. package/dist/runtime/spreadsheet/components/{steps/review/spreadsheet-review-overflow-alert.vue.d.ts → internal/spreadsheet-import-cell-editor.vue.d.ts} +8 -5
  24. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-column-row.d.vue.ts +17 -0
  25. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-column-row.vue +98 -0
  26. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-column-row.vue.d.ts +17 -0
  27. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-heading.d.vue.ts +17 -0
  28. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-heading.vue +20 -0
  29. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-heading.vue.d.ts +17 -0
  30. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-status-badge.d.vue.ts +10 -0
  31. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-status-badge.vue +34 -0
  32. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-status-badge.vue.d.ts +10 -0
  33. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-value-row.d.vue.ts +13 -0
  34. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-value-row.vue +113 -0
  35. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-value-row.vue.d.ts +13 -0
  36. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-column-mapping.d.vue.ts +35 -0
  37. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-column-mapping.vue +154 -0
  38. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-column-mapping.vue.d.ts +35 -0
  39. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-dropzone.d.vue.ts +23 -0
  40. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-dropzone.vue +83 -0
  41. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-dropzone.vue.d.ts +23 -0
  42. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-expected-columns.d.vue.ts +19 -0
  43. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-expected-columns.vue +45 -0
  44. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-expected-columns.vue.d.ts +19 -0
  45. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-object-preview-table.d.vue.ts → parts/spreadsheet-import-export-button.d.vue.ts} +3 -2
  46. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-export-button.vue +34 -0
  47. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-file-bar.vue.d.ts → parts/spreadsheet-import-export-button.vue.d.ts} +3 -4
  48. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-file-card.d.vue.ts +17 -0
  49. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-file-card.vue +49 -0
  50. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-file-card.vue.d.ts +17 -0
  51. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-progress.d.vue.ts +18 -0
  52. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-progress.vue +101 -0
  53. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-progress.vue.d.ts +18 -0
  54. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-row-inspector.d.vue.ts +22 -0
  55. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-row-inspector.vue +276 -0
  56. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-row-inspector.vue.d.ts +22 -0
  57. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-source-settings.d.vue.ts +11 -0
  58. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-source-settings.vue +164 -0
  59. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-source-settings.vue.d.ts +11 -0
  60. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-value-preview.d.vue.ts → parts/spreadsheet-import-stat.d.vue.ts} +7 -4
  61. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stat.vue +30 -0
  62. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-value-preview.vue.d.ts → parts/spreadsheet-import-stat.vue.d.ts} +7 -4
  63. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stats.d.vue.ts +26 -0
  64. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stats.vue +55 -0
  65. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stats.vue.d.ts +26 -0
  66. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-object-preview-table.vue.d.ts → parts/spreadsheet-import-submit-button.d.vue.ts} +3 -2
  67. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-submit-button.vue +27 -0
  68. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-submit-button.vue.d.ts +8 -0
  69. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-summary.d.vue.ts +16 -0
  70. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-summary.vue +51 -0
  71. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-summary.vue.d.ts +16 -0
  72. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-file-bar.d.vue.ts → parts/spreadsheet-import-table-toolbar.d.vue.ts} +2 -4
  73. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table-toolbar.vue +217 -0
  74. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-raw-preview-table.d.vue.ts → parts/spreadsheet-import-table-toolbar.vue.d.ts} +2 -2
  75. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table.d.vue.ts +33 -0
  76. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table.vue +302 -0
  77. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table.vue.d.ts +33 -0
  78. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-sidebar.d.vue.ts → parts/spreadsheet-import-template-button.d.vue.ts} +5 -4
  79. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-template-button.vue +31 -0
  80. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-sidebar.vue.d.ts → parts/spreadsheet-import-template-button.vue.d.ts} +5 -4
  81. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-value-mapping.d.vue.ts +27 -0
  82. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-value-mapping.vue +162 -0
  83. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-value-mapping.vue.d.ts +27 -0
  84. package/dist/runtime/spreadsheet/components/spreadsheet-import-root.d.vue.ts +24 -0
  85. package/dist/runtime/spreadsheet/components/spreadsheet-import-root.vue +23 -0
  86. package/dist/runtime/spreadsheet/components/spreadsheet-import-root.vue.d.ts +24 -0
  87. package/dist/runtime/spreadsheet/components/spreadsheet-import.d.vue.ts +21 -6
  88. package/dist/runtime/spreadsheet/components/spreadsheet-import.vue +46 -262
  89. package/dist/runtime/spreadsheet/components/spreadsheet-import.vue.d.ts +21 -6
  90. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-header.d.vue.ts → steps/spreadsheet-import-step-nav.d.vue.ts} +6 -2
  91. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step-nav.vue +116 -0
  92. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-header.vue.d.ts → steps/spreadsheet-import-step-nav.vue.d.ts} +6 -2
  93. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step.d.vue.ts +26 -0
  94. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step.vue +106 -0
  95. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step.vue.d.ts +26 -0
  96. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-stepper.d.vue.ts +15 -0
  97. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-stepper.vue +131 -0
  98. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-stepper.vue.d.ts +15 -0
  99. package/dist/runtime/spreadsheet/composables/index.d.ts +2 -0
  100. package/dist/runtime/spreadsheet/composables/index.js +2 -0
  101. package/dist/runtime/spreadsheet/composables/use-spreadsheet-answers.d.ts +8 -0
  102. package/dist/runtime/spreadsheet/composables/use-spreadsheet-answers.js +19 -0
  103. package/dist/runtime/spreadsheet/composables/use-spreadsheet-columns.d.ts +23 -0
  104. package/dist/runtime/spreadsheet/composables/use-spreadsheet-columns.js +75 -0
  105. package/dist/runtime/spreadsheet/composables/use-spreadsheet-context.d.ts +8 -45
  106. package/dist/runtime/spreadsheet/composables/use-spreadsheet-context.js +28 -32
  107. package/dist/runtime/spreadsheet/composables/use-spreadsheet-edits.d.ts +11 -0
  108. package/dist/runtime/spreadsheet/composables/use-spreadsheet-edits.js +25 -0
  109. package/dist/runtime/spreadsheet/composables/use-spreadsheet-fields.d.ts +16 -0
  110. package/dist/runtime/spreadsheet/composables/use-spreadsheet-fields.js +20 -0
  111. package/dist/runtime/spreadsheet/composables/use-spreadsheet-file.d.ts +14 -0
  112. package/dist/runtime/spreadsheet/composables/use-spreadsheet-file.js +44 -0
  113. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import-context.d.ts +12 -0
  114. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import-context.js +22 -0
  115. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import.d.ts +18 -7
  116. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import.js +340 -109
  117. package/dist/runtime/spreadsheet/composables/use-spreadsheet-layout.d.ts +36 -0
  118. package/dist/runtime/spreadsheet/composables/use-spreadsheet-layout.js +95 -0
  119. package/dist/runtime/spreadsheet/composables/use-spreadsheet-options.d.ts +24 -0
  120. package/dist/runtime/spreadsheet/composables/use-spreadsheet-options.js +159 -0
  121. package/dist/runtime/spreadsheet/composables/use-spreadsheet-queries.d.ts +14 -0
  122. package/dist/runtime/spreadsheet/composables/use-spreadsheet-queries.js +11 -0
  123. package/dist/runtime/spreadsheet/composables/use-spreadsheet-review.d.ts +37 -169
  124. package/dist/runtime/spreadsheet/composables/use-spreadsheet-review.js +148 -408
  125. package/dist/runtime/spreadsheet/composables/use-spreadsheet-rows.d.ts +48 -26
  126. package/dist/runtime/spreadsheet/composables/use-spreadsheet-rows.js +334 -21
  127. package/dist/runtime/spreadsheet/composables/use-spreadsheet-steps.d.ts +33 -0
  128. package/dist/runtime/spreadsheet/composables/use-spreadsheet-steps.js +126 -0
  129. package/dist/runtime/spreadsheet/composables/use-spreadsheet-submit.d.ts +37 -0
  130. package/dist/runtime/spreadsheet/composables/use-spreadsheet-submit.js +136 -0
  131. package/dist/runtime/spreadsheet/composables/use-spreadsheet-values.d.ts +27 -0
  132. package/dist/runtime/spreadsheet/composables/use-spreadsheet-values.js +121 -0
  133. package/dist/runtime/spreadsheet/index.d.ts +0 -1
  134. package/dist/runtime/spreadsheet/index.js +0 -1
  135. package/dist/runtime/spreadsheet/schema/builder.d.ts +8 -0
  136. package/dist/runtime/spreadsheet/schema/builder.js +31 -0
  137. package/dist/runtime/spreadsheet/schema/index.d.ts +24 -32
  138. package/dist/runtime/spreadsheet/schema/index.js +4 -21
  139. package/dist/runtime/spreadsheet/types/columns.d.ts +252 -273
  140. package/dist/runtime/spreadsheet/types/fields.d.ts +64 -0
  141. package/dist/runtime/spreadsheet/types/importer.d.ts +308 -0
  142. package/dist/runtime/spreadsheet/types/index.d.ts +6 -10
  143. package/dist/runtime/spreadsheet/types/options.d.ts +47 -9
  144. package/dist/runtime/spreadsheet/types/rows.d.ts +57 -48
  145. package/dist/runtime/spreadsheet/types/schema.d.ts +162 -76
  146. package/dist/runtime/spreadsheet/types/shared.d.ts +19 -21
  147. package/dist/runtime/spreadsheet/types/source.d.ts +39 -15
  148. package/dist/runtime/spreadsheet/types/steps.d.ts +76 -0
  149. package/dist/runtime/spreadsheet/types/validation.d.ts +49 -69
  150. package/dist/runtime/spreadsheet/types/values.d.ts +77 -0
  151. package/dist/runtime/spreadsheet/utils/download.d.ts +2 -0
  152. package/dist/runtime/spreadsheet/utils/download.js +8 -0
  153. package/dist/runtime/spreadsheet/utils/export.d.ts +26 -0
  154. package/dist/runtime/spreadsheet/utils/export.js +50 -0
  155. package/dist/runtime/spreadsheet/utils/fields.d.ts +26 -0
  156. package/dist/runtime/spreadsheet/utils/fields.js +169 -0
  157. package/dist/runtime/spreadsheet/utils/guards.d.ts +18 -0
  158. package/dist/runtime/spreadsheet/utils/guards.js +27 -0
  159. package/dist/runtime/spreadsheet/utils/headers.d.ts +15 -0
  160. package/dist/runtime/spreadsheet/utils/headers.js +36 -0
  161. package/dist/runtime/spreadsheet/utils/identity.d.ts +24 -0
  162. package/dist/runtime/spreadsheet/utils/identity.js +57 -0
  163. package/dist/runtime/spreadsheet/utils/index.d.ts +15 -6
  164. package/dist/runtime/spreadsheet/utils/index.js +15 -6
  165. package/dist/runtime/spreadsheet/utils/layout.d.ts +12 -0
  166. package/dist/runtime/spreadsheet/utils/layout.js +37 -0
  167. package/dist/runtime/spreadsheet/utils/options.d.ts +31 -10
  168. package/dist/runtime/spreadsheet/utils/options.js +58 -30
  169. package/dist/runtime/spreadsheet/utils/parse.d.ts +6 -0
  170. package/dist/runtime/spreadsheet/utils/parse.js +147 -0
  171. package/dist/runtime/spreadsheet/utils/paths.d.ts +4 -0
  172. package/dist/runtime/spreadsheet/utils/paths.js +29 -0
  173. package/dist/runtime/spreadsheet/utils/rows.d.ts +69 -0
  174. package/dist/runtime/spreadsheet/utils/rows.js +168 -0
  175. package/dist/runtime/spreadsheet/utils/rules.d.ts +4 -0
  176. package/dist/runtime/spreadsheet/utils/rules.js +95 -0
  177. package/dist/runtime/spreadsheet/utils/suggestions.d.ts +20 -0
  178. package/dist/runtime/spreadsheet/utils/suggestions.js +43 -0
  179. package/dist/runtime/spreadsheet/utils/text.d.ts +9 -0
  180. package/dist/runtime/spreadsheet/utils/text.js +11 -0
  181. package/dist/runtime/spreadsheet/utils/workbook.d.ts +13 -0
  182. package/dist/runtime/spreadsheet/utils/workbook.js +121 -0
  183. package/dist/runtime/table/components/filters/tags/boolean-filter-tag.d.vue.ts +2 -2
  184. package/dist/runtime/table/components/filters/tags/boolean-filter-tag.vue.d.ts +2 -2
  185. package/dist/runtime/table/components/filters/tags/date-filter-tag.d.vue.ts +2 -2
  186. package/dist/runtime/table/components/filters/tags/date-filter-tag.vue.d.ts +2 -2
  187. package/dist/runtime/table/components/filters/tags/number-filter-tag.d.vue.ts +2 -2
  188. package/dist/runtime/table/components/filters/tags/number-filter-tag.vue.d.ts +2 -2
  189. package/dist/runtime/table/components/filters/tags/option-filter-tag.d.vue.ts +2 -2
  190. package/dist/runtime/table/components/filters/tags/option-filter-tag.vue.d.ts +2 -2
  191. package/dist/runtime/table/components/filters/tags/text-filter-tag.d.vue.ts +2 -2
  192. package/dist/runtime/table/components/filters/tags/text-filter-tag.vue.d.ts +2 -2
  193. package/dist/runtime/table/components/table/table-cell-ellipsis.d.ts +1 -1
  194. package/dist/runtime/table/composables/use-table-actions.d.ts +1 -1
  195. package/dist/runtime/table/composables/use-table-actions.js +11 -3
  196. package/dist/runtime/table/composables/use-table-internals.d.ts +3 -3
  197. package/dist/runtime/table/types/actions.d.ts +8 -1
  198. package/dist/runtime/table/utils/data-list-ui.d.ts +1 -1
  199. package/package.json +18 -3
  200. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-file-bar.vue +0 -31
  201. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-footer.d.vue.ts +0 -24
  202. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-footer.vue +0 -69
  203. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-footer.vue.d.ts +0 -24
  204. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-header.vue +0 -36
  205. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-sidebar.vue +0 -63
  206. package/dist/runtime/spreadsheet/components/shared/spreadsheet-object-preview-table.vue +0 -67
  207. package/dist/runtime/spreadsheet/components/shared/spreadsheet-raw-preview-table.vue +0 -41
  208. package/dist/runtime/spreadsheet/components/shared/spreadsheet-raw-preview-table.vue.d.ts +0 -7
  209. package/dist/runtime/spreadsheet/components/shared/spreadsheet-summary-stats.d.vue.ts +0 -10
  210. package/dist/runtime/spreadsheet/components/shared/spreadsheet-summary-stats.vue +0 -25
  211. package/dist/runtime/spreadsheet/components/shared/spreadsheet-summary-stats.vue.d.ts +0 -10
  212. package/dist/runtime/spreadsheet/components/shared/spreadsheet-value-preview.vue +0 -201
  213. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-summary.d.vue.ts +0 -11
  214. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-summary.vue +0 -38
  215. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-summary.vue.d.ts +0 -11
  216. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-table.d.vue.ts +0 -45
  217. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-table.vue +0 -219
  218. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-table.vue.d.ts +0 -45
  219. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-accordion.d.vue.ts +0 -51
  220. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-accordion.vue +0 -166
  221. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-accordion.vue.d.ts +0 -51
  222. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-summary.d.vue.ts +0 -11
  223. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-summary.vue +0 -26
  224. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-summary.vue.d.ts +0 -11
  225. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-inspection.d.vue.ts +0 -41
  226. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-inspection.vue +0 -392
  227. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-inspection.vue.d.ts +0 -41
  228. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-overflow-alert.vue +0 -43
  229. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-stats.d.vue.ts +0 -15
  230. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-stats.vue +0 -40
  231. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-stats.vue.d.ts +0 -15
  232. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-matching-step.d.vue.ts +0 -7
  233. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-matching-step.vue +0 -137
  234. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-matching-step.vue.d.ts +0 -7
  235. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-references-step.d.vue.ts +0 -7
  236. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-references-step.vue +0 -222
  237. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-references-step.vue.d.ts +0 -7
  238. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-review-step.d.vue.ts +0 -7
  239. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-review-step.vue +0 -191
  240. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-review-step.vue.d.ts +0 -7
  241. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-structure-step.d.vue.ts +0 -7
  242. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-structure-step.vue +0 -62
  243. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-structure-step.vue.d.ts +0 -7
  244. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-upload-step.d.vue.ts +0 -8
  245. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-upload-step.vue +0 -81
  246. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-upload-step.vue.d.ts +0 -8
  247. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-preview-table.d.vue.ts +0 -15
  248. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-preview-table.vue +0 -95
  249. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-preview-table.vue.d.ts +0 -15
  250. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-sheet-list.d.vue.ts +0 -15
  251. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-sheet-list.vue +0 -56
  252. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-sheet-list.vue.d.ts +0 -15
  253. package/dist/runtime/spreadsheet/components/types.d.ts +0 -41
  254. package/dist/runtime/spreadsheet/composables/use-spreadsheet-column-matching.d.ts +0 -18
  255. package/dist/runtime/spreadsheet/composables/use-spreadsheet-column-matching.js +0 -62
  256. package/dist/runtime/spreadsheet/composables/use-spreadsheet-internals.d.ts +0 -629
  257. package/dist/runtime/spreadsheet/composables/use-spreadsheet-internals.js +0 -68
  258. package/dist/runtime/spreadsheet/composables/use-spreadsheet-references.d.ts +0 -1
  259. package/dist/runtime/spreadsheet/composables/use-spreadsheet-references.js +0 -3
  260. package/dist/runtime/spreadsheet/composables/use-spreadsheet-resolutions.d.ts +0 -40
  261. package/dist/runtime/spreadsheet/composables/use-spreadsheet-resolutions.js +0 -97
  262. package/dist/runtime/spreadsheet/composables/use-spreadsheet-row-state.d.ts +0 -24
  263. package/dist/runtime/spreadsheet/composables/use-spreadsheet-row-state.js +0 -74
  264. package/dist/runtime/spreadsheet/composables/use-spreadsheet-source.d.ts +0 -27
  265. package/dist/runtime/spreadsheet/composables/use-spreadsheet-source.js +0 -109
  266. package/dist/runtime/spreadsheet/composables/use-spreadsheet-view.d.ts +0 -15
  267. package/dist/runtime/spreadsheet/composables/use-spreadsheet-view.js +0 -109
  268. package/dist/runtime/spreadsheet/schema/normalize.d.ts +0 -73
  269. package/dist/runtime/spreadsheet/schema/normalize.js +0 -136
  270. package/dist/runtime/spreadsheet/types/context.d.ts +0 -9
  271. package/dist/runtime/spreadsheet/types/import.d.ts +0 -55
  272. package/dist/runtime/spreadsheet/types/inference.d.ts +0 -83
  273. package/dist/runtime/spreadsheet/types/normalized.d.ts +0 -50
  274. package/dist/runtime/spreadsheet/types/normalized.js +0 -0
  275. package/dist/runtime/spreadsheet/types/pipeline.d.ts +0 -7
  276. package/dist/runtime/spreadsheet/types/pipeline.js +0 -0
  277. package/dist/runtime/spreadsheet/types/reference-session.d.ts +0 -43
  278. package/dist/runtime/spreadsheet/types/reference-session.js +0 -0
  279. package/dist/runtime/spreadsheet/types/references.d.ts +0 -32
  280. package/dist/runtime/spreadsheet/types/references.js +0 -0
  281. package/dist/runtime/spreadsheet/types/resolution.d.ts +0 -43
  282. package/dist/runtime/spreadsheet/types/resolution.js +0 -0
  283. package/dist/runtime/spreadsheet/utils/builders/core.d.ts +0 -17
  284. package/dist/runtime/spreadsheet/utils/builders/core.js +0 -262
  285. package/dist/runtime/spreadsheet/utils/builders/index.d.ts +0 -1
  286. package/dist/runtime/spreadsheet/utils/builders/index.js +0 -1
  287. package/dist/runtime/spreadsheet/utils/context.d.ts +0 -20
  288. package/dist/runtime/spreadsheet/utils/context.js +0 -25
  289. package/dist/runtime/spreadsheet/utils/display.d.ts +0 -6
  290. package/dist/runtime/spreadsheet/utils/display.js +0 -26
  291. package/dist/runtime/spreadsheet/utils/object.d.ts +0 -9
  292. package/dist/runtime/spreadsheet/utils/object.js +0 -78
  293. package/dist/runtime/spreadsheet/utils/references/candidates.d.ts +0 -6
  294. package/dist/runtime/spreadsheet/utils/references/candidates.js +0 -28
  295. package/dist/runtime/spreadsheet/utils/references/core.d.ts +0 -3
  296. package/dist/runtime/spreadsheet/utils/references/core.js +0 -3
  297. package/dist/runtime/spreadsheet/utils/references/guards.d.ts +0 -4
  298. package/dist/runtime/spreadsheet/utils/references/guards.js +0 -28
  299. package/dist/runtime/spreadsheet/utils/references/index.d.ts +0 -1
  300. package/dist/runtime/spreadsheet/utils/references/index.js +0 -1
  301. package/dist/runtime/spreadsheet/utils/references/resolutions.d.ts +0 -17
  302. package/dist/runtime/spreadsheet/utils/references/resolutions.js +0 -172
  303. package/dist/runtime/spreadsheet/utils/references/shared.d.ts +0 -3
  304. package/dist/runtime/spreadsheet/utils/references/shared.js +0 -26
  305. package/dist/runtime/spreadsheet/utils/references/sources.d.ts +0 -9
  306. package/dist/runtime/spreadsheet/utils/references/sources.js +0 -38
  307. package/dist/runtime/spreadsheet/utils/rows/core.d.ts +0 -4
  308. package/dist/runtime/spreadsheet/utils/rows/core.js +0 -4
  309. package/dist/runtime/spreadsheet/utils/rows/headers.d.ts +0 -2
  310. package/dist/runtime/spreadsheet/utils/rows/headers.js +0 -9
  311. package/dist/runtime/spreadsheet/utils/rows/index.d.ts +0 -1
  312. package/dist/runtime/spreadsheet/utils/rows/index.js +0 -1
  313. package/dist/runtime/spreadsheet/utils/rows/matching.d.ts +0 -5
  314. package/dist/runtime/spreadsheet/utils/rows/matching.js +0 -209
  315. package/dist/runtime/spreadsheet/utils/rows/parsing.d.ts +0 -7
  316. package/dist/runtime/spreadsheet/utils/rows/parsing.js +0 -209
  317. package/dist/runtime/spreadsheet/utils/rows/shared.d.ts +0 -17
  318. package/dist/runtime/spreadsheet/utils/rows/shared.js +0 -309
  319. package/dist/runtime/spreadsheet/utils/rows/summary.d.ts +0 -2
  320. package/dist/runtime/spreadsheet/utils/rows/summary.js +0 -10
  321. package/dist/runtime/spreadsheet/utils/source/core.d.ts +0 -9
  322. package/dist/runtime/spreadsheet/utils/source/core.js +0 -65
  323. package/dist/runtime/spreadsheet/utils/source/index.d.ts +0 -1
  324. package/dist/runtime/spreadsheet/utils/source/index.js +0 -1
  325. package/dist/runtime/spreadsheet/utils/validation/core.d.ts +0 -16
  326. package/dist/runtime/spreadsheet/utils/validation/core.js +0 -211
  327. package/dist/runtime/spreadsheet/utils/validation/index.d.ts +0 -1
  328. package/dist/runtime/spreadsheet/utils/validation/index.js +0 -1
  329. /package/dist/runtime/spreadsheet/{components/types.js → types/fields.js} +0 -0
  330. /package/dist/runtime/spreadsheet/types/{context.js → importer.js} +0 -0
  331. /package/dist/runtime/spreadsheet/types/{import.js → steps.js} +0 -0
  332. /package/dist/runtime/spreadsheet/types/{inference.js → values.js} +0 -0
@@ -1,422 +1,162 @@
1
- import UBadge from "@nuxt/ui/components/Badge.vue";
2
- import UCheckbox from "@nuxt/ui/components/Checkbox.vue";
3
- import { computed, ref, h } from "vue";
4
- import { useUiToolsLocale } from "#ui-tools/i18n";
5
- import { isNullish } from "../../shared/utils/predicate.js";
6
- import SpreadsheetValuePreview from "../components/shared/spreadsheet-value-preview.vue";
7
- import { formatSpreadsheetCell, humanizeSpreadsheetKey } from "../utils/display.js";
8
- import {
9
- getSpreadsheetLeafPaths,
10
- getSpreadsheetObjectEntries,
11
- getSpreadsheetValueAtPath
12
- } from "../utils/object.js";
1
+ import { computed, shallowRef, watch } from "vue";
2
+ const LEVEL_RANK = { error: 3, info: 1, warning: 2 };
13
3
  export function useSpreadsheetReview(params) {
14
- const { t } = useUiToolsLocale();
15
- const activeTab = ref("all");
16
- const issueFilter = ref("all");
17
- const inspectedRowIndex = ref(null);
18
- const manuallyDiscardedRowIndexes = ref([]);
19
- const rowSelection = ref({});
20
- function isOverflowRow(index) {
21
- return index >= params.maxRecords.value;
22
- }
23
- function isManuallyDiscarded(index) {
24
- return manuallyDiscardedRowIndexes.value.includes(index);
25
- }
26
- function isDiscarded(index) {
27
- return isOverflowRow(index) || isManuallyDiscarded(index);
28
- }
29
- function hasBlockingIssue(issues) {
30
- return issues.some((issue) => issue.level === "error");
31
- }
32
- function hasWarningIssue(issues) {
33
- return issues.some((issue) => issue.level === "warning");
34
- }
35
- function clearSelection() {
36
- rowSelection.value = {};
37
- }
38
- function setActiveTab(value) {
39
- activeTab.value = value;
40
- clearSelection();
41
- if (value === "valid" || value === "discarded") {
42
- issueFilter.value = "all";
43
- }
44
- }
45
- function setIssueFilter(value) {
46
- issueFilter.value = value;
47
- clearSelection();
48
- }
49
- function selectAllVisible(checked) {
50
- if (checked !== true) {
51
- clearSelection();
52
- return;
53
- }
54
- rowSelection.value = Object.fromEntries(
55
- visibleRows.value.filter((row) => !isOverflowRow(row.index) || activeTab.value === "discarded").map((row) => [String(row.index), true])
56
- );
57
- }
58
- function discardSelectedRows() {
59
- const discardableIndexes = selectedRowIndexes.value.filter((index) => !isDiscarded(index));
60
- manuallyDiscardedRowIndexes.value = [
61
- .../* @__PURE__ */ new Set([...manuallyDiscardedRowIndexes.value, ...discardableIndexes])
62
- ];
63
- clearSelection();
64
- }
65
- function restoreSelectedRows() {
66
- manuallyDiscardedRowIndexes.value = manuallyDiscardedRowIndexes.value.filter(
67
- (index) => !selectedRowIndexes.value.includes(index)
68
- );
69
- clearSelection();
70
- }
71
- function discardRow(index) {
72
- if (isDiscarded(index)) {
73
- return;
74
- }
75
- manuallyDiscardedRowIndexes.value = [...manuallyDiscardedRowIndexes.value, index];
76
- }
77
- function restoreRow(index) {
78
- manuallyDiscardedRowIndexes.value = manuallyDiscardedRowIndexes.value.filter(
79
- (value) => value !== index
80
- );
81
- }
82
- function inspectRow(index) {
83
- inspectedRowIndex.value = index;
84
- }
85
- function closeInspection() {
86
- inspectedRowIndex.value = null;
87
- }
88
- const reviewRows = computed(
89
- () => params.resolvedRows.value.map((row) => ({
90
- ...row,
91
- rowObject: Object.fromEntries(getSpreadsheetObjectEntries(row.data))
92
- }))
93
- );
94
- const validRows = computed(
95
- () => reviewRows.value.filter((row) => row.isValid && !isDiscarded(row.index))
96
- );
97
- const invalidRows = computed(
98
- () => reviewRows.value.filter((row) => !row.isValid && !isDiscarded(row.index))
99
- );
100
- const discardedRows = computed(() => reviewRows.value.filter((row) => isDiscarded(row.index)));
101
- const issueRows = computed(
102
- () => reviewRows.value.filter((row) => row.issues.length > 0 && !isDiscarded(row.index))
103
- );
104
- const inspectedRow = computed(
105
- () => isNullish(inspectedRowIndex.value) ? null : reviewRows.value.find((row) => row.index === inspectedRowIndex.value) ?? null
106
- );
107
- const inspectedIssueRowPosition = computed(
108
- () => isNullish(inspectedRow.value) ? -1 : issueRows.value.findIndex((row) => row.index === inspectedRow.value?.index)
109
- );
110
- const blockingIssueCount = computed(
111
- () => invalidRows.value.reduce(
112
- (count, row) => count + row.issues.filter((issue) => issue.level === "error").length,
113
- 0
114
- )
115
- );
116
- const warningIssueCount = computed(
117
- () => invalidRows.value.reduce(
118
- (count, row) => count + row.issues.filter((issue) => issue.level === "warning").length,
119
- 0
120
- )
121
- );
122
- const stats = computed(() => [
123
- {
124
- accentClass: "bg-success",
125
- cardClass: "border-default/70",
126
- hint: t("spreadsheet.steps.review.validRows", { count: validRows.value.length }),
127
- key: "ready",
128
- label: t("spreadsheet.steps.review.ready"),
129
- value: validRows.value.length,
130
- valueClass: "text-success"
131
- },
132
- {
133
- accentClass: "bg-error",
134
- cardClass: "border-default/70",
135
- hint: invalidRows.value.length ? `${t("spreadsheet.steps.review.blocking", { count: blockingIssueCount.value })} \xB7 ${t("spreadsheet.steps.review.warnings", { count: warningIssueCount.value })}` : t("spreadsheet.steps.review.noBlockingIssues"),
136
- key: "invalid",
137
- label: t("spreadsheet.steps.review.invalid", { count: invalidRows.value.length }),
138
- value: invalidRows.value.length,
139
- valueClass: "text-error"
140
- },
141
- {
142
- accentClass: "bg-warning",
143
- cardClass: discardedRows.value.length ? "border-warning/40" : "border-default/70",
144
- hint: discardedRows.value.length ? t("spreadsheet.steps.review.willNotBeImported") : t("spreadsheet.steps.review.nothingDiscarded"),
145
- key: "discarded",
146
- label: t("spreadsheet.steps.review.discarded", { count: discardedRows.value.length }),
147
- value: discardedRows.value.length,
148
- valueClass: "text-warning"
149
- }
150
- ]);
151
- const hasOverflow = computed(() => reviewRows.value.length > params.maxRecords.value);
152
- const overflowCount = computed(
153
- () => hasOverflow.value ? reviewRows.value.length - params.maxRecords.value : 0
154
- );
155
- const tabItems = computed(() => [
156
- {
157
- key: "all",
158
- label: t("spreadsheet.steps.review.allRows", { count: reviewRows.value.length })
159
- },
160
- {
161
- key: "valid",
162
- label: t("spreadsheet.steps.review.valid", { count: validRows.value.length })
163
- },
164
- {
165
- key: "invalid",
166
- label: t("spreadsheet.steps.review.invalid", { count: invalidRows.value.length })
167
- },
168
- {
169
- key: "discarded",
170
- label: t("spreadsheet.steps.review.discarded", { count: discardedRows.value.length })
171
- }
172
- ]);
173
- const issueFilterItems = computed(() => [
174
- { key: "all", label: t("spreadsheet.steps.review.allIssues") },
175
- {
176
- key: "blocking",
177
- label: t("spreadsheet.steps.review.blocking", {
178
- count: invalidRows.value.filter((row) => hasBlockingIssue(row.issues)).length
179
- })
180
- },
181
- {
182
- key: "warning",
183
- label: t("spreadsheet.steps.review.warnings", {
184
- count: invalidRows.value.filter(
185
- (row) => !hasBlockingIssue(row.issues) && hasWarningIssue(row.issues)
186
- ).length
187
- })
188
- }
189
- ]);
190
- const visibleRows = computed(() => {
191
- const baseRows = activeTab.value === "valid" ? validRows.value : activeTab.value === "invalid" ? invalidRows.value : activeTab.value === "discarded" ? discardedRows.value : reviewRows.value;
192
- if (activeTab.value === "valid" || activeTab.value === "discarded") {
193
- return baseRows;
194
- }
195
- if (issueFilter.value === "blocking") {
196
- return baseRows.filter((row) => hasBlockingIssue(row.issues));
4
+ const tab = shallowRef("all");
5
+ const level = shallowRef("all");
6
+ const mode = shallowRef("all");
7
+ const issue = shallowRef("");
8
+ const search = shallowRef("");
9
+ const selection = shallowRef(/* @__PURE__ */ new Set());
10
+ const inspectedIndex = shallowRef(null);
11
+ watch([params.layout.sheet, () => params.layout.selection.value.headerRow], () => reset());
12
+ const all = computed(() => params.rows.rows.value);
13
+ const issueTypes = computed(() => {
14
+ const types = /* @__PURE__ */ new Map();
15
+ for (const row of all.value) {
16
+ if (row.discardReason) continue;
17
+ const seen = /* @__PURE__ */ new Set();
18
+ for (const entry of row.issues) {
19
+ if (!entry.field || entry.level === "info") continue;
20
+ const id = `${entry.field}|${entry.code}`;
21
+ if (seen.has(id)) continue;
22
+ seen.add(id);
23
+ const type = types.get(id);
24
+ if (type) type.rowCount += 1;
25
+ else
26
+ types.set(id, {
27
+ code: entry.code,
28
+ field: entry.field,
29
+ id,
30
+ level: entry.level,
31
+ message: entry.message,
32
+ rowCount: 1
33
+ });
34
+ }
197
35
  }
198
- if (issueFilter.value === "warning") {
199
- return baseRows.filter((row) => !hasBlockingIssue(row.issues) && hasWarningIssue(row.issues));
36
+ return [...types.values()].sort((left, right) => right.rowCount - left.rowCount);
37
+ });
38
+ const fieldIssues = computed(() => {
39
+ const counts = /* @__PURE__ */ new Map();
40
+ for (const row of all.value) {
41
+ if (row.discardReason) continue;
42
+ for (const [field, entry] of Object.entries(row.fieldIssues)) {
43
+ if (entry.level === "info") continue;
44
+ const count = counts.get(field);
45
+ if (!count) counts.set(field, { level: entry.level, rowCount: 1 });
46
+ else {
47
+ count.rowCount += 1;
48
+ if (LEVEL_RANK[entry.level] > LEVEL_RANK[count.level]) count.level = entry.level;
49
+ }
50
+ }
200
51
  }
201
- return baseRows;
52
+ return counts;
202
53
  });
203
- const selectedRowIndexes = computed(
204
- () => Object.entries(rowSelection.value).filter(([, selected]) => selected).map(([key]) => Number(key)).filter((index) => !Number.isNaN(index))
205
- );
206
- const selectedRows = computed(
207
- () => visibleRows.value.filter((row) => selectedRowIndexes.value.includes(row.index))
208
- );
209
- const allVisibleSelected = computed(
210
- () => visibleRows.value.length > 0 && visibleRows.value.filter((row) => !isOverflowRow(row.index) || activeTab.value === "discarded").every((row) => rowSelection.value[String(row.index)])
211
- );
212
- const canDiscardSelection = computed(
213
- () => selectedRows.value.some((row) => !isDiscarded(row.index))
54
+ const visible = computed(() => {
55
+ let list = tab.value === "importable" ? params.rows.importable.value : tab.value === "invalid" ? params.rows.invalid.value : tab.value === "discarded" ? params.rows.discarded.value : all.value;
56
+ if (tab.value !== "discarded") {
57
+ if (level.value === "blocking")
58
+ list = list.filter((row) => !row.discardReason && row.errors.length);
59
+ if (level.value === "warnings")
60
+ list = list.filter((row) => !row.discardReason && row.warnings.length);
61
+ if (mode.value !== "all") list = list.filter((row) => row.mode === mode.value);
62
+ }
63
+ if (issue.value) {
64
+ const [field, code] = issue.value.split("|");
65
+ list = list.filter(
66
+ (row) => row.issues.some((entry) => entry.field === field && (code === "*" || entry.code === code))
67
+ );
68
+ }
69
+ const query = search.value.trim().toLowerCase();
70
+ if (query) {
71
+ const parsed = params.rows.parsed.value;
72
+ list = list.filter(
73
+ (row) => [...parsed[row.index]?.cells.values() ?? []].some(
74
+ (cell) => cell.text.toLowerCase().includes(query) || cell.display.toLowerCase().includes(query)
75
+ )
76
+ );
77
+ }
78
+ return list;
79
+ });
80
+ const withIssues = computed(
81
+ () => all.value.filter((row) => !row.discardReason && (row.errors.length || row.warnings.length))
214
82
  );
215
- const canRestoreSelection = computed(
216
- () => selectedRows.value.some((row) => isManuallyDiscarded(row.index))
83
+ const inspected = computed(
84
+ () => inspectedIndex.value === null ? null : all.value[inspectedIndex.value] ?? null
217
85
  );
218
- const tableColumns = computed(() => {
219
- const sample = visibleRows.value[0]?.data ?? reviewRows.value[0]?.data ?? {};
220
- return getSpreadsheetLeafPaths(sample);
221
- });
222
- function getRowStatus(index, issues) {
223
- if (isDiscarded(index)) {
224
- return {
225
- color: "neutral",
226
- icon: "i-lucide-ban",
227
- label: t("spreadsheet.steps.review.discardedStatus")
228
- };
229
- }
230
- if (hasBlockingIssue(issues)) {
231
- return {
232
- color: "error",
233
- icon: "i-lucide-circle-x",
234
- label: t("spreadsheet.steps.review.blockingStatus")
235
- };
236
- }
237
- if (hasWarningIssue(issues)) {
238
- return {
239
- color: "warning",
240
- icon: "i-lucide-triangle-alert",
241
- label: t("spreadsheet.steps.review.warningStatus")
242
- };
243
- }
244
- return {
245
- color: "success",
246
- icon: "i-lucide-circle-check",
247
- label: t("spreadsheet.steps.review.validStatus")
248
- };
249
- }
250
- function getIssueBadge(issue) {
251
- if (issue.level === "error") {
252
- return { color: "error", label: t("spreadsheet.steps.review.issueBadgeBlocking") };
253
- }
254
- return { color: "warning", label: t("spreadsheet.steps.review.issueBadgeWarning") };
255
- }
256
- function getIssueValueTone(issue) {
257
- if (issue.level === "error") {
258
- return "bg-error/6";
259
- }
260
- return "bg-warning/10";
86
+ const position = computed(() => ({
87
+ current: inspectedIndex.value === null ? 0 : withIssues.value.findIndex((row) => row.index === inspectedIndex.value) + 1,
88
+ total: withIssues.value.length
89
+ }));
90
+ function setTab(value) {
91
+ tab.value = value;
92
+ selection.value = /* @__PURE__ */ new Set();
93
+ if (value === "importable" || value === "discarded") level.value = "all";
94
+ }
95
+ function setLevel(value) {
96
+ level.value = value;
97
+ if (value !== "all" && (tab.value === "importable" || tab.value === "discarded"))
98
+ tab.value = "all";
99
+ }
100
+ function setMode(value) {
101
+ mode.value = value;
102
+ }
103
+ function setIssue(value) {
104
+ issue.value = value;
105
+ if (value && (tab.value === "importable" || tab.value === "discarded")) tab.value = "all";
106
+ }
107
+ function setSearch(value) {
108
+ search.value = value;
109
+ }
110
+ function select(indexes, selected) {
111
+ const next = new Set(selection.value);
112
+ for (const index of indexes) {
113
+ if (selected) next.add(index);
114
+ else next.delete(index);
115
+ }
116
+ selection.value = next;
261
117
  }
262
- function getIssueValue(rowData, issue) {
263
- if (!issue.columnKey) {
264
- return t("spreadsheet.steps.review.noValue");
265
- }
266
- return formatSpreadsheetCell(getSpreadsheetValueAtPath(rowData, issue.columnKey));
267
- }
268
- function getIssueRawValue(rowData, issue) {
269
- if (!issue.columnKey) {
270
- return;
271
- }
272
- return getSpreadsheetValueAtPath(rowData, issue.columnKey);
273
- }
274
- function getRelatedIssueCount(issue) {
275
- return issueRows.value.filter(
276
- (row) => row.issues.some(
277
- (candidate) => candidate.code === issue.code && candidate.columnKey === issue.columnKey && candidate.message === issue.message
278
- )
279
- ).length;
118
+ function clearSelection() {
119
+ selection.value = /* @__PURE__ */ new Set();
280
120
  }
281
- function getRowToneClass(row) {
282
- if (isDiscarded(row.index)) {
283
- return "opacity-45";
284
- }
285
- if (hasBlockingIssue(row.issues)) {
286
- return "bg-error/5";
287
- }
288
- if (hasWarningIssue(row.issues)) {
289
- return "bg-warning/5";
290
- }
291
- return "";
121
+ function inspect(index) {
122
+ inspectedIndex.value = index;
292
123
  }
293
- const reviewTableColumns = computed(() => [
294
- {
295
- cell: ({ row }) => h("div", { class: "flex justify-center" }, [
296
- h(UCheckbox, {
297
- disabled: isOverflowRow(row.original.index) && activeTab.value !== "discarded",
298
- modelValue: rowSelection.value[String(row.original.index)] ?? false,
299
- "onUpdate:modelValue": (value) => {
300
- rowSelection.value = {
301
- ...rowSelection.value,
302
- [String(row.original.index)]: value === true
303
- };
304
- }
305
- })
306
- ]),
307
- header: () => h("div", { class: "flex justify-center" }, [
308
- h(UCheckbox, {
309
- modelValue: allVisibleSelected.value,
310
- "onUpdate:modelValue": selectAllVisible
311
- })
312
- ]),
313
- id: "select",
314
- meta: {
315
- class: {
316
- td: "w-12",
317
- th: "w-12"
318
- }
319
- }
320
- },
321
- {
322
- accessorFn: (row) => row.index + 1,
323
- cell: ({
324
- row
325
- }) => {
326
- const status = getRowStatus(row.original.index, row.original.issues);
327
- const issueCount = row.original.issues.length;
328
- const statusLabel = issueCount > 0 ? `${status.label} \xB7 ${issueCount}` : status.label;
329
- return h("div", { class: "flex items-center gap-2 whitespace-nowrap leading-none" }, [
330
- h("span", { class: "font-mono text-xs text-muted" }, `#${row.original.index + 1}`),
331
- h(
332
- UBadge,
333
- {
334
- class: "font-medium",
335
- color: status.color,
336
- icon: status.icon,
337
- size: "sm",
338
- variant: "soft"
339
- },
340
- () => statusLabel
341
- )
342
- ]);
343
- },
344
- header: t("spreadsheet.steps.review.row"),
345
- id: "row",
346
- meta: {
347
- class: {
348
- td: "w-44 align-top",
349
- th: "w-44"
350
- }
351
- }
352
- },
353
- ...tableColumns.value.map((column) => ({
354
- accessorFn: (row) => formatSpreadsheetCell(getSpreadsheetValueAtPath(row.data, column)),
355
- cell: ({ row }) => h(SpreadsheetValuePreview, {
356
- compact: true,
357
- value: getSpreadsheetValueAtPath(row.original.data, column)
358
- }),
359
- header: humanizeSpreadsheetKey(column),
360
- id: column,
361
- meta: {
362
- class: {
363
- td: "min-w-44 max-w-80 align-top text-toned",
364
- th: "min-w-44"
365
- }
366
- }
367
- }))
368
- ]);
369
- function inspectPrevIssueRow() {
370
- if (inspectedIssueRowPosition.value <= 0) {
371
- return;
372
- }
373
- inspectedRowIndex.value = issueRows.value[inspectedIssueRowPosition.value - 1]?.index ?? null;
124
+ function step(direction) {
125
+ const current = withIssues.value.findIndex((row) => row.index === inspectedIndex.value);
126
+ const next = withIssues.value[current < 0 ? 0 : current + direction];
127
+ if (next) inspectedIndex.value = next.index;
374
128
  }
375
- function inspectNextIssueRow() {
376
- if (inspectedIssueRowPosition.value < 0) {
377
- return;
378
- }
379
- inspectedRowIndex.value = issueRows.value[inspectedIssueRowPosition.value + 1]?.index ?? null;
129
+ function reset() {
130
+ tab.value = "all";
131
+ level.value = "all";
132
+ mode.value = "all";
133
+ issue.value = "";
134
+ search.value = "";
135
+ selection.value = /* @__PURE__ */ new Set();
136
+ inspectedIndex.value = null;
380
137
  }
381
138
  return {
382
- activeTab,
383
- canDiscardSelection,
384
- canRestoreSelection,
385
- closeInspection,
386
- discardRow,
387
- discardSelectedRows,
388
- formatSpreadsheetCell,
389
- getIssueBadge,
390
- getIssueRawValue,
391
- getIssueValue,
392
- getIssueValueTone,
393
- getRelatedIssueCount,
394
- getRowStatus,
395
- getRowToneClass,
396
- getSpreadsheetObjectEntries,
397
- hasOverflow,
398
- humanizeSpreadsheetKey,
399
- inspectNextIssueRow,
400
- inspectPrevIssueRow,
401
- inspectRow,
402
- inspectedIssueRowPosition,
403
- inspectedRow,
404
- isDiscarded,
405
- isManuallyDiscarded,
406
- issueFilter,
407
- issueFilterItems,
408
- issueRows,
409
- overflowCount,
410
- restoreRow,
411
- restoreSelectedRows,
412
- reviewTableColumns,
413
- rowSelection,
414
- selectedRowIndexes,
415
- setActiveTab,
416
- setIssueFilter,
417
- stats,
418
- tabItems,
419
- tableColumns,
420
- visibleRows
139
+ clearSelection,
140
+ fieldIssues,
141
+ inspect,
142
+ inspected,
143
+ issue,
144
+ issueTypes,
145
+ level,
146
+ mode,
147
+ next: () => step(1),
148
+ position,
149
+ previous: () => step(-1),
150
+ reset,
151
+ search,
152
+ select,
153
+ selection,
154
+ setIssue,
155
+ setLevel,
156
+ setMode,
157
+ setSearch,
158
+ setTab,
159
+ tab,
160
+ visible
421
161
  };
422
162
  }
@@ -1,32 +1,54 @@
1
1
  import type { ComputedRef } from 'vue';
2
- import type { SpreadsheetNormalizedSchema, SpreadsheetRecord } from '../types/index.js';
2
+ import type { UiToolsTranslator } from '#ui-tools/i18n';
3
+ import type { SpreadsheetCellView, SpreadsheetRecord, SpreadsheetRow, SpreadsheetRowIssue, SpreadsheetRuntimeSchema } from '../types/index.js';
4
+ import type { SpreadsheetParsedRow } from '../utils/index.js';
5
+ import type { useSpreadsheetAnswers } from './use-spreadsheet-answers.js';
6
+ import type { useSpreadsheetColumns } from './use-spreadsheet-columns.js';
7
+ import type { useSpreadsheetContext } from './use-spreadsheet-context.js';
8
+ import type { useSpreadsheetEdits } from './use-spreadsheet-edits.js';
9
+ import type { useSpreadsheetFields } from './use-spreadsheet-fields.js';
10
+ import type { useSpreadsheetLayout } from './use-spreadsheet-layout.js';
11
+ import type { useSpreadsheetOptions } from './use-spreadsheet-options.js';
3
12
  export interface UseSpreadsheetRowsParams {
4
- schema: ComputedRef<SpreadsheetNormalizedSchema>;
5
- contextData: ComputedRef<SpreadsheetRecord>;
6
- headers: ComputedRef<readonly unknown[]>;
7
- rows: ComputedRef<readonly (readonly unknown[])[]>;
13
+ schema: ComputedRef<SpreadsheetRuntimeSchema>;
14
+ context: ReturnType<typeof useSpreadsheetContext>;
15
+ fields: ReturnType<typeof useSpreadsheetFields>;
16
+ layout: ReturnType<typeof useSpreadsheetLayout>;
17
+ columns: ReturnType<typeof useSpreadsheetColumns>;
18
+ options: ReturnType<typeof useSpreadsheetOptions>;
19
+ answers: ReturnType<typeof useSpreadsheetAnswers>;
20
+ edits: ReturnType<typeof useSpreadsheetEdits>;
21
+ t: UiToolsTranslator;
8
22
  }
23
+ /**
24
+ * Every data row of the file: parsed, validated, identified against the file and stored records,
25
+ * and discarded or not. Parsing is cached per row; an edit re-parses its row only.
26
+ */
9
27
  export declare function useSpreadsheetRows(params: UseSpreadsheetRowsParams): {
10
- error: import("vue").ShallowRef<unknown, unknown>;
11
- parsedRows: import("vue").ShallowRef<import("../types/index.js").SpreadsheetParsedRow<SpreadsheetRecord>[], import("../types/index.js").SpreadsheetParsedRow<SpreadsheetRecord>[]>;
12
- refreshRows: () => Promise<void>;
13
- status: import("vue").ShallowRef<{
14
- initialized: boolean;
15
- isParsing: boolean;
16
- isReady: boolean;
17
- }, {
18
- initialized: boolean;
19
- isParsing: boolean;
20
- isReady: boolean;
28
+ byMode: ComputedRef<{
29
+ create: number;
30
+ skip: number;
31
+ update: number;
21
32
  }>;
22
- summary: import("vue").ShallowRef<import("../types/index.js").SpreadsheetRowSummary, import("../types/index.js").SpreadsheetRowSummary>;
23
- assignColumn: (headerIndex: number, columnKey: string) => void;
24
- clearColumnAssignment: (headerIndex: number) => void;
25
- columnMatches: ComputedRef<import("../types/index.js").SpreadsheetColumnMatch<import("../types/index.js").SpreadsheetColumnDefinition<string, unknown, boolean, unknown, undefined, unknown, undefined>>[]>;
26
- dynamicColumnMatches: ComputedRef<import("../types/index.js").SpreadsheetDynamicColumnMatch<import("../types/index.js").SpreadsheetDynamicOptionGroupsDefinition<string, string, unknown> | import("../types/index.js").SpreadsheetDynamicCollectionDefinition<string, "array" | "record", readonly unknown[], unknown>, import("../types/index.js").SpreadsheetDynamicCollectionItemDefinition<string, import("../types/index.js").SpreadsheetDynamicValueDefinition | ((value: import("../types/index.js").SpreadsheetDynamicValueBuilder) => import("../types/index.js").SpreadsheetValue), unknown, unknown>>[]>;
27
- dynamicColumns: ComputedRef<readonly unknown[]>;
28
- headerCells: ComputedRef<import("../types/index.js").SpreadsheetHeaderCell[]>;
29
- manualColumnAssignments: import("vue").ShallowRef<Record<string, string>, Record<string, string>>;
30
- staticColumns: ComputedRef<import("../types/index.js").SpreadsheetStaticColumn[]>;
31
- unmatchedColumns: ComputedRef<import("../types/index.js").SpreadsheetUnmatchedColumn<import("../types/index.js").SpreadsheetColumnDefinition<string, unknown, boolean, unknown, undefined, unknown, undefined>>[]>;
33
+ cell: (index: number, field: string) => SpreadsheetCellView;
34
+ discard: (indexes: readonly number[]) => void;
35
+ discarded: ComputedRef<SpreadsheetRow<SpreadsheetRecord, unknown>[]>;
36
+ distinct: (field: string) => string[];
37
+ edit: (index: number, field: string, text: string) => void;
38
+ exportInvalid: (issuesHeader: string) => Blob;
39
+ importable: ComputedRef<SpreadsheetRow<SpreadsheetRecord, unknown>[]>;
40
+ invalid: ComputedRef<SpreadsheetRow<SpreadsheetRecord, unknown>[]>;
41
+ issues: (field?: string) => {
42
+ issue: SpreadsheetRowIssue;
43
+ row: number;
44
+ }[];
45
+ keyFields: ComputedRef<string[]>;
46
+ loading: ComputedRef<boolean>;
47
+ parsed: ComputedRef<SpreadsheetParsedRow[]>;
48
+ rejections: import("vue").ShallowRef<ReadonlyMap<number, readonly SpreadsheetRowIssue[]>, ReadonlyMap<number, readonly SpreadsheetRowIssue[]>>;
49
+ reset: () => void;
50
+ restore: (indexes: readonly number[]) => void;
51
+ rows: ComputedRef<SpreadsheetRow<SpreadsheetRecord, unknown>[]>;
52
+ setRejections: (next: ReadonlyMap<number, readonly SpreadsheetRowIssue[]>) => void;
53
+ valid: ComputedRef<SpreadsheetRow<SpreadsheetRecord, unknown>[]>;
32
54
  };