@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/esm/index.js CHANGED
@@ -30,12 +30,12 @@ import {
30
30
  import cx from "classnames";
31
31
 
32
32
  // src/cell-renderers/background-cell/useDirection.ts
33
- import { useEffect, useRef } from "react";
34
- import { isTypeDescriptor } from "@vuu-ui/vuu-utils";
35
33
  import {
36
34
  getMovingValueDirection,
35
+ isTypeDescriptor,
37
36
  isValidNumber
38
37
  } from "@vuu-ui/vuu-utils";
38
+ import { useEffect, useRef } from "react";
39
39
  var INITIAL_VALUE = [void 0, void 0, void 0, void 0];
40
40
  function useDirection(key, value, column) {
41
41
  var _a;
@@ -1345,7 +1345,10 @@ import {
1345
1345
  stringOperators,
1346
1346
  toSuggestions
1347
1347
  } from "@vuu-ui/vuu-codemirror";
1348
- import { getTypeaheadParams, useTypeaheadSuggestions } from "@vuu-ui/vuu-data";
1348
+ import {
1349
+ getTypeaheadParams,
1350
+ useTypeaheadSuggestions
1351
+ } from "@vuu-ui/vuu-data-react";
1349
1352
  import { isNumericColumn, isTextColumn } from "@vuu-ui/vuu-utils";
1350
1353
  import { useCallback as useCallback2, useRef as useRef3 } from "react";
1351
1354
 
@@ -2184,7 +2187,8 @@ var StringColumnPanel = ({
2184
2187
  column,
2185
2188
  dispatchColumnAction
2186
2189
  }) => {
2187
- return /* @__PURE__ */ jsx7(Fragment2, { children: "String" });
2190
+ console.log({ column, dispatchColumnAction });
2191
+ return /* @__PURE__ */ jsx7(Fragment2, { children: "what" });
2188
2192
  };
2189
2193
 
2190
2194
  // src/datagrid-configuration-ui/column-type-panel/ColumnTypePanel.tsx
@@ -2782,7 +2786,7 @@ var DatagridSettingsPanel = ({
2782
2786
  [handleApply]
2783
2787
  );
2784
2788
  const selectedColumn = selectedColumnName === null ? null : (_a = gridSettings.columns.find((col) => col.name === selectedColumnName)) != null ? _a : null;
2785
- const tabstripProps2 = {
2789
+ const tabstripProps3 = {
2786
2790
  activeTabIndex: selectedTabIndex,
2787
2791
  enableRenameTab: false,
2788
2792
  orientation: "vertical"
@@ -2796,7 +2800,7 @@ var DatagridSettingsPanel = ({
2796
2800
  /* @__PURE__ */ jsxs10(
2797
2801
  Stack2,
2798
2802
  {
2799
- TabstripProps: tabstripProps2,
2803
+ TabstripProps: tabstripProps3,
2800
2804
  className: `${classBase9}-stack`,
2801
2805
  getTabIcon,
2802
2806
  getTabLabel,
@@ -2881,9 +2885,368 @@ var DataSourceStats = ({
2881
2885
  /* @__PURE__ */ jsx13("span", { className: `${classBase10}-size`, children: value })
2882
2886
  ] });
2883
2887
  };
2888
+
2889
+ // src/table-settings/column-settings-panel/ColumnSettingsPanel.tsx
2890
+ import { Stack as Stack3 } from "@vuu-ui/vuu-layout";
2891
+ import {
2892
+ Checkbox as Checkbox2,
2893
+ FormField as FormField6,
2894
+ Input as Input3,
2895
+ RadioButton as RadioButton3,
2896
+ RadioButtonGroup as RadioButtonGroup3,
2897
+ StepperInput as StepperInput5
2898
+ } from "@heswell/salt-lab";
2899
+ import { Panel as Panel7, Text as Text7 } from "@salt-ds/core";
2900
+ import cx9 from "classnames";
2901
+ import {
2902
+ useCallback as useCallback10,
2903
+ useState as useState6
2904
+ } from "react";
2905
+
2906
+ // src/table-settings/column-type-panel/ColumnTypePanel.tsx
2907
+ import { getRegisteredCellRenderers as getRegisteredCellRenderers2 } from "@vuu-ui/vuu-utils";
2908
+ import { Dropdown as Dropdown2 } from "@heswell/salt-lab";
2909
+ import { Panel as Panel6 } from "@salt-ds/core";
2910
+ import cx8 from "classnames";
2911
+ import { useMemo as useMemo3 } from "react";
2912
+
2913
+ // src/table-settings/column-type-panel/NumericColumnPanel.tsx
2914
+ import { FormField as FormField5, StepperInput as StepperInput4, Switch as Switch2 } from "@heswell/salt-lab";
2915
+ import { Text as Text6 } from "@salt-ds/core";
2916
+ import { useCallback as useCallback9 } from "react";
2917
+ import { Fragment as Fragment4, jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
2918
+ var defaultValues2 = {
2919
+ alignOnDecimals: false,
2920
+ decimals: 4,
2921
+ zeroPad: false
2922
+ };
2923
+ var getColumnValues2 = (columnType, gridDefaultValues) => {
2924
+ const columnValue = typeof columnType === "object" && columnType.formatting ? columnType.formatting : {};
2925
+ const properties = ["alignOnDecimals", "decimals", "zeroPad"];
2926
+ return properties.reduce((configValues, property) => {
2927
+ if (columnValue[property] !== void 0) {
2928
+ return {
2929
+ ...configValues,
2930
+ [property]: columnValue[property]
2931
+ };
2932
+ } else if ((gridDefaultValues == null ? void 0 : gridDefaultValues[property]) !== void 0) {
2933
+ return {
2934
+ ...configValues,
2935
+ [property]: gridDefaultValues[property]
2936
+ };
2937
+ }
2938
+ return configValues;
2939
+ }, defaultValues2);
2940
+ };
2941
+ var NumericColumnPanel2 = ({
2942
+ column,
2943
+ dispatchColumnAction
2944
+ }) => {
2945
+ const { decimals, alignOnDecimals, zeroPad } = getColumnValues2(column == null ? void 0 : column.type);
2946
+ const dispatchUpdate = useCallback9(
2947
+ (values) => dispatchColumnAction({
2948
+ type: "updateColumnTypeFormatting",
2949
+ column,
2950
+ ...values
2951
+ }),
2952
+ [column, dispatchColumnAction]
2953
+ );
2954
+ const handleChangeDecimals = useCallback9(
2955
+ (value) => dispatchUpdate({ decimals: parseInt(value.toString(), 10) }),
2956
+ [dispatchUpdate]
2957
+ );
2958
+ const handleChangeAlignOnDecimals = useCallback9(
2959
+ (evt, value) => dispatchUpdate({ alignOnDecimals: value }),
2960
+ [dispatchUpdate]
2961
+ );
2962
+ const handleChangeZeroPad = useCallback9(
2963
+ (evt, value) => dispatchUpdate({ zeroPad: value }),
2964
+ [dispatchUpdate]
2965
+ );
2966
+ switch (column.serverDataType) {
2967
+ case "double":
2968
+ return /* @__PURE__ */ jsxs12(Fragment4, { children: [
2969
+ /* @__PURE__ */ jsx14(FormField5, { label: "No of Decimals", labelPlacement: "top", children: /* @__PURE__ */ jsx14(StepperInput4, { value: decimals, onChange: handleChangeDecimals }) }),
2970
+ /* @__PURE__ */ jsx14(
2971
+ Switch2,
2972
+ {
2973
+ checked: alignOnDecimals,
2974
+ label: "Align on decimals",
2975
+ LabelProps: { className: "vuuColumnPanelSwitch" },
2976
+ onChange: handleChangeAlignOnDecimals
2977
+ }
2978
+ ),
2979
+ /* @__PURE__ */ jsx14(
2980
+ Switch2,
2981
+ {
2982
+ checked: zeroPad,
2983
+ label: "Zero pad",
2984
+ LabelProps: { className: "vuuColumnPanelSwitch" },
2985
+ onChange: handleChangeZeroPad
2986
+ }
2987
+ )
2988
+ ] });
2989
+ case "long":
2990
+ case "int":
2991
+ return /* @__PURE__ */ jsx14(Fragment4, { children: /* @__PURE__ */ jsx14(Text6, { children: "Work in progress" }) });
2992
+ default:
2993
+ return null;
2994
+ }
2995
+ };
2996
+
2997
+ // src/table-settings/column-type-panel/StringColumnPanel.tsx
2998
+ import { Fragment as Fragment5, jsx as jsx15 } from "react/jsx-runtime";
2999
+ var StringColumnPanel2 = ({
3000
+ column,
3001
+ dispatchColumnAction
3002
+ }) => {
3003
+ console.log(column, dispatchColumnAction);
3004
+ return /* @__PURE__ */ jsx15(Fragment5, { children: "what" });
3005
+ };
3006
+
3007
+ // src/table-settings/column-type-panel/ColumnTypePanel.tsx
3008
+ import { Fragment as Fragment6, jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
3009
+ var classBase11 = "vuuColumnTypePanel";
3010
+ var integerCellRenderers2 = ["Default Renderer (int, long)"];
3011
+ var doubleCellRenderers2 = ["Default Renderer (double)"];
3012
+ var stringCellRenderers2 = ["Default Renderer (string)"];
3013
+ var getAvailableCellRenderers2 = (column) => {
3014
+ const customCellRenderers = getRegisteredCellRenderers2(column.serverDataType);
3015
+ const customRendererNames = customCellRenderers.map((r) => r.name);
3016
+ console.log({ customRendererNames });
3017
+ switch (column.serverDataType) {
3018
+ case "char":
3019
+ case "string":
3020
+ return stringCellRenderers2;
3021
+ case "int":
3022
+ case "long":
3023
+ return integerCellRenderers2;
3024
+ case "double":
3025
+ return doubleCellRenderers2.concat(customRendererNames);
3026
+ default:
3027
+ return stringCellRenderers2;
3028
+ }
3029
+ };
3030
+ var ColumnTypePanel2 = ({
3031
+ className,
3032
+ column,
3033
+ dispatchColumnAction,
3034
+ ...props
3035
+ }) => {
3036
+ const content = useMemo3(() => {
3037
+ switch (column.serverDataType) {
3038
+ case "double":
3039
+ case "int":
3040
+ case "long":
3041
+ return /* @__PURE__ */ jsx16(
3042
+ NumericColumnPanel2,
3043
+ {
3044
+ column,
3045
+ dispatchColumnAction
3046
+ }
3047
+ );
3048
+ default:
3049
+ return /* @__PURE__ */ jsx16(
3050
+ StringColumnPanel2,
3051
+ {
3052
+ column,
3053
+ dispatchColumnAction
3054
+ }
3055
+ );
3056
+ }
3057
+ }, [column, dispatchColumnAction]);
3058
+ const { serverDataType = "string" } = column;
3059
+ const availableRenderers = getAvailableCellRenderers2(column);
3060
+ return /* @__PURE__ */ jsxs13(Fragment6, { children: [
3061
+ /* @__PURE__ */ jsx16(
3062
+ Dropdown2,
3063
+ {
3064
+ className: cx8(`${classBase11}-renderer`),
3065
+ fullWidth: true,
3066
+ selected: availableRenderers[0],
3067
+ source: availableRenderers
3068
+ }
3069
+ ),
3070
+ /* @__PURE__ */ jsx16(
3071
+ Panel6,
3072
+ {
3073
+ ...props,
3074
+ className: cx8(classBase11, className, `${classBase11}-${serverDataType}`),
3075
+ children: content
3076
+ }
3077
+ )
3078
+ ] });
3079
+ };
3080
+
3081
+ // src/table-settings/column-settings-panel/ColumnSettingsPanel.tsx
3082
+ import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
3083
+ var classBase12 = "vuuColumnSettingsPanel";
3084
+ var tabstripProps2 = {
3085
+ className: "salt-density-high"
3086
+ };
3087
+ var NullActivationIndicator3 = () => null;
3088
+ var ColumnSettingsPanel2 = ({
3089
+ column,
3090
+ dispatchColumnAction,
3091
+ style: styleProp,
3092
+ ...props
3093
+ }) => {
3094
+ var _a, _b, _c, _d;
3095
+ const [activeTab, setActiveTab] = useState6(0);
3096
+ const dispatchUpdate = useCallback10(
3097
+ (values) => dispatchColumnAction({
3098
+ type: "updateColumnProp",
3099
+ column,
3100
+ ...values
3101
+ }),
3102
+ [column, dispatchColumnAction]
3103
+ );
3104
+ const handleChangeAlign = useCallback10(
3105
+ (evt) => dispatchUpdate({ align: evt.target.value }),
3106
+ [dispatchUpdate]
3107
+ );
3108
+ const handleChangePin = useCallback10(
3109
+ (evt) => dispatchUpdate({ pin: evt.target.value }),
3110
+ [dispatchUpdate]
3111
+ );
3112
+ const handleChangeHidden = useCallback10(
3113
+ (evt, value) => dispatchUpdate({ hidden: value }),
3114
+ [dispatchUpdate]
3115
+ );
3116
+ const handleChangeLabel = useCallback10(
3117
+ (evt, value) => dispatchUpdate({ label: value }),
3118
+ [dispatchUpdate]
3119
+ );
3120
+ const handleChangeWidth = useCallback10(
3121
+ (value) => dispatchUpdate({ width: parseInt(value.toString(), 10) }),
3122
+ [dispatchUpdate]
3123
+ );
3124
+ return /* @__PURE__ */ jsxs14(
3125
+ "div",
3126
+ {
3127
+ className: classBase12,
3128
+ ...props,
3129
+ style: {
3130
+ ...styleProp
3131
+ },
3132
+ children: [
3133
+ /* @__PURE__ */ jsx17(Text7, { as: "h4", children: "Column Settings" }),
3134
+ /* @__PURE__ */ jsxs14(
3135
+ Stack3,
3136
+ {
3137
+ active: activeTab,
3138
+ showTabs: true,
3139
+ className: cx9(`${classBase12}-columnTabs`),
3140
+ onTabSelectionChanged: setActiveTab,
3141
+ TabstripProps: tabstripProps2,
3142
+ children: [
3143
+ /* @__PURE__ */ jsxs14(Panel7, { title: "Column", children: [
3144
+ /* @__PURE__ */ jsx17(FormField6, { label: "Hidden", labelPlacement: "left", children: /* @__PURE__ */ jsx17(
3145
+ Checkbox2,
3146
+ {
3147
+ checked: column.hidden === true,
3148
+ onChange: handleChangeHidden
3149
+ }
3150
+ ) }),
3151
+ /* @__PURE__ */ jsx17(FormField6, { label: "Label", labelPlacement: "left", children: /* @__PURE__ */ jsx17(
3152
+ Input3,
3153
+ {
3154
+ value: (_a = column.label) != null ? _a : column.name,
3155
+ onChange: handleChangeLabel
3156
+ }
3157
+ ) }),
3158
+ /* @__PURE__ */ jsx17(FormField6, { label: "Width", labelPlacement: "left", children: /* @__PURE__ */ jsx17(
3159
+ StepperInput5,
3160
+ {
3161
+ value: (_b = column.width) != null ? _b : 100,
3162
+ onChange: handleChangeWidth
3163
+ }
3164
+ ) }),
3165
+ /* @__PURE__ */ jsx17(
3166
+ FormField6,
3167
+ {
3168
+ label: "Align",
3169
+ labelPlacement: "left",
3170
+ ActivationIndicatorComponent: NullActivationIndicator3,
3171
+ children: /* @__PURE__ */ jsxs14(
3172
+ RadioButtonGroup3,
3173
+ {
3174
+ "aria-label": "Column Align",
3175
+ value: (_c = column.align) != null ? _c : "left",
3176
+ legend: "Align",
3177
+ onChange: handleChangeAlign,
3178
+ children: [
3179
+ /* @__PURE__ */ jsx17(RadioButton3, { label: "Left", value: "left" }),
3180
+ /* @__PURE__ */ jsx17(RadioButton3, { label: "Right", value: "right" })
3181
+ ]
3182
+ }
3183
+ )
3184
+ }
3185
+ ),
3186
+ /* @__PURE__ */ jsx17(
3187
+ FormField6,
3188
+ {
3189
+ label: "Pin Column",
3190
+ labelPlacement: "left",
3191
+ ActivationIndicatorComponent: NullActivationIndicator3,
3192
+ children: /* @__PURE__ */ jsxs14(
3193
+ RadioButtonGroup3,
3194
+ {
3195
+ "aria-label": "Pin Column",
3196
+ value: (_d = column.pin) != null ? _d : "",
3197
+ legend: "Pin Column",
3198
+ onChange: handleChangePin,
3199
+ children: [
3200
+ /* @__PURE__ */ jsx17(RadioButton3, { label: "Do not pin", value: "" }),
3201
+ /* @__PURE__ */ jsx17(RadioButton3, { label: "Left", value: "left" }),
3202
+ /* @__PURE__ */ jsx17(RadioButton3, { label: "Right", value: "right" })
3203
+ ]
3204
+ }
3205
+ )
3206
+ }
3207
+ )
3208
+ ] }),
3209
+ /* @__PURE__ */ jsx17(
3210
+ ColumnTypePanel2,
3211
+ {
3212
+ column,
3213
+ dispatchColumnAction,
3214
+ title: "Data Cell"
3215
+ }
3216
+ ),
3217
+ /* @__PURE__ */ jsxs14(Panel7, { title: "Vuu", variant: "secondary", children: [
3218
+ /* @__PURE__ */ jsx17(
3219
+ FormField6,
3220
+ {
3221
+ label: "Name",
3222
+ labelPlacement: "top",
3223
+ readOnly: true,
3224
+ variant: "secondary",
3225
+ children: /* @__PURE__ */ jsx17(Input3, { value: column.name })
3226
+ }
3227
+ ),
3228
+ /* @__PURE__ */ jsx17(
3229
+ FormField6,
3230
+ {
3231
+ label: "Vuu type",
3232
+ labelPlacement: "top",
3233
+ readOnly: true,
3234
+ variant: "secondary",
3235
+ children: /* @__PURE__ */ jsx17(Input3, { value: column.serverDataType })
3236
+ }
3237
+ )
3238
+ ] })
3239
+ ]
3240
+ }
3241
+ )
3242
+ ]
3243
+ }
3244
+ );
3245
+ };
2884
3246
  export {
2885
3247
  ColumnExpressionInput,
2886
3248
  ColumnNamedTerms,
3249
+ ColumnSettingsPanel2 as ColumnSettingsPanel,
2887
3250
  DataSourceStats,
2888
3251
  DatagridSettingsPanel,
2889
3252
  columnExpressionLanguageSupport,