@vuu-ui/vuu-table-extras 2.1.19-beta.1 → 2.1.19-beta.3

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 (340) hide show
  1. package/cjs/node_modules/csv-parse/dist/esm/sync.js +3978 -0
  2. package/cjs/node_modules/csv-parse/dist/esm/sync.js.map +1 -0
  3. package/cjs/packages/vuu-table-extras/src/calculated-column/CalculatedColumnPanel.js +85 -0
  4. package/cjs/packages/vuu-table-extras/src/calculated-column/CalculatedColumnPanel.js.map +1 -0
  5. package/cjs/packages/vuu-table-extras/src/calculated-column/useCalculatedColumnPanel.js +71 -0
  6. package/cjs/packages/vuu-table-extras/src/calculated-column/useCalculatedColumnPanel.js.map +1 -0
  7. package/cjs/packages/vuu-table-extras/src/calculated-column/useEditCalculatedColumn.js +138 -0
  8. package/cjs/packages/vuu-table-extras/src/calculated-column/useEditCalculatedColumn.js.map +1 -0
  9. package/cjs/packages/vuu-table-extras/src/cell-edit-validators/CaseValidator.js +25 -0
  10. package/cjs/packages/vuu-table-extras/src/cell-edit-validators/CaseValidator.js.map +1 -0
  11. package/cjs/packages/vuu-table-extras/src/cell-edit-validators/PatternValidator.js +31 -0
  12. package/cjs/packages/vuu-table-extras/src/cell-edit-validators/PatternValidator.js.map +1 -0
  13. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.css.js +6 -0
  14. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.css.js.map +1 -0
  15. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.js +81 -0
  16. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.js.map +1 -0
  17. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js +6 -0
  18. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js.map +1 -0
  19. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js +67 -0
  20. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js.map +1 -0
  21. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundKeyframes.css.js +6 -0
  22. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundKeyframes.css.js.map +1 -0
  23. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/useDirection.js +20 -0
  24. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/useDirection.js.map +1 -0
  25. package/cjs/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.css.js +6 -0
  26. package/cjs/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.css.js.map +1 -0
  27. package/cjs/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.js +40 -0
  28. package/cjs/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.js.map +1 -0
  29. package/cjs/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.css.js +6 -0
  30. package/cjs/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.css.js.map +1 -0
  31. package/cjs/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.js +103 -0
  32. package/cjs/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.js.map +1 -0
  33. package/cjs/packages/vuu-table-extras/src/cell-renderers/lookup-cell/LookupCell.js +21 -0
  34. package/cjs/packages/vuu-table-extras/src/cell-renderers/lookup-cell/LookupCell.js.map +1 -0
  35. package/cjs/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.css.js +6 -0
  36. package/cjs/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.css.js.map +1 -0
  37. package/cjs/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.js +62 -0
  38. package/cjs/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.js.map +1 -0
  39. package/cjs/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.css.js +6 -0
  40. package/cjs/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.css.js.map +1 -0
  41. package/cjs/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.js +69 -0
  42. package/cjs/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.js.map +1 -0
  43. package/cjs/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.css.js +6 -0
  44. package/cjs/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.css.js.map +1 -0
  45. package/cjs/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.js +39 -0
  46. package/cjs/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.js.map +1 -0
  47. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-function-descriptors.js +307 -0
  48. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-function-descriptors.js.map +1 -0
  49. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionLanguage.js +28 -0
  50. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionLanguage.js.map +1 -0
  51. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js +465 -0
  52. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map +1 -0
  53. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/column-expression-parse-utils.js +61 -0
  54. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/column-expression-parse-utils.js.map +1 -0
  55. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/generated/column-parser.js +21 -0
  56. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/generated/column-parser.js.map +1 -0
  57. package/cjs/packages/vuu-table-extras/src/column-expression-input/functionDocInfo.js +39 -0
  58. package/cjs/packages/vuu-table-extras/src/column-expression-input/functionDocInfo.js.map +1 -0
  59. package/cjs/packages/vuu-table-extras/src/column-expression-input/highlighting.js +16 -0
  60. package/cjs/packages/vuu-table-extras/src/column-expression-input/highlighting.js.map +1 -0
  61. package/cjs/packages/vuu-table-extras/src/column-expression-input/theme.js +63 -0
  62. package/cjs/packages/vuu-table-extras/src/column-expression-input/theme.js.map +1 -0
  63. package/cjs/packages/vuu-table-extras/src/column-expression-input/useColumnAutoComplete.js +358 -0
  64. package/cjs/packages/vuu-table-extras/src/column-expression-input/useColumnAutoComplete.js.map +1 -0
  65. package/cjs/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionEditor.js +131 -0
  66. package/cjs/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionEditor.js.map +1 -0
  67. package/cjs/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionSuggestionProvider.js +213 -0
  68. package/cjs/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionSuggestionProvider.js.map +1 -0
  69. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/BaseNumericFormattingSettings.js +98 -0
  70. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/BaseNumericFormattingSettings.js.map +1 -0
  71. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/ColumnFormattingPanel.js +111 -0
  72. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/ColumnFormattingPanel.js.map +1 -0
  73. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/DateTimeFormattingSettings.js +102 -0
  74. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/DateTimeFormattingSettings.js.map +1 -0
  75. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.css.js +6 -0
  76. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.css.js.map +1 -0
  77. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.js +48 -0
  78. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.js.map +1 -0
  79. package/cjs/packages/vuu-table-extras/src/column-menu/ColumnMenu.css.js +6 -0
  80. package/cjs/packages/vuu-table-extras/src/column-menu/ColumnMenu.css.js.map +1 -0
  81. package/cjs/packages/vuu-table-extras/src/column-menu/ColumnMenu.js +107 -0
  82. package/cjs/packages/vuu-table-extras/src/column-menu/ColumnMenu.js.map +1 -0
  83. package/cjs/packages/vuu-table-extras/src/column-menu/column-menu-utils.js +459 -0
  84. package/cjs/packages/vuu-table-extras/src/column-menu/column-menu-utils.js.map +1 -0
  85. package/cjs/packages/vuu-table-extras/src/column-menu/useColumnActions.js +68 -0
  86. package/cjs/packages/vuu-table-extras/src/column-menu/useColumnActions.js.map +1 -0
  87. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnModel.js +177 -0
  88. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnModel.js.map +1 -0
  89. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnPicker.css.js +6 -0
  90. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnPicker.css.js.map +1 -0
  91. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnPicker.js +252 -0
  92. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnPicker.js.map +1 -0
  93. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnPickerAction.js +34 -0
  94. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnPickerAction.js.map +1 -0
  95. package/cjs/packages/vuu-table-extras/src/column-picker/useColumnPicker.js +55 -0
  96. package/cjs/packages/vuu-table-extras/src/column-picker/useColumnPicker.js.map +1 -0
  97. package/cjs/packages/vuu-table-extras/src/column-picker/useTableColumnPicker.js +35 -0
  98. package/cjs/packages/vuu-table-extras/src/column-picker/useTableColumnPicker.js.map +1 -0
  99. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.css.js +6 -0
  100. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.css.js.map +1 -0
  101. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.js +45 -0
  102. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.js.map +1 -0
  103. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.css.js +6 -0
  104. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.css.js.map +1 -0
  105. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.js +161 -0
  106. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.js.map +1 -0
  107. package/cjs/packages/vuu-table-extras/src/column-settings-panel/useColumnSettings.js +203 -0
  108. package/cjs/packages/vuu-table-extras/src/column-settings-panel/useColumnSettings.js.map +1 -0
  109. package/cjs/packages/vuu-table-extras/src/csv-upload/CsvUpload.css.js +6 -0
  110. package/cjs/packages/vuu-table-extras/src/csv-upload/CsvUpload.css.js.map +1 -0
  111. package/cjs/packages/vuu-table-extras/src/csv-upload/CsvUpload.js +95 -0
  112. package/cjs/packages/vuu-table-extras/src/csv-upload/CsvUpload.js.map +1 -0
  113. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-constants.js +8 -0
  114. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-constants.js.map +1 -0
  115. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-errors.js +64 -0
  116. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-errors.js.map +1 -0
  117. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-parse.js +199 -0
  118. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-parse.js.map +1 -0
  119. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-schema-validation.js +100 -0
  120. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-schema-validation.js.map +1 -0
  121. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-upload-utils.js +86 -0
  122. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-upload-utils.js.map +1 -0
  123. package/cjs/packages/vuu-table-extras/src/csv-upload/useCsvUpload.js +306 -0
  124. package/cjs/packages/vuu-table-extras/src/csv-upload/useCsvUpload.js.map +1 -0
  125. package/cjs/packages/vuu-table-extras/src/csv-upload/useCsvUploadSessionPreview.js +73 -0
  126. package/cjs/packages/vuu-table-extras/src/csv-upload/useCsvUploadSessionPreview.js.map +1 -0
  127. package/cjs/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.css.js +6 -0
  128. package/cjs/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.css.js.map +1 -0
  129. package/cjs/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.js +76 -0
  130. package/cjs/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.js.map +1 -0
  131. package/cjs/packages/vuu-table-extras/src/datasource-stats/useDatasourceStats.js +61 -0
  132. package/cjs/packages/vuu-table-extras/src/datasource-stats/useDatasourceStats.js.map +1 -0
  133. package/cjs/packages/vuu-table-extras/src/freeze-control/FreezeControl.css.js +6 -0
  134. package/cjs/packages/vuu-table-extras/src/freeze-control/FreezeControl.css.js.map +1 -0
  135. package/cjs/packages/vuu-table-extras/src/freeze-control/FreezeControl.js +106 -0
  136. package/cjs/packages/vuu-table-extras/src/freeze-control/FreezeControl.js.map +1 -0
  137. package/cjs/packages/vuu-table-extras/src/freeze-control/FrozenBanner.css.js +6 -0
  138. package/cjs/packages/vuu-table-extras/src/freeze-control/FrozenBanner.css.js.map +1 -0
  139. package/cjs/packages/vuu-table-extras/src/freeze-control/FrozenBanner.js +55 -0
  140. package/cjs/packages/vuu-table-extras/src/freeze-control/FrozenBanner.js.map +1 -0
  141. package/cjs/packages/vuu-table-extras/src/freeze-control/freezeControlBadge.js +10 -0
  142. package/cjs/packages/vuu-table-extras/src/freeze-control/freezeControlBadge.js.map +1 -0
  143. package/cjs/packages/vuu-table-extras/src/freeze-control/useFreezeControl.js +68 -0
  144. package/cjs/packages/vuu-table-extras/src/freeze-control/useFreezeControl.js.map +1 -0
  145. package/cjs/packages/vuu-table-extras/src/index.js +102 -0
  146. package/cjs/packages/vuu-table-extras/src/index.js.map +1 -0
  147. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.css.js +6 -0
  148. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.css.js.map +1 -0
  149. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.js +90 -0
  150. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.js.map +1 -0
  151. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableSettingsAction.js +44 -0
  152. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableSettingsAction.js.map +1 -0
  153. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/useTabbedTableConfigPanel.js +49 -0
  154. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/useTabbedTableConfigPanel.js.map +1 -0
  155. package/cjs/packages/vuu-table-extras/src/table-footer/TableFooter.css.js +6 -0
  156. package/cjs/packages/vuu-table-extras/src/table-footer/TableFooter.css.js.map +1 -0
  157. package/cjs/packages/vuu-table-extras/src/table-footer/TableFooter.js +34 -0
  158. package/cjs/packages/vuu-table-extras/src/table-footer/TableFooter.js.map +1 -0
  159. package/cjs/packages/vuu-table-extras/src/table-provider/TableProvider.js +61 -0
  160. package/cjs/packages/vuu-table-extras/src/table-provider/TableProvider.js.map +1 -0
  161. package/cjs/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.css.js +6 -0
  162. package/cjs/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.css.js.map +1 -0
  163. package/cjs/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.js +116 -0
  164. package/cjs/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.js.map +1 -0
  165. package/cjs/packages/vuu-table-extras/src/table-settings-panel/useTableSettings.js +60 -0
  166. package/cjs/packages/vuu-table-extras/src/table-settings-panel/useTableSettings.js.map +1 -0
  167. package/esm/node_modules/csv-parse/dist/esm/sync.js +3974 -0
  168. package/esm/node_modules/csv-parse/dist/esm/sync.js.map +1 -0
  169. package/esm/packages/vuu-table-extras/src/calculated-column/CalculatedColumnPanel.js +83 -0
  170. package/esm/packages/vuu-table-extras/src/calculated-column/CalculatedColumnPanel.js.map +1 -0
  171. package/esm/packages/vuu-table-extras/src/calculated-column/useCalculatedColumnPanel.js +69 -0
  172. package/esm/packages/vuu-table-extras/src/calculated-column/useCalculatedColumnPanel.js.map +1 -0
  173. package/esm/packages/vuu-table-extras/src/calculated-column/useEditCalculatedColumn.js +136 -0
  174. package/esm/packages/vuu-table-extras/src/calculated-column/useEditCalculatedColumn.js.map +1 -0
  175. package/esm/packages/vuu-table-extras/src/cell-edit-validators/CaseValidator.js +23 -0
  176. package/esm/packages/vuu-table-extras/src/cell-edit-validators/CaseValidator.js.map +1 -0
  177. package/esm/packages/vuu-table-extras/src/cell-edit-validators/PatternValidator.js +29 -0
  178. package/esm/packages/vuu-table-extras/src/cell-edit-validators/PatternValidator.js.map +1 -0
  179. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.css.js +4 -0
  180. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.css.js.map +1 -0
  181. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.js +79 -0
  182. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.js.map +1 -0
  183. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js +4 -0
  184. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js.map +1 -0
  185. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js +65 -0
  186. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js.map +1 -0
  187. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundKeyframes.css.js +4 -0
  188. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundKeyframes.css.js.map +1 -0
  189. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/useDirection.js +18 -0
  190. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/useDirection.js.map +1 -0
  191. package/esm/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.css.js +4 -0
  192. package/esm/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.css.js.map +1 -0
  193. package/esm/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.js +38 -0
  194. package/esm/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.js.map +1 -0
  195. package/esm/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.css.js +4 -0
  196. package/esm/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.css.js.map +1 -0
  197. package/esm/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.js +101 -0
  198. package/esm/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.js.map +1 -0
  199. package/esm/packages/vuu-table-extras/src/cell-renderers/lookup-cell/LookupCell.js +19 -0
  200. package/esm/packages/vuu-table-extras/src/cell-renderers/lookup-cell/LookupCell.js.map +1 -0
  201. package/esm/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.css.js +4 -0
  202. package/esm/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.css.js.map +1 -0
  203. package/esm/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.js +60 -0
  204. package/esm/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.js.map +1 -0
  205. package/esm/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.css.js +4 -0
  206. package/esm/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.css.js.map +1 -0
  207. package/esm/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.js +67 -0
  208. package/esm/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.js.map +1 -0
  209. package/esm/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.css.js +4 -0
  210. package/esm/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.css.js.map +1 -0
  211. package/esm/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.js +37 -0
  212. package/esm/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.js.map +1 -0
  213. package/esm/packages/vuu-table-extras/src/column-expression-input/column-function-descriptors.js +305 -0
  214. package/esm/packages/vuu-table-extras/src/column-expression-input/column-function-descriptors.js.map +1 -0
  215. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionLanguage.js +26 -0
  216. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionLanguage.js.map +1 -0
  217. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js +463 -0
  218. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map +1 -0
  219. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/column-expression-parse-utils.js +56 -0
  220. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/column-expression-parse-utils.js.map +1 -0
  221. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/generated/column-parser.js +19 -0
  222. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/generated/column-parser.js.map +1 -0
  223. package/esm/packages/vuu-table-extras/src/column-expression-input/functionDocInfo.js +37 -0
  224. package/esm/packages/vuu-table-extras/src/column-expression-input/functionDocInfo.js.map +1 -0
  225. package/esm/packages/vuu-table-extras/src/column-expression-input/highlighting.js +14 -0
  226. package/esm/packages/vuu-table-extras/src/column-expression-input/highlighting.js.map +1 -0
  227. package/esm/packages/vuu-table-extras/src/column-expression-input/theme.js +61 -0
  228. package/esm/packages/vuu-table-extras/src/column-expression-input/theme.js.map +1 -0
  229. package/esm/packages/vuu-table-extras/src/column-expression-input/useColumnAutoComplete.js +356 -0
  230. package/esm/packages/vuu-table-extras/src/column-expression-input/useColumnAutoComplete.js.map +1 -0
  231. package/esm/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionEditor.js +129 -0
  232. package/esm/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionEditor.js.map +1 -0
  233. package/esm/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionSuggestionProvider.js +211 -0
  234. package/esm/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionSuggestionProvider.js.map +1 -0
  235. package/esm/packages/vuu-table-extras/src/column-formatting-settings/BaseNumericFormattingSettings.js +96 -0
  236. package/esm/packages/vuu-table-extras/src/column-formatting-settings/BaseNumericFormattingSettings.js.map +1 -0
  237. package/esm/packages/vuu-table-extras/src/column-formatting-settings/ColumnFormattingPanel.js +109 -0
  238. package/esm/packages/vuu-table-extras/src/column-formatting-settings/ColumnFormattingPanel.js.map +1 -0
  239. package/esm/packages/vuu-table-extras/src/column-formatting-settings/DateTimeFormattingSettings.js +100 -0
  240. package/esm/packages/vuu-table-extras/src/column-formatting-settings/DateTimeFormattingSettings.js.map +1 -0
  241. package/esm/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.css.js +4 -0
  242. package/esm/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.css.js.map +1 -0
  243. package/esm/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.js +46 -0
  244. package/esm/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.js.map +1 -0
  245. package/esm/packages/vuu-table-extras/src/column-menu/ColumnMenu.css.js +4 -0
  246. package/esm/packages/vuu-table-extras/src/column-menu/ColumnMenu.css.js.map +1 -0
  247. package/esm/packages/vuu-table-extras/src/column-menu/ColumnMenu.js +105 -0
  248. package/esm/packages/vuu-table-extras/src/column-menu/ColumnMenu.js.map +1 -0
  249. package/esm/packages/vuu-table-extras/src/column-menu/column-menu-utils.js +451 -0
  250. package/esm/packages/vuu-table-extras/src/column-menu/column-menu-utils.js.map +1 -0
  251. package/esm/packages/vuu-table-extras/src/column-menu/useColumnActions.js +66 -0
  252. package/esm/packages/vuu-table-extras/src/column-menu/useColumnActions.js.map +1 -0
  253. package/esm/packages/vuu-table-extras/src/column-picker/ColumnModel.js +170 -0
  254. package/esm/packages/vuu-table-extras/src/column-picker/ColumnModel.js.map +1 -0
  255. package/esm/packages/vuu-table-extras/src/column-picker/ColumnPicker.css.js +4 -0
  256. package/esm/packages/vuu-table-extras/src/column-picker/ColumnPicker.css.js.map +1 -0
  257. package/esm/packages/vuu-table-extras/src/column-picker/ColumnPicker.js +249 -0
  258. package/esm/packages/vuu-table-extras/src/column-picker/ColumnPicker.js.map +1 -0
  259. package/esm/packages/vuu-table-extras/src/column-picker/ColumnPickerAction.js +32 -0
  260. package/esm/packages/vuu-table-extras/src/column-picker/ColumnPickerAction.js.map +1 -0
  261. package/esm/packages/vuu-table-extras/src/column-picker/useColumnPicker.js +53 -0
  262. package/esm/packages/vuu-table-extras/src/column-picker/useColumnPicker.js.map +1 -0
  263. package/esm/packages/vuu-table-extras/src/column-picker/useTableColumnPicker.js +33 -0
  264. package/esm/packages/vuu-table-extras/src/column-picker/useTableColumnPicker.js.map +1 -0
  265. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.css.js +4 -0
  266. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.css.js.map +1 -0
  267. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.js +43 -0
  268. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.js.map +1 -0
  269. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.css.js +4 -0
  270. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.css.js.map +1 -0
  271. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.js +159 -0
  272. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.js.map +1 -0
  273. package/esm/packages/vuu-table-extras/src/column-settings-panel/useColumnSettings.js +201 -0
  274. package/esm/packages/vuu-table-extras/src/column-settings-panel/useColumnSettings.js.map +1 -0
  275. package/esm/packages/vuu-table-extras/src/csv-upload/CsvUpload.css.js +4 -0
  276. package/esm/packages/vuu-table-extras/src/csv-upload/CsvUpload.css.js.map +1 -0
  277. package/esm/packages/vuu-table-extras/src/csv-upload/CsvUpload.js +93 -0
  278. package/esm/packages/vuu-table-extras/src/csv-upload/CsvUpload.js.map +1 -0
  279. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-constants.js +5 -0
  280. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-constants.js.map +1 -0
  281. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-errors.js +57 -0
  282. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-errors.js.map +1 -0
  283. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-parse.js +196 -0
  284. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-parse.js.map +1 -0
  285. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-schema-validation.js +97 -0
  286. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-schema-validation.js.map +1 -0
  287. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-upload-utils.js +76 -0
  288. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-upload-utils.js.map +1 -0
  289. package/esm/packages/vuu-table-extras/src/csv-upload/useCsvUpload.js +304 -0
  290. package/esm/packages/vuu-table-extras/src/csv-upload/useCsvUpload.js.map +1 -0
  291. package/esm/packages/vuu-table-extras/src/csv-upload/useCsvUploadSessionPreview.js +71 -0
  292. package/esm/packages/vuu-table-extras/src/csv-upload/useCsvUploadSessionPreview.js.map +1 -0
  293. package/esm/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.css.js +4 -0
  294. package/esm/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.css.js.map +1 -0
  295. package/esm/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.js +74 -0
  296. package/esm/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.js.map +1 -0
  297. package/esm/packages/vuu-table-extras/src/datasource-stats/useDatasourceStats.js +59 -0
  298. package/esm/packages/vuu-table-extras/src/datasource-stats/useDatasourceStats.js.map +1 -0
  299. package/esm/packages/vuu-table-extras/src/freeze-control/FreezeControl.css.js +4 -0
  300. package/esm/packages/vuu-table-extras/src/freeze-control/FreezeControl.css.js.map +1 -0
  301. package/esm/packages/vuu-table-extras/src/freeze-control/FreezeControl.js +104 -0
  302. package/esm/packages/vuu-table-extras/src/freeze-control/FreezeControl.js.map +1 -0
  303. package/esm/packages/vuu-table-extras/src/freeze-control/FrozenBanner.css.js +4 -0
  304. package/esm/packages/vuu-table-extras/src/freeze-control/FrozenBanner.css.js.map +1 -0
  305. package/esm/packages/vuu-table-extras/src/freeze-control/FrozenBanner.js +53 -0
  306. package/esm/packages/vuu-table-extras/src/freeze-control/FrozenBanner.js.map +1 -0
  307. package/esm/packages/vuu-table-extras/src/freeze-control/freezeControlBadge.js +8 -0
  308. package/esm/packages/vuu-table-extras/src/freeze-control/freezeControlBadge.js.map +1 -0
  309. package/esm/packages/vuu-table-extras/src/freeze-control/useFreezeControl.js +66 -0
  310. package/esm/packages/vuu-table-extras/src/freeze-control/useFreezeControl.js.map +1 -0
  311. package/esm/packages/vuu-table-extras/src/index.js +43 -0
  312. package/esm/packages/vuu-table-extras/src/index.js.map +1 -0
  313. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.css.js +4 -0
  314. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.css.js.map +1 -0
  315. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.js +88 -0
  316. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.js.map +1 -0
  317. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableSettingsAction.js +42 -0
  318. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableSettingsAction.js.map +1 -0
  319. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/useTabbedTableConfigPanel.js +47 -0
  320. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/useTabbedTableConfigPanel.js.map +1 -0
  321. package/esm/packages/vuu-table-extras/src/table-footer/TableFooter.css.js +4 -0
  322. package/esm/packages/vuu-table-extras/src/table-footer/TableFooter.css.js.map +1 -0
  323. package/esm/packages/vuu-table-extras/src/table-footer/TableFooter.js +31 -0
  324. package/esm/packages/vuu-table-extras/src/table-footer/TableFooter.js.map +1 -0
  325. package/esm/packages/vuu-table-extras/src/table-provider/TableProvider.js +56 -0
  326. package/esm/packages/vuu-table-extras/src/table-provider/TableProvider.js.map +1 -0
  327. package/esm/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.css.js +4 -0
  328. package/esm/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.css.js.map +1 -0
  329. package/esm/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.js +112 -0
  330. package/esm/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.js.map +1 -0
  331. package/esm/packages/vuu-table-extras/src/table-settings-panel/useTableSettings.js +58 -0
  332. package/esm/packages/vuu-table-extras/src/table-settings-panel/useTableSettings.js.map +1 -0
  333. package/package.json +16 -14
  334. package/types/cell-renderers/background-cell/BackgroundCell.d.ts +1 -1
  335. package/types/cell-renderers/dropdown-cell/DropdownCell.d.ts +1 -1
  336. package/types/cell-renderers/lookup-cell/LookupCell.d.ts +1 -1
  337. package/types/column-expression-input/column-language-parser/generated/column-parser.d.ts +1 -1
  338. package/types/column-expression-input/column-language-parser/generated/column-parser.terms.d.ts +24 -1
  339. package/types/column-expression-input/column-language-parser/test.d.mts +1 -1
  340. package/types/freeze-control/useFreezeControl.d.ts +1 -1
@@ -0,0 +1,170 @@
1
+ import { EventEmitter, reorderColumnItems } from '@vuu-ui/vuu-utils';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __typeError = (msg) => {
5
+ throw TypeError(msg);
6
+ };
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
9
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
10
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
11
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
12
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
13
+ var _searchPattern, _selectedColumns;
14
+ const ColumnChangeSource = {
15
+ ColumnPicker: "column-picker",
16
+ ColumnSettings: "column-settings",
17
+ Table: "table"
18
+ };
19
+ const SelectedColumnChangeType = {
20
+ CalculatedColumnAdded: "calculated-column-added",
21
+ ColumnAdded: "column-added",
22
+ ColumnRemoved: "column-removed",
23
+ ColumnUpdated: "column-updated",
24
+ ColumnsReordered: "columns-reordered"
25
+ };
26
+ const isColumnAdded = (change) => change?.type === SelectedColumnChangeType.ColumnAdded;
27
+ const isColumnRemoved = (change) => change?.type === SelectedColumnChangeType.ColumnRemoved;
28
+ const isColumnsReordered = (change) => change?.type === SelectedColumnChangeType.ColumnsReordered;
29
+ const byColumnName = ({ name: n1, label: l1 = n1 }, { name: n2, label: l2 = n2 }) => l1 > l2 ? 1 : l2 > l1 ? -1 : 0;
30
+ const filterColumns = (columns, pattern) => {
31
+ if (pattern) {
32
+ const lowerCasePattern = pattern.toLowerCase();
33
+ return columns.filter(
34
+ ({ name, label = name }) => label.toLowerCase().indexOf(lowerCasePattern) !== -1
35
+ );
36
+ } else {
37
+ return columns;
38
+ }
39
+ };
40
+ class ColumnModel extends EventEmitter {
41
+ constructor(allColumns, selectedColumns) {
42
+ super();
43
+ this.allColumns = allColumns;
44
+ __privateAdd(this, _searchPattern, "");
45
+ __privateAdd(this, _selectedColumns);
46
+ __publicField(this, "notifyListeners", (columns, source, changeType) => {
47
+ this.emit("change", columns, source, changeType);
48
+ this.emit("render", {});
49
+ });
50
+ __privateSet(this, _selectedColumns, selectedColumns);
51
+ }
52
+ get availableColumns() {
53
+ return filterColumns(this.allColumns, __privateGet(this, _searchPattern)).filter(
54
+ ({ name }) => __privateGet(this, _selectedColumns).findIndex((c) => c.name === name) === -1
55
+ ).toSorted(byColumnName);
56
+ }
57
+ set searchPattern(pattern) {
58
+ const searchPattern = pattern;
59
+ if (searchPattern !== __privateGet(this, _searchPattern)) {
60
+ __privateSet(this, _searchPattern, searchPattern);
61
+ this.emit("render", {});
62
+ }
63
+ }
64
+ get searchPattern() {
65
+ return __privateGet(this, _searchPattern) ?? "";
66
+ }
67
+ get selectedColumns() {
68
+ return filterColumns(__privateGet(this, _selectedColumns), __privateGet(this, _searchPattern));
69
+ }
70
+ setSelectedColumns(selectedColumns, source, changeDescriptor) {
71
+ __privateSet(this, _selectedColumns, selectedColumns);
72
+ this.notifyListeners(selectedColumns, source, changeDescriptor);
73
+ }
74
+ getColumn(name) {
75
+ const col = __privateGet(this, _selectedColumns).find((col2) => col2.name === name);
76
+ if (col) {
77
+ return col;
78
+ }
79
+ throw Error(`[ColumnModel] columns does not contain column ${name}`);
80
+ }
81
+ addItemToSelectedColumns(name, source) {
82
+ const column = this.allColumns.find((col) => col.name === name);
83
+ if (column) {
84
+ __privateSet(this, _selectedColumns, __privateGet(this, _selectedColumns).concat(column));
85
+ this.notifyListeners(__privateGet(this, _selectedColumns), source, {
86
+ type: SelectedColumnChangeType.ColumnAdded,
87
+ column
88
+ });
89
+ } else {
90
+ throw Error(
91
+ `[ColumnModel] addItemToSelectedColumns, column '${name}' not found`
92
+ );
93
+ }
94
+ }
95
+ removeItemFromSelectedColumns(name, source) {
96
+ const column = __privateGet(this, _selectedColumns).find((col) => col.name === name);
97
+ if (column) {
98
+ const index = __privateGet(this, _selectedColumns).indexOf(column);
99
+ __privateSet(this, _selectedColumns, __privateGet(this, _selectedColumns).toSpliced(index, 1));
100
+ this.notifyListeners(__privateGet(this, _selectedColumns), source, {
101
+ type: SelectedColumnChangeType.ColumnRemoved,
102
+ column
103
+ });
104
+ } else {
105
+ throw Error(
106
+ `[ColumnModel] removeItemFromSelectedColumns, column '${name}' not found`
107
+ );
108
+ }
109
+ }
110
+ reorderSelectedColumns(orderedColumnNames, source) {
111
+ this.setSelectedColumns(
112
+ reorderColumnItems(__privateGet(this, _selectedColumns), orderedColumnNames),
113
+ source,
114
+ { type: SelectedColumnChangeType.ColumnsReordered }
115
+ );
116
+ }
117
+ updateColumn(column, newColumn = column) {
118
+ const allIndex = this.allColumns.findIndex(
119
+ (col) => col.name === column.name
120
+ );
121
+ const selectedIndex = __privateGet(this, _selectedColumns).findIndex(
122
+ (col) => col.name === column.name
123
+ );
124
+ if (selectedIndex !== -1) {
125
+ if (allIndex === -1) {
126
+ throw Error(
127
+ `[ColumnModel] updateColumn, selected column not in allColumns collection`
128
+ );
129
+ }
130
+ __privateSet(this, _selectedColumns, __privateGet(this, _selectedColumns).toSpliced(
131
+ selectedIndex,
132
+ 1,
133
+ newColumn
134
+ ));
135
+ this.allColumns = this.allColumns.toSpliced(allIndex, 1, newColumn);
136
+ this.notifyListeners(__privateGet(this, _selectedColumns), "column-settings", {
137
+ type: SelectedColumnChangeType.ColumnUpdated,
138
+ column
139
+ });
140
+ } else {
141
+ throw Error(
142
+ `[ColumnModel] updateColumn, column ${column.name} not found`
143
+ );
144
+ }
145
+ }
146
+ /**
147
+ * Used when adding a calculated column
148
+ *
149
+ * @param column
150
+ *
151
+ * @param addToSelectedColumns
152
+ */
153
+ addColumn(column, addToSelectedColumns = false) {
154
+ console.log(`[ColumnModel] add column ${JSON.stringify(column)}`);
155
+ if (addToSelectedColumns) {
156
+ console.log(`add it to selected coliumns`);
157
+ }
158
+ this.allColumns = this.allColumns.concat(column);
159
+ __privateSet(this, _selectedColumns, __privateGet(this, _selectedColumns).concat(column));
160
+ this.notifyListeners(__privateGet(this, _selectedColumns), "column-picker", {
161
+ type: SelectedColumnChangeType.CalculatedColumnAdded,
162
+ column
163
+ });
164
+ }
165
+ }
166
+ _searchPattern = new WeakMap();
167
+ _selectedColumns = new WeakMap();
168
+
169
+ export { ColumnChangeSource, ColumnModel, SelectedColumnChangeType, isColumnAdded, isColumnRemoved, isColumnsReordered };
170
+ //# sourceMappingURL=ColumnModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnModel.js","sources":["../../../../../../../packages/vuu-table-extras/src/column-picker/ColumnModel.ts"],"sourcesContent":["import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { EventEmitter, reorderColumnItems, ValueOf } from \"@vuu-ui/vuu-utils\";\n\nexport const ColumnChangeSource = {\n ColumnPicker: \"column-picker\",\n ColumnSettings: \"column-settings\",\n Table: \"table\",\n} as const;\nexport type ColumnChangeSource = ValueOf<typeof ColumnChangeSource>;\n\nexport const SelectedColumnChangeType = {\n CalculatedColumnAdded: \"calculated-column-added\",\n ColumnAdded: \"column-added\",\n ColumnRemoved: \"column-removed\",\n ColumnUpdated: \"column-updated\",\n ColumnsReordered: \"columns-reordered\",\n} as const;\nexport type SelectedColumnChangeType = ValueOf<typeof SelectedColumnChangeType>;\n\nexport interface SelectedColumnChangeColumnAdded {\n type: Extract<SelectedColumnChangeType, \"column-added\">;\n column: ColumnDescriptor;\n}\nexport interface SelectedColumnChangeCalculatedColumnAdded {\n type: Extract<SelectedColumnChangeType, \"calculated-column-added\">;\n column: ColumnDescriptor;\n}\nexport interface SelectedColumnChangeColumnUpdated {\n type: Extract<SelectedColumnChangeType, \"column-updated\">;\n column: ColumnDescriptor;\n}\n\nexport interface SelectedColumnChangeColumnRemoved {\n type: Extract<SelectedColumnChangeType, \"column-removed\">;\n column: ColumnDescriptor;\n}\n\nexport interface SelectedColumnChangeColumnsReordered {\n type: Extract<SelectedColumnChangeType, \"columns-reordered\">;\n}\n\nexport type SelectedColumnChangeDescriptor =\n | SelectedColumnChangeCalculatedColumnAdded\n | SelectedColumnChangeColumnAdded\n | SelectedColumnChangeColumnRemoved\n | SelectedColumnChangeColumnUpdated\n | SelectedColumnChangeColumnsReordered;\n\nexport const isColumnAdded = (\n change?: SelectedColumnChangeDescriptor,\n): change is SelectedColumnChangeColumnAdded =>\n change?.type === SelectedColumnChangeType.ColumnAdded;\nexport const isColumnRemoved = (\n change?: SelectedColumnChangeDescriptor,\n): change is SelectedColumnChangeColumnRemoved =>\n change?.type === SelectedColumnChangeType.ColumnRemoved;\nexport const isColumnUpdated = (\n change?: SelectedColumnChangeDescriptor,\n): change is SelectedColumnChangeColumnUpdated =>\n change?.type === SelectedColumnChangeType.ColumnUpdated;\nexport const isColumnsReordered = (\n change?: SelectedColumnChangeDescriptor,\n): change is SelectedColumnChangeColumnsReordered =>\n change?.type === SelectedColumnChangeType.ColumnsReordered;\n\nexport type ColumnsChangeHandler = (\n columns: readonly ColumnDescriptor[],\n changeSource: ColumnChangeSource,\n changeDescriptor?: SelectedColumnChangeDescriptor,\n) => void;\nexport type ColumnEvents = {\n change: ColumnsChangeHandler;\n render: (o: object) => void;\n};\n\nconst byColumnName = (\n { name: n1, label: l1 = n1 }: ColumnDescriptor,\n { name: n2, label: l2 = n2 }: ColumnDescriptor,\n) => (l1 > l2 ? 1 : l2 > l1 ? -1 : 0);\n\nconst filterColumns = (\n columns: readonly ColumnDescriptor[],\n pattern: string,\n) => {\n if (pattern) {\n const lowerCasePattern = pattern.toLowerCase();\n return columns.filter(\n ({ name, label = name }) =>\n label.toLowerCase().indexOf(lowerCasePattern) !== -1,\n );\n } else {\n return columns;\n }\n};\n\nexport class ColumnModel extends EventEmitter<ColumnEvents> {\n #searchPattern = \"\";\n #selectedColumns: readonly ColumnDescriptor[];\n constructor(\n /**\n * All available columns, including selected columns.\n */\n public allColumns: readonly ColumnDescriptor[],\n /**\n * Columns already selected and rendered in Table.\n */\n selectedColumns: readonly ColumnDescriptor[],\n ) {\n super();\n this.#selectedColumns = selectedColumns;\n }\n\n get availableColumns(): ColumnDescriptor[] {\n return filterColumns(this.allColumns, this.#searchPattern)\n .filter(\n ({ name }) =>\n this.#selectedColumns.findIndex((c) => c.name === name) === -1,\n )\n .toSorted(byColumnName);\n }\n\n set searchPattern(pattern: string) {\n const searchPattern = pattern;\n if (searchPattern !== this.#searchPattern) {\n this.#searchPattern = searchPattern;\n this.emit(\"render\", {});\n }\n }\n\n get searchPattern() {\n return this.#searchPattern ?? \"\";\n }\n\n get selectedColumns() {\n return filterColumns(this.#selectedColumns, this.#searchPattern);\n }\n setSelectedColumns(\n selectedColumns: ColumnDescriptor[],\n source: ColumnChangeSource,\n changeDescriptor?: SelectedColumnChangeDescriptor,\n ) {\n this.#selectedColumns = selectedColumns;\n this.notifyListeners(selectedColumns, source, changeDescriptor);\n }\n\n getColumn(name: string) {\n const col = this.#selectedColumns.find((col) => col.name === name);\n if (col) {\n return col;\n }\n throw Error(`[ColumnModel] columns does not contain column ${name}`);\n }\n\n addItemToSelectedColumns(name: string, source: ColumnChangeSource) {\n const column = this.allColumns.find((col) => col.name === name);\n if (column) {\n this.#selectedColumns = this.#selectedColumns.concat(column);\n this.notifyListeners(this.#selectedColumns, source, {\n type: SelectedColumnChangeType.ColumnAdded,\n column,\n });\n } else {\n throw Error(\n `[ColumnModel] addItemToSelectedColumns, column '${name}' not found`,\n );\n }\n }\n removeItemFromSelectedColumns(name: string, source: ColumnChangeSource) {\n const column = this.#selectedColumns.find((col) => col.name === name);\n if (column) {\n const index = this.#selectedColumns.indexOf(column);\n this.#selectedColumns = this.#selectedColumns.toSpliced(index, 1);\n this.notifyListeners(this.#selectedColumns, source, {\n type: SelectedColumnChangeType.ColumnRemoved,\n column,\n });\n } else {\n throw Error(\n `[ColumnModel] removeItemFromSelectedColumns, column '${name}' not found`,\n );\n }\n }\n\n reorderSelectedColumns(\n orderedColumnNames: string[],\n source: ColumnChangeSource,\n ) {\n this.setSelectedColumns(\n reorderColumnItems(this.#selectedColumns, orderedColumnNames),\n source,\n { type: SelectedColumnChangeType.ColumnsReordered },\n );\n }\n\n updateColumn(\n currentColumn: ColumnDescriptor,\n newColumn: ColumnDescriptor,\n ): void;\n updateColumn(column: ColumnDescriptor): void;\n updateColumn(column: ColumnDescriptor, newColumn: ColumnDescriptor = column) {\n const allIndex = this.allColumns.findIndex(\n (col) => col.name === column.name,\n );\n const selectedIndex = this.#selectedColumns.findIndex(\n (col) => col.name === column.name,\n );\n\n if (selectedIndex !== -1) {\n if (allIndex === -1) {\n throw Error(\n `[ColumnModel] updateColumn, selected column not in allColumns collection`,\n );\n }\n\n this.#selectedColumns = this.#selectedColumns.toSpliced(\n selectedIndex,\n 1,\n newColumn,\n );\n this.allColumns = this.allColumns.toSpliced(allIndex, 1, newColumn);\n\n this.notifyListeners(this.#selectedColumns, \"column-settings\", {\n type: SelectedColumnChangeType.ColumnUpdated,\n column,\n });\n } else {\n throw Error(\n `[ColumnModel] updateColumn, column ${column.name} not found`,\n );\n }\n }\n\n /**\n * Used when adding a calculated column\n *\n * @param column\n *\n * @param addToSelectedColumns\n */\n addColumn(column: ColumnDescriptor, addToSelectedColumns = false) {\n console.log(`[ColumnModel] add column ${JSON.stringify(column)}`);\n if (addToSelectedColumns) {\n console.log(`add it to selected coliumns`);\n }\n\n this.allColumns = this.allColumns.concat(column);\n this.#selectedColumns = this.#selectedColumns.concat(column);\n\n this.notifyListeners(this.#selectedColumns, \"column-picker\", {\n type: SelectedColumnChangeType.CalculatedColumnAdded,\n column,\n });\n }\n\n private notifyListeners: ColumnsChangeHandler = (\n columns,\n source,\n changeType,\n ) => {\n this.emit(\"change\", columns, source, changeType);\n this.emit(\"render\", {});\n };\n}\n"],"names":["col"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var columnPickerCss = ".vuuColumnPicker {\n\n --label-margin-left: 0px;\n\n --columnpicker-background: var(--vuuColumnPicker-background, var(--salt-container-primary-background));\n background: var(--columnpicker-background);\n container-type: inline-size;\n display: flex; \n flex-direction: column;\n gap: var(--salt-spacing-300);\n height: var(--vuuColumnPicker-height, 100%);\n overflow: hidden;\n padding: var(--salt-spacing-300) 0;\n\n &.vuuColumnPicker-withCalculated {\n --label-margin-left: 8px;\n }\n\n .saltListBox {\n background-color: inherit;\n }\n\n .saltOption {\n align-items: center;\n background-color: inherit;\n border-bottom: var(--vuuColumnListItem-border, solid) 1px\n var(--salt-separable-tertiary-borderColor);\n gap: var(--salt-spacing-200);\n height: calc(var(--salt-size-base) + var(--salt-spacing-200));\n .vuuIcon {\n --vuu-icon-color: var(--salt-content-secondary-foreground);\n }\n\n .vuuCalculatedColumnIcon {\n --vuu-icon-color: var(--salt-content-secondary-foreground);\n left: 32px;\n position: absolute;\n top: 8px;\n }\n\n .vuuHighlight {\n color: var(--vuu-color-blue-40);\n text-decoration: underline;\n }\n\n .vuuColumnPicker-text {\n margin-left: var(--label-margin-left);\n }\n\n }\n\n .vuuColumnPickerListItem-action {\n margin-left: auto;\n visibility: hidden;\n }\n\n .saltOption:hover {\n .vuuColumnPickerListItem-action {\n visibility: visible;\n }\n }\n\n .vuuColumnPicker-search {\n --saltInput-paddingLeft: var(--salt-spacing-300);\n padding: var(--salt-spacing-200) var(--salt-spacing-300) 0 var(--salt-spacing-300);\n }\n\n .vuuColumnPicker-scrollContainer {\n\n flex: 1 1 0px;\n overflow: auto;\n\n\n .vuuColumnPicker-sectionHeader {\n align-items: center;\n background: var(--columnpicker-background);\n display: flex;\n height: 32px;\n padding: 0 var(--salt-spacing-300);\n position: sticky;\n top:0;\n z-index: 1;\n }\n\n .vuuColumnPicker-availableHeader {\n top: 32px;\n }\n\n\n .vuuColumnPicker-availableList {\n .saltOption {\n padding-left: var(--salt-spacing-300);\n }\n }\n\n }\n\n}";
2
+
3
+ export { columnPickerCss as default };
4
+ //# sourceMappingURL=ColumnPicker.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnPicker.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,249 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useComponentCssInjection } from '@salt-ds/styles';
3
+ import { useWindow } from '@salt-ds/window';
4
+ import { isCalculatedColumn, DragDropProvider, getColumnLabel, useSortable } from '@vuu-ui/vuu-utils';
5
+ import cx from 'clsx';
6
+ import { forwardRef, useCallback, useRef, useMemo } from 'react';
7
+ import { Input, ListBox, Button, Option } from '@salt-ds/core';
8
+ import { applyHighlighting } from '@vuu-ui/vuu-table';
9
+ import { IconButton, Icon } from '@vuu-ui/vuu-ui-controls';
10
+ import { ColumnChangeSource } from './ColumnModel.js';
11
+ import { useColumnPicker } from './useColumnPicker.js';
12
+ import columnPickerCss from './ColumnPicker.css.js';
13
+
14
+ const classBase = "vuuColumnPicker";
15
+ const classBaseListItem = "vuuColumnPickerListItem";
16
+ const searchIcon = /* @__PURE__ */ jsx("span", { "data-icon": "search" });
17
+ const NO_SELECTION = [];
18
+ const useSorting = (id, index) => {
19
+ const { handleRef: sortableHandleRef, ref: sortableRef } = useSortable({
20
+ id,
21
+ index
22
+ });
23
+ const [handleRef, ref] = useMemo(() => {
24
+ return [sortableHandleRef, sortableRef];
25
+ }, [sortableHandleRef, sortableRef]);
26
+ return {
27
+ handleRef,
28
+ ref
29
+ };
30
+ };
31
+ const SelectedColumnListItem = ({
32
+ className: classNameProp,
33
+ index,
34
+ column,
35
+ onRemove,
36
+ searchPattern = "",
37
+ ...optionProps
38
+ }) => {
39
+ const { handleRef, ref } = useSorting(column.name, index);
40
+ const value = getColumnLabel(column);
41
+ const valueWithHighlighting = applyHighlighting(value, searchPattern);
42
+ const handleRemoveButtonClick = useCallback(
43
+ (e) => {
44
+ e.stopPropagation();
45
+ onRemove?.(e);
46
+ },
47
+ [onRemove]
48
+ );
49
+ return /* @__PURE__ */ jsxs(
50
+ Option,
51
+ {
52
+ ...optionProps,
53
+ className: cx(classNameProp, classBaseListItem),
54
+ "data-name": column.name,
55
+ ref,
56
+ children: [
57
+ /* @__PURE__ */ jsx(
58
+ IconButton,
59
+ {
60
+ "data-embedded": true,
61
+ appearance: "transparent",
62
+ icon: "draggable",
63
+ ref: handleRef,
64
+ size: 16
65
+ }
66
+ ),
67
+ isCalculatedColumn(column.name) ? /* @__PURE__ */ jsx(Icon, { className: "vuuCalculatedColumnIcon", name: "function" }) : null,
68
+ /* @__PURE__ */ jsx("span", { className: `${classBase}-text`, children: valueWithHighlighting }),
69
+ /* @__PURE__ */ jsx(
70
+ IconButton,
71
+ {
72
+ className: `${classBaseListItem}-action`,
73
+ "data-embedded": true,
74
+ appearance: "transparent",
75
+ icon: "cross",
76
+ onClick: handleRemoveButtonClick,
77
+ size: 16
78
+ }
79
+ )
80
+ ]
81
+ }
82
+ );
83
+ };
84
+ const AvailableColumnListItem = ({
85
+ className: classNameProp,
86
+ index,
87
+ column: item,
88
+ onAdd,
89
+ searchPattern = "",
90
+ ...optionProps
91
+ }) => {
92
+ const value = getColumnLabel(item);
93
+ const valueWithHighlighting = applyHighlighting(value, searchPattern);
94
+ return /* @__PURE__ */ jsxs(
95
+ Option,
96
+ {
97
+ ...optionProps,
98
+ className: cx(classNameProp, classBaseListItem),
99
+ "data-name": item.name,
100
+ children: [
101
+ /* @__PURE__ */ jsx("span", { className: `${classBase}-text`, children: valueWithHighlighting }),
102
+ /* @__PURE__ */ jsx(
103
+ IconButton,
104
+ {
105
+ className: `${classBaseListItem}-action`,
106
+ "data-embedded": true,
107
+ appearance: "transparent",
108
+ icon: "plus",
109
+ onClick: onAdd,
110
+ size: 16
111
+ }
112
+ )
113
+ ]
114
+ }
115
+ );
116
+ };
117
+ const ColumnPicker = forwardRef(function ColumnPicker2({
118
+ allowCreateCalculatedColumn,
119
+ columnModel,
120
+ className,
121
+ onClickCreateCalculatedColumn,
122
+ onSelectionChange,
123
+ selected = NO_SELECTION,
124
+ ...htmlAttributes
125
+ }, forwardedRef) {
126
+ const targetWindow = useWindow();
127
+ useComponentCssInjection({
128
+ testId: "vuu-column-picker",
129
+ css: columnPickerCss,
130
+ window: targetWindow
131
+ });
132
+ const searchCallbackRef = useCallback((el) => {
133
+ setTimeout(() => {
134
+ el?.querySelector("input")?.focus();
135
+ }, 100);
136
+ }, []);
137
+ const {
138
+ availableColumns,
139
+ onAddItemToSelectedList,
140
+ onChangeSearchInput,
141
+ onRemoveItemFromSelectedList,
142
+ searchText,
143
+ selectedColumns
144
+ } = useColumnPicker({
145
+ columnModel
146
+ });
147
+ const listRef = useRef(null);
148
+ const getOptionName = (option) => {
149
+ if (option) {
150
+ const { name } = option.dataset;
151
+ if (name) {
152
+ return name;
153
+ }
154
+ }
155
+ throw Error("[ColumnPicker] list option has no data-name");
156
+ };
157
+ const handleDragEnd = useCallback(() => {
158
+ setTimeout(() => {
159
+ const listItems = listRef.current?.querySelectorAll(".saltOption");
160
+ if (listItems) {
161
+ const orderedColumnNames = Array.from(listItems).map(getOptionName);
162
+ columnModel.reorderSelectedColumns(
163
+ orderedColumnNames,
164
+ ColumnChangeSource.ColumnPicker
165
+ );
166
+ }
167
+ }, 300);
168
+ }, [columnModel]);
169
+ const oneOrMoreColumnsIsCalculated = selectedColumns.some(
170
+ (column) => isCalculatedColumn(column.name)
171
+ );
172
+ return /* @__PURE__ */ jsxs(
173
+ "div",
174
+ {
175
+ ...htmlAttributes,
176
+ className: cx(classBase, className, {
177
+ [`${classBase}-withCalculated`]: oneOrMoreColumnsIsCalculated
178
+ }),
179
+ ref: forwardedRef,
180
+ children: [
181
+ /* @__PURE__ */ jsx("form", { className: `${classBase}-search`, role: "search", children: /* @__PURE__ */ jsx(
182
+ Input,
183
+ {
184
+ startAdornment: searchIcon,
185
+ placeholder: "Find column",
186
+ ref: searchCallbackRef,
187
+ value: searchText,
188
+ onChange: onChangeSearchInput
189
+ }
190
+ ) }),
191
+ /* @__PURE__ */ jsxs("div", { className: `${classBase}-scrollContainer vuuScrollable`, children: [
192
+ /* @__PURE__ */ jsx("div", { className: `${classBase}-sectionHeader`, children: "Columns in view" }),
193
+ /* @__PURE__ */ jsx(DragDropProvider, { onDragEnd: handleDragEnd, children: /* @__PURE__ */ jsx(
194
+ ListBox,
195
+ {
196
+ className: `${classBase}-selectedList`,
197
+ onSelectionChange,
198
+ ref: listRef,
199
+ selected,
200
+ children: selectedColumns.map((column, index) => /* @__PURE__ */ jsx(
201
+ SelectedColumnListItem,
202
+ {
203
+ column,
204
+ index,
205
+ onRemove: onRemoveItemFromSelectedList,
206
+ searchPattern: searchText.toLowerCase(),
207
+ value: column
208
+ },
209
+ column.name
210
+ ))
211
+ }
212
+ ) }),
213
+ /* @__PURE__ */ jsx(
214
+ "div",
215
+ {
216
+ className: cx(
217
+ `${classBase}-sectionHeader`,
218
+ `${classBase}-availableHeader`
219
+ ),
220
+ children: "Available columns"
221
+ }
222
+ ),
223
+ /* @__PURE__ */ jsx(
224
+ ListBox,
225
+ {
226
+ className: `${classBase}-availableList`,
227
+ selected: NO_SELECTION,
228
+ children: availableColumns.map((column, index) => /* @__PURE__ */ jsx(
229
+ AvailableColumnListItem,
230
+ {
231
+ column,
232
+ index,
233
+ onAdd: onAddItemToSelectedList,
234
+ searchPattern: searchText.toLowerCase(),
235
+ value: column
236
+ },
237
+ column.name
238
+ ))
239
+ }
240
+ )
241
+ ] }),
242
+ allowCreateCalculatedColumn ? /* @__PURE__ */ jsx("div", { className: `${classBase}-column-buttons`, children: /* @__PURE__ */ jsx(Button, { onClick: onClickCreateCalculatedColumn, children: "Create calculated column" }) }) : null
243
+ ]
244
+ }
245
+ );
246
+ });
247
+
248
+ export { ColumnPicker, classBaseListItem };
249
+ //# sourceMappingURL=ColumnPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnPicker.js","sources":["../../../../../../../packages/vuu-table-extras/src/column-picker/ColumnPicker.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport {\n DragDropProvider,\n getColumnLabel,\n isCalculatedColumn,\n useSortable,\n} from \"@vuu-ui/vuu-utils\";\nimport cx from \"clsx\";\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n MouseEventHandler,\n RefCallback,\n useCallback,\n useMemo,\n useRef,\n} from \"react\";\n\nimport {\n Button,\n Input,\n ListBox,\n ListBoxProps,\n Option,\n OptionProps,\n} from \"@salt-ds/core\";\nimport { applyHighlighting } from \"@vuu-ui/vuu-table\";\nimport { Icon, IconButton } from \"@vuu-ui/vuu-ui-controls\";\nimport { ColumnChangeSource } from \"./ColumnModel\";\nimport { ColumnPickerHookProps, useColumnPicker } from \"./useColumnPicker\";\n\nimport columnPickerCss from \"./ColumnPicker.css\";\n\nconst classBase = \"vuuColumnPicker\";\nexport const classBaseListItem = \"vuuColumnPickerListItem\";\n\nexport interface ColumnPickerProps\n extends ColumnPickerHookProps,\n Pick<ListBoxProps<ColumnDescriptor>, \"selected\" | \"onSelectionChange\">,\n HTMLAttributes<HTMLDivElement> {\n allowCreateCalculatedColumn?: boolean;\n onClickCreateCalculatedColumn?: MouseEventHandler<HTMLButtonElement>;\n}\n\nconst searchIcon = <span data-icon=\"search\" />;\nconst NO_SELECTION: ColumnDescriptor[] = [] as const;\n\nconst useSorting = (id: string, index: number) => {\n const { handleRef: sortableHandleRef, ref: sortableRef } = useSortable({\n id,\n index,\n });\n\n const [handleRef, ref] = useMemo(() => {\n return [sortableHandleRef, sortableRef];\n }, [sortableHandleRef, sortableRef]);\n\n return {\n handleRef,\n ref,\n };\n};\n\nconst SelectedColumnListItem = ({\n className: classNameProp,\n index,\n column,\n onRemove,\n searchPattern = \"\",\n ...optionProps\n}: OptionProps & {\n index: number;\n column: ColumnDescriptor;\n onRemove: MouseEventHandler<HTMLButtonElement>;\n searchPattern?: Lowercase<string>;\n}) => {\n const { handleRef, ref } = useSorting(column.name, index);\n const value = getColumnLabel(column as ColumnDescriptor);\n const valueWithHighlighting = applyHighlighting(value, searchPattern);\n\n const handleRemoveButtonClick = useCallback<\n MouseEventHandler<HTMLButtonElement>\n >(\n (e) => {\n e.stopPropagation();\n onRemove?.(e);\n },\n [onRemove],\n );\n\n return (\n <Option\n {...optionProps}\n className={cx(classNameProp, classBaseListItem)}\n data-name={column.name}\n ref={ref}\n >\n <IconButton\n data-embedded\n appearance=\"transparent\"\n icon=\"draggable\"\n ref={handleRef}\n size={16}\n />\n {isCalculatedColumn(column.name) ? (\n <Icon className=\"vuuCalculatedColumnIcon\" name=\"function\" />\n ) : null}\n <span className={`${classBase}-text`}>{valueWithHighlighting}</span>\n <IconButton\n className={`${classBaseListItem}-action`}\n data-embedded\n appearance=\"transparent\"\n icon=\"cross\"\n onClick={handleRemoveButtonClick}\n size={16}\n />\n </Option>\n );\n};\n\nconst AvailableColumnListItem = ({\n className: classNameProp,\n index,\n column: item,\n onAdd,\n searchPattern = \"\",\n ...optionProps\n}: OptionProps & {\n index: number;\n column: ColumnDescriptor;\n onAdd: MouseEventHandler<HTMLButtonElement>;\n searchPattern?: Lowercase<string>;\n}) => {\n const value = getColumnLabel(item as ColumnDescriptor);\n const valueWithHighlighting = applyHighlighting(value, searchPattern);\n\n return (\n <Option\n {...optionProps}\n className={cx(classNameProp, classBaseListItem)}\n data-name={item.name}\n >\n <span className={`${classBase}-text`}>{valueWithHighlighting}</span>\n <IconButton\n className={`${classBaseListItem}-action`}\n data-embedded\n appearance=\"transparent\"\n icon=\"plus\"\n onClick={onAdd}\n size={16}\n />\n </Option>\n );\n};\n\nexport const ColumnPicker = forwardRef(function ColumnPicker(\n {\n allowCreateCalculatedColumn,\n columnModel,\n className,\n onClickCreateCalculatedColumn,\n onSelectionChange,\n selected = NO_SELECTION,\n ...htmlAttributes\n }: ColumnPickerProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-column-picker\",\n css: columnPickerCss,\n window: targetWindow,\n });\n\n const searchCallbackRef = useCallback<RefCallback<HTMLElement>>((el) => {\n setTimeout(() => {\n el?.querySelector(\"input\")?.focus();\n }, 100);\n }, []);\n\n const {\n availableColumns,\n onAddItemToSelectedList,\n onChangeSearchInput,\n onRemoveItemFromSelectedList,\n searchText,\n selectedColumns,\n } = useColumnPicker({\n columnModel: columnModel,\n });\n const listRef = useRef<HTMLDivElement>(null);\n\n const getOptionName = (option?: HTMLElement) => {\n if (option) {\n const { name } = option.dataset;\n if (name) {\n return name;\n }\n }\n throw Error(\"[ColumnPicker] list option has no data-name\");\n };\n\n const handleDragEnd = useCallback(() => {\n setTimeout(() => {\n const listItems =\n listRef.current?.querySelectorAll<HTMLDivElement>(\".saltOption\");\n if (listItems) {\n const orderedColumnNames = Array.from(listItems).map(getOptionName);\n columnModel.reorderSelectedColumns(\n orderedColumnNames,\n ColumnChangeSource.ColumnPicker,\n );\n }\n }, 300);\n }, [columnModel]);\n\n const oneOrMoreColumnsIsCalculated = selectedColumns.some((column) =>\n isCalculatedColumn(column.name),\n );\n return (\n <div\n {...htmlAttributes}\n className={cx(classBase, className, {\n [`${classBase}-withCalculated`]: oneOrMoreColumnsIsCalculated,\n })}\n ref={forwardedRef}\n >\n <form className={`${classBase}-search`} role=\"search\">\n <Input\n startAdornment={searchIcon}\n placeholder=\"Find column\"\n ref={searchCallbackRef}\n value={searchText}\n onChange={onChangeSearchInput}\n />\n </form>\n\n <div className={`${classBase}-scrollContainer vuuScrollable`}>\n <div className={`${classBase}-sectionHeader`}>Columns in view</div>\n <DragDropProvider onDragEnd={handleDragEnd}>\n <ListBox\n className={`${classBase}-selectedList`}\n onSelectionChange={onSelectionChange}\n ref={listRef}\n selected={selected}\n >\n {selectedColumns.map((column, index) => (\n <SelectedColumnListItem\n column={column}\n index={index}\n key={column.name}\n onRemove={onRemoveItemFromSelectedList}\n searchPattern={searchText.toLowerCase() as Lowercase<string>}\n value={column}\n />\n ))}\n </ListBox>\n </DragDropProvider>\n\n <div\n className={cx(\n `${classBase}-sectionHeader`,\n `${classBase}-availableHeader`,\n )}\n >\n Available columns\n </div>\n <ListBox\n className={`${classBase}-availableList`}\n selected={NO_SELECTION}\n >\n {availableColumns.map((column, index) => (\n <AvailableColumnListItem\n column={column}\n index={index}\n key={column.name}\n onAdd={onAddItemToSelectedList}\n searchPattern={searchText.toLowerCase() as Lowercase<string>}\n value={column}\n />\n ))}\n </ListBox>\n </div>\n {allowCreateCalculatedColumn ? (\n <div className={`${classBase}-column-buttons`}>\n <Button onClick={onClickCreateCalculatedColumn}>\n Create calculated column\n </Button>\n </div>\n ) : null}\n </div>\n );\n});\n"],"names":["ColumnPicker"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { IconButton } from '@vuu-ui/vuu-ui-controls';
3
+ import { useCallback } from 'react';
4
+ import { useTableColumnPicker } from './useTableColumnPicker.js';
5
+
6
+ const ColumnPickerAction = ({
7
+ appearance = "transparent",
8
+ columnModel,
9
+ icon = "settings",
10
+ sentiment = "neutral",
11
+ ...IconButtonProps2
12
+ }) => {
13
+ const { showColumnPicker } = useTableColumnPicker({ columnModel });
14
+ const handleClick = useCallback(() => {
15
+ showColumnPicker();
16
+ }, [showColumnPicker]);
17
+ return /* @__PURE__ */ jsx(
18
+ IconButton,
19
+ {
20
+ ...IconButtonProps2,
21
+ appearance,
22
+ "data-action": "table-settings",
23
+ icon,
24
+ onClick: handleClick,
25
+ sentiment,
26
+ size: 20
27
+ }
28
+ );
29
+ };
30
+
31
+ export { ColumnPickerAction };
32
+ //# sourceMappingURL=ColumnPickerAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnPickerAction.js","sources":["../../../../../../../packages/vuu-table-extras/src/column-picker/ColumnPickerAction.tsx"],"sourcesContent":["import { IconButton, IconButtonProps } from \"@vuu-ui/vuu-ui-controls\";\nimport { ColumnPickerHookProps } from \"./useColumnPicker\";\nimport { useCallback } from \"react\";\nimport { useTableColumnPicker } from \"./useTableColumnPicker\";\n\nexport interface ColumnPickerActionProps\n extends Partial<IconButtonProps>,\n ColumnPickerHookProps {}\n\nexport const ColumnPickerAction = ({\n appearance = \"transparent\",\n columnModel,\n icon = \"settings\",\n sentiment = \"neutral\",\n ...IconButtonProps\n}: ColumnPickerActionProps) => {\n const { showColumnPicker } = useTableColumnPicker({ columnModel });\n\n const handleClick = useCallback(() => {\n showColumnPicker();\n }, [showColumnPicker]);\n\n return (\n <IconButton\n {...IconButtonProps}\n appearance={appearance}\n data-action=\"table-settings\"\n icon={icon}\n onClick={handleClick}\n sentiment={sentiment}\n size={20}\n />\n );\n};\n"],"names":["IconButtonProps"],"mappings":";;;;;AASO,MAAM,qBAAqB,CAAC;AAAA,EACjC,UAAa,GAAA,aAAA;AAAA,EACb,WAAA;AAAA,EACA,IAAO,GAAA,UAAA;AAAA,EACP,SAAY,GAAA,SAAA;AAAA,EACZ,GAAGA;AACL,CAA+B,KAAA;AAC7B,EAAA,MAAM,EAAE,gBAAiB,EAAA,GAAI,oBAAqB,CAAA,EAAE,aAAa,CAAA;AAEjE,EAAM,MAAA,WAAA,GAAc,YAAY,MAAM;AACpC,IAAiB,gBAAA,EAAA;AAAA,GACnB,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAErB,EACE,uBAAA,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACE,GAAGA,gBAAAA;AAAA,MACJ,UAAA;AAAA,MACA,aAAY,EAAA,gBAAA;AAAA,MACZ,IAAA;AAAA,MACA,OAAS,EAAA,WAAA;AAAA,MACT,SAAA;AAAA,MACA,IAAM,EAAA;AAAA;AAAA,GACR;AAEJ;;;;"}
@@ -0,0 +1,53 @@
1
+ import { queryClosest } from '@vuu-ui/vuu-utils';
2
+ import { useState, useEffect, useCallback } from 'react';
3
+ import { ColumnChangeSource } from './ColumnModel.js';
4
+
5
+ const SOURCE = ColumnChangeSource.ColumnPicker;
6
+ const columnName = (target) => {
7
+ const listItem = queryClosest(target, ".saltOption", true);
8
+ const { name } = listItem.dataset;
9
+ if (name) {
10
+ return name;
11
+ } else {
12
+ throw Error(
13
+ "[useColumnPicker] column name could not be identified, data-name attribute not found"
14
+ );
15
+ }
16
+ };
17
+ const useColumnPicker = ({
18
+ columnModel: model
19
+ }) => {
20
+ const [, forceRender] = useState({});
21
+ useEffect(() => {
22
+ model.on("render", forceRender);
23
+ return () => {
24
+ model.removeListener("render", forceRender);
25
+ };
26
+ }, [model]);
27
+ const handleChangeSearchInput = useCallback(
28
+ (evt) => {
29
+ const { value } = evt.target;
30
+ model.searchPattern = value;
31
+ },
32
+ [model]
33
+ );
34
+ const handleAddItemToSelectedList = useCallback(
35
+ (e) => model.addItemToSelectedColumns(columnName(e.target), SOURCE),
36
+ [model]
37
+ );
38
+ const handleRemoveItemFromSelectedList = useCallback(
39
+ (e) => model.removeItemFromSelectedColumns(columnName(e.target), SOURCE),
40
+ [model]
41
+ );
42
+ return {
43
+ availableColumns: model.availableColumns,
44
+ onAddItemToSelectedList: handleAddItemToSelectedList,
45
+ onRemoveItemFromSelectedList: handleRemoveItemFromSelectedList,
46
+ onChangeSearchInput: handleChangeSearchInput,
47
+ searchText: model.searchPattern,
48
+ selectedColumns: model.selectedColumns
49
+ };
50
+ };
51
+
52
+ export { useColumnPicker };
53
+ //# sourceMappingURL=useColumnPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnPicker.js","sources":["../../../../../../../packages/vuu-table-extras/src/column-picker/useColumnPicker.tsx"],"sourcesContent":["import { ColumnDescriptor, TableSelectionModel } from \"@vuu-ui/vuu-table-types\";\nimport { queryClosest } from \"@vuu-ui/vuu-utils\";\nimport {\n FormEventHandler,\n MouseEventHandler,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\nimport {\n ColumnChangeSource,\n ColumnModel,\n SelectedColumnChangeType,\n} from \"./ColumnModel\";\n\nexport type ColumnSelectionModel = Extract<\n TableSelectionModel,\n \"none\" | \"single\"\n>;\n\nconst SOURCE = ColumnChangeSource.ColumnPicker;\n\nconst columnName = (target: EventTarget) => {\n const listItem = queryClosest(target, \".saltOption\", true);\n const { name } = listItem.dataset;\n if (name) {\n return name;\n } else {\n throw Error(\n \"[useColumnPicker] column name could not be identified, data-name attribute not found\",\n );\n }\n};\nexport type SelectedColumnsChangeHandler = (\n columns: ColumnDescriptor[],\n changeType: SelectedColumnChangeType,\n) => void;\n\nexport interface ColumnPickerHookProps {\n columnModel: ColumnModel;\n}\n\nexport const useColumnPicker = ({\n columnModel: model,\n}: ColumnPickerHookProps) => {\n const [, forceRender] = useState({});\n useEffect(() => {\n model.on(\"render\", forceRender);\n return () => {\n model.removeListener(\"render\", forceRender);\n };\n }, [model]);\n\n const handleChangeSearchInput = useCallback<FormEventHandler>(\n (evt) => {\n const { value } = evt.target as HTMLInputElement;\n model.searchPattern = value;\n },\n [model],\n );\n\n const handleAddItemToSelectedList = useCallback<\n MouseEventHandler<HTMLButtonElement>\n >(\n (e) => model.addItemToSelectedColumns(columnName(e.target), SOURCE),\n [model],\n );\n\n const handleRemoveItemFromSelectedList = useCallback<\n MouseEventHandler<HTMLButtonElement>\n >(\n (e) => model.removeItemFromSelectedColumns(columnName(e.target), SOURCE),\n [model],\n );\n\n return {\n availableColumns: model.availableColumns,\n onAddItemToSelectedList: handleAddItemToSelectedList,\n onRemoveItemFromSelectedList: handleRemoveItemFromSelectedList,\n onChangeSearchInput: handleChangeSearchInput,\n searchText: model.searchPattern,\n selectedColumns: model.selectedColumns,\n };\n};\n"],"names":[],"mappings":";;;;AAoBA,MAAM,SAAS,kBAAmB,CAAA,YAAA;AAElC,MAAM,UAAA,GAAa,CAAC,MAAwB,KAAA;AAC1C,EAAA,MAAM,QAAW,GAAA,YAAA,CAAa,MAAQ,EAAA,aAAA,EAAe,IAAI,CAAA;AACzD,EAAM,MAAA,EAAE,IAAK,EAAA,GAAI,QAAS,CAAA,OAAA;AAC1B,EAAA,IAAI,IAAM,EAAA;AACR,IAAO,OAAA,IAAA;AAAA,GACF,MAAA;AACL,IAAM,MAAA,KAAA;AAAA,MACJ;AAAA,KACF;AAAA;AAEJ,CAAA;AAUO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,WAAa,EAAA;AACf,CAA6B,KAAA;AAC3B,EAAA,MAAM,GAAG,WAAW,CAAI,GAAA,QAAA,CAAS,EAAE,CAAA;AACnC,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,KAAA,CAAA,EAAA,CAAG,UAAU,WAAW,CAAA;AAC9B,IAAA,OAAO,MAAM;AACX,MAAM,KAAA,CAAA,cAAA,CAAe,UAAU,WAAW,CAAA;AAAA,KAC5C;AAAA,GACF,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,MAAM,uBAA0B,GAAA,WAAA;AAAA,IAC9B,CAAC,GAAQ,KAAA;AACP,MAAM,MAAA,EAAE,KAAM,EAAA,GAAI,GAAI,CAAA,MAAA;AACtB,MAAA,KAAA,CAAM,aAAgB,GAAA,KAAA;AAAA,KACxB;AAAA,IACA,CAAC,KAAK;AAAA,GACR;AAEA,EAAA,MAAM,2BAA8B,GAAA,WAAA;AAAA,IAGlC,CAAC,MAAM,KAAM,CAAA,wBAAA,CAAyB,WAAW,CAAE,CAAA,MAAM,GAAG,MAAM,CAAA;AAAA,IAClE,CAAC,KAAK;AAAA,GACR;AAEA,EAAA,MAAM,gCAAmC,GAAA,WAAA;AAAA,IAGvC,CAAC,MAAM,KAAM,CAAA,6BAAA,CAA8B,WAAW,CAAE,CAAA,MAAM,GAAG,MAAM,CAAA;AAAA,IACvE,CAAC,KAAK;AAAA,GACR;AAEA,EAAO,OAAA;AAAA,IACL,kBAAkB,KAAM,CAAA,gBAAA;AAAA,IACxB,uBAAyB,EAAA,2BAAA;AAAA,IACzB,4BAA8B,EAAA,gCAAA;AAAA,IAC9B,mBAAqB,EAAA,uBAAA;AAAA,IACrB,YAAY,KAAM,CAAA,aAAA;AAAA,IAClB,iBAAiB,KAAM,CAAA;AAAA,GACzB;AACF;;;;"}
@@ -0,0 +1,33 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useContextPanel, useHideContextPanel } from '@vuu-ui/vuu-ui-controls';
3
+ import { useRef, useCallback, useEffect } from 'react';
4
+ import { ColumnPicker } from './ColumnPicker.js';
5
+
6
+ const useTableColumnPicker = ({
7
+ columnModel
8
+ }) => {
9
+ const showContextPanel = useContextPanel();
10
+ const hideContextPanel = useHideContextPanel();
11
+ const contextPanelShowing = useRef(false);
12
+ const showColumnPicker = useCallback(
13
+ (title = "Column Picker") => {
14
+ contextPanelShowing.current = true;
15
+ showContextPanel(/* @__PURE__ */ jsx(ColumnPicker, { columnModel }), title);
16
+ },
17
+ [columnModel, showContextPanel]
18
+ );
19
+ useEffect(
20
+ () => () => {
21
+ if (contextPanelShowing.current) {
22
+ hideContextPanel?.();
23
+ }
24
+ },
25
+ [hideContextPanel]
26
+ );
27
+ return {
28
+ showColumnPicker
29
+ };
30
+ };
31
+
32
+ export { useTableColumnPicker };
33
+ //# sourceMappingURL=useTableColumnPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTableColumnPicker.js","sources":["../../../../../../../packages/vuu-table-extras/src/column-picker/useTableColumnPicker.tsx"],"sourcesContent":["import { useContextPanel, useHideContextPanel } from \"@vuu-ui/vuu-ui-controls\";\nimport { useCallback, useEffect, useRef } from \"react\";\nimport { ColumnPicker } from \"./ColumnPicker\";\nimport { ColumnModel } from \"./ColumnModel\";\n\nexport interface TableColumnPickerHookProps {\n columnModel: ColumnModel;\n}\n\nexport const useTableColumnPicker = ({\n columnModel,\n}: TableColumnPickerHookProps) => {\n const showContextPanel = useContextPanel();\n const hideContextPanel = useHideContextPanel();\n const contextPanelShowing = useRef(false);\n\n const showColumnPicker = useCallback(\n (title = \"Column Picker\") => {\n contextPanelShowing.current = true;\n showContextPanel(<ColumnPicker columnModel={columnModel} />, title);\n },\n [columnModel, showContextPanel],\n );\n\n // TODO what's this for ?\n useEffect(\n () => () => {\n if (contextPanelShowing.current) {\n // It might already be closed, but this won't do any harm\n hideContextPanel?.();\n }\n },\n [hideContextPanel],\n );\n\n return {\n showColumnPicker,\n };\n};\n"],"names":[],"mappings":";;;;;AASO,MAAM,uBAAuB,CAAC;AAAA,EACnC;AACF,CAAkC,KAAA;AAChC,EAAA,MAAM,mBAAmB,eAAgB,EAAA;AACzC,EAAA,MAAM,mBAAmB,mBAAoB,EAAA;AAC7C,EAAM,MAAA,mBAAA,GAAsB,OAAO,KAAK,CAAA;AAExC,EAAA,MAAM,gBAAmB,GAAA,WAAA;AAAA,IACvB,CAAC,QAAQ,eAAoB,KAAA;AAC3B,MAAA,mBAAA,CAAoB,OAAU,GAAA,IAAA;AAC9B,MAAA,gBAAA,iBAAkB,GAAA,CAAA,YAAA,EAAA,EAAa,WAA0B,EAAA,CAAA,EAAI,KAAK,CAAA;AAAA,KACpE;AAAA,IACA,CAAC,aAAa,gBAAgB;AAAA,GAChC;AAGA,EAAA,SAAA;AAAA,IACE,MAAM,MAAM;AACV,MAAA,IAAI,oBAAoB,OAAS,EAAA;AAE/B,QAAmB,gBAAA,IAAA;AAAA;AACrB,KACF;AAAA,IACA,CAAC,gBAAgB;AAAA,GACnB;AAEA,EAAO,OAAA;AAAA,IACL;AAAA,GACF;AACF;;;;"}
@@ -0,0 +1,4 @@
1
+ var columnNameLabelCss = ".vuuColumnNameLabel-calculated {\n cursor: pointer;\n display: flex;\n gap: 2px;\n}\n\n.vuuColumnNameLabel-edit {\n margin-left: auto;\n}\n\n.vuuColumnNameLabel-placeholder {\n color: var(--vuu-color-gray-35);\n}";
2
+
3
+ export { columnNameLabelCss as default };
4
+ //# sourceMappingURL=ColumnNameLabel.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnNameLabel.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}