nuxt-ui-tools 1.12.0 → 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 (321) 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/i18n/locales/en.js +251 -130
  9. package/dist/runtime/i18n/locales/fr.js +251 -130
  10. package/dist/runtime/i18n/types.d.ts +241 -119
  11. package/dist/runtime/shared/types/remote-options.d.ts +11 -0
  12. package/dist/runtime/shared/utils/define-remote-options.js +6 -0
  13. package/dist/runtime/shared/utils/file.d.ts +1 -1
  14. package/dist/runtime/spreadsheet/components/{steps/review/spreadsheet-review-overflow-alert.d.vue.ts → internal/spreadsheet-import-cell-editor.d.vue.ts} +8 -5
  15. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-cell-editor.vue +73 -0
  16. package/dist/runtime/spreadsheet/components/{steps/review/spreadsheet-review-overflow-alert.vue.d.ts → internal/spreadsheet-import-cell-editor.vue.d.ts} +8 -5
  17. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-column-row.d.vue.ts +17 -0
  18. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-column-row.vue +98 -0
  19. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-column-row.vue.d.ts +17 -0
  20. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-heading.d.vue.ts +17 -0
  21. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-heading.vue +20 -0
  22. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-heading.vue.d.ts +17 -0
  23. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-status-badge.d.vue.ts +10 -0
  24. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-status-badge.vue +34 -0
  25. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-status-badge.vue.d.ts +10 -0
  26. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-value-row.d.vue.ts +13 -0
  27. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-value-row.vue +113 -0
  28. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-value-row.vue.d.ts +13 -0
  29. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-column-mapping.d.vue.ts +35 -0
  30. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-column-mapping.vue +154 -0
  31. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-column-mapping.vue.d.ts +35 -0
  32. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-dropzone.d.vue.ts +23 -0
  33. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-dropzone.vue +83 -0
  34. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-dropzone.vue.d.ts +23 -0
  35. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-expected-columns.d.vue.ts +19 -0
  36. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-expected-columns.vue +45 -0
  37. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-expected-columns.vue.d.ts +19 -0
  38. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-object-preview-table.d.vue.ts → parts/spreadsheet-import-export-button.d.vue.ts} +3 -2
  39. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-export-button.vue +34 -0
  40. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-file-bar.vue.d.ts → parts/spreadsheet-import-export-button.vue.d.ts} +3 -4
  41. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-file-card.d.vue.ts +17 -0
  42. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-file-card.vue +49 -0
  43. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-file-card.vue.d.ts +17 -0
  44. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-progress.d.vue.ts +18 -0
  45. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-progress.vue +101 -0
  46. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-progress.vue.d.ts +18 -0
  47. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-row-inspector.d.vue.ts +22 -0
  48. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-row-inspector.vue +276 -0
  49. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-row-inspector.vue.d.ts +22 -0
  50. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-source-settings.d.vue.ts +11 -0
  51. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-source-settings.vue +164 -0
  52. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-source-settings.vue.d.ts +11 -0
  53. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-value-preview.d.vue.ts → parts/spreadsheet-import-stat.d.vue.ts} +7 -4
  54. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stat.vue +30 -0
  55. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-value-preview.vue.d.ts → parts/spreadsheet-import-stat.vue.d.ts} +7 -4
  56. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stats.d.vue.ts +26 -0
  57. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stats.vue +55 -0
  58. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stats.vue.d.ts +26 -0
  59. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-object-preview-table.vue.d.ts → parts/spreadsheet-import-submit-button.d.vue.ts} +3 -2
  60. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-submit-button.vue +27 -0
  61. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-submit-button.vue.d.ts +8 -0
  62. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-summary.d.vue.ts +16 -0
  63. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-summary.vue +51 -0
  64. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-summary.vue.d.ts +16 -0
  65. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-file-bar.d.vue.ts → parts/spreadsheet-import-table-toolbar.d.vue.ts} +2 -4
  66. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table-toolbar.vue +217 -0
  67. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-raw-preview-table.d.vue.ts → parts/spreadsheet-import-table-toolbar.vue.d.ts} +2 -2
  68. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table.d.vue.ts +33 -0
  69. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table.vue +302 -0
  70. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table.vue.d.ts +33 -0
  71. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-sidebar.d.vue.ts → parts/spreadsheet-import-template-button.d.vue.ts} +5 -4
  72. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-template-button.vue +31 -0
  73. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-sidebar.vue.d.ts → parts/spreadsheet-import-template-button.vue.d.ts} +5 -4
  74. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-value-mapping.d.vue.ts +27 -0
  75. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-value-mapping.vue +162 -0
  76. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-value-mapping.vue.d.ts +27 -0
  77. package/dist/runtime/spreadsheet/components/spreadsheet-import-root.d.vue.ts +24 -0
  78. package/dist/runtime/spreadsheet/components/spreadsheet-import-root.vue +23 -0
  79. package/dist/runtime/spreadsheet/components/spreadsheet-import-root.vue.d.ts +24 -0
  80. package/dist/runtime/spreadsheet/components/spreadsheet-import.d.vue.ts +21 -6
  81. package/dist/runtime/spreadsheet/components/spreadsheet-import.vue +46 -262
  82. package/dist/runtime/spreadsheet/components/spreadsheet-import.vue.d.ts +21 -6
  83. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-header.d.vue.ts → steps/spreadsheet-import-step-nav.d.vue.ts} +6 -2
  84. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step-nav.vue +116 -0
  85. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-header.vue.d.ts → steps/spreadsheet-import-step-nav.vue.d.ts} +6 -2
  86. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step.d.vue.ts +26 -0
  87. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step.vue +106 -0
  88. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step.vue.d.ts +26 -0
  89. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-stepper.d.vue.ts +15 -0
  90. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-stepper.vue +131 -0
  91. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-stepper.vue.d.ts +15 -0
  92. package/dist/runtime/spreadsheet/composables/index.d.ts +2 -0
  93. package/dist/runtime/spreadsheet/composables/index.js +2 -0
  94. package/dist/runtime/spreadsheet/composables/use-spreadsheet-answers.d.ts +8 -0
  95. package/dist/runtime/spreadsheet/composables/use-spreadsheet-answers.js +19 -0
  96. package/dist/runtime/spreadsheet/composables/use-spreadsheet-columns.d.ts +23 -0
  97. package/dist/runtime/spreadsheet/composables/use-spreadsheet-columns.js +75 -0
  98. package/dist/runtime/spreadsheet/composables/use-spreadsheet-context.d.ts +8 -45
  99. package/dist/runtime/spreadsheet/composables/use-spreadsheet-context.js +28 -32
  100. package/dist/runtime/spreadsheet/composables/use-spreadsheet-edits.d.ts +11 -0
  101. package/dist/runtime/spreadsheet/composables/use-spreadsheet-edits.js +25 -0
  102. package/dist/runtime/spreadsheet/composables/use-spreadsheet-fields.d.ts +16 -0
  103. package/dist/runtime/spreadsheet/composables/use-spreadsheet-fields.js +20 -0
  104. package/dist/runtime/spreadsheet/composables/use-spreadsheet-file.d.ts +14 -0
  105. package/dist/runtime/spreadsheet/composables/use-spreadsheet-file.js +44 -0
  106. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import-context.d.ts +12 -0
  107. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import-context.js +22 -0
  108. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import.d.ts +18 -7
  109. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import.js +340 -109
  110. package/dist/runtime/spreadsheet/composables/use-spreadsheet-layout.d.ts +36 -0
  111. package/dist/runtime/spreadsheet/composables/use-spreadsheet-layout.js +95 -0
  112. package/dist/runtime/spreadsheet/composables/use-spreadsheet-options.d.ts +24 -0
  113. package/dist/runtime/spreadsheet/composables/use-spreadsheet-options.js +159 -0
  114. package/dist/runtime/spreadsheet/composables/use-spreadsheet-queries.d.ts +14 -0
  115. package/dist/runtime/spreadsheet/composables/use-spreadsheet-queries.js +11 -0
  116. package/dist/runtime/spreadsheet/composables/use-spreadsheet-review.d.ts +37 -169
  117. package/dist/runtime/spreadsheet/composables/use-spreadsheet-review.js +148 -408
  118. package/dist/runtime/spreadsheet/composables/use-spreadsheet-rows.d.ts +48 -26
  119. package/dist/runtime/spreadsheet/composables/use-spreadsheet-rows.js +334 -21
  120. package/dist/runtime/spreadsheet/composables/use-spreadsheet-steps.d.ts +33 -0
  121. package/dist/runtime/spreadsheet/composables/use-spreadsheet-steps.js +126 -0
  122. package/dist/runtime/spreadsheet/composables/use-spreadsheet-submit.d.ts +37 -0
  123. package/dist/runtime/spreadsheet/composables/use-spreadsheet-submit.js +136 -0
  124. package/dist/runtime/spreadsheet/composables/use-spreadsheet-values.d.ts +27 -0
  125. package/dist/runtime/spreadsheet/composables/use-spreadsheet-values.js +121 -0
  126. package/dist/runtime/spreadsheet/index.d.ts +0 -1
  127. package/dist/runtime/spreadsheet/index.js +0 -1
  128. package/dist/runtime/spreadsheet/schema/builder.d.ts +8 -0
  129. package/dist/runtime/spreadsheet/schema/builder.js +31 -0
  130. package/dist/runtime/spreadsheet/schema/index.d.ts +24 -32
  131. package/dist/runtime/spreadsheet/schema/index.js +4 -21
  132. package/dist/runtime/spreadsheet/types/columns.d.ts +252 -273
  133. package/dist/runtime/spreadsheet/types/fields.d.ts +64 -0
  134. package/dist/runtime/spreadsheet/types/importer.d.ts +308 -0
  135. package/dist/runtime/spreadsheet/types/index.d.ts +6 -10
  136. package/dist/runtime/spreadsheet/types/options.d.ts +47 -9
  137. package/dist/runtime/spreadsheet/types/rows.d.ts +57 -48
  138. package/dist/runtime/spreadsheet/types/schema.d.ts +162 -76
  139. package/dist/runtime/spreadsheet/types/shared.d.ts +19 -21
  140. package/dist/runtime/spreadsheet/types/source.d.ts +39 -15
  141. package/dist/runtime/spreadsheet/types/steps.d.ts +76 -0
  142. package/dist/runtime/spreadsheet/types/validation.d.ts +49 -69
  143. package/dist/runtime/spreadsheet/types/values.d.ts +77 -0
  144. package/dist/runtime/spreadsheet/utils/download.d.ts +2 -0
  145. package/dist/runtime/spreadsheet/utils/download.js +8 -0
  146. package/dist/runtime/spreadsheet/utils/export.d.ts +26 -0
  147. package/dist/runtime/spreadsheet/utils/export.js +50 -0
  148. package/dist/runtime/spreadsheet/utils/fields.d.ts +26 -0
  149. package/dist/runtime/spreadsheet/utils/fields.js +169 -0
  150. package/dist/runtime/spreadsheet/utils/guards.d.ts +18 -0
  151. package/dist/runtime/spreadsheet/utils/guards.js +27 -0
  152. package/dist/runtime/spreadsheet/utils/headers.d.ts +15 -0
  153. package/dist/runtime/spreadsheet/utils/headers.js +36 -0
  154. package/dist/runtime/spreadsheet/utils/identity.d.ts +24 -0
  155. package/dist/runtime/spreadsheet/utils/identity.js +57 -0
  156. package/dist/runtime/spreadsheet/utils/index.d.ts +15 -6
  157. package/dist/runtime/spreadsheet/utils/index.js +15 -6
  158. package/dist/runtime/spreadsheet/utils/layout.d.ts +12 -0
  159. package/dist/runtime/spreadsheet/utils/layout.js +37 -0
  160. package/dist/runtime/spreadsheet/utils/options.d.ts +31 -10
  161. package/dist/runtime/spreadsheet/utils/options.js +58 -30
  162. package/dist/runtime/spreadsheet/utils/parse.d.ts +6 -0
  163. package/dist/runtime/spreadsheet/utils/parse.js +147 -0
  164. package/dist/runtime/spreadsheet/utils/paths.d.ts +4 -0
  165. package/dist/runtime/spreadsheet/utils/paths.js +29 -0
  166. package/dist/runtime/spreadsheet/utils/rows.d.ts +69 -0
  167. package/dist/runtime/spreadsheet/utils/rows.js +168 -0
  168. package/dist/runtime/spreadsheet/utils/rules.d.ts +4 -0
  169. package/dist/runtime/spreadsheet/utils/rules.js +95 -0
  170. package/dist/runtime/spreadsheet/utils/suggestions.d.ts +20 -0
  171. package/dist/runtime/spreadsheet/utils/suggestions.js +43 -0
  172. package/dist/runtime/spreadsheet/utils/text.d.ts +9 -0
  173. package/dist/runtime/spreadsheet/utils/text.js +11 -0
  174. package/dist/runtime/spreadsheet/utils/workbook.d.ts +13 -0
  175. package/dist/runtime/spreadsheet/utils/workbook.js +121 -0
  176. package/dist/runtime/table/components/filters/tags/boolean-filter-tag.d.vue.ts +2 -2
  177. package/dist/runtime/table/components/filters/tags/boolean-filter-tag.vue.d.ts +2 -2
  178. package/dist/runtime/table/components/filters/tags/date-filter-tag.d.vue.ts +2 -2
  179. package/dist/runtime/table/components/filters/tags/date-filter-tag.vue.d.ts +2 -2
  180. package/dist/runtime/table/components/filters/tags/number-filter-tag.d.vue.ts +2 -2
  181. package/dist/runtime/table/components/filters/tags/number-filter-tag.vue.d.ts +2 -2
  182. package/dist/runtime/table/components/filters/tags/option-filter-tag.d.vue.ts +2 -2
  183. package/dist/runtime/table/components/filters/tags/option-filter-tag.vue.d.ts +2 -2
  184. package/dist/runtime/table/components/filters/tags/text-filter-tag.d.vue.ts +2 -2
  185. package/dist/runtime/table/components/filters/tags/text-filter-tag.vue.d.ts +2 -2
  186. package/dist/runtime/table/components/table/table-cell-ellipsis.d.ts +1 -1
  187. package/dist/runtime/table/utils/data-list-ui.d.ts +1 -1
  188. package/package.json +18 -3
  189. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-file-bar.vue +0 -31
  190. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-footer.d.vue.ts +0 -24
  191. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-footer.vue +0 -69
  192. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-footer.vue.d.ts +0 -24
  193. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-header.vue +0 -36
  194. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-sidebar.vue +0 -63
  195. package/dist/runtime/spreadsheet/components/shared/spreadsheet-object-preview-table.vue +0 -67
  196. package/dist/runtime/spreadsheet/components/shared/spreadsheet-raw-preview-table.vue +0 -41
  197. package/dist/runtime/spreadsheet/components/shared/spreadsheet-raw-preview-table.vue.d.ts +0 -7
  198. package/dist/runtime/spreadsheet/components/shared/spreadsheet-summary-stats.d.vue.ts +0 -10
  199. package/dist/runtime/spreadsheet/components/shared/spreadsheet-summary-stats.vue +0 -25
  200. package/dist/runtime/spreadsheet/components/shared/spreadsheet-summary-stats.vue.d.ts +0 -10
  201. package/dist/runtime/spreadsheet/components/shared/spreadsheet-value-preview.vue +0 -201
  202. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-summary.d.vue.ts +0 -11
  203. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-summary.vue +0 -38
  204. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-summary.vue.d.ts +0 -11
  205. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-table.d.vue.ts +0 -45
  206. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-table.vue +0 -219
  207. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-table.vue.d.ts +0 -45
  208. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-accordion.d.vue.ts +0 -51
  209. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-accordion.vue +0 -166
  210. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-accordion.vue.d.ts +0 -51
  211. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-summary.d.vue.ts +0 -11
  212. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-summary.vue +0 -26
  213. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-summary.vue.d.ts +0 -11
  214. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-inspection.d.vue.ts +0 -41
  215. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-inspection.vue +0 -392
  216. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-inspection.vue.d.ts +0 -41
  217. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-overflow-alert.vue +0 -43
  218. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-stats.d.vue.ts +0 -15
  219. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-stats.vue +0 -40
  220. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-stats.vue.d.ts +0 -15
  221. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-matching-step.d.vue.ts +0 -7
  222. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-matching-step.vue +0 -137
  223. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-matching-step.vue.d.ts +0 -7
  224. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-references-step.d.vue.ts +0 -7
  225. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-references-step.vue +0 -222
  226. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-references-step.vue.d.ts +0 -7
  227. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-review-step.d.vue.ts +0 -7
  228. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-review-step.vue +0 -191
  229. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-review-step.vue.d.ts +0 -7
  230. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-structure-step.d.vue.ts +0 -7
  231. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-structure-step.vue +0 -62
  232. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-structure-step.vue.d.ts +0 -7
  233. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-upload-step.d.vue.ts +0 -8
  234. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-upload-step.vue +0 -81
  235. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-upload-step.vue.d.ts +0 -8
  236. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-preview-table.d.vue.ts +0 -15
  237. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-preview-table.vue +0 -95
  238. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-preview-table.vue.d.ts +0 -15
  239. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-sheet-list.d.vue.ts +0 -15
  240. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-sheet-list.vue +0 -56
  241. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-sheet-list.vue.d.ts +0 -15
  242. package/dist/runtime/spreadsheet/components/types.d.ts +0 -41
  243. package/dist/runtime/spreadsheet/composables/use-spreadsheet-column-matching.d.ts +0 -18
  244. package/dist/runtime/spreadsheet/composables/use-spreadsheet-column-matching.js +0 -62
  245. package/dist/runtime/spreadsheet/composables/use-spreadsheet-internals.d.ts +0 -629
  246. package/dist/runtime/spreadsheet/composables/use-spreadsheet-internals.js +0 -68
  247. package/dist/runtime/spreadsheet/composables/use-spreadsheet-references.d.ts +0 -1
  248. package/dist/runtime/spreadsheet/composables/use-spreadsheet-references.js +0 -3
  249. package/dist/runtime/spreadsheet/composables/use-spreadsheet-resolutions.d.ts +0 -40
  250. package/dist/runtime/spreadsheet/composables/use-spreadsheet-resolutions.js +0 -97
  251. package/dist/runtime/spreadsheet/composables/use-spreadsheet-row-state.d.ts +0 -24
  252. package/dist/runtime/spreadsheet/composables/use-spreadsheet-row-state.js +0 -74
  253. package/dist/runtime/spreadsheet/composables/use-spreadsheet-source.d.ts +0 -27
  254. package/dist/runtime/spreadsheet/composables/use-spreadsheet-source.js +0 -109
  255. package/dist/runtime/spreadsheet/composables/use-spreadsheet-view.d.ts +0 -15
  256. package/dist/runtime/spreadsheet/composables/use-spreadsheet-view.js +0 -109
  257. package/dist/runtime/spreadsheet/schema/normalize.d.ts +0 -73
  258. package/dist/runtime/spreadsheet/schema/normalize.js +0 -136
  259. package/dist/runtime/spreadsheet/types/context.d.ts +0 -9
  260. package/dist/runtime/spreadsheet/types/import.d.ts +0 -55
  261. package/dist/runtime/spreadsheet/types/inference.d.ts +0 -83
  262. package/dist/runtime/spreadsheet/types/normalized.d.ts +0 -50
  263. package/dist/runtime/spreadsheet/types/normalized.js +0 -0
  264. package/dist/runtime/spreadsheet/types/pipeline.d.ts +0 -7
  265. package/dist/runtime/spreadsheet/types/pipeline.js +0 -0
  266. package/dist/runtime/spreadsheet/types/reference-session.d.ts +0 -43
  267. package/dist/runtime/spreadsheet/types/reference-session.js +0 -0
  268. package/dist/runtime/spreadsheet/types/references.d.ts +0 -32
  269. package/dist/runtime/spreadsheet/types/references.js +0 -0
  270. package/dist/runtime/spreadsheet/types/resolution.d.ts +0 -43
  271. package/dist/runtime/spreadsheet/types/resolution.js +0 -0
  272. package/dist/runtime/spreadsheet/utils/builders/core.d.ts +0 -17
  273. package/dist/runtime/spreadsheet/utils/builders/core.js +0 -262
  274. package/dist/runtime/spreadsheet/utils/builders/index.d.ts +0 -1
  275. package/dist/runtime/spreadsheet/utils/builders/index.js +0 -1
  276. package/dist/runtime/spreadsheet/utils/context.d.ts +0 -20
  277. package/dist/runtime/spreadsheet/utils/context.js +0 -25
  278. package/dist/runtime/spreadsheet/utils/display.d.ts +0 -6
  279. package/dist/runtime/spreadsheet/utils/display.js +0 -26
  280. package/dist/runtime/spreadsheet/utils/object.d.ts +0 -9
  281. package/dist/runtime/spreadsheet/utils/object.js +0 -78
  282. package/dist/runtime/spreadsheet/utils/references/candidates.d.ts +0 -6
  283. package/dist/runtime/spreadsheet/utils/references/candidates.js +0 -28
  284. package/dist/runtime/spreadsheet/utils/references/core.d.ts +0 -3
  285. package/dist/runtime/spreadsheet/utils/references/core.js +0 -3
  286. package/dist/runtime/spreadsheet/utils/references/guards.d.ts +0 -4
  287. package/dist/runtime/spreadsheet/utils/references/guards.js +0 -28
  288. package/dist/runtime/spreadsheet/utils/references/index.d.ts +0 -1
  289. package/dist/runtime/spreadsheet/utils/references/index.js +0 -1
  290. package/dist/runtime/spreadsheet/utils/references/resolutions.d.ts +0 -17
  291. package/dist/runtime/spreadsheet/utils/references/resolutions.js +0 -172
  292. package/dist/runtime/spreadsheet/utils/references/shared.d.ts +0 -3
  293. package/dist/runtime/spreadsheet/utils/references/shared.js +0 -26
  294. package/dist/runtime/spreadsheet/utils/references/sources.d.ts +0 -9
  295. package/dist/runtime/spreadsheet/utils/references/sources.js +0 -38
  296. package/dist/runtime/spreadsheet/utils/rows/core.d.ts +0 -4
  297. package/dist/runtime/spreadsheet/utils/rows/core.js +0 -4
  298. package/dist/runtime/spreadsheet/utils/rows/headers.d.ts +0 -2
  299. package/dist/runtime/spreadsheet/utils/rows/headers.js +0 -9
  300. package/dist/runtime/spreadsheet/utils/rows/index.d.ts +0 -1
  301. package/dist/runtime/spreadsheet/utils/rows/index.js +0 -1
  302. package/dist/runtime/spreadsheet/utils/rows/matching.d.ts +0 -5
  303. package/dist/runtime/spreadsheet/utils/rows/matching.js +0 -209
  304. package/dist/runtime/spreadsheet/utils/rows/parsing.d.ts +0 -7
  305. package/dist/runtime/spreadsheet/utils/rows/parsing.js +0 -209
  306. package/dist/runtime/spreadsheet/utils/rows/shared.d.ts +0 -17
  307. package/dist/runtime/spreadsheet/utils/rows/shared.js +0 -309
  308. package/dist/runtime/spreadsheet/utils/rows/summary.d.ts +0 -2
  309. package/dist/runtime/spreadsheet/utils/rows/summary.js +0 -10
  310. package/dist/runtime/spreadsheet/utils/source/core.d.ts +0 -9
  311. package/dist/runtime/spreadsheet/utils/source/core.js +0 -65
  312. package/dist/runtime/spreadsheet/utils/source/index.d.ts +0 -1
  313. package/dist/runtime/spreadsheet/utils/source/index.js +0 -1
  314. package/dist/runtime/spreadsheet/utils/validation/core.d.ts +0 -16
  315. package/dist/runtime/spreadsheet/utils/validation/core.js +0 -211
  316. package/dist/runtime/spreadsheet/utils/validation/index.d.ts +0 -1
  317. package/dist/runtime/spreadsheet/utils/validation/index.js +0 -1
  318. /package/dist/runtime/spreadsheet/{components/types.js → types/fields.js} +0 -0
  319. /package/dist/runtime/spreadsheet/types/{context.js → importer.js} +0 -0
  320. /package/dist/runtime/spreadsheet/types/{import.js → steps.js} +0 -0
  321. /package/dist/runtime/spreadsheet/types/{inference.js → values.js} +0 -0
@@ -0,0 +1,27 @@
1
+ import type { SpreadsheetImporter, SpreadsheetRecognizedValue, SpreadsheetValueAnswer, SpreadsheetValueQuestion } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ importer?: SpreadsheetImporter;
4
+ /** `open`: only values without an answer; renders nothing when there are none. */
5
+ only?: 'open';
6
+ /** Hides the values found in the lists. */
7
+ noRecognized?: boolean;
8
+ };
9
+ type __VLS_Slots = {
10
+ default?: (props: {
11
+ questions: readonly SpreadsheetValueQuestion[];
12
+ recognized: readonly SpreadsheetRecognizedValue[];
13
+ answer: (question: SpreadsheetValueQuestion, answer: SpreadsheetValueAnswer) => void;
14
+ }) => unknown;
15
+ question?: (props: {
16
+ question: SpreadsheetValueQuestion;
17
+ }) => unknown;
18
+ };
19
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
21
+ declare const _default: typeof __VLS_export;
22
+ export default _default;
23
+ type __VLS_WithSlots<T, S> = T & {
24
+ new (): {
25
+ $slots: S;
26
+ };
27
+ };
@@ -0,0 +1,162 @@
1
+ <script setup>
2
+ import UIcon from "@nuxt/ui/components/Icon.vue";
3
+ import { computed, shallowRef } from "vue";
4
+ import { useUiToolsLocale } from "#ui-tools/i18n";
5
+ import { useSpreadsheetImporter } from "../../composables/use-spreadsheet-import-context";
6
+ import SpreadsheetImportValueRow from "../internal/spreadsheet-import-value-row.vue";
7
+ const props = defineProps({
8
+ importer: { type: Object, required: false },
9
+ only: { type: String, required: false },
10
+ noRecognized: { type: Boolean, required: false }
11
+ });
12
+ defineSlots();
13
+ const importer = useSpreadsheetImporter(() => props.importer);
14
+ const { t } = useUiToolsLocale();
15
+ const showRecognized = shallowRef(false);
16
+ const questions = computed(
17
+ () => props.only === "open" ? importer.value.values.open : importer.value.values.questions
18
+ );
19
+ function scopeLabel(scope) {
20
+ const conditions = scope.dependsOn.map(
21
+ (entry) => t("spreadsheet.values.condition", { label: entry.label, values: entry.values.join(", ") })
22
+ ).join(" \xB7 ");
23
+ return conditions ? t("spreadsheet.values.scope", { conditions }) : "";
24
+ }
25
+ const groups = computed(() => {
26
+ const list = [];
27
+ for (const question of questions.value) {
28
+ let group = list.find((entry) => entry.field === question.field);
29
+ if (!group) {
30
+ group = {
31
+ field: question.field,
32
+ header: question.header,
33
+ label: question.fieldLabel,
34
+ scopes: []
35
+ };
36
+ list.push(group);
37
+ }
38
+ const id = question.scope?.id ?? "";
39
+ const scope = group.scopes.find((entry) => entry.id === id);
40
+ if (scope) scope.questions.push(question);
41
+ else
42
+ group.scopes.push({
43
+ id,
44
+ label: question.scope ? scopeLabel(question.scope) : "",
45
+ questions: [question]
46
+ });
47
+ }
48
+ return list;
49
+ });
50
+ const labels = computed(
51
+ () => new Map(importer.value.columns.fields.map((field) => [field.path, field.label]))
52
+ );
53
+ function answer(question, value) {
54
+ importer.value.values.answer(question, value);
55
+ }
56
+ function search(field) {
57
+ return (text) => importer.value.values.search(field, text);
58
+ }
59
+ </script>
60
+
61
+ <template>
62
+ <div
63
+ v-if="importer.file.loaded && (only !== 'open' || questions.length)"
64
+ data-spreadsheet-value-mapping
65
+ class="grid gap-5"
66
+ >
67
+ <slot :questions="questions" :recognized="importer.values.recognized" :answer="answer">
68
+ <p v-if="importer.values.loading" class="flex items-center gap-2 text-sm text-muted">
69
+ <span
70
+ class="size-3.5 animate-spin rounded-full border-2 border-accented border-t-primary"
71
+ />
72
+ {{ t("spreadsheet.values.loading") }}
73
+ </p>
74
+ <section v-for="group in groups" :key="group.field" class="grid gap-2">
75
+ <div class="flex flex-wrap items-baseline gap-x-2">
76
+ <h4 class="text-[11px] font-semibold tracking-[0.08em] text-dimmed uppercase">
77
+ {{ group.label }}
78
+ </h4>
79
+ <span v-if="group.header" class="text-xs text-dimmed">· « {{ group.header }} »</span>
80
+ </div>
81
+ <div
82
+ class="divide-y divide-default overflow-hidden rounded-xl border border-default bg-default"
83
+ >
84
+ <div
85
+ class="hidden grid-cols-[minmax(0,1fr)_4.5rem_minmax(0,1.15fr)_6.5rem] gap-x-4 bg-elevated/50 px-4 py-2 text-[11.5px] font-medium text-muted sm:grid"
86
+ >
87
+ <span>{{ t("spreadsheet.values.value") }}</span>
88
+ <span>{{ t("spreadsheet.values.rows") }}</span>
89
+ <span>{{ t("spreadsheet.values.answer") }}</span>
90
+ <span />
91
+ </div>
92
+ <template v-for="scope in group.scopes" :key="scope.id">
93
+ <div
94
+ v-if="scope.label"
95
+ data-spreadsheet-value-scope
96
+ class="flex items-center gap-2 bg-elevated/30 px-4 py-1.5 text-xs font-medium text-toned"
97
+ >
98
+ <UIcon name="i-lucide-split" class="size-3.5 shrink-0 text-dimmed" />
99
+ <span class="truncate">{{ scope.label }}</span>
100
+ </div>
101
+ <template v-for="question in scope.questions" :key="question.id">
102
+ <slot name="question" :question="question">
103
+ <SpreadsheetImportValueRow
104
+ :question="question"
105
+ :choices="question.choices"
106
+ :search="search(question.field)"
107
+ @answer="(value2) => answer(question, value2)"
108
+ />
109
+ </slot>
110
+ </template>
111
+ </template>
112
+ </div>
113
+ </section>
114
+ <div
115
+ v-if="!groups.length && only !== 'open'"
116
+ class="flex items-center gap-3 rounded-xl border border-default bg-default px-4 py-3.5"
117
+ >
118
+ <span
119
+ class="grid size-8 shrink-0 place-items-center rounded-full bg-success/10 text-success"
120
+ >
121
+ <UIcon name="i-lucide-check" class="size-4" />
122
+ </span>
123
+ <span class="font-medium text-highlighted">{{ t("spreadsheet.values.nothing") }}</span>
124
+ </div>
125
+ <div
126
+ v-if="!noRecognized && only !== 'open' && importer.values.recognized.length"
127
+ class="overflow-hidden rounded-xl border border-default bg-default"
128
+ >
129
+ <button
130
+ type="button"
131
+ class="flex w-full items-center gap-2 px-4 py-3 text-start text-sm font-medium text-toned hover:bg-elevated/60"
132
+ :aria-expanded="showRecognized"
133
+ @click="showRecognized = !showRecognized"
134
+ >
135
+ <UIcon
136
+ name="i-lucide-chevron-right"
137
+ class="size-4 text-dimmed transition-transform"
138
+ :class="showRecognized ? 'rotate-90' : ''"
139
+ />
140
+ {{ t("spreadsheet.values.recognized", { count: importer.values.recognized.length }) }}
141
+ </button>
142
+ <ul v-if="showRecognized" class="divide-y divide-default border-t border-default">
143
+ <li
144
+ v-for="value in importer.values.recognized"
145
+ :key="`${value.field}::${value.scope ?? ''}::${value.value}`"
146
+ class="grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-4 gap-y-0.5 px-4 py-2.5 text-sm sm:grid-cols-[minmax(0,10rem)_minmax(0,1fr)_minmax(0,1fr)_auto]"
147
+ >
148
+ <span class="truncate text-xs text-dimmed">{{ labels.get(value.field) }}</span>
149
+ <span class="truncate font-medium text-highlighted">{{ value.value }}</span>
150
+ <span class="flex min-w-0 items-center gap-1.5 text-muted">
151
+ <UIcon name="i-lucide-arrow-right" class="size-3.5 shrink-0 text-dimmed" />
152
+ <span class="truncate">{{ value.option.label }}</span>
153
+ </span>
154
+ <span class="text-xs text-dimmed tabular-nums">{{
155
+ t("spreadsheet.values.rowCount", { count: value.rows.length })
156
+ }}</span>
157
+ </li>
158
+ </ul>
159
+ </div>
160
+ </slot>
161
+ </div>
162
+ </template>
@@ -0,0 +1,27 @@
1
+ import type { SpreadsheetImporter, SpreadsheetRecognizedValue, SpreadsheetValueAnswer, SpreadsheetValueQuestion } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ importer?: SpreadsheetImporter;
4
+ /** `open`: only values without an answer; renders nothing when there are none. */
5
+ only?: 'open';
6
+ /** Hides the values found in the lists. */
7
+ noRecognized?: boolean;
8
+ };
9
+ type __VLS_Slots = {
10
+ default?: (props: {
11
+ questions: readonly SpreadsheetValueQuestion[];
12
+ recognized: readonly SpreadsheetRecognizedValue[];
13
+ answer: (question: SpreadsheetValueQuestion, answer: SpreadsheetValueAnswer) => void;
14
+ }) => unknown;
15
+ question?: (props: {
16
+ question: SpreadsheetValueQuestion;
17
+ }) => unknown;
18
+ };
19
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
21
+ declare const _default: typeof __VLS_export;
22
+ export default _default;
23
+ type __VLS_WithSlots<T, S> = T & {
24
+ new (): {
25
+ $slots: S;
26
+ };
27
+ };
@@ -0,0 +1,24 @@
1
+ import type { UiToolsLocale, UiToolsMessages } from '#ui-tools/i18n';
2
+ import type { SpreadsheetImporter, SpreadsheetSteps } from '../types/index.js';
3
+ /**
4
+ * Provides an importer (and its steps, for a wizard) to every `SpreadsheetImport*` part inside.
5
+ * Renders nothing of its own.
6
+ */
7
+ type __VLS_Props = {
8
+ importer: SpreadsheetImporter;
9
+ steps?: SpreadsheetSteps;
10
+ locale?: UiToolsLocale<UiToolsMessages>;
11
+ };
12
+ declare var __VLS_1: {};
13
+ type __VLS_Slots = {} & {
14
+ default?: (props: typeof __VLS_1) => any;
15
+ };
16
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
20
+ type __VLS_WithSlots<T, S> = T & {
21
+ new (): {
22
+ $slots: S;
23
+ };
24
+ };
@@ -0,0 +1,23 @@
1
+ <script setup>
2
+ import { computed } from "vue";
3
+ import { provideUiToolsLocale, useUiToolsLocaleRef } from "#ui-tools/i18n";
4
+ import { provideSpreadsheetImport } from "../composables/use-spreadsheet-import-context";
5
+ const props = defineProps({
6
+ importer: { type: Object, required: true },
7
+ steps: { type: Object, required: false },
8
+ locale: { type: Object, required: false }
9
+ });
10
+ provideUiToolsLocale(useUiToolsLocaleRef(computed(() => props.locale)));
11
+ provideSpreadsheetImport({
12
+ get importer() {
13
+ return props.importer;
14
+ },
15
+ get steps() {
16
+ return props.steps ?? null;
17
+ }
18
+ });
19
+ </script>
20
+
21
+ <template>
22
+ <slot />
23
+ </template>
@@ -0,0 +1,24 @@
1
+ import type { UiToolsLocale, UiToolsMessages } from '#ui-tools/i18n';
2
+ import type { SpreadsheetImporter, SpreadsheetSteps } from '../types/index.js';
3
+ /**
4
+ * Provides an importer (and its steps, for a wizard) to every `SpreadsheetImport*` part inside.
5
+ * Renders nothing of its own.
6
+ */
7
+ type __VLS_Props = {
8
+ importer: SpreadsheetImporter;
9
+ steps?: SpreadsheetSteps;
10
+ locale?: UiToolsLocale<UiToolsMessages>;
11
+ };
12
+ declare var __VLS_1: {};
13
+ type __VLS_Slots = {} & {
14
+ default?: (props: typeof __VLS_1) => any;
15
+ };
16
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
20
+ type __VLS_WithSlots<T, S> = T & {
21
+ new (): {
22
+ $slots: S;
23
+ };
24
+ };
@@ -1,18 +1,33 @@
1
1
  import type { UiToolsLocale, UiToolsMessages } from '#ui-tools/i18n';
2
- import type { SpreadsheetComponentApi } from './types.js';
2
+ import type { SpreadsheetImporter, SpreadsheetStep } from '../types/index.js';
3
+ /**
4
+ * A ready-made import wizard built from the public parts: file, columns and values when needed,
5
+ * review, and import. Pass `steps` to reorder them or add your own; a slot named after a step key
6
+ * replaces its content.
7
+ */
3
8
  type __VLS_Props = {
4
- spreadsheet: SpreadsheetComponentApi;
9
+ importer: SpreadsheetImporter;
10
+ steps?: readonly SpreadsheetStep[];
5
11
  title?: string;
6
- description?: string;
7
- onDownloadTemplate?: () => void;
8
12
  closable?: boolean;
9
- mode?: 'inline' | 'fullscreen';
10
13
  locale?: UiToolsLocale<UiToolsMessages>;
11
14
  };
12
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
+ declare var __VLS_28: string, __VLS_29: {
16
+ step: import("../types/index.js").SpreadsheetStepStatus;
17
+ };
18
+ type __VLS_Slots = {} & {
19
+ [K in NonNullable<typeof __VLS_28>]?: (props: typeof __VLS_29) => any;
20
+ };
21
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
22
  close: () => any;
14
23
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
15
24
  onClose?: (() => any) | undefined;
16
25
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
17
27
  declare const _default: typeof __VLS_export;
18
28
  export default _default;
29
+ type __VLS_WithSlots<T, S> = T & {
30
+ new (): {
31
+ $slots: S;
32
+ };
33
+ };
@@ -1,277 +1,61 @@
1
1
  <script setup>
2
- import { computed, ref, nextTick, watch } from "vue";
3
- import { provideUiToolsLocale, useUiToolsLocale, useUiToolsLocaleRef } from "#ui-tools/i18n";
4
- import { isNumber, isObject } from "#ui-tools/shared";
5
- import { resolveTextValue } from "#ui-tools/shared/utils/render";
6
- import { useSpreadsheetView } from "../composables/use-spreadsheet-view";
7
- import SpreadsheetImportFileBar from "./layout/spreadsheet-import-file-bar.vue";
8
- import SpreadsheetImportFooter from "./layout/spreadsheet-import-footer.vue";
9
- import SpreadsheetImportHeader from "./layout/spreadsheet-import-header.vue";
10
- import SpreadsheetImportSidebar from "./layout/spreadsheet-import-sidebar.vue";
11
- import SpreadsheetImportMatchingStep from "./steps/spreadsheet-import-matching-step.vue";
12
- import SpreadsheetImportReferencesStep from "./steps/spreadsheet-import-references-step.vue";
13
- import SpreadsheetImportReviewStep from "./steps/spreadsheet-import-review-step.vue";
14
- import SpreadsheetImportStructureStep from "./steps/spreadsheet-import-structure-step.vue";
15
- import SpreadsheetImportUploadStep from "./steps/spreadsheet-import-upload-step.vue";
2
+ import UButton from "@nuxt/ui/components/Button.vue";
3
+ import { useUiToolsLocale } from "#ui-tools/i18n";
4
+ import { useSpreadsheetSteps } from "../composables/use-spreadsheet-steps";
5
+ import SpreadsheetImportRoot from "./spreadsheet-import-root.vue";
6
+ import SpreadsheetImportStepNav from "./steps/spreadsheet-import-step-nav.vue";
7
+ import SpreadsheetImportStep from "./steps/spreadsheet-import-step.vue";
8
+ import SpreadsheetImportStepper from "./steps/spreadsheet-import-stepper.vue";
16
9
  const props = defineProps({
17
- spreadsheet: { type: Object, required: true },
10
+ importer: { type: Object, required: true },
11
+ steps: { type: Array, required: false },
18
12
  title: { type: String, required: false },
19
- description: { type: String, required: false },
20
- onDownloadTemplate: { type: Function, required: false },
21
13
  closable: { type: Boolean, required: false },
22
- mode: { type: String, required: false },
23
14
  locale: { type: Object, required: false }
24
15
  });
25
- const locale = useUiToolsLocaleRef(computed(() => props.locale));
26
- provideUiToolsLocale(locale);
27
- const { t } = useUiToolsLocale(locale);
28
16
  const emit = defineEmits(["close"]);
29
- const view = useSpreadsheetView({
30
- hasReferences: () => props.spreadsheet.referenceResolutions.value.length > 0,
31
- stepConfig: () => props.spreadsheet.schema.value.steps,
32
- t
33
- });
34
- const workspaceTitle = computed(
35
- () => props.title ?? humanizeKey(props.spreadsheet.schema.value.importKey)
36
- );
37
- const workspaceDescription = computed(() => props.description);
38
- const { activeStep, activeStepIndex, steps, goToPrevStep, goToNextStep } = view;
39
- const currentStep = computed(
40
- () => steps.value.find((step) => step.value === activeStep.value) ?? steps.value[0]
41
- );
42
- const stageTitle = computed(() => {
43
- if (activeStep.value === "upload") {
44
- return resolveTextValue(
45
- props.spreadsheet.schema.value.steps?.upload?.title,
46
- t("spreadsheet.steps.upload.stageTitle")
47
- );
48
- }
49
- if (activeStep.value === "structure") {
50
- return resolveTextValue(
51
- props.spreadsheet.schema.value.steps?.structure?.title,
52
- t("spreadsheet.steps.structure.stageTitle")
53
- );
54
- }
55
- return currentStep.value?.title ?? humanizeKey(props.spreadsheet.schema.value.importKey);
56
- });
57
- const stageDescription = computed(() => currentStep.value?.description ?? "");
58
- const renderMode = computed(() => props.mode ?? "inline");
59
- const isFullscreen = computed(() => renderMode.value === "fullscreen");
60
- const isClosable = computed(() => props.closable ?? false);
61
- const isPreparingNextStep = ref(false);
62
- const hasWorkbook = computed(() => Boolean(props.spreadsheet.workbook.value));
63
- const hasHeaders = computed(() => props.spreadsheet.headers.value.length > 0);
64
- function getSchemaMaxRecords(schema) {
65
- if ("file" in schema && schema.file && isObject(schema.file) && "maxRecords" in schema.file) {
66
- return isNumber(schema.file.maxRecords) ? schema.file.maxRecords : void 0;
67
- }
68
- if ("source" in schema && schema.source && isObject(schema.source) && "maxRecords" in schema.source) {
69
- return isNumber(schema.source.maxRecords) ? schema.source.maxRecords : void 0;
70
- }
71
- return void 0;
72
- }
73
- const canGoNext = computed(() => {
74
- if (activeStep.value === "upload") {
75
- return hasWorkbook.value;
76
- }
77
- if (activeStep.value === "structure") {
78
- return hasWorkbook.value && hasHeaders.value;
79
- }
80
- if (activeStep.value === "matching") {
81
- return hasWorkbook.value && hasHeaders.value;
82
- }
83
- if (activeStep.value === "references") {
84
- return hasWorkbook.value && hasHeaders.value;
85
- }
86
- return false;
87
- });
88
- const fileName = computed(() => props.spreadsheet.workbook.value?.fileName);
89
- const maxRecords = computed(() => getSchemaMaxRecords(props.spreadsheet.schema.value) ?? Infinity);
90
- const importableRowCount = computed(
91
- () => Math.min(props.spreadsheet.rowSummary.value.totalRows, maxRecords.value)
92
- );
93
- const overflowRowCount = computed(
94
- () => Math.max(props.spreadsheet.rowSummary.value.totalRows - importableRowCount.value, 0)
95
- );
96
- const sidebarItems = computed(
97
- () => steps.value.map((step, index) => ({
98
- ...step,
99
- disabled: step.value !== "upload" && !hasWorkbook.value,
100
- status: index < activeStepIndex.value ? "done" : step.value === activeStep.value ? "active" : "pending"
101
- }))
102
- );
103
- function humanizeKey(value) {
104
- return value.split(".").at(-1)?.replaceAll(/([a-z0-9])([A-Z])/gu, "$1 $2").replaceAll(/[_-]+/gu, " ").replaceAll(/\b\w/gu, (char) => char.toUpperCase()) ?? value;
105
- }
106
- const actionHint = computed(() => {
107
- if (activeStep.value === "structure") {
108
- return t("spreadsheet.common.clickToChangeHeaderRow");
109
- }
110
- if (activeStep.value === "references") {
111
- return t("spreadsheet.common.referencesStepHint");
112
- }
113
- return void 0;
114
- });
115
- const primaryActionLabel = computed(() => {
116
- if (activeStep.value === "review") {
117
- return t("spreadsheet.common.importRows", { count: importableRowCount.value });
118
- }
119
- return t("spreadsheet.common.continue");
120
- });
121
- const primaryActionColor = computed(
122
- () => activeStep.value === "review" ? "success" : "primary"
123
- );
124
- const primaryActionBusyLabel = computed(() => t("spreadsheet.common.preparingReview"));
125
- function getNextStepValue() {
126
- return steps.value[activeStepIndex.value + 1]?.value;
127
- }
128
- function waitForPaint() {
129
- return new Promise(
130
- (resolve) => requestAnimationFrame(() => requestAnimationFrame(() => resolve()))
131
- );
132
- }
133
- async function handlePrimaryAction() {
134
- if (activeStep.value === "review") {
135
- void props.spreadsheet.refresh();
136
- return;
137
- }
138
- if (!canGoNext.value) {
139
- return;
140
- }
141
- const nextStep = getNextStepValue();
142
- if (nextStep === "review") {
143
- isPreparingNextStep.value = true;
144
- await nextTick();
145
- await waitForPaint();
146
- }
147
- goToNextStep();
148
- if (nextStep === "review") {
149
- await nextTick();
150
- isPreparingNextStep.value = false;
151
- }
152
- }
153
- function handleClose() {
154
- emit("close");
155
- }
156
- watch(hasWorkbook, (nextHasWorkbook) => {
157
- if (!nextHasWorkbook) {
158
- return;
159
- }
160
- if (activeStep.value !== "upload") {
161
- return;
162
- }
163
- goToNextStep();
164
- });
17
+ const { t } = useUiToolsLocale();
18
+ const wizard = useSpreadsheetSteps(props.importer, props.steps);
165
19
  </script>
166
20
 
167
21
  <template>
168
- <div
169
- class="grid h-full overflow-hidden bg-default lg:grid-cols-[320px_minmax(0,1fr)]"
170
- :class="
171
- isFullscreen ? 'min-h-full' : 'min-h-[44rem] rounded-[var(--ui-radius)] border border-default/70 shadow-sm'
172
- "
173
- >
174
- <SpreadsheetImportSidebar
175
- :title="workspaceTitle"
176
- :description="workspaceDescription"
177
- :items="sidebarItems"
178
- />
179
-
180
- <div class="grid min-h-0 grid-rows-[minmax(0,1fr)_auto] bg-default">
181
- <div
182
- class="relative min-h-0"
183
- :class="
184
- activeStep === 'matching' || activeStep === 'review' ? 'overflow-hidden' : 'overflow-y-auto'
185
- "
186
- >
187
- <div
188
- v-if="isPreparingNextStep"
189
- class="absolute inset-0 z-10 flex items-center justify-center bg-default/72 backdrop-blur-sm"
190
- >
191
- <div
192
- class="flex items-center gap-3 rounded-[var(--ui-radius)] border border-default/70 bg-default px-4 py-3 shadow-sm"
193
- >
194
- <div
195
- class="size-4 animate-spin rounded-full border-2 border-default border-t-primary"
196
- />
197
- <div class="grid gap-0.5">
198
- <span class="text-sm font-medium text-highlighted">{{ primaryActionBusyLabel }}</span>
199
- <span class="text-xs text-muted">{{
200
- t("spreadsheet.common.preparingReviewDescription")
201
- }}</span>
202
- </div>
203
- </div>
204
- </div>
205
-
206
- <div
207
- class="grid px-6 py-5 lg:px-10 lg:py-6"
208
- :class="
209
- activeStep === 'matching' || activeStep === 'review' ? 'h-full grid-rows-[auto_minmax(0,1fr)] gap-4' : 'gap-4'
210
- "
211
- >
212
- <div class="grid gap-3" :class="activeStep === 'upload' ? '' : 'pb-2'">
213
- <SpreadsheetImportHeader
214
- :title="stageTitle"
215
- :description="stageDescription"
216
- :closable="isClosable"
217
- @close="handleClose"
218
- />
219
-
220
- <SpreadsheetImportFileBar
221
- v-if="activeStep !== 'upload'"
222
- :file-name="fileName"
223
- :total-sheets="spreadsheet.workbook.value?.sheets.length ?? 0"
224
- :row-count="spreadsheet.rows.value.length"
225
- :has-workbook="hasWorkbook"
226
- />
227
- </div>
228
-
229
- <SpreadsheetImportUploadStep
230
- v-if="activeStep === 'upload'"
231
- :spreadsheet="spreadsheet"
232
- :on-download-template="onDownloadTemplate"
22
+ <SpreadsheetImportRoot :importer="importer" :steps="wizard" :locale="locale">
23
+ <div
24
+ data-spreadsheet-import
25
+ class="grid min-w-0 overflow-hidden rounded-xl border border-default bg-default"
26
+ >
27
+ <div class="grid gap-5 px-5 pt-5 sm:px-7">
28
+ <div class="flex min-w-0 items-center gap-3">
29
+ <h2 class="truncate text-base font-semibold text-highlighted">
30
+ {{ title ?? t("spreadsheet.steps.submit") }}
31
+ </h2>
32
+ <span v-if="importer.file.name" class="hidden truncate text-sm text-muted sm:inline">{{
33
+ importer.file.name
34
+ }}</span>
35
+ <UButton
36
+ v-if="closable"
37
+ class="ms-auto"
38
+ color="neutral"
39
+ variant="ghost"
40
+ size="sm"
41
+ square
42
+ icon="i-lucide-x"
43
+ :aria-label="t('spreadsheet.nav.close')"
44
+ @click="emit('close')"
233
45
  />
234
-
235
- <SpreadsheetImportStructureStep
236
- v-else-if="activeStep === 'structure'"
237
- :spreadsheet="spreadsheet"
238
- />
239
-
240
- <SpreadsheetImportMatchingStep
241
- v-else-if="activeStep === 'matching'"
242
- :spreadsheet="spreadsheet"
243
- />
244
-
245
- <SpreadsheetImportReferencesStep
246
- v-else-if="activeStep === 'references'"
247
- :spreadsheet="spreadsheet"
248
- />
249
-
250
- <SpreadsheetImportReviewStep v-else :spreadsheet="spreadsheet" />
251
46
  </div>
47
+ <SpreadsheetImportStepper />
48
+ </div>
49
+ <div class="min-w-0 px-5 py-6 sm:px-7">
50
+ <SpreadsheetImportStep headings>
51
+ <template v-for="(_, name) in $slots" #[name]="scope">
52
+ <slot :name="name" v-bind="scope" />
53
+ </template>
54
+ </SpreadsheetImportStep>
55
+ </div>
56
+ <div class="border-t border-default bg-elevated/40 px-5 py-4 sm:px-7">
57
+ <SpreadsheetImportStepNav :closable="closable" @close="emit('close')" />
252
58
  </div>
253
-
254
- <SpreadsheetImportFooter
255
- v-if="activeStep !== 'upload'"
256
- :hint="actionHint"
257
- :show-previous="activeStep !== 'upload'"
258
- :previous-label="t('spreadsheet.common.previous')"
259
- :primary-label="primaryActionLabel"
260
- :primary-disabled="activeStep !== 'review' && !canGoNext"
261
- :primary-loading="isPreparingNextStep"
262
- :primary-color="primaryActionColor"
263
- :primary-icon="activeStep === 'review' ? 'i-lucide-check' : 'i-lucide-arrow-right'"
264
- :show-export="activeStep === 'review' && overflowRowCount > 0"
265
- :export-label="t('spreadsheet.common.exportDiscardedRows', { count: overflowRowCount })"
266
- :meta-text="
267
- t('spreadsheet.common.importSummary', {
268
- importable: importableRowCount,
269
- total: spreadsheet.rowSummary.value.totalRows
270
- })
271
- "
272
- @previous="goToPrevStep"
273
- @primary="handlePrimaryAction"
274
- />
275
59
  </div>
276
- </div>
60
+ </SpreadsheetImportRoot>
277
61
  </template>