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
@@ -0,0 +1,98 @@
1
+ <script setup>
2
+ import UButton from "@nuxt/ui/components/Button.vue";
3
+ import USelect from "@nuxt/ui/components/Select.vue";
4
+ import { computed } from "vue";
5
+ import { useUiToolsLocale } from "#ui-tools/i18n";
6
+ const NONE = -1;
7
+ const props = defineProps({
8
+ field: { type: Object, required: true },
9
+ headers: { type: Array, required: true },
10
+ suggestions: { type: Boolean, required: true }
11
+ });
12
+ const emit = defineEmits(["assign", "ignore", "reset"]);
13
+ const { t } = useUiToolsLocale();
14
+ const items = computed(() => [
15
+ { label: t("spreadsheet.columns.none"), value: NONE },
16
+ ...props.headers.filter((header) => header.text).map((header) => ({ label: header.text, value: header.index }))
17
+ ]);
18
+ const tone = computed(
19
+ () => ({
20
+ default: "bg-info",
21
+ matched: props.field.assignedBy === "user" ? "bg-primary" : "bg-success",
22
+ missing: "bg-error",
23
+ unmatched: "bg-accented"
24
+ })[props.field.status]
25
+ );
26
+ function select(value) {
27
+ if (value === NONE) emit("ignore");
28
+ else emit("assign", value);
29
+ }
30
+ function useSuggestion() {
31
+ if (props.field.suggestion) emit("assign", props.field.suggestion.header.index);
32
+ }
33
+ </script>
34
+
35
+ <template>
36
+ <div
37
+ :data-spreadsheet-field="field.path"
38
+ :data-status="field.status"
39
+ class="grid grid-cols-1 items-center gap-x-4 gap-y-1.5 px-4 py-3 sm:grid-cols-[minmax(0,1fr)_minmax(0,1.05fr)_minmax(0,1fr)]"
40
+ :class="field.status === 'missing' ? 'bg-error/3' : ''"
41
+ >
42
+ <div class="flex min-w-0 items-center gap-2.5">
43
+ <span class="size-2 shrink-0 rounded-full" :class="tone" />
44
+ <span class="truncate font-medium text-highlighted">{{ field.label }}</span>
45
+ <span v-if="field.required" class="shrink-0 text-error" aria-hidden="true">*</span>
46
+ </div>
47
+ <USelect
48
+ :model-value="field.header?.index ?? NONE"
49
+ :items="items"
50
+ :color="field.status === 'missing' ? 'error' : 'neutral'"
51
+ :highlight="field.status === 'missing'"
52
+ :aria-label="t('spreadsheet.columns.columnFor', { field: field.label })"
53
+ class="w-full"
54
+ @update:model-value="select"
55
+ />
56
+ <div class="min-w-0 text-[12.5px] leading-snug">
57
+ <template v-if="field.status === 'missing' && suggestions && field.suggestion">
58
+ <span class="text-muted">{{
59
+ t("spreadsheet.columns.suggestion", {
60
+ header: field.suggestion.header.text,
61
+ samples: field.suggestion.samples.join(", ")
62
+ })
63
+ }}</span>
64
+ <UButton
65
+ data-spreadsheet-use-suggestion
66
+ variant="link"
67
+ size="xs"
68
+ class="px-1"
69
+ :label="t('spreadsheet.columns.useSuggestion')"
70
+ @click="useSuggestion"
71
+ />
72
+ </template>
73
+ <span v-else-if="field.status === 'missing'" class="font-medium text-error">{{
74
+ t("spreadsheet.columns.statuses.missing")
75
+ }}</span>
76
+ <span v-else-if="field.status === 'default'" class="text-info">{{
77
+ t("spreadsheet.columns.statuses.default")
78
+ }}</span>
79
+ <span v-else-if="field.status === 'unmatched'" class="text-dimmed">{{
80
+ t("spreadsheet.columns.statuses.unmatched")
81
+ }}</span>
82
+ <span v-else class="flex min-w-0 items-center gap-1.5">
83
+ <span class="truncate text-muted">{{
84
+ field.samples.join(" \xB7 ") || t("spreadsheet.columns.emptyColumn")
85
+ }}</span>
86
+ <UButton
87
+ v-if="field.assignedBy === 'user'"
88
+ variant="link"
89
+ color="neutral"
90
+ size="xs"
91
+ class="shrink-0 px-0"
92
+ :label="t('spreadsheet.columns.reset')"
93
+ @click="emit('reset')"
94
+ />
95
+ </span>
96
+ </div>
97
+ </div>
98
+ </template>
@@ -0,0 +1,17 @@
1
+ import type { SpreadsheetFieldState, SpreadsheetHeaderCell } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ field: SpreadsheetFieldState;
4
+ headers: readonly SpreadsheetHeaderCell[];
5
+ suggestions: boolean;
6
+ };
7
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
8
+ reset: () => any;
9
+ assign: (header: number) => any;
10
+ ignore: () => any;
11
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
12
+ onReset?: (() => any) | undefined;
13
+ onAssign?: ((header: number) => any) | undefined;
14
+ onIgnore?: (() => any) | undefined;
15
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
+ declare const _default: typeof __VLS_export;
17
+ export default _default;
@@ -0,0 +1,17 @@
1
+ type __VLS_Props = {
2
+ title: string;
3
+ description?: string;
4
+ };
5
+ declare var __VLS_1: {};
6
+ type __VLS_Slots = {} & {
7
+ default?: (props: typeof __VLS_1) => any;
8
+ };
9
+ 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>;
10
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
13
+ type __VLS_WithSlots<T, S> = T & {
14
+ new (): {
15
+ $slots: S;
16
+ };
17
+ };
@@ -0,0 +1,20 @@
1
+ <script setup>
2
+ defineProps({
3
+ title: { type: String, required: true },
4
+ description: { type: String, required: false }
5
+ });
6
+ </script>
7
+
8
+ <template>
9
+ <div class="flex flex-wrap items-start justify-between gap-3">
10
+ <div class="grid min-w-0 gap-1">
11
+ <h3 class="text-lg font-semibold tracking-[-0.015em] text-balance text-highlighted">
12
+ {{ title }}
13
+ </h3>
14
+ <p v-if="description" class="max-w-[62ch] text-sm text-pretty text-muted">
15
+ {{ description }}
16
+ </p>
17
+ </div>
18
+ <slot />
19
+ </div>
20
+ </template>
@@ -0,0 +1,17 @@
1
+ type __VLS_Props = {
2
+ title: string;
3
+ description?: string;
4
+ };
5
+ declare var __VLS_1: {};
6
+ type __VLS_Slots = {} & {
7
+ default?: (props: typeof __VLS_1) => any;
8
+ };
9
+ 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>;
10
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
13
+ type __VLS_WithSlots<T, S> = T & {
14
+ new (): {
15
+ $slots: S;
16
+ };
17
+ };
@@ -0,0 +1,10 @@
1
+ import type { SpreadsheetRowStatus } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ status: SpreadsheetRowStatus;
4
+ count?: number;
5
+ /** Shows the label; the compact form shows an icon and the issue count. */
6
+ full?: boolean;
7
+ };
8
+ declare const __VLS_export: 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>;
9
+ declare const _default: typeof __VLS_export;
10
+ export default _default;
@@ -0,0 +1,34 @@
1
+ <script setup>
2
+ import UIcon from "@nuxt/ui/components/Icon.vue";
3
+ import { computed } from "vue";
4
+ import { useUiToolsLocale } from "#ui-tools/i18n";
5
+ const props = defineProps({
6
+ status: { type: String, required: true },
7
+ count: { type: Number, required: false },
8
+ full: { type: Boolean, required: false }
9
+ });
10
+ const { t } = useUiToolsLocale();
11
+ const config = computed(
12
+ () => ({
13
+ blocking: { classes: "bg-error/10 text-error", icon: "i-lucide-circle-x" },
14
+ discarded: { classes: "bg-elevated text-muted", icon: "i-lucide-ban" },
15
+ valid: { classes: "text-success", icon: "i-lucide-circle-check" },
16
+ warning: { classes: "bg-warning/12 text-warning", icon: "i-lucide-triangle-alert" }
17
+ })[props.status]
18
+ );
19
+ const label = computed(() => t(`spreadsheet.table.status.${props.status}`));
20
+ </script>
21
+
22
+ <template>
23
+ <span
24
+ class="inline-flex h-5 shrink-0 items-center gap-1 rounded-md px-1.5 text-[11.5px] font-semibold whitespace-nowrap tabular-nums"
25
+ :class="config.classes"
26
+ :title="count ? `${label} \xB7 ${count}` : label"
27
+ >
28
+ <UIcon :name="config.icon" class="size-3.5" />
29
+ <template v-if="full"
30
+ >{{ label }}<template v-if="count"> · {{ count }}</template></template
31
+ >
32
+ <template v-else-if="count">{{ count }}</template>
33
+ </span>
34
+ </template>
@@ -0,0 +1,10 @@
1
+ import type { SpreadsheetRowStatus } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ status: SpreadsheetRowStatus;
4
+ count?: number;
5
+ /** Shows the label; the compact form shows an icon and the issue count. */
6
+ full?: boolean;
7
+ };
8
+ declare const __VLS_export: 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>;
9
+ declare const _default: typeof __VLS_export;
10
+ export default _default;
@@ -0,0 +1,13 @@
1
+ import type { SpreadsheetResolvedOption, SpreadsheetValueAnswer, SpreadsheetValueQuestion } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ question: SpreadsheetValueQuestion;
4
+ choices: readonly SpreadsheetResolvedOption[];
5
+ search: (text: string) => Promise<readonly SpreadsheetResolvedOption[]>;
6
+ };
7
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
8
+ answer: (answer: SpreadsheetValueAnswer) => any;
9
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
10
+ onAnswer?: ((answer: SpreadsheetValueAnswer) => any) | undefined;
11
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
@@ -0,0 +1,113 @@
1
+ <script setup>
2
+ import USelectMenu from "@nuxt/ui/components/SelectMenu.vue";
3
+ import { refDebounced } from "@vueuse/core";
4
+ import { computed, shallowRef, watch } from "vue";
5
+ import { useUiToolsLocale } from "#ui-tools/i18n";
6
+ const props = defineProps({
7
+ question: { type: Object, required: true },
8
+ choices: { type: Array, required: true },
9
+ search: { type: Function, required: true }
10
+ });
11
+ const emit = defineEmits(["answer"]);
12
+ const { t } = useUiToolsLocale();
13
+ const term = shallowRef("");
14
+ const debounced = refDebounced(term, 250);
15
+ const found = shallowRef([]);
16
+ const searching = shallowRef(false);
17
+ watch(debounced, async (text) => {
18
+ if (!props.question.remote) return;
19
+ searching.value = true;
20
+ try {
21
+ found.value = await props.search(text);
22
+ } finally {
23
+ searching.value = false;
24
+ }
25
+ });
26
+ const options = computed(() => {
27
+ const list = props.question.remote ? found.value : props.choices;
28
+ const answer = props.question.answer;
29
+ if (answer?.action === "map" && !list.some((option) => option.value === answer.value))
30
+ return [{ aliases: [], label: answer.label, value: answer.value }, ...list];
31
+ return list;
32
+ });
33
+ const items = computed(() => [
34
+ ...options.value.map((option, index) => ({ label: option.label, value: `option:${index}` })),
35
+ { type: "separator" },
36
+ ...props.question.canCreate ? [
37
+ {
38
+ icon: "i-lucide-plus",
39
+ label: t("spreadsheet.values.create", { value: props.question.value }),
40
+ value: "action:create"
41
+ }
42
+ ] : [],
43
+ {
44
+ icon: "i-lucide-eraser",
45
+ label: t("spreadsheet.values.leaveEmpty"),
46
+ value: "action:leave-empty"
47
+ },
48
+ { icon: "i-lucide-ban", label: t("spreadsheet.values.skipRows"), value: "action:skip-rows" }
49
+ ]);
50
+ const selected = computed(() => {
51
+ const answer = props.question.answer;
52
+ if (!answer) return void 0;
53
+ if (answer.action !== "map") return `action:${answer.action}`;
54
+ const index = options.value.findIndex((option) => option.value === answer.value);
55
+ return index < 0 ? void 0 : `option:${index}`;
56
+ });
57
+ const status = computed(
58
+ () => props.question.state === "open" ? "open" : props.question.answeredBy === "policy" ? "policy" : "user"
59
+ );
60
+ function select(value) {
61
+ if (!value) return;
62
+ if (value === "action:create") emit("answer", { action: "create" });
63
+ else if (value === "action:leave-empty") emit("answer", { action: "leave-empty" });
64
+ else if (value === "action:skip-rows") emit("answer", { action: "skip-rows" });
65
+ else {
66
+ const option = options.value[Number(value.slice("option:".length))];
67
+ if (option) emit("answer", { action: "map", label: option.label, value: option.value });
68
+ }
69
+ }
70
+ </script>
71
+
72
+ <template>
73
+ <div
74
+ :data-spreadsheet-value="question.id"
75
+ :data-state="question.state"
76
+ class="grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-4 gap-y-2 px-4 py-3 sm:grid-cols-[minmax(0,1fr)_4.5rem_minmax(0,1.15fr)_6.5rem]"
77
+ :class="question.state === 'open' ? 'bg-warning/4' : ''"
78
+ >
79
+ <span
80
+ class="line-clamp-2 min-w-0 font-medium break-words text-highlighted"
81
+ :title="question.value"
82
+ >{{ question.value }}</span
83
+ >
84
+ <span class="text-end text-sm text-muted tabular-nums sm:text-start">{{
85
+ t("spreadsheet.values.rowCount", { count: question.rows.length })
86
+ }}</span>
87
+ <USelectMenu
88
+ v-model:search-term="term"
89
+ :model-value="selected"
90
+ :items="items"
91
+ value-key="value"
92
+ :ignore-filter="question.remote"
93
+ :loading="searching"
94
+ :placeholder="t('spreadsheet.values.choose')"
95
+ :search-input="{ placeholder: t('spreadsheet.values.search') }"
96
+ :color="question.state === 'open' ? 'warning' : 'neutral'"
97
+ :highlight="question.state === 'open'"
98
+ :aria-label="t('spreadsheet.values.valueFor', { value: question.value })"
99
+ class="col-span-2 w-full sm:col-span-1"
100
+ @update:model-value="select"
101
+ />
102
+ <span
103
+ class="hidden h-5.5 items-center justify-self-start rounded-full px-2 text-[11.5px] font-semibold whitespace-nowrap sm:inline-flex"
104
+ :class="{
105
+ 'bg-warning/12 text-warning': status === 'open',
106
+ 'bg-primary/10 text-primary': status === 'user',
107
+ 'bg-elevated text-muted': status === 'policy'
108
+ }"
109
+ >
110
+ {{ t(`spreadsheet.values.statuses.${status}`) }}
111
+ </span>
112
+ </div>
113
+ </template>
@@ -0,0 +1,13 @@
1
+ import type { SpreadsheetResolvedOption, SpreadsheetValueAnswer, SpreadsheetValueQuestion } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ question: SpreadsheetValueQuestion;
4
+ choices: readonly SpreadsheetResolvedOption[];
5
+ search: (text: string) => Promise<readonly SpreadsheetResolvedOption[]>;
6
+ };
7
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
8
+ answer: (answer: SpreadsheetValueAnswer) => any;
9
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
10
+ onAnswer?: ((answer: SpreadsheetValueAnswer) => any) | undefined;
11
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
@@ -0,0 +1,35 @@
1
+ import type { SpreadsheetFieldState, SpreadsheetHeaderCell, SpreadsheetImporter } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ importer?: SpreadsheetImporter;
4
+ /** `missing`: only fields without a column; renders nothing when every field has one. */
5
+ only?: 'missing';
6
+ /** Missing fields first, the others folded. Defaults to `true`. */
7
+ groupByStatus?: boolean;
8
+ /** Offers a column whose values fit a missing field. Defaults to `true`. */
9
+ suggestions?: boolean;
10
+ };
11
+ type __VLS_Slots = {
12
+ default?: (props: {
13
+ fields: readonly SpreadsheetFieldState[];
14
+ headers: readonly SpreadsheetHeaderCell[];
15
+ assign: (field: string, header: number) => void;
16
+ ignore: (field: string) => void;
17
+ reset: (field: string) => void;
18
+ }) => unknown;
19
+ field?: (props: {
20
+ field: SpreadsheetFieldState;
21
+ }) => unknown;
22
+ };
23
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
24
+ only: "missing";
25
+ suggestions: boolean;
26
+ groupByStatus: boolean;
27
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
29
+ declare const _default: typeof __VLS_export;
30
+ export default _default;
31
+ type __VLS_WithSlots<T, S> = T & {
32
+ new (): {
33
+ $slots: S;
34
+ };
35
+ };
@@ -0,0 +1,154 @@
1
+ <script setup>
2
+ import UIcon from "@nuxt/ui/components/Icon.vue";
3
+ import { computed, shallowRef, watch, watchEffect } from "vue";
4
+ import { useUiToolsLocale } from "#ui-tools/i18n";
5
+ import { useSpreadsheetImporter } from "../../composables/use-spreadsheet-import-context";
6
+ import SpreadsheetImportColumnRow from "../internal/spreadsheet-import-column-row.vue";
7
+ const props = defineProps({
8
+ importer: { type: Object, required: false },
9
+ only: { type: String, required: false, default: void 0 },
10
+ groupByStatus: { type: Boolean, required: false, default: true },
11
+ suggestions: { type: Boolean, required: false, default: true }
12
+ });
13
+ defineSlots();
14
+ const importer = useSpreadsheetImporter(() => props.importer);
15
+ const { t } = useUiToolsLocale();
16
+ const open = shallowRef(false);
17
+ const fields = computed(() => importer.value.columns.fields.filter((field) => !field.from));
18
+ const attentionPaths = shallowRef(/* @__PURE__ */ new Set());
19
+ watch(
20
+ () => importer.value.columns.headers,
21
+ () => {
22
+ attentionPaths.value = /* @__PURE__ */ new Set();
23
+ }
24
+ );
25
+ watchEffect(() => {
26
+ if (!importer.value.file.loaded) return;
27
+ const missing = fields.value.filter(
28
+ (field) => field.status === "missing" && !attentionPaths.value.has(field.path)
29
+ );
30
+ if (missing.length)
31
+ attentionPaths.value = /* @__PURE__ */ new Set([...attentionPaths.value, ...missing.map((field) => field.path)]);
32
+ });
33
+ const attention = computed(
34
+ () => fields.value.filter(
35
+ (field) => attentionPaths.value.has(field.path) || field.status === "missing"
36
+ )
37
+ );
38
+ const others = computed(() => fields.value.filter((field) => !attention.value.includes(field)));
39
+ const sections = computed(() => {
40
+ const list = [];
41
+ for (const field of others.value) {
42
+ const key = field.group?.path ?? "";
43
+ const section = list.find((entry) => entry.key === key);
44
+ if (section) section.fields.push(field);
45
+ else list.push({ fields: [field], key, label: field.group?.label ?? "" });
46
+ }
47
+ return list.sort((left, right) => (left.key ? 1 : 0) - (right.key ? 1 : 0));
48
+ });
49
+ const unused = computed(() => importer.value.columns.unusedHeaders.map((header) => header.text));
50
+ const visible = computed(
51
+ () => importer.value.file.loaded && (props.only === "missing" ? attention.value.length > 0 : fields.value.length > 0)
52
+ );
53
+ function assign(field, header) {
54
+ importer.value.columns.assign(field, header);
55
+ }
56
+ function ignore(field) {
57
+ importer.value.columns.ignore(field);
58
+ }
59
+ function reset(field) {
60
+ importer.value.columns.reset(field);
61
+ }
62
+ </script>
63
+
64
+ <template>
65
+ <div v-if="visible" data-spreadsheet-column-mapping class="grid gap-4">
66
+ <slot
67
+ :fields="fields"
68
+ :headers="importer.columns.headers"
69
+ :assign="assign"
70
+ :ignore="ignore"
71
+ :reset="reset"
72
+ >
73
+ <div
74
+ v-if="attention.length || !groupByStatus"
75
+ class="divide-y divide-default overflow-hidden rounded-xl border border-default bg-default"
76
+ >
77
+ <template v-for="field in groupByStatus ? attention : fields" :key="field.path">
78
+ <slot name="field" :field="field">
79
+ <SpreadsheetImportColumnRow
80
+ :field="field"
81
+ :headers="importer.columns.headers"
82
+ :suggestions="suggestions"
83
+ @assign="(header) => assign(field.path, header)"
84
+ @ignore="ignore(field.path)"
85
+ @reset="reset(field.path)"
86
+ />
87
+ </slot>
88
+ </template>
89
+ </div>
90
+ <div
91
+ v-else-if="only !== 'missing'"
92
+ class="flex items-center gap-3 rounded-xl border border-default bg-default px-4 py-3.5"
93
+ >
94
+ <span
95
+ class="grid size-8 shrink-0 place-items-center rounded-full bg-success/10 text-success"
96
+ >
97
+ <UIcon name="i-lucide-check" class="size-4" />
98
+ </span>
99
+ <span class="font-medium text-highlighted">{{ t("spreadsheet.columns.allFound") }}</span>
100
+ </div>
101
+
102
+ <div
103
+ v-if="groupByStatus && only !== 'missing' && others.length"
104
+ class="overflow-hidden rounded-xl border border-default bg-default"
105
+ >
106
+ <button
107
+ type="button"
108
+ class="flex w-full items-center gap-2 px-4 py-3 text-start text-sm font-medium text-toned hover:bg-elevated/60"
109
+ :aria-expanded="open"
110
+ @click="open = !open"
111
+ >
112
+ <UIcon
113
+ name="i-lucide-chevron-right"
114
+ class="size-4 text-dimmed transition-transform"
115
+ :class="open ? 'rotate-90' : ''"
116
+ />
117
+ {{
118
+ t("spreadsheet.columns.found", {
119
+ count: others.filter((field2) => field2.status === "matched").length
120
+ })
121
+ }}
122
+ </button>
123
+ <div v-if="open" class="border-t border-default">
124
+ <template v-for="section in sections" :key="section.key">
125
+ <div
126
+ v-if="section.label"
127
+ class="border-b border-default bg-elevated/50 px-4 py-1.5 text-[11px] font-semibold tracking-[0.08em] text-dimmed uppercase"
128
+ >
129
+ {{ section.label }}
130
+ </div>
131
+ <div class="divide-y divide-default border-b border-default last:border-b-0">
132
+ <template v-for="field in section.fields" :key="field.path">
133
+ <slot name="field" :field="field">
134
+ <SpreadsheetImportColumnRow
135
+ :field="field"
136
+ :headers="importer.columns.headers"
137
+ :suggestions="suggestions"
138
+ @assign="(header) => assign(field.path, header)"
139
+ @ignore="ignore(field.path)"
140
+ @reset="reset(field.path)"
141
+ />
142
+ </slot>
143
+ </template>
144
+ </div>
145
+ </template>
146
+ </div>
147
+ </div>
148
+
149
+ <p v-if="only !== 'missing' && unused.length" class="text-sm text-muted">
150
+ {{ t("spreadsheet.columns.unused", { columns: unused.join(", ") }) }}
151
+ </p>
152
+ </slot>
153
+ </div>
154
+ </template>
@@ -0,0 +1,35 @@
1
+ import type { SpreadsheetFieldState, SpreadsheetHeaderCell, SpreadsheetImporter } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ importer?: SpreadsheetImporter;
4
+ /** `missing`: only fields without a column; renders nothing when every field has one. */
5
+ only?: 'missing';
6
+ /** Missing fields first, the others folded. Defaults to `true`. */
7
+ groupByStatus?: boolean;
8
+ /** Offers a column whose values fit a missing field. Defaults to `true`. */
9
+ suggestions?: boolean;
10
+ };
11
+ type __VLS_Slots = {
12
+ default?: (props: {
13
+ fields: readonly SpreadsheetFieldState[];
14
+ headers: readonly SpreadsheetHeaderCell[];
15
+ assign: (field: string, header: number) => void;
16
+ ignore: (field: string) => void;
17
+ reset: (field: string) => void;
18
+ }) => unknown;
19
+ field?: (props: {
20
+ field: SpreadsheetFieldState;
21
+ }) => unknown;
22
+ };
23
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
24
+ only: "missing";
25
+ suggestions: boolean;
26
+ groupByStatus: boolean;
27
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
29
+ declare const _default: typeof __VLS_export;
30
+ export default _default;
31
+ type __VLS_WithSlots<T, S> = T & {
32
+ new (): {
33
+ $slots: S;
34
+ };
35
+ };
@@ -0,0 +1,23 @@
1
+ import type { SpreadsheetImporter } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ importer?: SpreadsheetImporter;
4
+ };
5
+ declare var __VLS_1: {
6
+ load: (source: import("../../types/index.js").SpreadsheetFileSource, name?: string) => void;
7
+ paste: (text: string, name?: string) => void;
8
+ reading: boolean;
9
+ error: unknown;
10
+ accept: readonly string[];
11
+ };
12
+ type __VLS_Slots = {} & {
13
+ default?: (props: typeof __VLS_1) => any;
14
+ };
15
+ 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>;
16
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
17
+ declare const _default: typeof __VLS_export;
18
+ export default _default;
19
+ type __VLS_WithSlots<T, S> = T & {
20
+ new (): {
21
+ $slots: S;
22
+ };
23
+ };