@vuu-ui/vuu-table-extras 0.7.6-debug → 0.8.0-debug

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 (65) hide show
  1. package/cjs/index.js +388 -39
  2. package/cjs/index.js.map +4 -4
  3. package/esm/index.js +369 -6
  4. package/esm/index.js.map +4 -4
  5. package/index.css +45 -0
  6. package/index.css.map +3 -3
  7. package/package.json +14 -11
  8. package/types/cell-renderers/background-cell/BackgroundCell.d.ts +2 -0
  9. package/types/cell-renderers/background-cell/index.d.ts +1 -0
  10. package/types/cell-renderers/background-cell/useDirection.d.ts +3 -0
  11. package/types/cell-renderers/index.d.ts +2 -0
  12. package/types/cell-renderers/progress-cell/ProgressCell.d.ts +1 -0
  13. package/types/cell-renderers/progress-cell/index.d.ts +1 -0
  14. package/types/column-expression-input/ColumnExpressionInput.d.ts +9 -0
  15. package/types/column-expression-input/column-function-descriptors.d.ts +15 -0
  16. package/types/column-expression-input/column-language-parser/ColumnExpressionLanguage.d.ts +2 -0
  17. package/types/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.d.ts +58 -0
  18. package/types/column-expression-input/column-language-parser/column-expression-parse-utils.d.ts +5 -0
  19. package/types/column-expression-input/column-language-parser/generated/column-parser.d.ts +2 -0
  20. package/types/column-expression-input/column-language-parser/generated/column-parser.terms.d.ts +24 -0
  21. package/types/column-expression-input/column-language-parser/index.d.ts +3 -0
  22. package/types/column-expression-input/column-language-parser/test.d.mts +1 -0
  23. package/types/column-expression-input/functionDocInfo.d.ts +2 -0
  24. package/types/column-expression-input/highlighting.d.ts +1 -0
  25. package/types/column-expression-input/index.d.ts +4 -0
  26. package/types/column-expression-input/theme.d.ts +1 -0
  27. package/types/column-expression-input/useColumnAutoComplete.d.ts +6 -0
  28. package/types/column-expression-input/useColumnExpressionEditor.d.ts +29 -0
  29. package/types/column-expression-input/useColumnExpressionSuggestionProvider.d.ts +8 -0
  30. package/types/datagrid-configuration-ui/calculated-column-panel/CalculatedColumnPanel.d.ts +11 -0
  31. package/types/datagrid-configuration-ui/calculated-column-panel/index.d.ts +1 -0
  32. package/types/datagrid-configuration-ui/column-picker/ColumnListItem.d.ts +4 -0
  33. package/types/datagrid-configuration-ui/column-picker/ColumnPicker.d.ts +13 -0
  34. package/types/datagrid-configuration-ui/column-picker/index.d.ts +1 -0
  35. package/types/datagrid-configuration-ui/column-settings-panel/ColumnSettingsPanel.d.ts +9 -0
  36. package/types/datagrid-configuration-ui/column-settings-panel/index.d.ts +1 -0
  37. package/types/datagrid-configuration-ui/column-type-panel/ColumnTypePanel.d.ts +10 -0
  38. package/types/datagrid-configuration-ui/column-type-panel/NumericColumnPanel.d.ts +4 -0
  39. package/types/datagrid-configuration-ui/column-type-panel/StringColumnPanel.d.ts +4 -0
  40. package/types/datagrid-configuration-ui/column-type-panel/index.d.ts +1 -0
  41. package/types/datagrid-configuration-ui/index.d.ts +1 -0
  42. package/types/datagrid-configuration-ui/settings-panel/DatagridSettingsPanel.d.ts +10 -0
  43. package/types/datagrid-configuration-ui/settings-panel/GridSettingsPanel.d.ts +9 -0
  44. package/types/datagrid-configuration-ui/settings-panel/index.d.ts +1 -0
  45. package/types/datagrid-configuration-ui/settings-panel/useGridSettings.d.ts +59 -0
  46. package/types/datasource-stats/DatasourceStats.d.ts +8 -0
  47. package/types/datasource-stats/index.d.ts +1 -0
  48. package/types/index.d.ts +5 -0
  49. package/types/table-settings/calculated-column-panel/CalculatedColumnPanel.d.ts +11 -0
  50. package/types/table-settings/calculated-column-panel/index.d.ts +1 -0
  51. package/types/table-settings/column-picker/ColumnListItem.d.ts +4 -0
  52. package/types/table-settings/column-picker/ColumnPicker.d.ts +13 -0
  53. package/types/table-settings/column-picker/index.d.ts +1 -0
  54. package/types/table-settings/column-settings-panel/ColumnSettingsPanel.d.ts +9 -0
  55. package/types/table-settings/column-settings-panel/index.d.ts +1 -0
  56. package/types/table-settings/column-type-panel/ColumnTypePanel.d.ts +10 -0
  57. package/types/table-settings/column-type-panel/NumericColumnPanel.d.ts +4 -0
  58. package/types/table-settings/column-type-panel/StringColumnPanel.d.ts +4 -0
  59. package/types/table-settings/column-type-panel/index.d.ts +1 -0
  60. package/types/table-settings/index.d.ts +1 -0
  61. package/types/table-settings/settings-panel/DatagridSettingsPanel.d.ts +10 -0
  62. package/types/table-settings/settings-panel/GridSettingsPanel.d.ts +9 -0
  63. package/types/table-settings/settings-panel/index.d.ts +1 -0
  64. package/types/table-settings/settings-panel/useGridSettings.d.ts +59 -0
  65. package/LICENSE +0 -201
package/index.css CHANGED
@@ -535,4 +535,49 @@
535
535
  display: flex;
536
536
  gap: var(--salt-size-unit);
537
537
  }
538
+
539
+ /* src/table-settings/column-type-panel/ColumnTypePanel.css */
540
+ .vuuColumnTypePanel {
541
+ --settings-panel-marginTop: 0px;
542
+ }
543
+ .vuuColumnTypePanel-renderer {
544
+ --saltButton-background: var(--salt-container-secondary-background);
545
+ --saltButton-background-hover: var(--salt-actionable-secondary-background-hover);
546
+ }
547
+
548
+ /* src/table-settings/column-settings-panel/ColumnSettingsPanel.css */
549
+ .vuuColumnSettingsPanel {
550
+ --saltFormField-margin: 3px 0;
551
+ --saltFormField-label-width: 80px;
552
+ --saltPanel-padding: var(--salt-size-unit);
553
+ align-items: flex-start;
554
+ border-left: solid 1px var(--salt-container-primary-borderColor);
555
+ display: flex;
556
+ flex-direction: column;
557
+ flex-shrink: 0;
558
+ min-width: 220px;
559
+ padding-left: calc(var(--salt-size-unit) * 2);
560
+ width: var(--vuuColumnSettings-width, auto);
561
+ }
562
+ .vuuColumnSettingsPanel-columnTabs {
563
+ --saltFormField-margin: 0;
564
+ }
565
+ .vuuColumnSettingsPanel-columnTabs .saltFormField {
566
+ margin-left: 0 !important;
567
+ }
568
+ .vuuColumnSettingsPanel .saltPanel {
569
+ --saltFormField-margin: 3px 0;
570
+ margin-top: var(--settings-panel-marginTop, var(--salt-size-unit));
571
+ align-items: stretch;
572
+ display: flex;
573
+ flex-direction: column;
574
+ gap: var(--salt-size-unit);
575
+ }
576
+ .vuuColumnPanelSwitch {
577
+ white-space: nowrap;
578
+ width: 100%;
579
+ }
580
+ .vuuColumnSettingsPanel .saltSwitch {
581
+ margin-left: auto;
582
+ }
538
583
  /*# sourceMappingURL=index.css.map */
package/index.css.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.css", "../../../packages/vuu-table-extras/src/cell-renderers/background-cell/FlashingBackground.css", "../../../packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.css", "../../../packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.css", "../../../packages/vuu-table-extras/src/datagrid-configuration-ui/column-picker/ColumnListItem.css", "../../../packages/vuu-table-extras/src/datagrid-configuration-ui/column-picker/ColumnPicker.css", "../../../packages/vuu-table-extras/src/datagrid-configuration-ui/column-type-panel/ColumnTypePanel.css", "../../../packages/vuu-table-extras/src/datagrid-configuration-ui/column-settings-panel/ColumnSettingsPanel.css", "../../../packages/vuu-table-extras/src/datagrid-configuration-ui/settings-panel/GridSettingsPanel.css", "../../../packages/vuu-table-extras/src/datagrid-configuration-ui/calculated-column-panel/CalculatedColumnPanel.css", "../../../packages/vuu-table-extras/src/datagrid-configuration-ui/settings-panel/DatagridSettingsPanel.css", "../../../packages/vuu-table-extras/src/datasource-stats/DatasourceStats.css"],
4
- "sourcesContent": [".vuuTable td:has(> .vuuBackgroundCell){\n padding: 0;\n text-align: right;\n} \n\n.vuuBackgroundCell {\n padding-right: var(--salt-size-unit);\n position: relative;\n z-index: -1;\n}\n\n.vuuBackgroundCell-flasher {\n color: transparent;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: -1;\n}\n\n.vuuBackgroundCell-flasher {\n text-align: left;\n}\n.vuuBackgroundCell-flasher + .num {\n padding-left: 8px;\n}\n\n.right .vuuBackgroundCell-flasher {\n text-align: right;\n}\n.right .vuuBackgroundCell-flasher + .num {\n padding-right: 8px;\n}\n\n.up1 > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgup1;\n}\n\n.up2 > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgup2;\n}\n\n.down1 > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgdown1;\n}\n\n.down2 > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgdown2;\n}\n\n.up1.vuuBackgroundCell-arrowOnly > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactarrowup1;\n}\n\n.up2.vuuBackgroundCell-arrowOnly > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactarrowup2;\n}\n\n.down1.vuuBackgroundCell-arrowOnly > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactarrowdown1;\n}\n\n.down2.vuuBackgroundCell-arrowOnly > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactarrowdown2;\n}\n\n.up1.vuuBackgroundCell-arrowBackground > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgarrowup1;\n}\n\n.up2.vuuBackgroundCell-arrowBackground > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgarrowup2;\n}\n\n.down1.vuuBackgroundCell-arrowBackground > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgarrowdown1;\n}\n\n.down2.vuuBackgroundCell-arrowBackground > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgarrowdown2;\n}\n", "@keyframes reactbgup1 {\n from {\n background-color: var(--salt-differential-positive-background);\n }\n to {\n background-color: transparent;\n }\n }\n \n @keyframes reactbgup2 {\n from {\n background-color: var(--salt-differential-positive-background);\n }\n to {\n background-color: transparent;\n }\n }\n \n @keyframes reactbgdown1 {\n from {\n background-color: var(--salt-differential-negative-background);\n }\n to {\n background-color: transparent;\n }\n }\n \n @keyframes reactbgdown2 {\n from {\n background-color: var(--salt-differential-negative-background);\n }\n to {\n background-color: transparent;\n }\n }\n \n @keyframes reactarrowup1 {\n from {\n color: var(--salt-differential-positive-foreground);\n }\n to {\n color: transparent;\n }\n }\n \n @keyframes reactarrowup2 {\n from {\n color: var(--salt-differential-positive-foreground);\n }\n to {\n color: transparent;\n }\n }\n \n @keyframes reactarrowdown1 {\n from {\n color: var(--salt-differential-negative-foreground);\n }\n to {\n color: transparent;\n }\n }\n \n @keyframes reactarrowdown2 {\n from {\n color: var(--salt-differential-negative-foreground);\n }\n to {\n color: transparent;\n }\n }\n \n @keyframes reactbgarrowup1 {\n 0% {\n color: var(--salt-differential-positive-foreground);\n background-color: var(--salt-differential-positive-background);\n }\n 20% {\n color: var(--salt-differential-positive-foreground);\n background-color: transparent;\n }\n 100% {\n color: transparent;\n background-color: transparent;\n }\n }\n \n @keyframes reactbgarrowup2 {\n 0% {\n color: var(--salt-differential-positive-foreground);\n background-color: var(--salt-differential-positive-background);\n }\n 20% {\n color: var(--salt-differential-positive-foreground);\n background-color: transparent;\n }\n 100% {\n color: transparent;\n background-color: transparent;\n }\n }\n \n @keyframes reactbgarrowdown1 {\n 0% {\n color: var(--salt-differential-negative-foreground);\n background-color: var(--salt-differential-negative-background);\n }\n 20% {\n color: var(--salt-differential-negative-foreground);\n background-color: transparent;\n }\n 100% {\n color: transparent;\n background-color: transparent;\n }\n }\n \n @keyframes reactbgarrowdown2 {\n 0% {\n color: var(--salt-differential-negative-foreground);\n background-color: var(--salt-differential-negative-background);\n }\n 20% {\n color: var(--salt-differential-negative-foreground);\n background-color: transparent;\n }\n 100% {\n color: transparent;\n background-color: transparent;\n }\n }\n ", ".vuuProgressCell {\n align-items: center;\n display: flex;\n}\n\n.vuuProgressCell-track {\n display: inline-block;\n flex: auto 1 1;\n height: 4px;\n overflow: hidden;\n position: relative;\n}\n\n.vuuProgressCell-bg {\n background-color: var(--salt-measured-background);\n display: inline-block;\n height: 2px;\n left: 0;\n position: absolute;\n top: 1px;\n width: 100%;\n}\n\n\n.vuuProgressCell-bar {\n background-color: var(--salt-measured-fill);\n display: inline-block;\n height: 100%;\n left: 0;\n position: absolute;\n top:0;\n transform: translateX(var(--progress-bar-pct, -100%));\n width: 100%;\n}\n\n.vuuProgressCell-text {\n flex: 35px 0 0;\n text-align: right;\n}", "\n.vuuColumnExpressionInput {\n --vuuFilterEditor-background: var(--salt-container-primary-background);\n --vuuFilterEditor-color: var(--salt-text-primary-foreground);\n --vuuFilterEditor-fontFamily: var(--salt-typography-fontFamily);\n --vuuFilterEditor-fontSize: var(--salt-text-fontSize);\n --vuuFilterEditor-cursorColor: var(--salt-text-secondary-foreground);\n --vuuFilterEditor-selectionBackground: var(--salt-text-background-selected);\n --vuuFilterEditor-tooltipBackground: var(--salt-container-primary-background);\n --vuuFilterEditor-tooltipBorder: var(--tooltip-status-borderColor) var(--salt-container-borderWidth) var(--salt-container-borderStyle); \n --vuuFilterEditor-tooltipElevation: var(--salt-overlayable-shadow-popout);\n --vuuFilterEditor-suggestion-selectedBackground: var(--salt-selectable-background-selected);\n --vuuFilterEditor-suggestion-selectedColor: var(--salt-text-primary-foreground);\n --vuuFilterEditor-suggestion-detailColor: var(--salt-text-secondary-foreground-disabled);\n --vuuFilterEditor-suggestion-height: 24px;\n --vuuFilterEditor-variableColor: blue;\n\n align-items: center;\n box-sizing: border-box;\n height: 30px;\n}\n\n.vuuColumnExpressionInput-FilterButton,\n.vuuColumnExpressionInput-ClearButton {\n --vuu-icon-size: 12px;\n --saltButton-width: 28px;\n}\n\n.expression-type-container {\n margin: 0 3px 0 auto;\n color: var(--salt-text-secondary-foreground)\n}\n\n.expression-kind {\n display: inline-block;\n width: 50px;\n}\n\n.expression-type {\n display: inline-block;\n text-align: right;\n width: 50px;\n}\n\n.vuuSuggestion {\n display: flex;\n align-items: center;\n}\n\n\n.vuuFunctionDoc .function-heading {\n display: flex;\n gap: 3px;\n}\n\n.vuuFunctionDoc .function-name {\n font-style: italic;\n}\n\n.vuuFunctionDoc .param-list {\n font-style: italic;\n color: blue;\n white-space: pre;\n}\n\n.vuuFunctionDoc .function-type {\n margin-left: auto;\n}\n\n.vuuFunctionDoc .example-container {\n background-color: var(--salt-container-secondary-background);\n margin: 6px 0;\n padding: 3px;\n}\n\n.vuuFunctionDoc .example-expression {\n font-family: var(--salt-typography-fontFamily-code);\n margin-left: 8px;\n margin-top: 6px;\n}\n\n.vuuFunctionDoc .example-result {\n margin-left: 8px;\n margin-top: 6px;\n}", ".vuuColumnListItem {\n --svg-eye-hidden: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M4.52 5.934L1.393 2.808l1.415-1.415 19.799 19.8-1.415 1.414-3.31-3.31A10.949 10.949 0 0 1 12 21c-5.392 0-9.878-3.88-10.819-9a10.982 10.982 0 0 1 3.34-6.066zm10.237 10.238l-1.464-1.464a3 3 0 0 1-4.001-4.001L7.828 9.243a5 5 0 0 0 6.929 6.929zM7.974 3.76C9.221 3.27 10.58 3 12 3c5.392 0 9.878 3.88 10.819 9a10.947 10.947 0 0 1-2.012 4.592l-3.86-3.86a5 5 0 0 0-5.68-5.68L7.974 3.761z\"/></svg>');\n align-items: center;\n padding: 0 !important;\n}\n\n.vuuColumnListItem-calculated {\n --vuu-icon-size: 12px;\n --column-icon-svg: var(--svg-function);\n --calculated-background: var(--salt-text-secondary-foreground);\n}\n.vuuColumnListItem-hidden {\n --vuu-icon-size: 14px;\n --hidden-background: var(--salt-text-secondary-foreground);\n --hidden-icon-svg: var(--svg-eye-hidden);\n}\n\n.vuuColumnListItem-label {\n flex: 1 1 auto;\n}\n.vuuColumnListItem-iconType {\n background-color: var(--calculated-background, transparent);\n display: inline-block;\n height: 100%;\n mask: var(--column-icon-svg) center center/var(--vuu-icon-size) var(--vuu-icon-size);\n mask-repeat: no-repeat;\n -webkit-mask: var(--column-icon-svg) center center/var(--vuu-icon-size) var(--vuu-icon-size);\n -webkit-mask-repeat: no-repeat;\n width: 20px;\n }\n\n.vuuColumnListItem-iconHidden {\n background-color: var(--hidden-background, transparent);\n display: inline-block;\n height: 100%;\n mask: var(--hidden-icon-svg) center center/var(--vuu-icon-size) var(--vuu-icon-size);\n mask-repeat: no-repeat;\n -webkit-mask: var(--hidden-icon-svg) center center/var(--vuu-icon-size) var(--vuu-icon-size);\n -webkit-mask-repeat: no-repeat;\n width: 20px;\n}", ".vuuColumnPicker {\n\n --vuu-icon-color: var(--salt-text-primary-foreground);\n --vuu-icon-left: 0px;\n --vuu-icon-size: 12px;\n\n display: flex;\n flex-shrink: 0;\n\n gap: calc(var(--salt-size-unit) * 2);\n width: var(--vuuColumnPicker-width, 100%);\n}\n\n.vuuColumnPicker-listColumn {\n display: flex;\n flex: 1;\n flex-direction: column;\n}\n\n.vuuColumnPicker-listContainer {\n border: solid 1px var(--salt-container-primary-borderColor);\n margin-right: var(--salt-size-unit)\n}\n\n.vuuColumnPicker-defineColumn {\n align-items: center;\n border-top: solid 1px var(--salt-container-primary-borderColor);\n display: flex;\n flex: 0 0 calc(100% - var(--salt-size-unit));\n gap: var(--salt-size-unit);\n transition: .2s height;\n margin-top: 12px;\n height: 48px;\n}\n\n[data-align='right'] .vuuColumnPicker-defineColumn {\n border-top: none;\n height: 0;\n}\n\n.vuuColumnPicker-addCalculatedColumn {\n margin-left: auto;\n margin-right: var(--salt-size-unit);\n width: 28px;\n}\n\n", ".vuuColumnTypePanel {\n --settings-panel-marginTop: 0px;\n}\n\n.vuuColumnTypePanel-renderer {\n --saltButton-background: var(--salt-container-secondary-background);\n --saltButton-background-hover: var(--salt-actionable-secondary-background-hover);\n}\n", ".vuuColumnSettingsPanel {\n --saltFormField-margin: 3px 0;\n --saltFormField-label-width: 80px;\n --saltPanel-padding: var(--salt-size-unit);\n align-items: flex-start;\n border-left: solid 1px var(--salt-container-primary-borderColor);\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n min-width: 220px;\n padding-left: calc(var(--salt-size-unit) * 2);\n width: var(--vuuColumnSettings-width, auto);\n\n}\n\n.vuuColumnSettingsPanel-columnTabs {\n --saltFormField-margin: 0;\n}\n\n.vuuColumnSettingsPanel-columnTabs .saltFormField {\n margin-left: 0 !important;\n}\n\n.vuuColumnSettingsPanel .saltPanel {\n --saltFormField-margin: 3px 0;\n margin-top: var(--settings-panel-marginTop, var(--salt-size-unit));\n\n align-items: stretch;\n display: flex;\n flex-direction: column;\n gap: var(--salt-size-unit);\n\n}\n\n.vuuColumnPanelSwitch {\n white-space: nowrap;\n width: 100%;\n}\n\n.vuuColumnSettingsPanel .saltSwitch {\n margin-left: auto;;\n}\n", ".vuuGridSettingsPanel {\n --saltFormField-label-width: 150px;\n}", ".vuuCalculatedColumnPanel {\n display: flex;\n flex-direction: column;\n gap: var(--salt-size-unit);\n}", ".vuuDialog-gridConfig {\n \n}\n\n \n\n .vuuDatagridSettingsPanel {\n --svg-table-settings: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><rect height=\"3\" width=\"5\" x=\"1\" y=\"10\" /><rect height=\"3\" width=\"5\" x=\"1\" y=\"6\" /><rect height=\"3\" width=\"10\" x=\"7\" y=\"10\" /><rect height=\"3\" width=\"10\" x=\"7\" y=\"6\" /><path d=\"M6,17H1.5a.5.5,0,0,1-.5-.5V14H6Z\" /><path d=\"M16.5,17H7V14H17v2.5A.5.5,0,0,1,16.5,17Z\" /><path d=\"M16.5,1H1.5a.5.5,0,0,0-.5.5V5H17V1.5A.5.5,0,0,0,16.5,1Z\" /></svg>');\n --svg-column-chooser: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M16,1H10V17h6a1,1,0,0,0,1-1V2A1,1,0,0,0,16,1Z\" /><path d=\"M8,1H2A1,1,0,0,0,1,2V16a1,1,0,0,0,1,1H8Z\" /></svg>');\n --svg-column-settings: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M5,17H1.5a.5.5,0,0,1-.5-.5V1.5A.5.5,0,0,1,1.5,1H5Z\" /><path d=\"M8.71,15.4685a1.8065,1.8065,0,0,1-1.11-1.665v-.607a1.806,1.806,0,0,1,1.11-1.665,1.807,1.807,0,0,1,.3875-1.974l.459-.4595a1.792,1.792,0,0,1,1.276-.5285c.057,0,.1115.0115.167.0165V1H7V17H8.773A1.81349,1.81349,0,0,1,8.71,15.4685Z\" /><path d=\"M13.1965,7.6h.607A1.8065,1.8065,0,0,1,15.468,8.7095,1.77249,1.77249,0,0,1,17,8.7815V1.5a.5.5,0,0,0-.5-.5H13V7.63A1.70987,1.70987,0,0,1,13.1965,7.6Z\" /><path d=\"M17.5965,12.893H16.534a3.0709,3.0709,0,0,0-.45-1.0895l.7565-.7565a.3035.3035,0,0,0,0-.429l-.46-.46a.3035.3035,0,0,0-.429,0l-.7555.757a3.07263,3.07263,0,0,0-1.089-.45V9.4035A.3035.3035,0,0,0,13.8035,9.1h-.607a.3035.3035,0,0,0-.3035.3035V10.466a3.07263,3.07263,0,0,0-1.089.45l-.7565-.7565a.3035.3035,0,0,0-.429,0l-.46.46a.3035.3035,0,0,0,0,.429l.7565.7565a3.0709,3.0709,0,0,0-.45,1.0895H9.4035A.3035.3035,0,0,0,9.1,13.198v.607a.3035.3035,0,0,0,.3035.3035H10.466a3.0709,3.0709,0,0,0,.45,1.0895l-.7565.7565a.3035.3035,0,0,0,0,.429l.46.46a.3035.3035,0,0,0,.429,0l.7565-.7565a3.07263,3.07263,0,0,0,1.089.45v1.0625a.3035.3035,0,0,0,.3035.3035h.607a.3035.3035,0,0,0,.3035-.3035V16.534a3.07263,3.07263,0,0,0,1.089-.45l.7565.7565a.3035.3035,0,0,0,.429,0l.46-.46a.3035.3035,0,0,0,0-.429l-.7575-.7555a3.0709,3.0709,0,0,0,.45-1.0895h1.0625a.3035.3035,0,0,0,.3035-.3035v-.6065a.3035.3035,0,0,0-.3035-.3035ZM13.5,15.25a1.75,1.75,0,1,1,1.75-1.75A1.75,1.75,0,0,1,13.5,15.25Z\" /></svg>');\n\n\n \n\n --saltToolbar-background : transparent;\n --vuuView-borderStyle: solid;\n --vuuColumnPicker-width: 100%;\n --vuuColumnSettings-width: 50%;\n background-color: var(--salt-container-primary-background);\n display: flex;\n flex-direction: column;\n height: 442px;\n width: 520px;\n}\n\n[data-icon='column-chooser']{\n --vuu-icon-svg: var(--svg-column-chooser);\n}\n[data-icon='column-settings']{\n --vuu-icon-svg: var(--svg-column-settings);\n}\n[data-icon='table-settings']{\n --vuu-icon-svg: var(--svg-table-settings);\n}\n[data-icon='define-column']{\n --vuu-icon-svg: var(--svg-function);\n}\n\n.vuuDatagridSettingsPanel-header {\nflex: 0 0 50px;\n}\n\n.vuuDatagridSettingsPanel-stack {\n flex: 1;\n gap: 24px;\n overflow: hidden;\n\n}\n\n.vuuDatagridSettingsPanel-stack > .saltToolbar {\n --saltToolbar-background: var(--salt-container-secondary-background);\n --vuu-icon-color: var(--salt-text-secondary-foreground);\n --vuu-icon-size: 18px;\n --vuu-icon-height: 36px;\n --vuu-icon-width: 36px;\n border-bottom: none;\n}\n\n.vuuDatagridSettingsPanel-stack > .saltToolbar .saltTabstrip {\n --tabs-activationIndicator-inset: 0px auto 0px 1px;\n}\n\n.vuuDatagridSettingsPanel-stack > .saltToolbar .saltTab[aria-selected='true'],\n.vuuDatagridSettingsPanel-stack > .saltToolbar .saltTab:hover{\n --vuu-icon-color: var(--salt-text-primary-foreground);\n \n}\n\n.vuuDatagridSettingsPanel-stack > .saltToolbar {\n --saltToolbar-background: var(--salt-container-secondary-background);\n}\n\n.vuuDatagridSettingsPanel-columnPanels {\n display: flex;\n flex-flow: nowrap;\n gap: calc(var(--salt-size-unit) * 1);\n margin: var(--salt-size-unit) 0;\n overflow: hidden;\n position: relative;\n /* margin: calc(var(--salt-size-unit) * 3); */\n}\n\n.vuuDatagridSettingsPanel-columnPanels > * {\n transition: .3s transform ease-out;\n transform: translate3d(0px, 0px, 0px);\n}\n\n.vuuDatagridSettingsPanel-columnPanels[data-align='right'] > * {\n transform: translate3d(-235px, 0px, 0px);\n}\n\n\n.vuuDatagridSettingsPanel-columnToolbar {\n --saltButton-width: 60px;\n}\n\n.vuuDatagridSettingsPanel-columnToolbar > .Responsive-inner {\n align-items: center;\n}\n\n.vuuDatagridSettingsPanel-buttonBar {\n align-items: center;\n border-top: solid 1px var(--salt-separable-primary-borderColor);\n display: flex;\n flex: 0 0 40px;\n gap: var(--salt-size-unit);\n justify-content: flex-end; \n padding: 0 var(--salt-size-unit);\n}\n ", ".vuuDatasourceStats {\n display: flex;\n gap: var(--salt-size-unit);\n}"],
5
- "mappings": "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",
3
+ "sources": ["../../../packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.css", "../../../packages/vuu-table-extras/src/cell-renderers/background-cell/FlashingBackground.css", "../../../packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.css", "../../../packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.css", "../../../packages/vuu-table-extras/src/datagrid-configuration-ui/column-picker/ColumnListItem.css", "../../../packages/vuu-table-extras/src/datagrid-configuration-ui/column-picker/ColumnPicker.css", "../../../packages/vuu-table-extras/src/datagrid-configuration-ui/column-type-panel/ColumnTypePanel.css", "../../../packages/vuu-table-extras/src/datagrid-configuration-ui/column-settings-panel/ColumnSettingsPanel.css", "../../../packages/vuu-table-extras/src/datagrid-configuration-ui/settings-panel/GridSettingsPanel.css", "../../../packages/vuu-table-extras/src/datagrid-configuration-ui/calculated-column-panel/CalculatedColumnPanel.css", "../../../packages/vuu-table-extras/src/datagrid-configuration-ui/settings-panel/DatagridSettingsPanel.css", "../../../packages/vuu-table-extras/src/datasource-stats/DatasourceStats.css", "../../../packages/vuu-table-extras/src/table-settings/column-type-panel/ColumnTypePanel.css", "../../../packages/vuu-table-extras/src/table-settings/column-settings-panel/ColumnSettingsPanel.css"],
4
+ "sourcesContent": [".vuuTable td:has(> .vuuBackgroundCell){\n padding: 0;\n text-align: right;\n} \n\n.vuuBackgroundCell {\n padding-right: var(--salt-size-unit);\n position: relative;\n z-index: -1;\n}\n\n.vuuBackgroundCell-flasher {\n color: transparent;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n z-index: -1;\n}\n\n.vuuBackgroundCell-flasher {\n text-align: left;\n}\n.vuuBackgroundCell-flasher + .num {\n padding-left: 8px;\n}\n\n.right .vuuBackgroundCell-flasher {\n text-align: right;\n}\n.right .vuuBackgroundCell-flasher + .num {\n padding-right: 8px;\n}\n\n.up1 > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgup1;\n}\n\n.up2 > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgup2;\n}\n\n.down1 > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgdown1;\n}\n\n.down2 > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgdown2;\n}\n\n.up1.vuuBackgroundCell-arrowOnly > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactarrowup1;\n}\n\n.up2.vuuBackgroundCell-arrowOnly > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactarrowup2;\n}\n\n.down1.vuuBackgroundCell-arrowOnly > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactarrowdown1;\n}\n\n.down2.vuuBackgroundCell-arrowOnly > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactarrowdown2;\n}\n\n.up1.vuuBackgroundCell-arrowBackground > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgarrowup1;\n}\n\n.up2.vuuBackgroundCell-arrowBackground > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgarrowup2;\n}\n\n.down1.vuuBackgroundCell-arrowBackground > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgarrowdown1;\n}\n\n.down2.vuuBackgroundCell-arrowBackground > .vuuBackgroundCell-flasher {\n animation-duration: 30s;\n animation-name: reactbgarrowdown2;\n}\n", "@keyframes reactbgup1 {\n from {\n background-color: var(--salt-differential-positive-background);\n }\n to {\n background-color: transparent;\n }\n }\n \n @keyframes reactbgup2 {\n from {\n background-color: var(--salt-differential-positive-background);\n }\n to {\n background-color: transparent;\n }\n }\n \n @keyframes reactbgdown1 {\n from {\n background-color: var(--salt-differential-negative-background);\n }\n to {\n background-color: transparent;\n }\n }\n \n @keyframes reactbgdown2 {\n from {\n background-color: var(--salt-differential-negative-background);\n }\n to {\n background-color: transparent;\n }\n }\n \n @keyframes reactarrowup1 {\n from {\n color: var(--salt-differential-positive-foreground);\n }\n to {\n color: transparent;\n }\n }\n \n @keyframes reactarrowup2 {\n from {\n color: var(--salt-differential-positive-foreground);\n }\n to {\n color: transparent;\n }\n }\n \n @keyframes reactarrowdown1 {\n from {\n color: var(--salt-differential-negative-foreground);\n }\n to {\n color: transparent;\n }\n }\n \n @keyframes reactarrowdown2 {\n from {\n color: var(--salt-differential-negative-foreground);\n }\n to {\n color: transparent;\n }\n }\n \n @keyframes reactbgarrowup1 {\n 0% {\n color: var(--salt-differential-positive-foreground);\n background-color: var(--salt-differential-positive-background);\n }\n 20% {\n color: var(--salt-differential-positive-foreground);\n background-color: transparent;\n }\n 100% {\n color: transparent;\n background-color: transparent;\n }\n }\n \n @keyframes reactbgarrowup2 {\n 0% {\n color: var(--salt-differential-positive-foreground);\n background-color: var(--salt-differential-positive-background);\n }\n 20% {\n color: var(--salt-differential-positive-foreground);\n background-color: transparent;\n }\n 100% {\n color: transparent;\n background-color: transparent;\n }\n }\n \n @keyframes reactbgarrowdown1 {\n 0% {\n color: var(--salt-differential-negative-foreground);\n background-color: var(--salt-differential-negative-background);\n }\n 20% {\n color: var(--salt-differential-negative-foreground);\n background-color: transparent;\n }\n 100% {\n color: transparent;\n background-color: transparent;\n }\n }\n \n @keyframes reactbgarrowdown2 {\n 0% {\n color: var(--salt-differential-negative-foreground);\n background-color: var(--salt-differential-negative-background);\n }\n 20% {\n color: var(--salt-differential-negative-foreground);\n background-color: transparent;\n }\n 100% {\n color: transparent;\n background-color: transparent;\n }\n }\n ", ".vuuProgressCell {\n align-items: center;\n display: flex;\n}\n\n.vuuProgressCell-track {\n display: inline-block;\n flex: auto 1 1;\n height: 4px;\n overflow: hidden;\n position: relative;\n}\n\n.vuuProgressCell-bg {\n background-color: var(--salt-measured-background);\n display: inline-block;\n height: 2px;\n left: 0;\n position: absolute;\n top: 1px;\n width: 100%;\n}\n\n\n.vuuProgressCell-bar {\n background-color: var(--salt-measured-fill);\n display: inline-block;\n height: 100%;\n left: 0;\n position: absolute;\n top:0;\n transform: translateX(var(--progress-bar-pct, -100%));\n width: 100%;\n}\n\n.vuuProgressCell-text {\n flex: 35px 0 0;\n text-align: right;\n}", "\n.vuuColumnExpressionInput {\n --vuuFilterEditor-background: var(--salt-container-primary-background);\n --vuuFilterEditor-color: var(--salt-text-primary-foreground);\n --vuuFilterEditor-fontFamily: var(--salt-typography-fontFamily);\n --vuuFilterEditor-fontSize: var(--salt-text-fontSize);\n --vuuFilterEditor-cursorColor: var(--salt-text-secondary-foreground);\n --vuuFilterEditor-selectionBackground: var(--salt-text-background-selected);\n --vuuFilterEditor-tooltipBackground: var(--salt-container-primary-background);\n --vuuFilterEditor-tooltipBorder: var(--tooltip-status-borderColor) var(--salt-container-borderWidth) var(--salt-container-borderStyle); \n --vuuFilterEditor-tooltipElevation: var(--salt-overlayable-shadow-popout);\n --vuuFilterEditor-suggestion-selectedBackground: var(--salt-selectable-background-selected);\n --vuuFilterEditor-suggestion-selectedColor: var(--salt-text-primary-foreground);\n --vuuFilterEditor-suggestion-detailColor: var(--salt-text-secondary-foreground-disabled);\n --vuuFilterEditor-suggestion-height: 24px;\n --vuuFilterEditor-variableColor: blue;\n\n align-items: center;\n box-sizing: border-box;\n height: 30px;\n}\n\n.vuuColumnExpressionInput-FilterButton,\n.vuuColumnExpressionInput-ClearButton {\n --vuu-icon-size: 12px;\n --saltButton-width: 28px;\n}\n\n.expression-type-container {\n margin: 0 3px 0 auto;\n color: var(--salt-text-secondary-foreground)\n}\n\n.expression-kind {\n display: inline-block;\n width: 50px;\n}\n\n.expression-type {\n display: inline-block;\n text-align: right;\n width: 50px;\n}\n\n.vuuSuggestion {\n display: flex;\n align-items: center;\n}\n\n\n.vuuFunctionDoc .function-heading {\n display: flex;\n gap: 3px;\n}\n\n.vuuFunctionDoc .function-name {\n font-style: italic;\n}\n\n.vuuFunctionDoc .param-list {\n font-style: italic;\n color: blue;\n white-space: pre;\n}\n\n.vuuFunctionDoc .function-type {\n margin-left: auto;\n}\n\n.vuuFunctionDoc .example-container {\n background-color: var(--salt-container-secondary-background);\n margin: 6px 0;\n padding: 3px;\n}\n\n.vuuFunctionDoc .example-expression {\n font-family: var(--salt-typography-fontFamily-code);\n margin-left: 8px;\n margin-top: 6px;\n}\n\n.vuuFunctionDoc .example-result {\n margin-left: 8px;\n margin-top: 6px;\n}", ".vuuColumnListItem {\n --svg-eye-hidden: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path fill=\"none\" d=\"M0 0h24v24H0z\"/><path d=\"M4.52 5.934L1.393 2.808l1.415-1.415 19.799 19.8-1.415 1.414-3.31-3.31A10.949 10.949 0 0 1 12 21c-5.392 0-9.878-3.88-10.819-9a10.982 10.982 0 0 1 3.34-6.066zm10.237 10.238l-1.464-1.464a3 3 0 0 1-4.001-4.001L7.828 9.243a5 5 0 0 0 6.929 6.929zM7.974 3.76C9.221 3.27 10.58 3 12 3c5.392 0 9.878 3.88 10.819 9a10.947 10.947 0 0 1-2.012 4.592l-3.86-3.86a5 5 0 0 0-5.68-5.68L7.974 3.761z\"/></svg>');\n align-items: center;\n padding: 0 !important;\n}\n\n.vuuColumnListItem-calculated {\n --vuu-icon-size: 12px;\n --column-icon-svg: var(--svg-function);\n --calculated-background: var(--salt-text-secondary-foreground);\n}\n.vuuColumnListItem-hidden {\n --vuu-icon-size: 14px;\n --hidden-background: var(--salt-text-secondary-foreground);\n --hidden-icon-svg: var(--svg-eye-hidden);\n}\n\n.vuuColumnListItem-label {\n flex: 1 1 auto;\n}\n.vuuColumnListItem-iconType {\n background-color: var(--calculated-background, transparent);\n display: inline-block;\n height: 100%;\n mask: var(--column-icon-svg) center center/var(--vuu-icon-size) var(--vuu-icon-size);\n mask-repeat: no-repeat;\n -webkit-mask: var(--column-icon-svg) center center/var(--vuu-icon-size) var(--vuu-icon-size);\n -webkit-mask-repeat: no-repeat;\n width: 20px;\n }\n\n.vuuColumnListItem-iconHidden {\n background-color: var(--hidden-background, transparent);\n display: inline-block;\n height: 100%;\n mask: var(--hidden-icon-svg) center center/var(--vuu-icon-size) var(--vuu-icon-size);\n mask-repeat: no-repeat;\n -webkit-mask: var(--hidden-icon-svg) center center/var(--vuu-icon-size) var(--vuu-icon-size);\n -webkit-mask-repeat: no-repeat;\n width: 20px;\n}", ".vuuColumnPicker {\n\n --vuu-icon-color: var(--salt-text-primary-foreground);\n --vuu-icon-left: 0px;\n --vuu-icon-size: 12px;\n\n display: flex;\n flex-shrink: 0;\n\n gap: calc(var(--salt-size-unit) * 2);\n width: var(--vuuColumnPicker-width, 100%);\n}\n\n.vuuColumnPicker-listColumn {\n display: flex;\n flex: 1;\n flex-direction: column;\n}\n\n.vuuColumnPicker-listContainer {\n border: solid 1px var(--salt-container-primary-borderColor);\n margin-right: var(--salt-size-unit)\n}\n\n.vuuColumnPicker-defineColumn {\n align-items: center;\n border-top: solid 1px var(--salt-container-primary-borderColor);\n display: flex;\n flex: 0 0 calc(100% - var(--salt-size-unit));\n gap: var(--salt-size-unit);\n transition: .2s height;\n margin-top: 12px;\n height: 48px;\n}\n\n[data-align='right'] .vuuColumnPicker-defineColumn {\n border-top: none;\n height: 0;\n}\n\n.vuuColumnPicker-addCalculatedColumn {\n margin-left: auto;\n margin-right: var(--salt-size-unit);\n width: 28px;\n}\n\n", ".vuuColumnTypePanel {\n --settings-panel-marginTop: 0px;\n}\n\n.vuuColumnTypePanel-renderer {\n --saltButton-background: var(--salt-container-secondary-background);\n --saltButton-background-hover: var(--salt-actionable-secondary-background-hover);\n}\n", ".vuuColumnSettingsPanel {\n --saltFormField-margin: 3px 0;\n --saltFormField-label-width: 80px;\n --saltPanel-padding: var(--salt-size-unit);\n align-items: flex-start;\n border-left: solid 1px var(--salt-container-primary-borderColor);\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n min-width: 220px;\n padding-left: calc(var(--salt-size-unit) * 2);\n width: var(--vuuColumnSettings-width, auto);\n\n}\n\n.vuuColumnSettingsPanel-columnTabs {\n --saltFormField-margin: 0;\n}\n\n.vuuColumnSettingsPanel-columnTabs .saltFormField {\n margin-left: 0 !important;\n}\n\n.vuuColumnSettingsPanel .saltPanel {\n --saltFormField-margin: 3px 0;\n margin-top: var(--settings-panel-marginTop, var(--salt-size-unit));\n\n align-items: stretch;\n display: flex;\n flex-direction: column;\n gap: var(--salt-size-unit);\n\n}\n\n.vuuColumnPanelSwitch {\n white-space: nowrap;\n width: 100%;\n}\n\n.vuuColumnSettingsPanel .saltSwitch {\n margin-left: auto;;\n}\n", ".vuuGridSettingsPanel {\n --saltFormField-label-width: 150px;\n}", ".vuuCalculatedColumnPanel {\n display: flex;\n flex-direction: column;\n gap: var(--salt-size-unit);\n}", ".vuuDialog-gridConfig {\n \n}\n\n \n\n .vuuDatagridSettingsPanel {\n --svg-table-settings: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><rect height=\"3\" width=\"5\" x=\"1\" y=\"10\" /><rect height=\"3\" width=\"5\" x=\"1\" y=\"6\" /><rect height=\"3\" width=\"10\" x=\"7\" y=\"10\" /><rect height=\"3\" width=\"10\" x=\"7\" y=\"6\" /><path d=\"M6,17H1.5a.5.5,0,0,1-.5-.5V14H6Z\" /><path d=\"M16.5,17H7V14H17v2.5A.5.5,0,0,1,16.5,17Z\" /><path d=\"M16.5,1H1.5a.5.5,0,0,0-.5.5V5H17V1.5A.5.5,0,0,0,16.5,1Z\" /></svg>');\n --svg-column-chooser: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M16,1H10V17h6a1,1,0,0,0,1-1V2A1,1,0,0,0,16,1Z\" /><path d=\"M8,1H2A1,1,0,0,0,1,2V16a1,1,0,0,0,1,1H8Z\" /></svg>');\n --svg-column-settings: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path d=\"M5,17H1.5a.5.5,0,0,1-.5-.5V1.5A.5.5,0,0,1,1.5,1H5Z\" /><path d=\"M8.71,15.4685a1.8065,1.8065,0,0,1-1.11-1.665v-.607a1.806,1.806,0,0,1,1.11-1.665,1.807,1.807,0,0,1,.3875-1.974l.459-.4595a1.792,1.792,0,0,1,1.276-.5285c.057,0,.1115.0115.167.0165V1H7V17H8.773A1.81349,1.81349,0,0,1,8.71,15.4685Z\" /><path d=\"M13.1965,7.6h.607A1.8065,1.8065,0,0,1,15.468,8.7095,1.77249,1.77249,0,0,1,17,8.7815V1.5a.5.5,0,0,0-.5-.5H13V7.63A1.70987,1.70987,0,0,1,13.1965,7.6Z\" /><path d=\"M17.5965,12.893H16.534a3.0709,3.0709,0,0,0-.45-1.0895l.7565-.7565a.3035.3035,0,0,0,0-.429l-.46-.46a.3035.3035,0,0,0-.429,0l-.7555.757a3.07263,3.07263,0,0,0-1.089-.45V9.4035A.3035.3035,0,0,0,13.8035,9.1h-.607a.3035.3035,0,0,0-.3035.3035V10.466a3.07263,3.07263,0,0,0-1.089.45l-.7565-.7565a.3035.3035,0,0,0-.429,0l-.46.46a.3035.3035,0,0,0,0,.429l.7565.7565a3.0709,3.0709,0,0,0-.45,1.0895H9.4035A.3035.3035,0,0,0,9.1,13.198v.607a.3035.3035,0,0,0,.3035.3035H10.466a3.0709,3.0709,0,0,0,.45,1.0895l-.7565.7565a.3035.3035,0,0,0,0,.429l.46.46a.3035.3035,0,0,0,.429,0l.7565-.7565a3.07263,3.07263,0,0,0,1.089.45v1.0625a.3035.3035,0,0,0,.3035.3035h.607a.3035.3035,0,0,0,.3035-.3035V16.534a3.07263,3.07263,0,0,0,1.089-.45l.7565.7565a.3035.3035,0,0,0,.429,0l.46-.46a.3035.3035,0,0,0,0-.429l-.7575-.7555a3.0709,3.0709,0,0,0,.45-1.0895h1.0625a.3035.3035,0,0,0,.3035-.3035v-.6065a.3035.3035,0,0,0-.3035-.3035ZM13.5,15.25a1.75,1.75,0,1,1,1.75-1.75A1.75,1.75,0,0,1,13.5,15.25Z\" /></svg>');\n\n\n \n\n --saltToolbar-background : transparent;\n --vuuView-borderStyle: solid;\n --vuuColumnPicker-width: 100%;\n --vuuColumnSettings-width: 50%;\n background-color: var(--salt-container-primary-background);\n display: flex;\n flex-direction: column;\n height: 442px;\n width: 520px;\n}\n\n[data-icon='column-chooser']{\n --vuu-icon-svg: var(--svg-column-chooser);\n}\n[data-icon='column-settings']{\n --vuu-icon-svg: var(--svg-column-settings);\n}\n[data-icon='table-settings']{\n --vuu-icon-svg: var(--svg-table-settings);\n}\n[data-icon='define-column']{\n --vuu-icon-svg: var(--svg-function);\n}\n\n.vuuDatagridSettingsPanel-header {\nflex: 0 0 50px;\n}\n\n.vuuDatagridSettingsPanel-stack {\n flex: 1;\n gap: 24px;\n overflow: hidden;\n\n}\n\n.vuuDatagridSettingsPanel-stack > .saltToolbar {\n --saltToolbar-background: var(--salt-container-secondary-background);\n --vuu-icon-color: var(--salt-text-secondary-foreground);\n --vuu-icon-size: 18px;\n --vuu-icon-height: 36px;\n --vuu-icon-width: 36px;\n border-bottom: none;\n}\n\n.vuuDatagridSettingsPanel-stack > .saltToolbar .saltTabstrip {\n --tabs-activationIndicator-inset: 0px auto 0px 1px;\n}\n\n.vuuDatagridSettingsPanel-stack > .saltToolbar .saltTab[aria-selected='true'],\n.vuuDatagridSettingsPanel-stack > .saltToolbar .saltTab:hover{\n --vuu-icon-color: var(--salt-text-primary-foreground);\n \n}\n\n.vuuDatagridSettingsPanel-stack > .saltToolbar {\n --saltToolbar-background: var(--salt-container-secondary-background);\n}\n\n.vuuDatagridSettingsPanel-columnPanels {\n display: flex;\n flex-flow: nowrap;\n gap: calc(var(--salt-size-unit) * 1);\n margin: var(--salt-size-unit) 0;\n overflow: hidden;\n position: relative;\n /* margin: calc(var(--salt-size-unit) * 3); */\n}\n\n.vuuDatagridSettingsPanel-columnPanels > * {\n transition: .3s transform ease-out;\n transform: translate3d(0px, 0px, 0px);\n}\n\n.vuuDatagridSettingsPanel-columnPanels[data-align='right'] > * {\n transform: translate3d(-235px, 0px, 0px);\n}\n\n\n.vuuDatagridSettingsPanel-columnToolbar {\n --saltButton-width: 60px;\n}\n\n.vuuDatagridSettingsPanel-columnToolbar > .Responsive-inner {\n align-items: center;\n}\n\n.vuuDatagridSettingsPanel-buttonBar {\n align-items: center;\n border-top: solid 1px var(--salt-separable-primary-borderColor);\n display: flex;\n flex: 0 0 40px;\n gap: var(--salt-size-unit);\n justify-content: flex-end; \n padding: 0 var(--salt-size-unit);\n}\n ", ".vuuDatasourceStats {\n display: flex;\n gap: var(--salt-size-unit);\n}", ".vuuColumnTypePanel {\n --settings-panel-marginTop: 0px;\n}\n\n.vuuColumnTypePanel-renderer {\n --saltButton-background: var(--salt-container-secondary-background);\n --saltButton-background-hover: var(--salt-actionable-secondary-background-hover);\n}\n", ".vuuColumnSettingsPanel {\n --saltFormField-margin: 3px 0;\n --saltFormField-label-width: 80px;\n --saltPanel-padding: var(--salt-size-unit);\n align-items: flex-start;\n border-left: solid 1px var(--salt-container-primary-borderColor);\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n min-width: 220px;\n padding-left: calc(var(--salt-size-unit) * 2);\n width: var(--vuuColumnSettings-width, auto);\n\n}\n\n.vuuColumnSettingsPanel-columnTabs {\n --saltFormField-margin: 0;\n}\n\n.vuuColumnSettingsPanel-columnTabs .saltFormField {\n margin-left: 0 !important;\n}\n\n.vuuColumnSettingsPanel .saltPanel {\n --saltFormField-margin: 3px 0;\n margin-top: var(--settings-panel-marginTop, var(--salt-size-unit));\n\n align-items: stretch;\n display: flex;\n flex-direction: column;\n gap: var(--salt-size-unit);\n\n}\n\n.vuuColumnPanelSwitch {\n white-space: nowrap;\n width: 100%;\n}\n\n.vuuColumnSettingsPanel .saltSwitch {\n margin-left: auto;;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,20 +1,21 @@
1
1
  {
2
2
  "name": "@vuu-ui/vuu-table-extras",
3
- "version": "0.7.6-debug",
3
+ "version": "0.8.0-debug",
4
4
  "author": "heswell",
5
5
  "license": "Apache-2.0",
6
6
  "devDependencies": {
7
- "@vuu-ui/vuu-filter-types": "0.7.6-debug",
8
- "@vuu-ui/vuu-protocol-types": "0.7.6-debug"
7
+ "@vuu-ui/vuu-filter-types": "0.8.0-debug",
8
+ "@vuu-ui/vuu-protocol-types": "0.8.0-debug"
9
9
  },
10
10
  "dependencies": {
11
- "@vuu-ui/vuu-codemirror": "0.7.6-debug",
12
- "@vuu-ui/vuu-data": "0.7.6-debug",
13
- "@vuu-ui/vuu-layout": "0.7.6-debug",
14
- "@vuu-ui/vuu-popups": "0.7.6-debug",
15
- "@vuu-ui/vuu-utils": "0.7.6-debug",
11
+ "@vuu-ui/vuu-codemirror": "0.8.0-debug",
12
+ "@vuu-ui/vuu-data": "0.8.0-debug",
13
+ "@vuu-ui/vuu-data-react": "0.8.0-debug",
14
+ "@vuu-ui/vuu-datagrid-types": "0.8.0-debug",
15
+ "@vuu-ui/vuu-layout": "0.8.0-debug",
16
+ "@vuu-ui/vuu-popups": "0.8.0-debug",
17
+ "@vuu-ui/vuu-utils": "0.8.0-debug",
16
18
  "@heswell/salt-lab": "1.0.0-alpha.2",
17
- "@lezer/common": "1.0.2",
18
19
  "@lezer/lr": "1.3.4",
19
20
  "@salt-ds/core": "1.2.0"
20
21
  },
@@ -28,8 +29,10 @@
28
29
  "cjs",
29
30
  "esm",
30
31
  "index.css",
31
- "index.css.map"
32
+ "index.css.map",
33
+ "/types"
32
34
  ],
33
35
  "module": "esm/index.js",
34
- "main": "cjs/index.js"
36
+ "main": "cjs/index.js",
37
+ "types": "types/index.d.ts"
35
38
  }
@@ -0,0 +1,2 @@
1
+ import "./BackgroundCell.css";
2
+ import "./FlashingBackground.css";
@@ -0,0 +1 @@
1
+ export * from "./BackgroundCell";
@@ -0,0 +1,3 @@
1
+ import { KeyedColumnDescriptor } from "@vuu-ui/vuu-datagrid-types";
2
+ import { valueChangeDirection } from "@vuu-ui/vuu-utils";
3
+ export declare function useDirection(key: string, value: unknown, column: KeyedColumnDescriptor): valueChangeDirection;
@@ -0,0 +1,2 @@
1
+ export * from "./background-cell";
2
+ export * from "./progress-cell";
@@ -0,0 +1 @@
1
+ import "./ProgressCell.css";
@@ -0,0 +1 @@
1
+ export * from "./ProgressCell";
@@ -0,0 +1,9 @@
1
+ import { HTMLAttributes } from "react";
2
+ import { ExpressionSuggestionConsumer } from "./useColumnExpressionEditor";
3
+ import "./ColumnExpressionInput.css";
4
+ import { ColumnDefinitionExpression } from "./column-language-parser";
5
+ export interface ColumnExpressionInputProps extends ExpressionSuggestionConsumer, Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
6
+ onChange?: (source: string, expression: ColumnDefinitionExpression | undefined) => void;
7
+ onSubmitExpression?: (source: string, expression: ColumnDefinitionExpression | undefined) => void;
8
+ }
9
+ export declare const ColumnExpressionInput: ({ onChange, onSubmitExpression, suggestionProvider, }: ColumnExpressionInputProps) => JSX.Element;
@@ -0,0 +1,15 @@
1
+ export type ColumnFunctionDescriptor = {
2
+ accepts: "string" | "number" | "any" | Array<"string" | "number">;
3
+ description: string;
4
+ example: {
5
+ expression: string;
6
+ result: string;
7
+ };
8
+ name: string;
9
+ params: {
10
+ count?: number;
11
+ description: string;
12
+ };
13
+ type: "string" | "number" | "boolean" | "variable";
14
+ };
15
+ export declare const columnFunctionDescriptors: ColumnFunctionDescriptor[];
@@ -0,0 +1,2 @@
1
+ import { LanguageSupport } from "@vuu-ui/vuu-codemirror";
2
+ export declare const columnExpressionLanguageSupport: () => LanguageSupport;
@@ -0,0 +1,58 @@
1
+ import { Tree } from "@vuu-ui/vuu-codemirror";
2
+ import { RelationalExpression } from "./generated/column-parser.terms";
3
+ type expressionType = "arithmeticExpression" | "booleanCondition" | "booleanLiteralExpression" | "callExpression" | "colExpression" | "conditionalExpression" | "numericLiteralExpression" | "relationalExpression" | "stringLiteralExpression" | "unknown";
4
+ type arithmeticOp = "*" | "/" | "+" | "-" | "unknown";
5
+ type booleanOp = "and" | "or";
6
+ type relationalOp = "=" | "!=" | ">" | ">=" | "<" | "<=" | "unknown";
7
+ export interface Expression {
8
+ type: expressionType;
9
+ expressions?: Expression[];
10
+ toJSON?: () => unknown;
11
+ value?: string | number | boolean;
12
+ }
13
+ interface BooleanLiteralExpression {
14
+ type: "booleanLiteralExpression";
15
+ value: boolean;
16
+ }
17
+ interface NumericLiteralExpression {
18
+ type: "numericLiteralExpression";
19
+ value: number;
20
+ }
21
+ interface StringLiteralExpression {
22
+ type: "stringLiteralExpression";
23
+ value: string;
24
+ }
25
+ interface ArithmeticExpression extends Expression {
26
+ expressions: [Expression, Expression];
27
+ op: arithmeticOp;
28
+ type: "arithmeticExpression";
29
+ }
30
+ interface BooleanCondition extends Expression {
31
+ expressions: Expression[];
32
+ op: booleanOp;
33
+ type: "booleanCondition";
34
+ }
35
+ interface RelationalExpression extends Expression {
36
+ expressions: Expression[];
37
+ op: relationalOp;
38
+ type: "relationalExpression";
39
+ }
40
+ interface ColExpression extends Expression {
41
+ column?: string;
42
+ type: "colExpression";
43
+ }
44
+ interface CallExpression extends Expression {
45
+ arguments: Expression[];
46
+ functionName?: string;
47
+ type: "callExpression";
48
+ }
49
+ type ConditionExpression = RelationalExpression | BooleanCondition;
50
+ interface ConditionalExpression extends Expression {
51
+ type: "conditionalExpression";
52
+ condition: ConditionExpression;
53
+ truthyExpression: Expression;
54
+ falsyExpression: Expression;
55
+ }
56
+ export type ColumnDefinitionExpression = ArithmeticExpression | BooleanLiteralExpression | CallExpression | ColExpression | ConditionalExpression | NumericLiteralExpression | StringLiteralExpression;
57
+ export declare const walkTree: (tree: Tree, source: string) => ColumnDefinitionExpression;
58
+ export {};
@@ -0,0 +1,5 @@
1
+ import { SyntaxNode } from "@vuu-ui/vuu-codemirror";
2
+ export declare const ColumnNamedTerms: readonly string[];
3
+ export declare const isCompleteExpression: (src: string) => boolean;
4
+ export declare const lastNamedChild: (node: SyntaxNode) => SyntaxNode | null;
5
+ export declare const isCompleteRelationalExpression: (node?: SyntaxNode) => boolean;
@@ -0,0 +1,2 @@
1
+ export const parser: LRParser;
2
+ import { LRParser } from "@lezer/lr";
@@ -0,0 +1,24 @@
1
+ export const ColumnDefinitionExpression: 1;
2
+ export const Column: 2;
3
+ export const Number: 3;
4
+ export const String: 4;
5
+ export const True: 5;
6
+ export const False: 6;
7
+ export const ParenthesizedExpression: 7;
8
+ export const OpenBrace: 8;
9
+ export const CloseBrace: 9;
10
+ export const ArithmeticExpression: 10;
11
+ export const Divide: 11;
12
+ export const Times: 12;
13
+ export const Plus: 13;
14
+ export const Minus: 14;
15
+ export const ConditionalExpression: 15;
16
+ export const If: 16;
17
+ export const RelationalExpression: 17;
18
+ export const RelationalOperator: 18;
19
+ export const AndCondition: 19;
20
+ export const OrCondition: 20;
21
+ export const Comma: 21;
22
+ export const CallExpression: 22;
23
+ export const Function: 23;
24
+ export const ArgList: 24;
@@ -0,0 +1,3 @@
1
+ export * from "./ColumnExpressionLanguage";
2
+ export * from "./ColumnExpressionTreeWalker";
3
+ export * from "./column-expression-parse-utils";
@@ -0,0 +1 @@
1
+ export function walkTree(tree: any, source: any): void;
@@ -0,0 +1,2 @@
1
+ import { ColumnFunctionDescriptor } from "./column-function-descriptors";
2
+ export declare const functionDocInfo: ({ name, description, example, params, type, }: ColumnFunctionDescriptor) => HTMLElement;
@@ -0,0 +1 @@
1
+ export declare const vuuHighlighting: import("@codemirror/state").Extension;
@@ -0,0 +1,4 @@
1
+ export * from "./ColumnExpressionInput";
2
+ export * from "./column-language-parser";
3
+ export * from "./useColumnExpressionEditor";
4
+ export * from "./useColumnExpressionSuggestionProvider";
@@ -0,0 +1 @@
1
+ export declare const vuuTheme: import("@codemirror/state").Extension;
@@ -0,0 +1,6 @@
1
+ import { CompletionSource } from "@vuu-ui/vuu-codemirror";
2
+ import { MutableRefObject } from "react";
3
+ import { IExpressionSuggestionProvider } from "./useColumnExpressionEditor";
4
+ export type ApplyCompletion = (mode?: "add" | "replace") => void;
5
+ export type Operator = "";
6
+ export declare const useColumnAutoComplete: (suggestionProvider: IExpressionSuggestionProvider, onSubmit: MutableRefObject<ApplyCompletion>) => CompletionSource;
@@ -0,0 +1,29 @@
1
+ /// <reference types="react" />
2
+ import { Completion } from "@vuu-ui/vuu-codemirror";
3
+ import { ColumnDefinitionExpression } from "./column-language-parser/ColumnExpressionTreeWalker";
4
+ export type ColumnExpressionOperator = "Times" | "Divide" | "Minus" | "Plus";
5
+ export type ColumnExpressionSuggestionType = "column" | "columnValue" | "expression" | "condition-operator" | "operator" | "relational-operator";
6
+ export type ColumnExpressionSuggestionOptions = {
7
+ columnName?: string;
8
+ functionName?: string;
9
+ operator?: ColumnExpressionOperator;
10
+ prefix?: string;
11
+ startsWith?: string;
12
+ selection?: string[];
13
+ };
14
+ export interface IExpressionSuggestionProvider {
15
+ getSuggestions: (valueType: ColumnExpressionSuggestionType, options?: ColumnExpressionSuggestionOptions) => Promise<Completion[]>;
16
+ isPartialMatch: (valueType: ColumnExpressionSuggestionType, columnName?: string, text?: string | undefined) => Promise<boolean>;
17
+ }
18
+ export interface ExpressionSuggestionConsumer {
19
+ suggestionProvider: IExpressionSuggestionProvider;
20
+ }
21
+ export interface ColumnExpressionEditorProps {
22
+ onChange?: (source: string, expression: ColumnDefinitionExpression | undefined) => void;
23
+ onSubmitExpression?: (source: string, expression: ColumnDefinitionExpression | undefined) => void;
24
+ suggestionProvider: IExpressionSuggestionProvider;
25
+ }
26
+ export declare const useColumnExpressionEditor: ({ onChange, onSubmitExpression, suggestionProvider, }: ColumnExpressionEditorProps) => {
27
+ editorRef: import("react").RefObject<HTMLDivElement>;
28
+ clearInput: () => void;
29
+ };
@@ -0,0 +1,8 @@
1
+ import { ColumnDescriptor } from "@vuu-ui/vuu-datagrid-types";
2
+ import { VuuTable } from "@vuu-ui/vuu-protocol-types";
3
+ import { IExpressionSuggestionProvider } from "@vuu-ui/vuu-table-extras";
4
+ export interface SuggestionProviderHookProps {
5
+ columns: ColumnDescriptor[];
6
+ table: VuuTable;
7
+ }
8
+ export declare const useColumnExpressionSuggestionProvider: ({ columns, table, }: SuggestionProviderHookProps) => IExpressionSuggestionProvider;
@@ -0,0 +1,11 @@
1
+ import { ColumnDescriptor } from "@vuu-ui/vuu-datagrid-types";
2
+ import { VuuTable } from "@vuu-ui/vuu-protocol-types";
3
+ import { Dispatch, HTMLAttributes } from "react";
4
+ import { ColumnAction } from "../settings-panel/useGridSettings";
5
+ import "./CalculatedColumnPanel.css";
6
+ export interface CalculatedColumnPanelProps extends HTMLAttributes<HTMLDivElement> {
7
+ columns: ColumnDescriptor[];
8
+ dispatchColumnAction: Dispatch<ColumnAction>;
9
+ table: VuuTable;
10
+ }
11
+ export declare const CalculatedColumnPanel: ({ columns, dispatchColumnAction, table, }: CalculatedColumnPanelProps) => JSX.Element;
@@ -0,0 +1 @@
1
+ export * from "./CalculatedColumnPanel";
@@ -0,0 +1,4 @@
1
+ import { ColumnDescriptor } from "@vuu-ui/vuu-datagrid-types";
2
+ import { ListItemType } from "@heswell/salt-lab";
3
+ import "./ColumnListItem.css";
4
+ export declare const ColumnListItem: ListItemType<ColumnDescriptor>;
@@ -0,0 +1,13 @@
1
+ import { ColumnDescriptor } from "@vuu-ui/vuu-datagrid-types";
2
+ import { Dispatch, HTMLAttributes } from "react";
3
+ import { ColumnAction } from "../settings-panel/useGridSettings";
4
+ import "./ColumnPicker.css";
5
+ export interface ColumnPickerProps extends HTMLAttributes<HTMLDivElement> {
6
+ availableColumns: ColumnDescriptor[];
7
+ dispatchColumnAction: Dispatch<ColumnAction>;
8
+ onAddCalculatedColumnClick: () => void;
9
+ onSelectionChange?: (selected: ColumnDescriptor | null) => void;
10
+ chosenColumns: ColumnDescriptor[];
11
+ selectedColumn: ColumnDescriptor | null;
12
+ }
13
+ export declare const ColumnPicker: ({ availableColumns, id: idProp, dispatchColumnAction: dispatch, onAddCalculatedColumnClick, onSelectionChange, chosenColumns, selectedColumn, }: ColumnPickerProps) => JSX.Element;
@@ -0,0 +1 @@
1
+ export * from "./ColumnPicker";
@@ -0,0 +1,9 @@
1
+ import { ColumnDescriptor } from "@vuu-ui/vuu-datagrid-types";
2
+ import { Dispatch, HTMLAttributes } from "react";
3
+ import { ColumnAction } from "../settings-panel/useGridSettings";
4
+ import "./ColumnSettingsPanel.css";
5
+ export interface ColumnSettingsPanelProps extends HTMLAttributes<HTMLDivElement> {
6
+ column: ColumnDescriptor;
7
+ dispatchColumnAction: Dispatch<ColumnAction>;
8
+ }
9
+ export declare const ColumnSettingsPanel: ({ column, dispatchColumnAction, style: styleProp, ...props }: ColumnSettingsPanelProps) => JSX.Element;
@@ -0,0 +1 @@
1
+ export * from "./ColumnSettingsPanel";
@@ -0,0 +1,10 @@
1
+ import { ColumnDescriptor } from "@vuu-ui/vuu-datagrid-types";
2
+ import { PanelProps } from "@salt-ds/core";
3
+ import { Dispatch } from "react";
4
+ import { ColumnAction } from "../settings-panel/useGridSettings";
5
+ import "./ColumnTypePanel.css";
6
+ export interface ColumnTypePanelProps extends PanelProps {
7
+ column: ColumnDescriptor;
8
+ dispatchColumnAction: Dispatch<ColumnAction>;
9
+ }
10
+ export declare const ColumnTypePanel: ({ className, column, dispatchColumnAction, ...props }: ColumnTypePanelProps) => JSX.Element;
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { ColumnTypePanelProps } from "./ColumnTypePanel";
3
+ import "./ColumnTypePanel.css";
4
+ export declare const NumericColumnPanel: ({ column, dispatchColumnAction, }: ColumnTypePanelProps) => JSX.Element | null;
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import "./ColumnTypePanel.css";
3
+ import { ColumnTypePanelProps } from "./ColumnTypePanel";
4
+ export declare const StringColumnPanel: ({ column, dispatchColumnAction, }: ColumnTypePanelProps) => JSX.Element;
@@ -0,0 +1 @@
1
+ export * from "./ColumnTypePanel";
@@ -0,0 +1 @@
1
+ export * from "./settings-panel";
@@ -0,0 +1,10 @@
1
+ import { ColumnDescriptor, GridConfig } from "@vuu-ui/vuu-datagrid-types";
2
+ import { HTMLAttributes } from "react";
3
+ import "./DatagridSettingsPanel.css";
4
+ export interface DatagridSettingsPanelProps extends HTMLAttributes<HTMLDivElement> {
5
+ availableColumns: ColumnDescriptor[];
6
+ gridConfig: Omit<GridConfig, "headings">;
7
+ onCancel?: () => void;
8
+ onConfigChange?: (config: Omit<GridConfig, "headings">, closePanel?: boolean) => void;
9
+ }
10
+ export declare const DatagridSettingsPanel: ({ availableColumns, className, gridConfig, onCancel, onConfigChange, ...props }: DatagridSettingsPanelProps) => JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { GridConfig } from "@vuu-ui/vuu-datagrid-types";
2
+ import { Dispatch, HTMLAttributes } from "react";
3
+ import "./GridSettingsPanel.css";
4
+ import { ColumnAction } from "./useGridSettings";
5
+ export interface GridSettingsPanelProps extends HTMLAttributes<HTMLDivElement> {
6
+ config: Omit<GridConfig, "headings">;
7
+ dispatchColumnAction: Dispatch<ColumnAction>;
8
+ }
9
+ export declare const GridSettingsPanel: ({ config, dispatchColumnAction, style: styleProp, ...props }: GridSettingsPanelProps) => JSX.Element;
@@ -0,0 +1 @@
1
+ export * from "./DatagridSettingsPanel";
@@ -0,0 +1,59 @@
1
+ import { ColumnDescriptor, GridConfig } from "@vuu-ui/vuu-datagrid-types";
2
+ import { Reducer } from "react";
3
+ export type CalculatedColumnExpression = {
4
+ columName: string;
5
+ expression: string;
6
+ };
7
+ export interface ColumnActionAdd {
8
+ type: "addColumn";
9
+ columns?: ColumnDescriptor[];
10
+ column?: ColumnDescriptor;
11
+ index?: number;
12
+ }
13
+ export interface ColumnActionAddCalculatedColumn {
14
+ columnName: string;
15
+ columnType: "string" | "int" | "double" | "boolean";
16
+ expression: string;
17
+ type: "addCalculatedColumn";
18
+ }
19
+ export interface ColumnActionMove {
20
+ type: "moveColumn";
21
+ column?: ColumnDescriptor;
22
+ moveBy?: 1 | -1;
23
+ moveTo?: number;
24
+ moveFrom?: number;
25
+ }
26
+ export interface ColumnActionRemove {
27
+ type: "removeColumn";
28
+ column: ColumnDescriptor;
29
+ }
30
+ export interface ColumnActionUpdate {
31
+ type: "updateColumn";
32
+ column: ColumnDescriptor;
33
+ }
34
+ export interface ColumnActionUpdateProp {
35
+ align?: ColumnDescriptor["align"];
36
+ column: ColumnDescriptor;
37
+ hidden?: ColumnDescriptor["hidden"];
38
+ label?: ColumnDescriptor["label"];
39
+ type: "updateColumnProp";
40
+ width?: ColumnDescriptor["width"];
41
+ }
42
+ export interface ColumnActionUpdateGridSettings {
43
+ type: "updateGridSettings";
44
+ columnDefaultWidth?: number;
45
+ columnFormatHeader?: "capitalize" | "uppercase";
46
+ }
47
+ export interface ColumnActionUpdateTypeFormatting {
48
+ type: "updateColumnTypeFormatting";
49
+ column: ColumnDescriptor;
50
+ alignOnDecimals?: boolean;
51
+ decimals?: number;
52
+ zeroPad?: boolean;
53
+ }
54
+ export type ColumnAction = ColumnActionAdd | ColumnActionAddCalculatedColumn | ColumnActionUpdateGridSettings | ColumnActionMove | ColumnActionRemove | ColumnActionUpdate | ColumnActionUpdateProp | ColumnActionUpdateTypeFormatting;
55
+ export type GridSettingsReducer = Reducer<Omit<GridConfig, "headings">, ColumnAction>;
56
+ export declare const useGridSettings: (config: Omit<GridConfig, "headings">) => {
57
+ gridSettings: Omit<GridConfig, "headings">;
58
+ dispatchColumnAction: import("react").Dispatch<ColumnAction>;
59
+ };
@@ -0,0 +1,8 @@
1
+ import { DataSource } from "@vuu-ui/vuu-data";
2
+ import { HTMLAttributes } from "react";
3
+ import "./DatasourceStats.css";
4
+ interface DataSourceStatsProps extends HTMLAttributes<HTMLSpanElement> {
5
+ dataSource: DataSource;
6
+ }
7
+ export declare const DataSourceStats: ({ className: classNameProp, dataSource, }: DataSourceStatsProps) => JSX.Element;
8
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./DatasourceStats";