@welldot/vue 0.0.0-stage → 0.1.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 (293) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +526 -2
  3. package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
  4. package/dist/_virtual/icons/ph/caret-down.js +21 -0
  5. package/dist/_virtual/icons/ph/caret-down.js.map +1 -0
  6. package/dist/_virtual/icons/ph/info.js +21 -0
  7. package/dist/_virtual/icons/ph/info.js.map +1 -0
  8. package/dist/_virtual/icons/ph/pencil-simple-line.js +21 -0
  9. package/dist/_virtual/icons/ph/pencil-simple-line.js.map +1 -0
  10. package/dist/_virtual/icons/ph/pencil-simple.js +21 -0
  11. package/dist/_virtual/icons/ph/pencil-simple.js.map +1 -0
  12. package/dist/_virtual/icons/ph/plus.js +21 -0
  13. package/dist/_virtual/icons/ph/plus.js.map +1 -0
  14. package/dist/_virtual/icons/ph/x.js +21 -0
  15. package/dist/_virtual/icons/ph/x.js.map +1 -0
  16. package/dist/components/WellChip.d.ts +30 -0
  17. package/dist/components/WellChip.d.ts.map +1 -0
  18. package/dist/components/WellChip.js +9 -0
  19. package/dist/components/WellChip.js.map +1 -0
  20. package/dist/components/WellChip.vue_vue_type_script_setup_true_lang.js +43 -0
  21. package/dist/components/WellChip.vue_vue_type_script_setup_true_lang.js.map +1 -0
  22. package/dist/components/WellComboSelect.d.ts +19 -0
  23. package/dist/components/WellComboSelect.d.ts.map +1 -0
  24. package/dist/components/WellComboSelect.js +7 -0
  25. package/dist/components/WellComboSelect.js.map +1 -0
  26. package/dist/components/WellComboSelect.vue_vue_type_script_setup_true_lang.js +31 -0
  27. package/dist/components/WellComboSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
  28. package/dist/components/WellInfoPopover.d.ts +31 -0
  29. package/dist/components/WellInfoPopover.d.ts.map +1 -0
  30. package/dist/components/WellInfoPopover.js +7 -0
  31. package/dist/components/WellInfoPopover.js.map +1 -0
  32. package/dist/components/WellInfoPopover.vue_vue_type_script_setup_true_lang.js +50 -0
  33. package/dist/components/WellInfoPopover.vue_vue_type_script_setup_true_lang.js.map +1 -0
  34. package/dist/components/WellInputNumber.d.ts +4 -0
  35. package/dist/components/WellInputNumber.d.ts.map +1 -0
  36. package/dist/components/WellInputNumber.js +7 -0
  37. package/dist/components/WellInputNumber.js.map +1 -0
  38. package/dist/components/WellInputNumber.vue_vue_type_script_setup_true_lang.js +16 -0
  39. package/dist/components/WellInputNumber.vue_vue_type_script_setup_true_lang.js.map +1 -0
  40. package/dist/components/WellLabeledField.d.ts +22 -0
  41. package/dist/components/WellLabeledField.d.ts.map +1 -0
  42. package/dist/components/WellLabeledField.js +7 -0
  43. package/dist/components/WellLabeledField.js.map +1 -0
  44. package/dist/components/WellLabeledField.vue_vue_type_script_setup_true_lang.js +32 -0
  45. package/dist/components/WellLabeledField.vue_vue_type_script_setup_true_lang.js.map +1 -0
  46. package/dist/components/WellTagSelect.d.ts +21 -0
  47. package/dist/components/WellTagSelect.d.ts.map +1 -0
  48. package/dist/components/WellTagSelect.js +7 -0
  49. package/dist/components/WellTagSelect.js.map +1 -0
  50. package/dist/components/WellTagSelect.vue_vue_type_script_setup_true_lang.js +66 -0
  51. package/dist/components/WellTagSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
  52. package/dist/components/WellTextureSelect.d.ts +30 -0
  53. package/dist/components/WellTextureSelect.d.ts.map +1 -0
  54. package/dist/components/WellTextureSelect.js +7 -0
  55. package/dist/components/WellTextureSelect.js.map +1 -0
  56. package/dist/components/WellTextureSelect.vue_vue_type_script_setup_true_lang.js +103 -0
  57. package/dist/components/WellTextureSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
  58. package/dist/components/WellTextureThumbnail.d.ts +10 -0
  59. package/dist/components/WellTextureThumbnail.d.ts.map +1 -0
  60. package/dist/components/WellTextureThumbnail.js +9 -0
  61. package/dist/components/WellTextureThumbnail.js.map +1 -0
  62. package/dist/components/WellTextureThumbnail.vue_vue_type_script_setup_true_lang.js +393 -0
  63. package/dist/components/WellTextureThumbnail.vue_vue_type_script_setup_true_lang.js.map +1 -0
  64. package/dist/components/WellUnitInput.d.ts +19 -0
  65. package/dist/components/WellUnitInput.d.ts.map +1 -0
  66. package/dist/components/WellUnitInput.js +7 -0
  67. package/dist/components/WellUnitInput.js.map +1 -0
  68. package/dist/components/WellUnitInput.vue_vue_type_script_setup_true_lang.js +41 -0
  69. package/dist/components/WellUnitInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
  70. package/dist/components/parts/WellInfoTrigger.d.ts +8 -0
  71. package/dist/components/parts/WellInfoTrigger.d.ts.map +1 -0
  72. package/dist/components/parts/WellInfoTrigger.js +7 -0
  73. package/dist/components/parts/WellInfoTrigger.js.map +1 -0
  74. package/dist/components/parts/WellInfoTrigger.vue_vue_type_script_setup_true_lang.js +26 -0
  75. package/dist/components/parts/WellInfoTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -0
  76. package/dist/composables/useWellNumberFormat.d.ts +12 -0
  77. package/dist/composables/useWellNumberFormat.d.ts.map +1 -0
  78. package/dist/composables/useWellNumberFormat.js +25 -0
  79. package/dist/composables/useWellNumberFormat.js.map +1 -0
  80. package/dist/composables/useWellText.d.ts +11 -0
  81. package/dist/composables/useWellText.d.ts.map +1 -0
  82. package/dist/composables/useWellText.js +15 -0
  83. package/dist/composables/useWellText.js.map +1 -0
  84. package/dist/composables/useWellUnits.d.ts +29 -0
  85. package/dist/composables/useWellUnits.d.ts.map +1 -0
  86. package/dist/composables/useWellUnits.js +52 -0
  87. package/dist/composables/useWellUnits.js.map +1 -0
  88. package/dist/config.d.ts +110 -0
  89. package/dist/config.d.ts.map +1 -0
  90. package/dist/config.js +76 -0
  91. package/dist/config.js.map +1 -0
  92. package/dist/grid/WellDataGrid.d.ts +29 -0
  93. package/dist/grid/WellDataGrid.d.ts.map +1 -0
  94. package/dist/grid/WellDataGrid.js +9 -0
  95. package/dist/grid/WellDataGrid.js.map +1 -0
  96. package/dist/grid/WellDataGrid.vue_vue_type_script_setup_true_lang.js +84 -0
  97. package/dist/grid/WellDataGrid.vue_vue_type_script_setup_true_lang.js.map +1 -0
  98. package/dist/grid/cells/GridCheckboxCell.d.ts +10 -0
  99. package/dist/grid/cells/GridCheckboxCell.d.ts.map +1 -0
  100. package/dist/grid/cells/GridCheckboxCell.js +7 -0
  101. package/dist/grid/cells/GridCheckboxCell.js.map +1 -0
  102. package/dist/grid/cells/GridCheckboxCell.vue_vue_type_script_setup_true_lang.js +32 -0
  103. package/dist/grid/cells/GridCheckboxCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  104. package/dist/grid/cells/GridColorCell.d.ts +7 -0
  105. package/dist/grid/cells/GridColorCell.d.ts.map +1 -0
  106. package/dist/grid/cells/GridColorCell.js +7 -0
  107. package/dist/grid/cells/GridColorCell.js.map +1 -0
  108. package/dist/grid/cells/GridColorCell.vue_vue_type_script_setup_true_lang.js +18 -0
  109. package/dist/grid/cells/GridColorCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  110. package/dist/grid/cells/GridColorPickerEditor.d.ts +12 -0
  111. package/dist/grid/cells/GridColorPickerEditor.d.ts.map +1 -0
  112. package/dist/grid/cells/GridColorPickerEditor.js +7 -0
  113. package/dist/grid/cells/GridColorPickerEditor.js.map +1 -0
  114. package/dist/grid/cells/GridColorPickerEditor.vue_vue_type_script_setup_true_lang.js +70 -0
  115. package/dist/grid/cells/GridColorPickerEditor.vue_vue_type_script_setup_true_lang.js.map +1 -0
  116. package/dist/grid/cells/GridComboEditor.d.ts +14 -0
  117. package/dist/grid/cells/GridComboEditor.d.ts.map +1 -0
  118. package/dist/grid/cells/GridComboEditor.js +7 -0
  119. package/dist/grid/cells/GridComboEditor.js.map +1 -0
  120. package/dist/grid/cells/GridComboEditor.vue_vue_type_script_setup_true_lang.js +177 -0
  121. package/dist/grid/cells/GridComboEditor.vue_vue_type_script_setup_true_lang.js.map +1 -0
  122. package/dist/grid/cells/GridDeleteCell.d.ts +12 -0
  123. package/dist/grid/cells/GridDeleteCell.d.ts.map +1 -0
  124. package/dist/grid/cells/GridDeleteCell.js +7 -0
  125. package/dist/grid/cells/GridDeleteCell.js.map +1 -0
  126. package/dist/grid/cells/GridDeleteCell.vue_vue_type_script_setup_true_lang.js +33 -0
  127. package/dist/grid/cells/GridDeleteCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  128. package/dist/grid/cells/GridDragCell.d.ts +16 -0
  129. package/dist/grid/cells/GridDragCell.d.ts.map +1 -0
  130. package/dist/grid/cells/GridDragCell.js +7 -0
  131. package/dist/grid/cells/GridDragCell.js.map +1 -0
  132. package/dist/grid/cells/GridDragCell.vue_vue_type_script_setup_true_lang.js +50 -0
  133. package/dist/grid/cells/GridDragCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  134. package/dist/grid/cells/GridFormattedCell.d.ts +9 -0
  135. package/dist/grid/cells/GridFormattedCell.d.ts.map +1 -0
  136. package/dist/grid/cells/GridFormattedCell.js +7 -0
  137. package/dist/grid/cells/GridFormattedCell.js.map +1 -0
  138. package/dist/grid/cells/GridFormattedCell.vue_vue_type_script_setup_true_lang.js +19 -0
  139. package/dist/grid/cells/GridFormattedCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  140. package/dist/grid/cells/GridHeaderCell.d.ts +11 -0
  141. package/dist/grid/cells/GridHeaderCell.d.ts.map +1 -0
  142. package/dist/grid/cells/GridHeaderCell.js +7 -0
  143. package/dist/grid/cells/GridHeaderCell.js.map +1 -0
  144. package/dist/grid/cells/GridHeaderCell.vue_vue_type_script_setup_true_lang.js +35 -0
  145. package/dist/grid/cells/GridHeaderCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  146. package/dist/grid/cells/GridNumberEditor.d.ts +9 -0
  147. package/dist/grid/cells/GridNumberEditor.d.ts.map +1 -0
  148. package/dist/grid/cells/GridNumberEditor.js +7 -0
  149. package/dist/grid/cells/GridNumberEditor.js.map +1 -0
  150. package/dist/grid/cells/GridNumberEditor.vue_vue_type_script_setup_true_lang.js +50 -0
  151. package/dist/grid/cells/GridNumberEditor.vue_vue_type_script_setup_true_lang.js.map +1 -0
  152. package/dist/grid/cells/GridSelectButtonCell.d.ts +12 -0
  153. package/dist/grid/cells/GridSelectButtonCell.d.ts.map +1 -0
  154. package/dist/grid/cells/GridSelectButtonCell.js +7 -0
  155. package/dist/grid/cells/GridSelectButtonCell.js.map +1 -0
  156. package/dist/grid/cells/GridSelectButtonCell.vue_vue_type_script_setup_true_lang.js +52 -0
  157. package/dist/grid/cells/GridSelectButtonCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  158. package/dist/grid/cells/GridSelectCell.d.ts +9 -0
  159. package/dist/grid/cells/GridSelectCell.d.ts.map +1 -0
  160. package/dist/grid/cells/GridSelectCell.js +7 -0
  161. package/dist/grid/cells/GridSelectCell.js.map +1 -0
  162. package/dist/grid/cells/GridSelectCell.vue_vue_type_script_setup_true_lang.js +18 -0
  163. package/dist/grid/cells/GridSelectCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  164. package/dist/grid/cells/GridSelectEditor.d.ts +11 -0
  165. package/dist/grid/cells/GridSelectEditor.d.ts.map +1 -0
  166. package/dist/grid/cells/GridSelectEditor.js +7 -0
  167. package/dist/grid/cells/GridSelectEditor.js.map +1 -0
  168. package/dist/grid/cells/GridSelectEditor.vue_vue_type_script_setup_true_lang.js +51 -0
  169. package/dist/grid/cells/GridSelectEditor.vue_vue_type_script_setup_true_lang.js.map +1 -0
  170. package/dist/grid/cells/GridTextEditor.d.ts +9 -0
  171. package/dist/grid/cells/GridTextEditor.d.ts.map +1 -0
  172. package/dist/grid/cells/GridTextEditor.js +7 -0
  173. package/dist/grid/cells/GridTextEditor.js.map +1 -0
  174. package/dist/grid/cells/GridTextEditor.vue_vue_type_script_setup_true_lang.js +44 -0
  175. package/dist/grid/cells/GridTextEditor.vue_vue_type_script_setup_true_lang.js.map +1 -0
  176. package/dist/grid/cells/GridTextureSelectCell.d.ts +7 -0
  177. package/dist/grid/cells/GridTextureSelectCell.d.ts.map +1 -0
  178. package/dist/grid/cells/GridTextureSelectCell.js +7 -0
  179. package/dist/grid/cells/GridTextureSelectCell.js.map +1 -0
  180. package/dist/grid/cells/GridTextureSelectCell.vue_vue_type_script_setup_true_lang.js +19 -0
  181. package/dist/grid/cells/GridTextureSelectCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  182. package/dist/grid/cells/GridTextureSelectEditor.d.ts +13 -0
  183. package/dist/grid/cells/GridTextureSelectEditor.d.ts.map +1 -0
  184. package/dist/grid/cells/GridTextureSelectEditor.js +7 -0
  185. package/dist/grid/cells/GridTextureSelectEditor.js.map +1 -0
  186. package/dist/grid/cells/GridTextureSelectEditor.vue_vue_type_script_setup_true_lang.js +49 -0
  187. package/dist/grid/cells/GridTextureSelectEditor.vue_vue_type_script_setup_true_lang.js.map +1 -0
  188. package/dist/grid/cells/GridUnitCell.d.ts +9 -0
  189. package/dist/grid/cells/GridUnitCell.d.ts.map +1 -0
  190. package/dist/grid/cells/GridUnitCell.js +7 -0
  191. package/dist/grid/cells/GridUnitCell.js.map +1 -0
  192. package/dist/grid/cells/GridUnitCell.vue_vue_type_script_setup_true_lang.js +29 -0
  193. package/dist/grid/cells/GridUnitCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  194. package/dist/grid/cells/GridUnitEditor.d.ts +11 -0
  195. package/dist/grid/cells/GridUnitEditor.d.ts.map +1 -0
  196. package/dist/grid/cells/GridUnitEditor.js +7 -0
  197. package/dist/grid/cells/GridUnitEditor.js.map +1 -0
  198. package/dist/grid/cells/GridUnitEditor.vue_vue_type_script_setup_true_lang.js +58 -0
  199. package/dist/grid/cells/GridUnitEditor.vue_vue_type_script_setup_true_lang.js.map +1 -0
  200. package/dist/grid/columnStretchPlugin.d.ts +12 -0
  201. package/dist/grid/columnStretchPlugin.d.ts.map +1 -0
  202. package/dist/grid/columnStretchPlugin.js +35 -0
  203. package/dist/grid/columnStretchPlugin.js.map +1 -0
  204. package/dist/grid/composables/useCellTemplate.d.ts +35 -0
  205. package/dist/grid/composables/useCellTemplate.d.ts.map +1 -0
  206. package/dist/grid/composables/useCellTemplate.js +30 -0
  207. package/dist/grid/composables/useCellTemplate.js.map +1 -0
  208. package/dist/grid/composables/useGridOverlayFocusGuard.d.ts +5 -0
  209. package/dist/grid/composables/useGridOverlayFocusGuard.d.ts.map +1 -0
  210. package/dist/grid/composables/useGridOverlayFocusGuard.js +12 -0
  211. package/dist/grid/composables/useGridOverlayFocusGuard.js.map +1 -0
  212. package/dist/grid/composables/useUnitSuffix.d.ts +9 -0
  213. package/dist/grid/composables/useUnitSuffix.d.ts.map +1 -0
  214. package/dist/grid/composables/useUnitSuffix.js +13 -0
  215. package/dist/grid/composables/useUnitSuffix.js.map +1 -0
  216. package/dist/grid/index.d.ts +8 -0
  217. package/dist/grid/index.d.ts.map +1 -0
  218. package/dist/grid/index.js +4 -0
  219. package/dist/grid/parts/WellGridAddButton.d.ts +5 -0
  220. package/dist/grid/parts/WellGridAddButton.d.ts.map +1 -0
  221. package/dist/grid/parts/WellGridAddButton.js +7 -0
  222. package/dist/grid/parts/WellGridAddButton.js.map +1 -0
  223. package/dist/grid/parts/WellGridAddButton.vue_vue_type_script_setup_true_lang.js +23 -0
  224. package/dist/grid/parts/WellGridAddButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
  225. package/dist/grid/parts/WellGridDeleteButton.d.ts +5 -0
  226. package/dist/grid/parts/WellGridDeleteButton.d.ts.map +1 -0
  227. package/dist/grid/parts/WellGridDeleteButton.js +7 -0
  228. package/dist/grid/parts/WellGridDeleteButton.js.map +1 -0
  229. package/dist/grid/parts/WellGridDeleteButton.vue_vue_type_script_setup_true_lang.js +21 -0
  230. package/dist/grid/parts/WellGridDeleteButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
  231. package/dist/grid/types.d.ts +90 -0
  232. package/dist/grid/types.d.ts.map +1 -0
  233. package/dist/grid/useWellGridColumns.d.ts +40 -0
  234. package/dist/grid/useWellGridColumns.d.ts.map +1 -0
  235. package/dist/grid/useWellGridColumns.js +242 -0
  236. package/dist/grid/useWellGridColumns.js.map +1 -0
  237. package/dist/grid.css +407 -0
  238. package/dist/index.d.ts +17 -0
  239. package/dist/index.d.ts.map +1 -0
  240. package/dist/index.js +14 -0
  241. package/dist/location/WellCoordinateInput.d.ts +14 -0
  242. package/dist/location/WellCoordinateInput.d.ts.map +1 -0
  243. package/dist/location/WellCoordinateInput.js +7 -0
  244. package/dist/location/WellCoordinateInput.js.map +1 -0
  245. package/dist/location/WellCoordinateInput.vue_vue_type_script_setup_true_lang.js +53 -0
  246. package/dist/location/WellCoordinateInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
  247. package/dist/location/WellLocationMap.d.ts +22 -0
  248. package/dist/location/WellLocationMap.d.ts.map +1 -0
  249. package/dist/location/WellLocationMap.js +9 -0
  250. package/dist/location/WellLocationMap.js.map +1 -0
  251. package/dist/location/WellLocationMap.vue_vue_type_script_setup_true_lang.js +91 -0
  252. package/dist/location/WellLocationMap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  253. package/dist/location/WellLocationPicker.d.ts +32 -0
  254. package/dist/location/WellLocationPicker.d.ts.map +1 -0
  255. package/dist/location/WellLocationPicker.js +7 -0
  256. package/dist/location/WellLocationPicker.js.map +1 -0
  257. package/dist/location/WellLocationPicker.vue_vue_type_script_setup_true_lang.js +117 -0
  258. package/dist/location/WellLocationPicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  259. package/dist/location/index.d.ts +6 -0
  260. package/dist/location/index.d.ts.map +1 -0
  261. package/dist/location/index.js +5 -0
  262. package/dist/location/location.d.ts +61 -0
  263. package/dist/location/location.d.ts.map +1 -0
  264. package/dist/location/location.js +15 -0
  265. package/dist/location/location.js.map +1 -0
  266. package/dist/nuxt/module.d.ts +76 -0
  267. package/dist/nuxt/module.d.ts.map +1 -0
  268. package/dist/nuxt/module.js +129 -0
  269. package/dist/nuxt/module.js.map +1 -0
  270. package/dist/nuxt/runtime/plugin.d.ts +14 -0
  271. package/dist/nuxt/runtime/plugin.d.ts.map +1 -0
  272. package/dist/nuxt/runtime/plugin.js +13 -0
  273. package/dist/nuxt/runtime/plugin.js.map +1 -0
  274. package/dist/style.css +2 -0
  275. package/dist/tailwind.css +160 -0
  276. package/dist/theme/define.d.ts +44 -0
  277. package/dist/theme/define.d.ts.map +1 -0
  278. package/dist/theme/define.js +14 -0
  279. package/dist/theme/define.js.map +1 -0
  280. package/dist/theme/index.d.ts +5 -0
  281. package/dist/theme/index.d.ts.map +1 -0
  282. package/dist/theme/index.js +4 -0
  283. package/dist/theme/preset.d.ts +20 -0
  284. package/dist/theme/preset.d.ts.map +1 -0
  285. package/dist/theme/preset.js +977 -0
  286. package/dist/theme/preset.js.map +1 -0
  287. package/dist/theme/pt.d.ts +8 -0
  288. package/dist/theme/pt.d.ts.map +1 -0
  289. package/dist/theme/pt.js +66 -0
  290. package/dist/theme/pt.js.map +1 -0
  291. package/dist/types.d.ts +38 -0
  292. package/dist/types.d.ts.map +1 -0
  293. package/package.json +134 -3
@@ -0,0 +1,84 @@
1
+ import { resolvePart as e, useWelldotConfig as t } from "../config.js";
2
+ import { useWellText as n } from "../composables/useWellText.js";
3
+ import { useWellGridColumns as r } from "./useWellGridColumns.js";
4
+ import i from "./parts/WellGridAddButton.js";
5
+ import { computed as a, createBlock as o, createElementBlock as s, createElementVNode as c, defineComponent as l, normalizeStyle as u, onMounted as d, openBlock as f, ref as p, resolveDynamicComponent as m, unref as h, useCssVars as g, vShow as _, withDirectives as v } from "vue";
6
+ import { VGrid as y } from "@revolist/vue3-datagrid";
7
+ //#region src/grid/WellDataGrid.vue?vue&type=script&setup=true&lang.ts
8
+ var b = { class: "well-data-grid-wrapper flex flex-col" }, x = {
9
+ key: 1,
10
+ class: "well-grid-skeleton animate-pulse rounded bg-surface-100 w-full h-full"
11
+ }, S = 38, C = 30, w = /* @__PURE__ */ l({
12
+ __name: "WellDataGrid",
13
+ props: {
14
+ rows: {},
15
+ columns: {},
16
+ addLabel: {},
17
+ deleteLabel: {},
18
+ labels: {},
19
+ components: {}
20
+ },
21
+ emits: [
22
+ "add",
23
+ "delete",
24
+ "change",
25
+ "reorder"
26
+ ],
27
+ setup(l, { emit: w }) {
28
+ g((e) => ({ ad965ea0: `${S}px` }));
29
+ let T = l, E = w, D = t(), O = n(), { gridEditors: k, revoColumns: A, gridStretch: j, plugins: M, handleAfterEdit: N, gridContainerRef: P, handleAfterFocus: F, handleGridMousedown: I, handleGridClick: L } = r({
30
+ columns: () => T.columns,
31
+ onDelete: (e) => E("delete", e),
32
+ onChange: (e, t, n) => E("change", e, t, n),
33
+ deleteLabel: () => T.deleteLabel,
34
+ labels: () => T.labels,
35
+ components: () => T.components
36
+ }), R = a(() => e("addButton", T.components?.addButton, i, D)), z = p(!1);
37
+ d(() => {
38
+ z.value = !0;
39
+ });
40
+ let B = a(() => T.rows.map((e) => ({ ...e }))), V = a(() => `${S + Math.max(1, T.rows.length) * C + 2}px`);
41
+ function H(e) {
42
+ E("reorder", e.detail.from, e.detail.to);
43
+ }
44
+ return (e, t) => (f(), s("div", b, [v(c("div", {
45
+ ref_key: "gridContainerRef",
46
+ ref: P,
47
+ class: "well-grid-container",
48
+ onMousedownCapture: t[0] || (t[0] = (...e) => h(I) && h(I)(...e)),
49
+ onClick: t[1] || (t[1] = (...e) => h(L) && h(L)(...e))
50
+ }, [z.value ? (f(), o(h(y), {
51
+ key: 0,
52
+ class: "well-data-grid",
53
+ style: u({ height: V.value }),
54
+ "row-size": C,
55
+ stretch: h(j),
56
+ source: B.value,
57
+ columns: h(A),
58
+ editors: h(k),
59
+ plugins: h(M),
60
+ range: !0,
61
+ "can-drag": "",
62
+ theme: "compact",
63
+ onAfteredit: h(N),
64
+ onAfterfocus: h(F),
65
+ onRoworderchanged: H
66
+ }, null, 8, [
67
+ "style",
68
+ "stretch",
69
+ "source",
70
+ "columns",
71
+ "editors",
72
+ "plugins",
73
+ "onAfteredit",
74
+ "onAfterfocus"
75
+ ])) : (f(), s("div", x))], 544), [[_, l.rows.length > 0]]), (f(), o(m(R.value), {
76
+ label: h(O)(T.addLabel),
77
+ onClick: t[2] || (t[2] = (e) => E("add"))
78
+ }, null, 8, ["label"]))]));
79
+ }
80
+ });
81
+ //#endregion
82
+ export { w as default };
83
+
84
+ //# sourceMappingURL=WellDataGrid.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WellDataGrid.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../src/grid/WellDataGrid.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * Editable spreadsheet for a well feature array (lithology, casing, screens…)\n * built on RevoGrid. Controlled: the grid never mutates `rows`, it emits\n * `add` / `delete` / `change` / `reorder` and the parent updates its store.\n *\n * - Columns are `WellGridColumn`s; their text is `LanguageTextInput`,\n * resolved for the configured locale. Unit columns follow the configured\n * display units.\n * - Parts (`components` prop, then `createWelldot({ components })`, then the\n * built-in default): `addButton` (`WellAddButtonProps`), `deleteButton`\n * (`WellDeleteButtonProps`), `dragHandle` (visual only).\n * - Rendered on the client only (after mount); a skeleton shows until then.\n * - Needs `@welldot/vue/tailwind.css` (which imports `grid.css`) for the\n * RevoGrid theme.\n */\nimport { VGrid } from '@revolist/vue3-datagrid';\nimport type { LanguageTextInput } from '@welldot/core';\nimport { computed, onMounted, ref } from 'vue';\nimport { useWellText } from '../composables/useWellText';\nimport { resolvePart, useWelldotConfig } from '../config';\nimport WellGridAddButton from './parts/WellGridAddButton.vue';\nimport type {\n WellDataGridComponents,\n WellDataGridLabels,\n WellGridColumn,\n} from './types';\nimport { useWellGridColumns } from './useWellGridColumns';\n\n// ─── Props / Emits ────────────────────────────────────────────────────────────\n\nconst props = defineProps<{\n /** Reactive array from the store (via deep-proxy or plain copy). */\n rows: Record<string, unknown>[];\n columns: WellGridColumn[];\n /** Label of the add-row button. Icon-only when omitted. */\n addLabel?: LanguageTextInput;\n /** Label handed to the delete-row button (its aria-label by default). */\n deleteLabel?: LanguageTextInput;\n /** Grid-internal text (texture editor, column info trigger). */\n labels?: WellDataGridLabels;\n /** Part overrides: `addButton`, `deleteButton`, `dragHandle`. */\n components?: WellDataGridComponents;\n}>();\n\nconst emit = defineEmits<{\n /** Parent should push a new row to the store */\n add: [];\n /** Parent should splice row at `index` from the store */\n delete: [index: number];\n /** Parent should assign `value` to `store.array[index][prop]` */\n change: [index: number, prop: string, value: unknown];\n /** Parent should reorder row from `from` to `to` */\n reorder: [from: number, to: number];\n}>();\n\nconst config = useWelldotConfig();\nconst text = useWellText();\n\nconst {\n gridEditors,\n revoColumns,\n gridStretch,\n plugins,\n handleAfterEdit,\n gridContainerRef,\n handleAfterFocus,\n handleGridMousedown,\n handleGridClick,\n} = useWellGridColumns({\n columns: () => props.columns,\n onDelete: rowIndex => emit('delete', rowIndex),\n onChange: (rowIndex, prop, value) => emit('change', rowIndex, prop, value),\n deleteLabel: () => props.deleteLabel,\n labels: () => props.labels,\n components: () => props.components,\n});\n\nconst addButton = computed(() =>\n resolvePart(\n 'addButton',\n props.components?.addButton,\n WellGridAddButton,\n config,\n ),\n);\n\n// ─── Client-only rendering ────────────────────────────────────────────────────\n// RevoGrid is a web component; render it only once mounted in the browser.\n\nconst mounted = ref(false);\nonMounted(() => {\n mounted.value = true;\n});\n\n// ─── Source ───────────────────────────────────────────────────────────────────\n// Spread to a plain array so RevoGrid's internal diffing does not fight the\n// Immer/deep-proxy wrapper on the store.\n\nconst gridSource = computed(() => props.rows.map(r => ({ ...r })));\n\n// ─── Height — auto-size based on row count ────────────────────────────────────\n\nconst HEADER_H = 38;\nconst ROW_H = 30;\n\nconst gridHeight = computed(() => {\n const contentH = Math.max(1, props.rows.length) * ROW_H;\n return `${HEADER_H + contentH + 2}px`;\n});\n\n// ─── Event handlers ───────────────────────────────────────────────────────────\n\nfunction handleRowOrderChanged(\n event: CustomEvent<{ from: number; to: number }>,\n) {\n emit('reorder', event.detail.from, event.detail.to);\n}\n</script>\n\n<template>\n <div class=\"well-data-grid-wrapper flex flex-col\">\n <div\n v-show=\"rows.length > 0\"\n ref=\"gridContainerRef\"\n class=\"well-grid-container\"\n @mousedown.capture=\"handleGridMousedown\"\n @click=\"handleGridClick\"\n >\n <VGrid\n v-if=\"mounted\"\n class=\"well-data-grid\"\n :style=\"{ height: gridHeight }\"\n :row-size=\"ROW_H\"\n :stretch=\"gridStretch\"\n :source=\"gridSource\"\n :columns=\"revoColumns\"\n :editors=\"gridEditors\"\n :plugins=\"plugins\"\n :range=\"true\"\n can-drag\n theme=\"compact\"\n @afteredit=\"handleAfterEdit\"\n @afterfocus=\"handleAfterFocus\"\n @roworderchanged=\"handleRowOrderChanged\"\n />\n <div\n v-else\n class=\"well-grid-skeleton animate-pulse rounded bg-surface-100 w-full h-full\"\n />\n </div>\n\n <component\n :is=\"addButton\"\n :label=\"text(props.addLabel)\"\n @click=\"emit('add')\"\n />\n </div>\n</template>\n\n<style scoped>\n.well-data-grid-wrapper {\n --accent-soft: color-mix(in srgb, var(--color-primary-500) 12%, transparent);\n --color-primary-soft: color-mix(\n in srgb,\n var(--color-primary-500) 25%,\n transparent\n );\n}\n\n.well-data-grid :deep(.header-rgRow) {\n height: v-bind('`${HEADER_H}px`');\n}\n</style>\n"],"mappings":";;;;;;;;;;GAuGM,IAAW,IACX,IAAQ;;;;;;;;;;;;;;;;;;EAzEd,IAAM,IAAQ,GAcR,IAAO,GAWP,IAAS,GAAkB,EAC3B,IAAO,GAAa,EAEpB,EACJ,gBACA,gBACA,gBACA,YACA,oBACA,qBACA,qBACA,wBACA,uBACE,EAAmB;GACrB,eAAe,EAAM;GACrB,WAAU,MAAY,EAAK,UAAU,EAAS;GAC9C,WAAW,GAAU,GAAM,MAAU,EAAK,UAAU,GAAU,GAAM,EAAM;GAC1E,mBAAmB,EAAM;GACzB,cAAc,EAAM;GACpB,kBAAkB,EAAM;GACzB,CAAC,EAEI,IAAY,QAChB,EACE,aACA,EAAM,YAAY,WAClB,GACA,EACD,CACF,EAKK,IAAU,EAAI,GAAM;AAC1B,UAAgB;AACd,KAAQ,QAAQ;IAChB;EAMF,IAAM,IAAa,QAAe,EAAM,KAAK,KAAI,OAAM,EAAE,GAAG,GAAG,EAAE,CAAC,EAO5D,IAAa,QAEV,GAAG,IADO,KAAK,IAAI,GAAG,EAAM,KAAK,OAAO,GAAG,IAClB,EAAE,IAClC;EAIF,SAAS,EACP,GACA;AACA,KAAK,WAAW,EAAM,OAAO,MAAM,EAAM,OAAO,GAAG;;yBAKnD,EAoCM,OApCN,GAoCM,CAAA,EAnCJ,EA4BM,OAAA;YA1BA;GAAJ,KAAI;GACJ,OAAM;iDACc,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAmB;GACtC,SAAK,EAAA,OAAA,EAAA,MAAA,GAAA,MAAE,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAe;MAGf,EAAA,SAAA,GAAA,EADR,EAgBE,EAAA,EAAA,EAAA;;GAdA,OAAM;GACL,OAAK,EAAA,EAAA,QAAY,EAAA,OAAU,CAAA;GAC3B,YAAU;GACV,SAAS,EAAA,EAAW;GACpB,QAAQ,EAAA;GACR,SAAS,EAAA,EAAW;GACpB,SAAS,EAAA,EAAW;GACpB,SAAS,EAAA,EAAO;GAChB,OAAO;GACR,YAAA;GACA,OAAM;GACL,aAAW,EAAA,EAAe;GAC1B,cAAY,EAAA,EAAgB;GAC5B,mBAAiB;;;;;;;;;;cAEpB,EAGE,OAHF,EAGE,EAAA,EAAA,IAAA,EAAA,CAAA,CAAA,GA1BM,EAAA,KAAK,SAAM,EAAA,CAAA,CAAA,GAAA,GAAA,EA6BrB,EAIE,EAHK,EAAA,MAAS,EAAA;GACb,OAAO,EAAA,EAAI,CAAC,EAAM,SAAQ;GAC1B,SAAK,EAAA,OAAA,EAAA,MAAA,MAAE,EAAI,MAAA"}
@@ -0,0 +1,10 @@
1
+ type __VLS_Props = {
2
+ value?: unknown;
3
+ rowIndex: number;
4
+ prop: string;
5
+ onToggle: (rowIndex: number, prop: string, value: boolean) => void;
6
+ };
7
+ 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>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
10
+ //# sourceMappingURL=GridCheckboxCell.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridCheckboxCell.d.ts","sourceRoot":"","sources":["../../../src/grid/cells/GridCheckboxCell.vue"],"names":[],"mappings":"AAmCA,KAAK,WAAW,GAAG;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpE,CAAC;AAuDF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,7 @@
1
+ import e from "./GridCheckboxCell.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/grid/cells/GridCheckboxCell.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
6
+
7
+ //# sourceMappingURL=GridCheckboxCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridCheckboxCell.js","names":[],"sources":["../../../src/grid/cells/GridCheckboxCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport Checkbox from 'primevue/checkbox';\n\nconst props = defineProps<{\n value?: unknown;\n rowIndex: number;\n prop: string;\n onToggle: (rowIndex: number, prop: string, value: boolean) => void;\n}>();\n\ndefineOptions({ inheritAttrs: false });\n\nfunction handleChange(checked: boolean) {\n props.onToggle(props.rowIndex, props.prop, checked);\n}\n</script>\n\n<template>\n <span\n class=\"flex h-full w-full items-center justify-center\"\n @click.stop\n @mousedown.stop\n >\n <Checkbox\n :model-value=\"!!value\"\n binary\n @update:model-value=\"handleChange\"\n />\n </span>\n</template>\n"],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import { createElementBlock as e, createVNode as t, defineComponent as n, openBlock as r, unref as i, withModifiers as a } from "vue";
2
+ import o from "primevue/checkbox";
3
+ //#region src/grid/cells/GridCheckboxCell.vue?vue&type=script&setup=true&lang.ts
4
+ var s = /* @__PURE__ */ n({
5
+ inheritAttrs: !1,
6
+ __name: "GridCheckboxCell",
7
+ props: {
8
+ value: {},
9
+ rowIndex: {},
10
+ prop: {},
11
+ onToggle: { type: Function }
12
+ },
13
+ setup(n) {
14
+ let s = n;
15
+ function c(e) {
16
+ s.onToggle(s.rowIndex, s.prop, e);
17
+ }
18
+ return (s, l) => (r(), e("span", {
19
+ class: "flex h-full w-full items-center justify-center",
20
+ onClick: l[0] || (l[0] = a(() => {}, ["stop"])),
21
+ onMousedown: l[1] || (l[1] = a(() => {}, ["stop"]))
22
+ }, [t(i(o), {
23
+ "model-value": !!n.value,
24
+ binary: "",
25
+ "onUpdate:modelValue": c
26
+ }, null, 8, ["model-value"])], 32));
27
+ }
28
+ });
29
+ //#endregion
30
+ export { s as default };
31
+
32
+ //# sourceMappingURL=GridCheckboxCell.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridCheckboxCell.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/grid/cells/GridCheckboxCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport Checkbox from 'primevue/checkbox';\n\nconst props = defineProps<{\n value?: unknown;\n rowIndex: number;\n prop: string;\n onToggle: (rowIndex: number, prop: string, value: boolean) => void;\n}>();\n\ndefineOptions({ inheritAttrs: false });\n\nfunction handleChange(checked: boolean) {\n props.onToggle(props.rowIndex, props.prop, checked);\n}\n</script>\n\n<template>\n <span\n class=\"flex h-full w-full items-center justify-center\"\n @click.stop\n @mousedown.stop\n >\n <Checkbox\n :model-value=\"!!value\"\n binary\n @update:model-value=\"handleChange\"\n />\n </span>\n</template>\n"],"mappings":";;;;;;;;;;;;;EAGA,IAAM,IAAQ;EASd,SAAS,EAAa,GAAkB;AACtC,KAAM,SAAS,EAAM,UAAU,EAAM,MAAM,EAAQ;;yBAKnD,EAUO,QAAA;GATL,OAAM;GACL,SAAK,EAAA,OAAA,EAAA,KAAA,QAAN,IAAW,CAAA,OAAA,CAAA;GACV,aAAS,EAAA,OAAA,EAAA,KAAA,QAAV,IAAe,CAAA,OAAA,CAAA;MAEf,EAIE,EAAA,EAAA,EAAA;GAHC,eAAW,CAAA,CAAI,EAAA;GAChB,QAAA;GACC,uBAAoB"}
@@ -0,0 +1,7 @@
1
+ type __VLS_Props = {
2
+ value?: unknown;
3
+ };
4
+ 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>;
5
+ declare const _default: typeof __VLS_export;
6
+ export default _default;
7
+ //# sourceMappingURL=GridColorCell.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridColorCell.d.ts","sourceRoot":"","sources":["../../../src/grid/cells/GridColorCell.vue"],"names":[],"mappings":"AA0BA,KAAK,WAAW,GAAG;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AA2CF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,7 @@
1
+ import e from "./GridColorCell.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/grid/cells/GridColorCell.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
6
+
7
+ //# sourceMappingURL=GridColorCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridColorCell.js","names":[],"sources":["../../../src/grid/cells/GridColorCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nconst props = defineProps<{\n value?: unknown;\n}>();\n\ndefineOptions({ inheritAttrs: false });\n\nconst hex = computed(() => (props.value as string) ?? '');\n</script>\n\n<template>\n <span class=\"flex h-full w-full items-center gap-1.5\">\n <span\n class=\"inline-block h-3 w-3 shrink-0 rounded-sm border border-surface-300\"\n :style=\"{ backgroundColor: hex }\"\n />\n <span>{{ hex }}</span>\n </span>\n</template>\n"],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { computed as e, createElementBlock as t, createElementVNode as n, defineComponent as r, normalizeStyle as i, openBlock as a, toDisplayString as o } from "vue";
2
+ //#region src/grid/cells/GridColorCell.vue?vue&type=script&setup=true&lang.ts
3
+ var s = { class: "flex h-full w-full items-center gap-1.5" }, c = /* @__PURE__ */ r({
4
+ inheritAttrs: !1,
5
+ __name: "GridColorCell",
6
+ props: { value: {} },
7
+ setup(r) {
8
+ let c = r, l = e(() => c.value ?? "");
9
+ return (e, r) => (a(), t("span", s, [n("span", {
10
+ class: "inline-block h-3 w-3 shrink-0 rounded-sm border border-surface-300",
11
+ style: i({ backgroundColor: l.value })
12
+ }, null, 4), n("span", null, o(l.value), 1)]));
13
+ }
14
+ });
15
+ //#endregion
16
+ export { c as default };
17
+
18
+ //# sourceMappingURL=GridColorCell.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridColorCell.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/grid/cells/GridColorCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nconst props = defineProps<{\n value?: unknown;\n}>();\n\ndefineOptions({ inheritAttrs: false });\n\nconst hex = computed(() => (props.value as string) ?? '');\n</script>\n\n<template>\n <span class=\"flex h-full w-full items-center gap-1.5\">\n <span\n class=\"inline-block h-3 w-3 shrink-0 rounded-sm border border-surface-300\"\n :style=\"{ backgroundColor: hex }\"\n />\n <span>{{ hex }}</span>\n </span>\n</template>\n"],"mappings":";;;;;;;EAGA,IAAM,IAAQ,GAMR,IAAM,QAAgB,EAAM,SAAoB,GAAG;yBAIvD,EAMO,QANP,GAMO,CALL,EAGE,QAAA;GAFA,OAAM;GACL,OAAK,EAAA,EAAA,iBAAqB,EAAA,OAAG,CAAA;eAEhC,EAAsB,QAAA,MAAA,EAAb,EAAA,MAAG,EAAA,EAAA,CAAA,CAAA"}
@@ -0,0 +1,12 @@
1
+ declare const _default: typeof __VLS_export;
2
+ export default _default;
3
+ declare const __VLS_export: import('vue').DefineComponent<{
4
+ val?: unknown;
5
+ save: (value: unknown, preventFocus?: boolean) => void;
6
+ close: (focusNext?: boolean) => void;
7
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
8
+ val?: unknown;
9
+ save: (value: unknown, preventFocus?: boolean) => void;
10
+ close: (focusNext?: boolean) => void;
11
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
12
+ //# sourceMappingURL=GridColorPickerEditor.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridColorPickerEditor.d.ts","sourceRoot":"","sources":["../../../src/grid/cells/GridColorPickerEditor.vue"],"names":[],"mappings":"wBA8GqB,OAAO,YAAY;AAAxC,wBAAyC;AACzC,QAAA,MAAM,YAAY;UAEV,OAAO;UACP,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI;WAC/C,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,IAAI;;UAF9B,OAAO;UACP,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI;WAC/C,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,IAAI;iGAwIlC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import e from "./GridColorPickerEditor.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/grid/cells/GridColorPickerEditor.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
6
+
7
+ //# sourceMappingURL=GridColorPickerEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridColorPickerEditor.js","names":[],"sources":["../../../src/grid/cells/GridColorPickerEditor.vue"],"sourcesContent":["<script lang=\"ts\">\n// vue-color's stylesheet is imported dynamically, on the client only. A\n// static `import 'vue-color/style.css'` stays in `dist/` (vue-color is\n// external), so Node would fail to load `@welldot/vue/grid` during plain-Vite\n// SSR unless the app set `ssr.noExternal`. Editors only mount in the browser,\n// and loading at module evaluation means the CSS is there before one opens.\nif (typeof window !== 'undefined') void import('vue-color/style.css');\n</script>\n\n<script setup lang=\"ts\">\nimport Popover from 'primevue/popover';\nimport { SketchPicker, tinycolor } from 'vue-color';\nimport { nextTick, onMounted, onUnmounted, ref } from 'vue';\n\nconst props = defineProps<{\n val?: unknown;\n save: (value: unknown, preventFocus?: boolean) => void;\n close: (focusNext?: boolean) => void;\n}>();\n\ndefineOptions({ inheritAttrs: false });\n\nconst triggerRef = ref<HTMLElement | null>(null);\nconst popoverRef = ref<InstanceType<typeof Popover> | null>(null);\n\n// vue-color echoes back the format of the value it was given (and can drift\n// to HSV objects), so normalize everything to `#rrggbb` on the way in and out.\nfunction toHex(value: unknown): string {\n const color = tinycolor(value as string);\n return color.isValid() ? color.toHexString() : '#cccccc';\n}\n\nconst localValue = ref(toHex(props.val));\n\nfunction onKeydown(e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === 'Escape') {\n e.stopPropagation();\n popoverRef.value?.hide();\n }\n}\n\nonMounted(() => {\n nextTick(() => {\n popoverRef.value?.show(\n { currentTarget: triggerRef.value } as unknown as Event,\n triggerRef.value,\n );\n });\n document.addEventListener('keydown', onKeydown, true);\n});\n\nonUnmounted(() => {\n document.removeEventListener('keydown', onKeydown, true);\n});\n\nfunction onChange(value: unknown) {\n const hex = toHex(value);\n localValue.value = hex;\n props.save(hex, true);\n}\n\nfunction onHide() {\n props.close();\n}\n</script>\n\n<template>\n <div\n ref=\"triggerRef\"\n class=\"well-cell-color-trigger\"\n tabindex=\"-1\"\n @keydown=\"onKeydown\"\n >\n <span\n class=\"well-cell-color-swatch\"\n :style=\"{ backgroundColor: localValue }\"\n />\n <span class=\"well-cell-color-hex\">{{ localValue }}</span>\n </div>\n\n <Popover\n ref=\"popoverRef\"\n :pt=\"{\n content: 'p-0',\n }\"\n @hide=\"onHide\"\n >\n <div @mousedown.stop @click.stop @keydown=\"onKeydown\">\n <SketchPicker\n :model-value=\"localValue\"\n disable-alpha\n @update:model-value=\"onChange\"\n />\n </div>\n </Popover>\n</template>\n"],"mappings":""}
@@ -0,0 +1,70 @@
1
+ import { Fragment as e, createElementBlock as t, createElementVNode as n, createVNode as r, defineComponent as i, nextTick as a, normalizeStyle as o, onMounted as s, onUnmounted as c, openBlock as l, ref as u, toDisplayString as d, unref as f, withCtx as p, withModifiers as m } from "vue";
2
+ import h from "primevue/popover";
3
+ import { SketchPicker as g, tinycolor as _ } from "vue-color";
4
+ //#region src/grid/cells/GridColorPickerEditor.vue?vue&type=script&setup=true&lang.ts
5
+ var v = { class: "well-cell-color-hex" };
6
+ typeof window < "u" && import("vue-color/style.css");
7
+ var y = /* @__PURE__ */ i({
8
+ inheritAttrs: !1,
9
+ __name: "GridColorPickerEditor",
10
+ props: {
11
+ val: {},
12
+ save: { type: Function },
13
+ close: { type: Function }
14
+ },
15
+ setup(i) {
16
+ let y = i, b = u(null), x = u(null);
17
+ function S(e) {
18
+ let t = _(e);
19
+ return t.isValid() ? t.toHexString() : "#cccccc";
20
+ }
21
+ let C = u(S(y.val));
22
+ function w(e) {
23
+ (e.key === "Enter" || e.key === "Escape") && (e.stopPropagation(), x.value?.hide());
24
+ }
25
+ s(() => {
26
+ a(() => {
27
+ x.value?.show({ currentTarget: b.value }, b.value);
28
+ }), document.addEventListener("keydown", w, !0);
29
+ }), c(() => {
30
+ document.removeEventListener("keydown", w, !0);
31
+ });
32
+ function T(e) {
33
+ let t = S(e);
34
+ C.value = t, y.save(t, !0);
35
+ }
36
+ function E() {
37
+ y.close();
38
+ }
39
+ return (i, a) => (l(), t(e, null, [n("div", {
40
+ ref_key: "triggerRef",
41
+ ref: b,
42
+ class: "well-cell-color-trigger",
43
+ tabindex: "-1",
44
+ onKeydown: w
45
+ }, [n("span", {
46
+ class: "well-cell-color-swatch",
47
+ style: o({ backgroundColor: C.value })
48
+ }, null, 4), n("span", v, d(C.value), 1)], 544), r(f(h), {
49
+ ref_key: "popoverRef",
50
+ ref: x,
51
+ pt: { content: "p-0" },
52
+ onHide: E
53
+ }, {
54
+ default: p(() => [n("div", {
55
+ onMousedown: a[0] || (a[0] = m(() => {}, ["stop"])),
56
+ onClick: a[1] || (a[1] = m(() => {}, ["stop"])),
57
+ onKeydown: w
58
+ }, [r(f(g), {
59
+ "model-value": C.value,
60
+ "disable-alpha": "",
61
+ "onUpdate:modelValue": T
62
+ }, null, 8, ["model-value"])], 32)]),
63
+ _: 1
64
+ }, 512)], 64));
65
+ }
66
+ });
67
+ //#endregion
68
+ export { y as default };
69
+
70
+ //# sourceMappingURL=GridColorPickerEditor.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridColorPickerEditor.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/grid/cells/GridColorPickerEditor.vue"],"sourcesContent":["<script lang=\"ts\">\n// vue-color's stylesheet is imported dynamically, on the client only. A\n// static `import 'vue-color/style.css'` stays in `dist/` (vue-color is\n// external), so Node would fail to load `@welldot/vue/grid` during plain-Vite\n// SSR unless the app set `ssr.noExternal`. Editors only mount in the browser,\n// and loading at module evaluation means the CSS is there before one opens.\nif (typeof window !== 'undefined') void import('vue-color/style.css');\n</script>\n\n<script setup lang=\"ts\">\nimport Popover from 'primevue/popover';\nimport { SketchPicker, tinycolor } from 'vue-color';\nimport { nextTick, onMounted, onUnmounted, ref } from 'vue';\n\nconst props = defineProps<{\n val?: unknown;\n save: (value: unknown, preventFocus?: boolean) => void;\n close: (focusNext?: boolean) => void;\n}>();\n\ndefineOptions({ inheritAttrs: false });\n\nconst triggerRef = ref<HTMLElement | null>(null);\nconst popoverRef = ref<InstanceType<typeof Popover> | null>(null);\n\n// vue-color echoes back the format of the value it was given (and can drift\n// to HSV objects), so normalize everything to `#rrggbb` on the way in and out.\nfunction toHex(value: unknown): string {\n const color = tinycolor(value as string);\n return color.isValid() ? color.toHexString() : '#cccccc';\n}\n\nconst localValue = ref(toHex(props.val));\n\nfunction onKeydown(e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === 'Escape') {\n e.stopPropagation();\n popoverRef.value?.hide();\n }\n}\n\nonMounted(() => {\n nextTick(() => {\n popoverRef.value?.show(\n { currentTarget: triggerRef.value } as unknown as Event,\n triggerRef.value,\n );\n });\n document.addEventListener('keydown', onKeydown, true);\n});\n\nonUnmounted(() => {\n document.removeEventListener('keydown', onKeydown, true);\n});\n\nfunction onChange(value: unknown) {\n const hex = toHex(value);\n localValue.value = hex;\n props.save(hex, true);\n}\n\nfunction onHide() {\n props.close();\n}\n</script>\n\n<template>\n <div\n ref=\"triggerRef\"\n class=\"well-cell-color-trigger\"\n tabindex=\"-1\"\n @keydown=\"onKeydown\"\n >\n <span\n class=\"well-cell-color-swatch\"\n :style=\"{ backgroundColor: localValue }\"\n />\n <span class=\"well-cell-color-hex\">{{ localValue }}</span>\n </div>\n\n <Popover\n ref=\"popoverRef\"\n :pt=\"{\n content: 'p-0',\n }\"\n @hide=\"onHide\"\n >\n <div @mousedown.stop @click.stop @keydown=\"onKeydown\">\n <SketchPicker\n :model-value=\"localValue\"\n disable-alpha\n @update:model-value=\"onChange\"\n />\n </div>\n </Popover>\n</template>\n"],"mappings":";;;;;AAMI,OAAO,SAAW,OAAkB,OAAO;;;;;;;;;;EAQ/C,IAAM,IAAQ,GAQR,IAAa,EAAwB,KAAK,EAC1C,IAAa,EAAyC,KAAK;EAIjE,SAAS,EAAM,GAAwB;GACrC,IAAM,IAAQ,EAAU,EAAgB;AACxC,UAAO,EAAM,SAAS,GAAG,EAAM,aAAa,GAAG;;EAGjD,IAAM,IAAa,EAAI,EAAM,EAAM,IAAI,CAAC;EAExC,SAAS,EAAU,GAAkB;AACnC,IAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,cACjC,EAAE,iBAAiB,EACnB,EAAW,OAAO,MAAM;;AAc5B,EAVA,QAAgB;AAOd,GANA,QAAe;AACb,MAAW,OAAO,KAChB,EAAE,eAAe,EAAW,OAAO,EACnC,EAAW,MACZ;KACD,EACF,SAAS,iBAAiB,WAAW,GAAW,GAAK;IACrD,EAEF,QAAkB;AAChB,YAAS,oBAAoB,WAAW,GAAW,GAAK;IACxD;EAEF,SAAS,EAAS,GAAgB;GAChC,IAAM,IAAM,EAAM,EAAM;AAExB,GADA,EAAW,QAAQ,GACnB,EAAM,KAAK,GAAK,GAAK;;EAGvB,SAAS,IAAS;AAChB,KAAM,OAAO;;qCAKb,EAWM,OAAA;YAVA;GAAJ,KAAI;GACJ,OAAM;GACN,UAAS;GACC;MAEV,EAGE,QAAA;GAFA,OAAM;GACL,OAAK,EAAA,EAAA,iBAAqB,EAAA,OAAU,CAAA;eAEvC,EAAyD,QAAzD,GAAyD,EAApB,EAAA,MAAU,EAAA,EAAA,CAAA,EAAA,IAAA,EAGjD,EAcU,EAAA,EAAA,EAAA;YAbJ;GAAJ,KAAI;GACH,IAAI,EAAA,SAAA,OAEJ;GACM;;oBAQD,CANN,EAMM,OAAA;IANA,aAAS,EAAA,OAAA,EAAA,KAAA,QAAV,IAAe,CAAA,OAAA,CAAA;IAAE,SAAK,EAAA,OAAA,EAAA,KAAA,QAAN,IAAW,CAAA,OAAA,CAAA;IAAW;OACzC,EAIE,EAAA,EAAA,EAAA;IAHC,eAAa,EAAA;IACd,iBAAA;IACC,uBAAoB"}
@@ -0,0 +1,14 @@
1
+ import { LanguageTextInput } from '@welldot/core';
2
+ import { ResolvedGridOption } from '../types';
3
+ type __VLS_Props = {
4
+ val?: unknown;
5
+ save: (value: unknown, preventFocus?: boolean) => void;
6
+ close: (focusNext?: boolean) => void;
7
+ options: ResolvedGridOption[];
8
+ /** Note atop the suggestions saying free text is accepted. */
9
+ hint?: LanguageTextInput;
10
+ };
11
+ 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>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ //# sourceMappingURL=GridComboEditor.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridComboEditor.d.ts","sourceRoot":"","sources":["../../../src/grid/cells/GridComboEditor.vue"],"names":[],"mappings":"AAqSA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAKvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,KAAK,WAAW,GAAG;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,8DAA8D;IAC9D,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAqVF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,7 @@
1
+ import e from "./GridComboEditor.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/grid/cells/GridComboEditor.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
6
+
7
+ //# sourceMappingURL=GridComboEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridComboEditor.js","names":[],"sources":["../../../src/grid/cells/GridComboEditor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n useId,\n watch,\n} from 'vue';\nimport type { LanguageTextInput } from '@welldot/core';\nimport IconCaretDown from '~icons/ph/caret-down';\nimport IconPencilSimpleLine from '~icons/ph/pencil-simple-line';\nimport { useWellText } from '../../composables/useWellText';\nimport { useGridOverlayFocusGuard } from '../composables/useGridOverlayFocusGuard';\nimport type { ResolvedGridOption } from '../types';\n\nconst props = defineProps<{\n val?: unknown;\n save: (value: unknown, preventFocus?: boolean) => void;\n close: (focusNext?: boolean) => void;\n options: ResolvedGridOption[];\n /** Note atop the suggestions saying free text is accepted. */\n hint?: LanguageTextInput;\n}>();\n\ndefineOptions({ inheritAttrs: false });\n\nconst MAX_LENGTH = 90;\nconst PANEL_MAX_HEIGHT = 240;\n\nconst listId = `well-combo-${useId()}`;\nconst hintId = `${listId}-hint`;\nconst resolveText = useWellText();\nconst hintText = computed(() => resolveText(props.hint));\nconst rootRef = ref<HTMLElement | null>(null);\nconst inputRef = ref<HTMLInputElement | null>(null);\nconst panelRef = ref<HTMLElement | null>(null);\nconst overlayFocusGuard = useGridOverlayFocusGuard();\n\nconst normalize = (s: string) =>\n s\n .normalize('NFD')\n .replace(/\\p{Diacritic}/gu, '')\n .toLowerCase()\n .trim();\n\nfunction findOption(text: string) {\n const needle = normalize(text);\n if (!needle) return undefined;\n return props.options.find(\n o => normalize(o.label) === needle || normalize(o.value) === needle,\n );\n}\n\n// Show the option's label for canonical values, the raw text otherwise —\n// the same display rule PrimeVue's editable Select applied.\nconst rawVal = typeof props.val === 'string' ? props.val : '';\nconst initialText =\n props.options.find(o => o.value === rawVal)?.label ?? rawVal;\n\n// Deprecated entries still resolve typed text, but aren't suggested.\nconst suggestions = computed(() =>\n props.options.filter(o => !o.deprecated || o.value === rawVal),\n);\n\nconst text = ref(initialText);\nconst open = ref(true);\nconst activeIndex = ref(-1);\nconst panelStyle = ref<Record<string, string>>({});\nlet committed = false;\n\n// Until the user edits, the input holds the current value — filtering by it\n// would hide every other suggestion, so list them all.\nconst filtered = computed(() => {\n const needle = normalize(text.value);\n if (!needle || text.value === initialText) return suggestions.value;\n return suggestions.value.filter(\n o =>\n normalize(o.label).includes(needle) ||\n normalize(o.value).includes(needle),\n );\n});\n\nconst selectedValue = computed(() => findOption(text.value)?.value);\nconst panelVisible = computed(() => open.value && filtered.value.length > 0);\n\nwatch(filtered, () => {\n activeIndex.value = -1;\n});\n\nfunction commit(value: string, preventFocus = true) {\n if (committed) return;\n committed = true;\n const trimmed = value.trim();\n props.save(findOption(trimmed)?.value ?? trimmed, preventFocus);\n}\n\nfunction pick(option: ResolvedGridOption) {\n text.value = option.label;\n commit(option.label);\n props.close();\n}\n\nfunction updatePosition() {\n const el = rootRef.value;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n const spaceBelow = window.innerHeight - rect.bottom;\n const flip = spaceBelow < PANEL_MAX_HEIGHT && rect.top > spaceBelow;\n panelStyle.value = {\n left: `${rect.left}px`,\n minWidth: `${rect.width}px`,\n ...(flip\n ? { bottom: `${window.innerHeight - rect.top + 2}px` }\n : { top: `${rect.bottom + 2}px` }),\n };\n}\n\nfunction scrollActiveIntoView() {\n nextTick(() => {\n panelRef.value\n ?.querySelector<HTMLElement>(`[data-index=\"${activeIndex.value}\"]`)\n ?.scrollIntoView({ block: 'nearest' });\n });\n}\n\nfunction moveActive(delta: number) {\n if (!open.value) {\n open.value = true;\n return;\n }\n const count = filtered.value.length;\n if (!count) return;\n activeIndex.value = (activeIndex.value + delta + count) % count;\n scrollActiveIntoView();\n}\n\nfunction onInput(e: Event) {\n text.value = (e.target as HTMLInputElement).value;\n open.value = true;\n}\n\nfunction onKeydown(e: KeyboardEvent) {\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n e.stopPropagation();\n moveActive(1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n e.stopPropagation();\n moveActive(-1);\n break;\n case 'Enter': {\n e.preventDefault();\n e.stopPropagation();\n const option = panelVisible.value\n ? filtered.value[activeIndex.value]\n : undefined;\n if (option) text.value = option.label;\n commit(text.value, false);\n break;\n }\n case 'Tab':\n commit(text.value);\n break;\n case 'Escape':\n e.stopPropagation();\n if (panelVisible.value) {\n open.value = false;\n } else {\n committed = true;\n props.close();\n }\n break;\n }\n}\n\nfunction onBlur() {\n commit(text.value);\n}\n\nfunction togglePanel() {\n open.value = !open.value;\n inputRef.value?.focus();\n}\n\nwatch(panelVisible, visible => {\n if (visible) nextTick(updatePosition);\n});\n\nonMounted(() => {\n updatePosition();\n window.addEventListener('scroll', updatePosition, true);\n window.addEventListener('resize', updatePosition);\n nextTick(() => {\n inputRef.value?.focus();\n inputRef.value?.select();\n });\n});\n\nonBeforeUnmount(() => {\n window.removeEventListener('scroll', updatePosition, true);\n window.removeEventListener('resize', updatePosition);\n});\n</script>\n\n<template>\n <div ref=\"rootRef\" class=\"well-cell-combo\">\n <input\n ref=\"inputRef\"\n :value=\"text\"\n :maxlength=\"MAX_LENGTH\"\n class=\"well-cell-combo-input\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n aria-autocomplete=\"list\"\n :aria-expanded=\"panelVisible\"\n :aria-controls=\"listId\"\n :aria-describedby=\"panelVisible && hintText ? hintId : undefined\"\n :aria-activedescendant=\"\n activeIndex >= 0 ? `${listId}-${activeIndex}` : undefined\n \"\n @input=\"onInput\"\n @keydown=\"onKeydown\"\n @blur=\"onBlur\"\n />\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"well-cell-combo-toggle\"\n aria-hidden=\"true\"\n @mousedown.prevent=\"togglePanel\"\n >\n <IconCaretDown class=\"size-3.5\" />\n </button>\n\n <Teleport to=\"body\">\n <ul\n v-if=\"panelVisible\"\n :id=\"listId\"\n ref=\"panelRef\"\n role=\"listbox\"\n class=\"well-combo-panel\"\n :style=\"panelStyle\"\n v-bind=\"overlayFocusGuard\"\n @mousedown.prevent\n >\n <li\n v-if=\"hintText\"\n :id=\"hintId\"\n role=\"presentation\"\n class=\"well-combo-hint\"\n >\n <IconPencilSimpleLine class=\"size-3.5 shrink-0\" aria-hidden=\"true\" />\n {{ hintText }}\n </li>\n <li\n v-for=\"(option, i) in filtered\"\n :id=\"`${listId}-${i}`\"\n :key=\"option.value\"\n :data-index=\"i\"\n role=\"option\"\n :aria-selected=\"option.value === selectedValue\"\n class=\"well-combo-option text-sm p-1\"\n :class=\"{\n 'is-active': i === activeIndex,\n 'is-selected': option.value === selectedValue,\n }\"\n @mouseenter=\"activeIndex = i\"\n @click=\"pick(option)\"\n >\n {{ option.label }}\n </li>\n </ul>\n </Teleport>\n </div>\n</template>\n"],"mappings":""}
@@ -0,0 +1,177 @@
1
+ import { useWellText as e } from "../../composables/useWellText.js";
2
+ import t from "../../_virtual/icons/ph/pencil-simple-line.js";
3
+ import n from "../../_virtual/icons/ph/caret-down.js";
4
+ import { useGridOverlayFocusGuard as r } from "../composables/useGridOverlayFocusGuard.js";
5
+ import { Fragment as ee, Teleport as te, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createTextVNode as l, createVNode as u, defineComponent as d, mergeProps as f, nextTick as p, normalizeClass as m, onBeforeUnmount as h, onMounted as g, openBlock as _, ref as v, renderList as y, toDisplayString as b, unref as x, useId as S, watch as C, withModifiers as w } from "vue";
6
+ //#region src/grid/cells/GridComboEditor.vue?vue&type=script&setup=true&lang.ts
7
+ var T = [
8
+ "value",
9
+ "aria-expanded",
10
+ "aria-describedby",
11
+ "aria-activedescendant"
12
+ ], E = [
13
+ "id",
14
+ "data-index",
15
+ "aria-selected",
16
+ "onMouseenter",
17
+ "onClick"
18
+ ], D = 90, O = 240, k = /* @__PURE__ */ d({
19
+ inheritAttrs: !1,
20
+ __name: "GridComboEditor",
21
+ props: {
22
+ val: {},
23
+ save: { type: Function },
24
+ close: { type: Function },
25
+ options: {},
26
+ hint: {}
27
+ },
28
+ setup(d) {
29
+ let k = d, A = `well-combo-${S()}`, j = `${A}-hint`, M = e(), N = i(() => M(k.hint)), P = v(null), F = v(null), I = v(null), L = r(), R = (e) => e.normalize("NFD").replace(/\p{Diacritic}/gu, "").toLowerCase().trim();
30
+ function z(e) {
31
+ let t = R(e);
32
+ if (t) return k.options.find((e) => R(e.label) === t || R(e.value) === t);
33
+ }
34
+ let B = typeof k.val == "string" ? k.val : "", V = k.options.find((e) => e.value === B)?.label ?? B, H = i(() => k.options.filter((e) => !e.deprecated || e.value === B)), U = v(V), W = v(!0), G = v(-1), K = v({}), q = !1, J = i(() => {
35
+ let e = R(U.value);
36
+ return !e || U.value === V ? H.value : H.value.filter((t) => R(t.label).includes(e) || R(t.value).includes(e));
37
+ }), Y = i(() => z(U.value)?.value), X = i(() => W.value && J.value.length > 0);
38
+ C(J, () => {
39
+ G.value = -1;
40
+ });
41
+ function Z(e, t = !0) {
42
+ if (q) return;
43
+ q = !0;
44
+ let n = e.trim();
45
+ k.save(z(n)?.value ?? n, t);
46
+ }
47
+ function ne(e) {
48
+ U.value = e.label, Z(e.label), k.close();
49
+ }
50
+ function Q() {
51
+ let e = P.value;
52
+ if (!e) return;
53
+ let t = e.getBoundingClientRect(), n = window.innerHeight - t.bottom, r = n < O && t.top > n;
54
+ K.value = {
55
+ left: `${t.left}px`,
56
+ minWidth: `${t.width}px`,
57
+ ...r ? { bottom: `${window.innerHeight - t.top + 2}px` } : { top: `${t.bottom + 2}px` }
58
+ };
59
+ }
60
+ function re() {
61
+ p(() => {
62
+ I.value?.querySelector(`[data-index="${G.value}"]`)?.scrollIntoView({ block: "nearest" });
63
+ });
64
+ }
65
+ function $(e) {
66
+ if (!W.value) {
67
+ W.value = !0;
68
+ return;
69
+ }
70
+ let t = J.value.length;
71
+ t && (G.value = (G.value + e + t) % t, re());
72
+ }
73
+ function ie(e) {
74
+ U.value = e.target.value, W.value = !0;
75
+ }
76
+ function ae(e) {
77
+ switch (e.key) {
78
+ case "ArrowDown":
79
+ e.preventDefault(), e.stopPropagation(), $(1);
80
+ break;
81
+ case "ArrowUp":
82
+ e.preventDefault(), e.stopPropagation(), $(-1);
83
+ break;
84
+ case "Enter": {
85
+ e.preventDefault(), e.stopPropagation();
86
+ let t = X.value ? J.value[G.value] : void 0;
87
+ t && (U.value = t.label), Z(U.value, !1);
88
+ break;
89
+ }
90
+ case "Tab":
91
+ Z(U.value);
92
+ break;
93
+ case "Escape":
94
+ e.stopPropagation(), X.value ? W.value = !1 : (q = !0, k.close());
95
+ break;
96
+ }
97
+ }
98
+ function oe() {
99
+ Z(U.value);
100
+ }
101
+ function se() {
102
+ W.value = !W.value, F.value?.focus();
103
+ }
104
+ return C(X, (e) => {
105
+ e && p(Q);
106
+ }), g(() => {
107
+ Q(), window.addEventListener("scroll", Q, !0), window.addEventListener("resize", Q), p(() => {
108
+ F.value?.focus(), F.value?.select();
109
+ });
110
+ }), h(() => {
111
+ window.removeEventListener("scroll", Q, !0), window.removeEventListener("resize", Q);
112
+ }), (e, r) => (_(), s("div", {
113
+ ref_key: "rootRef",
114
+ ref: P,
115
+ class: "well-cell-combo"
116
+ }, [
117
+ c("input", {
118
+ ref_key: "inputRef",
119
+ ref: F,
120
+ value: U.value,
121
+ maxlength: D,
122
+ class: "well-cell-combo-input",
123
+ type: "text",
124
+ role: "combobox",
125
+ autocomplete: "off",
126
+ "aria-autocomplete": "list",
127
+ "aria-expanded": X.value,
128
+ "aria-controls": A,
129
+ "aria-describedby": X.value && N.value ? j : void 0,
130
+ "aria-activedescendant": G.value >= 0 ? `${A}-${G.value}` : void 0,
131
+ onInput: ie,
132
+ onKeydown: ae,
133
+ onBlur: oe
134
+ }, null, 40, T),
135
+ c("button", {
136
+ type: "button",
137
+ tabindex: "-1",
138
+ class: "well-cell-combo-toggle",
139
+ "aria-hidden": "true",
140
+ onMousedown: w(se, ["prevent"])
141
+ }, [u(x(n), { class: "size-3.5" })], 32),
142
+ (_(), a(te, { to: "body" }, [X.value ? (_(), s("ul", f({
143
+ key: 0,
144
+ id: A,
145
+ ref_key: "panelRef",
146
+ ref: I,
147
+ role: "listbox",
148
+ class: "well-combo-panel",
149
+ style: K.value
150
+ }, x(L), { onMousedown: r[0] || (r[0] = w(() => {}, ["prevent"])) }), [N.value ? (_(), s("li", {
151
+ key: 0,
152
+ id: j,
153
+ role: "presentation",
154
+ class: "well-combo-hint"
155
+ }, [u(x(t), {
156
+ class: "size-3.5 shrink-0",
157
+ "aria-hidden": "true"
158
+ }), l(" " + b(N.value), 1)])) : o("", !0), (_(!0), s(ee, null, y(J.value, (e, t) => (_(), s("li", {
159
+ id: `${A}-${t}`,
160
+ key: e.value,
161
+ "data-index": t,
162
+ role: "option",
163
+ "aria-selected": e.value === Y.value,
164
+ class: m(["well-combo-option text-sm p-1", {
165
+ "is-active": t === G.value,
166
+ "is-selected": e.value === Y.value
167
+ }]),
168
+ onMouseenter: (e) => G.value = t,
169
+ onClick: (t) => ne(e)
170
+ }, b(e.label), 43, E))), 128))], 16)) : o("", !0)]))
171
+ ], 512));
172
+ }
173
+ });
174
+ //#endregion
175
+ export { k as default };
176
+
177
+ //# sourceMappingURL=GridComboEditor.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridComboEditor.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/grid/cells/GridComboEditor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n useId,\n watch,\n} from 'vue';\nimport type { LanguageTextInput } from '@welldot/core';\nimport IconCaretDown from '~icons/ph/caret-down';\nimport IconPencilSimpleLine from '~icons/ph/pencil-simple-line';\nimport { useWellText } from '../../composables/useWellText';\nimport { useGridOverlayFocusGuard } from '../composables/useGridOverlayFocusGuard';\nimport type { ResolvedGridOption } from '../types';\n\nconst props = defineProps<{\n val?: unknown;\n save: (value: unknown, preventFocus?: boolean) => void;\n close: (focusNext?: boolean) => void;\n options: ResolvedGridOption[];\n /** Note atop the suggestions saying free text is accepted. */\n hint?: LanguageTextInput;\n}>();\n\ndefineOptions({ inheritAttrs: false });\n\nconst MAX_LENGTH = 90;\nconst PANEL_MAX_HEIGHT = 240;\n\nconst listId = `well-combo-${useId()}`;\nconst hintId = `${listId}-hint`;\nconst resolveText = useWellText();\nconst hintText = computed(() => resolveText(props.hint));\nconst rootRef = ref<HTMLElement | null>(null);\nconst inputRef = ref<HTMLInputElement | null>(null);\nconst panelRef = ref<HTMLElement | null>(null);\nconst overlayFocusGuard = useGridOverlayFocusGuard();\n\nconst normalize = (s: string) =>\n s\n .normalize('NFD')\n .replace(/\\p{Diacritic}/gu, '')\n .toLowerCase()\n .trim();\n\nfunction findOption(text: string) {\n const needle = normalize(text);\n if (!needle) return undefined;\n return props.options.find(\n o => normalize(o.label) === needle || normalize(o.value) === needle,\n );\n}\n\n// Show the option's label for canonical values, the raw text otherwise —\n// the same display rule PrimeVue's editable Select applied.\nconst rawVal = typeof props.val === 'string' ? props.val : '';\nconst initialText =\n props.options.find(o => o.value === rawVal)?.label ?? rawVal;\n\n// Deprecated entries still resolve typed text, but aren't suggested.\nconst suggestions = computed(() =>\n props.options.filter(o => !o.deprecated || o.value === rawVal),\n);\n\nconst text = ref(initialText);\nconst open = ref(true);\nconst activeIndex = ref(-1);\nconst panelStyle = ref<Record<string, string>>({});\nlet committed = false;\n\n// Until the user edits, the input holds the current value — filtering by it\n// would hide every other suggestion, so list them all.\nconst filtered = computed(() => {\n const needle = normalize(text.value);\n if (!needle || text.value === initialText) return suggestions.value;\n return suggestions.value.filter(\n o =>\n normalize(o.label).includes(needle) ||\n normalize(o.value).includes(needle),\n );\n});\n\nconst selectedValue = computed(() => findOption(text.value)?.value);\nconst panelVisible = computed(() => open.value && filtered.value.length > 0);\n\nwatch(filtered, () => {\n activeIndex.value = -1;\n});\n\nfunction commit(value: string, preventFocus = true) {\n if (committed) return;\n committed = true;\n const trimmed = value.trim();\n props.save(findOption(trimmed)?.value ?? trimmed, preventFocus);\n}\n\nfunction pick(option: ResolvedGridOption) {\n text.value = option.label;\n commit(option.label);\n props.close();\n}\n\nfunction updatePosition() {\n const el = rootRef.value;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n const spaceBelow = window.innerHeight - rect.bottom;\n const flip = spaceBelow < PANEL_MAX_HEIGHT && rect.top > spaceBelow;\n panelStyle.value = {\n left: `${rect.left}px`,\n minWidth: `${rect.width}px`,\n ...(flip\n ? { bottom: `${window.innerHeight - rect.top + 2}px` }\n : { top: `${rect.bottom + 2}px` }),\n };\n}\n\nfunction scrollActiveIntoView() {\n nextTick(() => {\n panelRef.value\n ?.querySelector<HTMLElement>(`[data-index=\"${activeIndex.value}\"]`)\n ?.scrollIntoView({ block: 'nearest' });\n });\n}\n\nfunction moveActive(delta: number) {\n if (!open.value) {\n open.value = true;\n return;\n }\n const count = filtered.value.length;\n if (!count) return;\n activeIndex.value = (activeIndex.value + delta + count) % count;\n scrollActiveIntoView();\n}\n\nfunction onInput(e: Event) {\n text.value = (e.target as HTMLInputElement).value;\n open.value = true;\n}\n\nfunction onKeydown(e: KeyboardEvent) {\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n e.stopPropagation();\n moveActive(1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n e.stopPropagation();\n moveActive(-1);\n break;\n case 'Enter': {\n e.preventDefault();\n e.stopPropagation();\n const option = panelVisible.value\n ? filtered.value[activeIndex.value]\n : undefined;\n if (option) text.value = option.label;\n commit(text.value, false);\n break;\n }\n case 'Tab':\n commit(text.value);\n break;\n case 'Escape':\n e.stopPropagation();\n if (panelVisible.value) {\n open.value = false;\n } else {\n committed = true;\n props.close();\n }\n break;\n }\n}\n\nfunction onBlur() {\n commit(text.value);\n}\n\nfunction togglePanel() {\n open.value = !open.value;\n inputRef.value?.focus();\n}\n\nwatch(panelVisible, visible => {\n if (visible) nextTick(updatePosition);\n});\n\nonMounted(() => {\n updatePosition();\n window.addEventListener('scroll', updatePosition, true);\n window.addEventListener('resize', updatePosition);\n nextTick(() => {\n inputRef.value?.focus();\n inputRef.value?.select();\n });\n});\n\nonBeforeUnmount(() => {\n window.removeEventListener('scroll', updatePosition, true);\n window.removeEventListener('resize', updatePosition);\n});\n</script>\n\n<template>\n <div ref=\"rootRef\" class=\"well-cell-combo\">\n <input\n ref=\"inputRef\"\n :value=\"text\"\n :maxlength=\"MAX_LENGTH\"\n class=\"well-cell-combo-input\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n aria-autocomplete=\"list\"\n :aria-expanded=\"panelVisible\"\n :aria-controls=\"listId\"\n :aria-describedby=\"panelVisible && hintText ? hintId : undefined\"\n :aria-activedescendant=\"\n activeIndex >= 0 ? `${listId}-${activeIndex}` : undefined\n \"\n @input=\"onInput\"\n @keydown=\"onKeydown\"\n @blur=\"onBlur\"\n />\n <button\n type=\"button\"\n tabindex=\"-1\"\n class=\"well-cell-combo-toggle\"\n aria-hidden=\"true\"\n @mousedown.prevent=\"togglePanel\"\n >\n <IconCaretDown class=\"size-3.5\" />\n </button>\n\n <Teleport to=\"body\">\n <ul\n v-if=\"panelVisible\"\n :id=\"listId\"\n ref=\"panelRef\"\n role=\"listbox\"\n class=\"well-combo-panel\"\n :style=\"panelStyle\"\n v-bind=\"overlayFocusGuard\"\n @mousedown.prevent\n >\n <li\n v-if=\"hintText\"\n :id=\"hintId\"\n role=\"presentation\"\n class=\"well-combo-hint\"\n >\n <IconPencilSimpleLine class=\"size-3.5 shrink-0\" aria-hidden=\"true\" />\n {{ hintText }}\n </li>\n <li\n v-for=\"(option, i) in filtered\"\n :id=\"`${listId}-${i}`\"\n :key=\"option.value\"\n :data-index=\"i\"\n role=\"option\"\n :aria-selected=\"option.value === selectedValue\"\n class=\"well-combo-option text-sm p-1\"\n :class=\"{\n 'is-active': i === activeIndex,\n 'is-selected': option.value === selectedValue,\n }\"\n @mouseenter=\"activeIndex = i\"\n @click=\"pick(option)\"\n >\n {{ option.label }}\n </li>\n </ul>\n </Teleport>\n </div>\n</template>\n"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { Component } from 'vue';
2
+ type __VLS_Props = {
3
+ rowIndex: number;
4
+ model: Record<string, unknown>;
5
+ part: Component;
6
+ label?: string;
7
+ requestDelete: (rowIndex: number, model: Record<string, unknown>) => void;
8
+ };
9
+ 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>;
10
+ declare const _default: typeof __VLS_export;
11
+ export default _default;
12
+ //# sourceMappingURL=GridDeleteCell.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridDeleteCell.d.ts","sourceRoot":"","sources":["../../../src/grid/cells/GridDeleteCell.vue"],"names":[],"mappings":"AAsCA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAErC,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC3E,CAAC;AA6CF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,7 @@
1
+ import e from "./GridDeleteCell.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/grid/cells/GridDeleteCell.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
6
+
7
+ //# sourceMappingURL=GridDeleteCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridDeleteCell.js","names":[],"sources":["../../../src/grid/cells/GridDeleteCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * Delete column cell: renders the `deleteButton` part (resolved by the\n * column builder) with the `WellDeleteButtonProps` contract and asks the grid\n * to delete the row on its `click`.\n */\nimport type { Component } from 'vue';\n\nconst props = defineProps<{\n rowIndex: number;\n model: Record<string, unknown>;\n part: Component;\n label?: string;\n requestDelete: (rowIndex: number, model: Record<string, unknown>) => void;\n}>();\n\ndefineOptions({ inheritAttrs: false });\n\nfunction handleClick(e?: unknown) {\n // A native click (default part, or a part whose root gets the listener)\n // must not reach the grid, which would treat it as a cell click.\n if (e instanceof Event) e.stopPropagation();\n props.requestDelete(props.rowIndex, props.model);\n}\n</script>\n\n<template>\n <component\n :is=\"part\"\n :index=\"rowIndex\"\n :row=\"model\"\n :label=\"label\"\n @click=\"handleClick\"\n />\n</template>\n"],"mappings":""}