@vuu-ui/vuu-data-react 0.8.56 → 0.8.57
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.
- package/cjs/hooks/useLookupValues.js +3 -10
- package/cjs/hooks/useLookupValues.js.map +1 -1
- package/cjs/index.js +0 -1
- package/cjs/index.js.map +1 -1
- package/esm/hooks/useLookupValues.js +5 -11
- package/esm/hooks/useLookupValues.js.map +1 -1
- package/esm/index.js +1 -1
- package/package.json +11 -11
- package/types/hooks/useLookupValues.d.ts +0 -1
|
@@ -51,12 +51,6 @@ const loadLookupValues = ({
|
|
|
51
51
|
return promise;
|
|
52
52
|
}
|
|
53
53
|
};
|
|
54
|
-
const getSelectedOption = (values, selectedValue) => {
|
|
55
|
-
if (selectedValue === void 0) {
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
return values.find((option) => option.value === selectedValue) ?? null;
|
|
59
|
-
};
|
|
60
54
|
const getLookupDetails = ({ name, type }) => {
|
|
61
55
|
if (vuuUtils.isTypeDescriptor(type) && vuuUtils.isLookupRenderer(type.renderer)) {
|
|
62
56
|
return type.renderer.lookup;
|
|
@@ -73,14 +67,14 @@ const useLookupValues = (column, initialValueProp) => {
|
|
|
73
67
|
if (vuuUtils.isTypeDescriptor(columnType) && vuuUtils.isValueListRenderer(columnType?.renderer)) {
|
|
74
68
|
const values2 = columnType.renderer.values.map(toListOption);
|
|
75
69
|
return {
|
|
76
|
-
initialValue: getSelectedOption(values2, initialValueProp),
|
|
70
|
+
initialValue: vuuUtils.getSelectedOption(values2, initialValueProp) ?? null,
|
|
77
71
|
values: values2
|
|
78
72
|
};
|
|
79
73
|
} else {
|
|
80
74
|
const lookupDetails = getLookupDetails(column);
|
|
81
75
|
const values2 = getLookupValues?.(lookupDetails.table) ?? NO_VALUES;
|
|
82
76
|
return {
|
|
83
|
-
initialValue: getSelectedOption(values2, initialValueProp),
|
|
77
|
+
initialValue: vuuUtils.getSelectedOption(values2, initialValueProp) ?? null,
|
|
84
78
|
values: values2
|
|
85
79
|
};
|
|
86
80
|
}
|
|
@@ -91,7 +85,7 @@ const useLookupValues = (column, initialValueProp) => {
|
|
|
91
85
|
const lookupDetails = getLookupDetails(column);
|
|
92
86
|
loadLookupValues(lookupDetails).then(
|
|
93
87
|
(values2) => setLookupState({
|
|
94
|
-
initialValue: getSelectedOption(values2, initialValueProp),
|
|
88
|
+
initialValue: vuuUtils.getSelectedOption(values2, initialValueProp) ?? null,
|
|
95
89
|
values: values2
|
|
96
90
|
})
|
|
97
91
|
);
|
|
@@ -103,6 +97,5 @@ const useLookupValues = (column, initialValueProp) => {
|
|
|
103
97
|
};
|
|
104
98
|
};
|
|
105
99
|
|
|
106
|
-
exports.getSelectedOption = getSelectedOption;
|
|
107
100
|
exports.useLookupValues = useLookupValues;
|
|
108
101
|
//# sourceMappingURL=useLookupValues.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLookupValues.js","sources":["../../src/hooks/useLookupValues.ts"],"sourcesContent":["import {\n ColumnDescriptor,\n ListOption,\n LookupTableDetails,\n} from \"@vuu-ui/vuu-table-types\";\nimport { VuuDataSource } from \"@vuu-ui/vuu-data-remote\";\nimport { useShellContext } from \"@vuu-ui/vuu-shell\";\nimport {\n buildColumnMap,\n isLookupRenderer,\n isTypeDescriptor,\n isValueListRenderer,\n} from \"@vuu-ui/vuu-utils\";\nimport { useMemo, useState } from \"react\";\n\nconst NO_VALUES: ListOption[] = [];\n\nconst toListOption = (value: string): ListOption => ({\n label: value,\n value,\n});\n\nconst lookupValueMap = new Map<string, Promise<ListOption[]>>();\n\nconst loadLookupValues = ({\n labelColumn,\n table,\n valueColumn,\n}: LookupTableDetails): Promise<ListOption[]> => {\n const tableKey = `${table.module}:${table.table}`;\n const lookupValues = lookupValueMap.get(tableKey);\n if (lookupValues) {\n return lookupValues;\n } else {\n const promise: Promise<ListOption[]> = new Promise((resolve) => {\n const columns = [valueColumn, labelColumn];\n const columnMap = buildColumnMap(columns);\n const dataSource = new VuuDataSource({\n bufferSize: 0,\n table,\n });\n dataSource.subscribe(\n {\n columns,\n range: { from: 0, to: 100 },\n },\n (message) => {\n if (message.type === \"viewport-update\") {\n //TODO check we have full dataset\n if (message.rows) {\n const listOptions = message.rows.map<ListOption>((row) => ({\n value: row[columnMap[valueColumn]] as string | number,\n label: row[columnMap[labelColumn]] as string,\n }));\n resolve(listOptions);\n dataSource.unsubscribe();\n }\n }\n }\n );\n });\n lookupValueMap.set(tableKey, promise);\n return promise;\n }\n};\n\ntype LookupState = {\n initialValue: ListOption | null;\n values: ListOption[];\n};\n\
|
|
1
|
+
{"version":3,"file":"useLookupValues.js","sources":["../../src/hooks/useLookupValues.ts"],"sourcesContent":["import {\n ColumnDescriptor,\n ListOption,\n LookupTableDetails,\n} from \"@vuu-ui/vuu-table-types\";\nimport { VuuDataSource } from \"@vuu-ui/vuu-data-remote\";\nimport { useShellContext } from \"@vuu-ui/vuu-shell\";\nimport {\n buildColumnMap,\n getSelectedOption,\n isLookupRenderer,\n isTypeDescriptor,\n isValueListRenderer,\n} from \"@vuu-ui/vuu-utils\";\nimport { useMemo, useState } from \"react\";\n\nconst NO_VALUES: ListOption[] = [];\n\nconst toListOption = (value: string): ListOption => ({\n label: value,\n value,\n});\n\nconst lookupValueMap = new Map<string, Promise<ListOption[]>>();\n\nconst loadLookupValues = ({\n labelColumn,\n table,\n valueColumn,\n}: LookupTableDetails): Promise<ListOption[]> => {\n const tableKey = `${table.module}:${table.table}`;\n const lookupValues = lookupValueMap.get(tableKey);\n if (lookupValues) {\n return lookupValues;\n } else {\n const promise: Promise<ListOption[]> = new Promise((resolve) => {\n const columns = [valueColumn, labelColumn];\n const columnMap = buildColumnMap(columns);\n const dataSource = new VuuDataSource({\n bufferSize: 0,\n table,\n });\n dataSource.subscribe(\n {\n columns,\n range: { from: 0, to: 100 },\n },\n (message) => {\n if (message.type === \"viewport-update\") {\n //TODO check we have full dataset\n if (message.rows) {\n const listOptions = message.rows.map<ListOption>((row) => ({\n value: row[columnMap[valueColumn]] as string | number,\n label: row[columnMap[labelColumn]] as string,\n }));\n resolve(listOptions);\n dataSource.unsubscribe();\n }\n }\n }\n );\n });\n lookupValueMap.set(tableKey, promise);\n return promise;\n }\n};\n\ntype LookupState = {\n initialValue: ListOption | null;\n values: ListOption[];\n};\n\nconst getLookupDetails = ({ name, type }: ColumnDescriptor) => {\n if (isTypeDescriptor(type) && isLookupRenderer(type.renderer)) {\n return type.renderer.lookup;\n } else {\n throw Error(\n `useLookupValues column ${name} is not configured to use lookup values`\n );\n }\n};\n\nexport const useLookupValues = (\n column: ColumnDescriptor,\n initialValueProp: number | string\n) => {\n const { type: columnType } = column;\n const { getLookupValues } = useShellContext();\n\n const initialState = useMemo<LookupState>(() => {\n if (\n isTypeDescriptor(columnType) &&\n isValueListRenderer(columnType?.renderer)\n ) {\n const values = columnType.renderer.values.map(toListOption);\n return {\n initialValue: getSelectedOption(values, initialValueProp) ?? null,\n values,\n };\n } else {\n const lookupDetails = getLookupDetails(column);\n const values = getLookupValues?.(lookupDetails.table) ?? NO_VALUES;\n\n return {\n initialValue: getSelectedOption(values, initialValueProp) ?? null,\n values,\n };\n }\n }, [column, columnType, getLookupValues, initialValueProp]);\n\n const [{ initialValue, values }, setLookupState] =\n useState<LookupState>(initialState);\n\n useMemo(() => {\n if (values === NO_VALUES) {\n const lookupDetails = getLookupDetails(column);\n loadLookupValues(lookupDetails).then((values) =>\n setLookupState({\n initialValue: getSelectedOption(values, initialValueProp) ?? null,\n values,\n })\n );\n }\n }, [values, column, initialValueProp]);\n\n return {\n initialValue,\n values,\n };\n};\n"],"names":["buildColumnMap","VuuDataSource","isTypeDescriptor","isLookupRenderer","useShellContext","useMemo","isValueListRenderer","values","getSelectedOption","useState"],"mappings":"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"}
|
package/cjs/index.js
CHANGED
|
@@ -12,7 +12,6 @@ var useVuuTables = require('./hooks/useVuuTables.js');
|
|
|
12
12
|
|
|
13
13
|
exports.MovingWindow = useDataSource.MovingWindow;
|
|
14
14
|
exports.useDataSource = useDataSource.useDataSource;
|
|
15
|
-
exports.getSelectedOption = useLookupValues.getSelectedOption;
|
|
16
15
|
exports.useLookupValues = useLookupValues.useLookupValues;
|
|
17
16
|
exports.useServerConnectionStatus = useServerConnectionStatus.useServerConnectionStatus;
|
|
18
17
|
exports.useServerConnectionQuality = useServerConnectionQuality.useServerConnectionQuality;
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VuuDataSource } from '@vuu-ui/vuu-data-remote';
|
|
2
2
|
import { useShellContext } from '@vuu-ui/vuu-shell';
|
|
3
|
-
import { isTypeDescriptor, isValueListRenderer, buildColumnMap, isLookupRenderer } from '@vuu-ui/vuu-utils';
|
|
3
|
+
import { isTypeDescriptor, isValueListRenderer, getSelectedOption, buildColumnMap, isLookupRenderer } from '@vuu-ui/vuu-utils';
|
|
4
4
|
import { useMemo, useState } from 'react';
|
|
5
5
|
|
|
6
6
|
const NO_VALUES = [];
|
|
@@ -49,12 +49,6 @@ const loadLookupValues = ({
|
|
|
49
49
|
return promise;
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
|
-
const getSelectedOption = (values, selectedValue) => {
|
|
53
|
-
if (selectedValue === void 0) {
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
return values.find((option) => option.value === selectedValue) ?? null;
|
|
57
|
-
};
|
|
58
52
|
const getLookupDetails = ({ name, type }) => {
|
|
59
53
|
if (isTypeDescriptor(type) && isLookupRenderer(type.renderer)) {
|
|
60
54
|
return type.renderer.lookup;
|
|
@@ -71,14 +65,14 @@ const useLookupValues = (column, initialValueProp) => {
|
|
|
71
65
|
if (isTypeDescriptor(columnType) && isValueListRenderer(columnType?.renderer)) {
|
|
72
66
|
const values2 = columnType.renderer.values.map(toListOption);
|
|
73
67
|
return {
|
|
74
|
-
initialValue: getSelectedOption(values2, initialValueProp),
|
|
68
|
+
initialValue: getSelectedOption(values2, initialValueProp) ?? null,
|
|
75
69
|
values: values2
|
|
76
70
|
};
|
|
77
71
|
} else {
|
|
78
72
|
const lookupDetails = getLookupDetails(column);
|
|
79
73
|
const values2 = getLookupValues?.(lookupDetails.table) ?? NO_VALUES;
|
|
80
74
|
return {
|
|
81
|
-
initialValue: getSelectedOption(values2, initialValueProp),
|
|
75
|
+
initialValue: getSelectedOption(values2, initialValueProp) ?? null,
|
|
82
76
|
values: values2
|
|
83
77
|
};
|
|
84
78
|
}
|
|
@@ -89,7 +83,7 @@ const useLookupValues = (column, initialValueProp) => {
|
|
|
89
83
|
const lookupDetails = getLookupDetails(column);
|
|
90
84
|
loadLookupValues(lookupDetails).then(
|
|
91
85
|
(values2) => setLookupState({
|
|
92
|
-
initialValue: getSelectedOption(values2, initialValueProp),
|
|
86
|
+
initialValue: getSelectedOption(values2, initialValueProp) ?? null,
|
|
93
87
|
values: values2
|
|
94
88
|
})
|
|
95
89
|
);
|
|
@@ -101,5 +95,5 @@ const useLookupValues = (column, initialValueProp) => {
|
|
|
101
95
|
};
|
|
102
96
|
};
|
|
103
97
|
|
|
104
|
-
export {
|
|
98
|
+
export { useLookupValues };
|
|
105
99
|
//# sourceMappingURL=useLookupValues.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLookupValues.js","sources":["../../src/hooks/useLookupValues.ts"],"sourcesContent":["import {\n ColumnDescriptor,\n ListOption,\n LookupTableDetails,\n} from \"@vuu-ui/vuu-table-types\";\nimport { VuuDataSource } from \"@vuu-ui/vuu-data-remote\";\nimport { useShellContext } from \"@vuu-ui/vuu-shell\";\nimport {\n buildColumnMap,\n isLookupRenderer,\n isTypeDescriptor,\n isValueListRenderer,\n} from \"@vuu-ui/vuu-utils\";\nimport { useMemo, useState } from \"react\";\n\nconst NO_VALUES: ListOption[] = [];\n\nconst toListOption = (value: string): ListOption => ({\n label: value,\n value,\n});\n\nconst lookupValueMap = new Map<string, Promise<ListOption[]>>();\n\nconst loadLookupValues = ({\n labelColumn,\n table,\n valueColumn,\n}: LookupTableDetails): Promise<ListOption[]> => {\n const tableKey = `${table.module}:${table.table}`;\n const lookupValues = lookupValueMap.get(tableKey);\n if (lookupValues) {\n return lookupValues;\n } else {\n const promise: Promise<ListOption[]> = new Promise((resolve) => {\n const columns = [valueColumn, labelColumn];\n const columnMap = buildColumnMap(columns);\n const dataSource = new VuuDataSource({\n bufferSize: 0,\n table,\n });\n dataSource.subscribe(\n {\n columns,\n range: { from: 0, to: 100 },\n },\n (message) => {\n if (message.type === \"viewport-update\") {\n //TODO check we have full dataset\n if (message.rows) {\n const listOptions = message.rows.map<ListOption>((row) => ({\n value: row[columnMap[valueColumn]] as string | number,\n label: row[columnMap[labelColumn]] as string,\n }));\n resolve(listOptions);\n dataSource.unsubscribe();\n }\n }\n }\n );\n });\n lookupValueMap.set(tableKey, promise);\n return promise;\n }\n};\n\ntype LookupState = {\n initialValue: ListOption | null;\n values: ListOption[];\n};\n\
|
|
1
|
+
{"version":3,"file":"useLookupValues.js","sources":["../../src/hooks/useLookupValues.ts"],"sourcesContent":["import {\n ColumnDescriptor,\n ListOption,\n LookupTableDetails,\n} from \"@vuu-ui/vuu-table-types\";\nimport { VuuDataSource } from \"@vuu-ui/vuu-data-remote\";\nimport { useShellContext } from \"@vuu-ui/vuu-shell\";\nimport {\n buildColumnMap,\n getSelectedOption,\n isLookupRenderer,\n isTypeDescriptor,\n isValueListRenderer,\n} from \"@vuu-ui/vuu-utils\";\nimport { useMemo, useState } from \"react\";\n\nconst NO_VALUES: ListOption[] = [];\n\nconst toListOption = (value: string): ListOption => ({\n label: value,\n value,\n});\n\nconst lookupValueMap = new Map<string, Promise<ListOption[]>>();\n\nconst loadLookupValues = ({\n labelColumn,\n table,\n valueColumn,\n}: LookupTableDetails): Promise<ListOption[]> => {\n const tableKey = `${table.module}:${table.table}`;\n const lookupValues = lookupValueMap.get(tableKey);\n if (lookupValues) {\n return lookupValues;\n } else {\n const promise: Promise<ListOption[]> = new Promise((resolve) => {\n const columns = [valueColumn, labelColumn];\n const columnMap = buildColumnMap(columns);\n const dataSource = new VuuDataSource({\n bufferSize: 0,\n table,\n });\n dataSource.subscribe(\n {\n columns,\n range: { from: 0, to: 100 },\n },\n (message) => {\n if (message.type === \"viewport-update\") {\n //TODO check we have full dataset\n if (message.rows) {\n const listOptions = message.rows.map<ListOption>((row) => ({\n value: row[columnMap[valueColumn]] as string | number,\n label: row[columnMap[labelColumn]] as string,\n }));\n resolve(listOptions);\n dataSource.unsubscribe();\n }\n }\n }\n );\n });\n lookupValueMap.set(tableKey, promise);\n return promise;\n }\n};\n\ntype LookupState = {\n initialValue: ListOption | null;\n values: ListOption[];\n};\n\nconst getLookupDetails = ({ name, type }: ColumnDescriptor) => {\n if (isTypeDescriptor(type) && isLookupRenderer(type.renderer)) {\n return type.renderer.lookup;\n } else {\n throw Error(\n `useLookupValues column ${name} is not configured to use lookup values`\n );\n }\n};\n\nexport const useLookupValues = (\n column: ColumnDescriptor,\n initialValueProp: number | string\n) => {\n const { type: columnType } = column;\n const { getLookupValues } = useShellContext();\n\n const initialState = useMemo<LookupState>(() => {\n if (\n isTypeDescriptor(columnType) &&\n isValueListRenderer(columnType?.renderer)\n ) {\n const values = columnType.renderer.values.map(toListOption);\n return {\n initialValue: getSelectedOption(values, initialValueProp) ?? null,\n values,\n };\n } else {\n const lookupDetails = getLookupDetails(column);\n const values = getLookupValues?.(lookupDetails.table) ?? NO_VALUES;\n\n return {\n initialValue: getSelectedOption(values, initialValueProp) ?? null,\n values,\n };\n }\n }, [column, columnType, getLookupValues, initialValueProp]);\n\n const [{ initialValue, values }, setLookupState] =\n useState<LookupState>(initialState);\n\n useMemo(() => {\n if (values === NO_VALUES) {\n const lookupDetails = getLookupDetails(column);\n loadLookupValues(lookupDetails).then((values) =>\n setLookupState({\n initialValue: getSelectedOption(values, initialValueProp) ?? null,\n values,\n })\n );\n }\n }, [values, column, initialValueProp]);\n\n return {\n initialValue,\n values,\n };\n};\n"],"names":["values"],"mappings":"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"}
|
package/esm/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { MovingWindow, useDataSource } from './hooks/useDataSource.js';
|
|
2
|
-
export {
|
|
2
|
+
export { useLookupValues } from './hooks/useLookupValues.js';
|
|
3
3
|
export { useServerConnectionStatus } from './hooks/useServerConnectionStatus.js';
|
|
4
4
|
export { useServerConnectionQuality } from './hooks/useServerConnectionQuality.js';
|
|
5
5
|
export { getTypeaheadParams, useTypeaheadSuggestions } from './hooks/useTypeaheadSuggestions.js';
|
package/package.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.8.
|
|
2
|
+
"version": "0.8.57",
|
|
3
3
|
"author": "heswell",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"devDependencies": {
|
|
6
|
-
"@vuu-ui/vuu-data-types": "0.8.
|
|
7
|
-
"@vuu-ui/vuu-filter-types": "0.8.
|
|
8
|
-
"@vuu-ui/vuu-popups": "0.8.
|
|
9
|
-
"@vuu-ui/vuu-protocol-types": "0.8.
|
|
10
|
-
"@vuu-ui/vuu-table-types": "0.8.
|
|
6
|
+
"@vuu-ui/vuu-data-types": "0.8.57",
|
|
7
|
+
"@vuu-ui/vuu-filter-types": "0.8.57",
|
|
8
|
+
"@vuu-ui/vuu-popups": "0.8.57",
|
|
9
|
+
"@vuu-ui/vuu-protocol-types": "0.8.57",
|
|
10
|
+
"@vuu-ui/vuu-table-types": "0.8.57"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@vuu-ui/vuu-data-remote": "0.8.
|
|
14
|
-
"@vuu-ui/vuu-filter-parser": "0.8.
|
|
15
|
-
"@vuu-ui/vuu-popups": "0.8.
|
|
16
|
-
"@vuu-ui/vuu-shell": "0.8.
|
|
17
|
-
"@vuu-ui/vuu-utils": "0.8.
|
|
13
|
+
"@vuu-ui/vuu-data-remote": "0.8.57",
|
|
14
|
+
"@vuu-ui/vuu-filter-parser": "0.8.57",
|
|
15
|
+
"@vuu-ui/vuu-popups": "0.8.57",
|
|
16
|
+
"@vuu-ui/vuu-shell": "0.8.57",
|
|
17
|
+
"@vuu-ui/vuu-utils": "0.8.57"
|
|
18
18
|
},
|
|
19
19
|
"peerDependencies": {
|
|
20
20
|
"react": ">=17.0.2",
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ColumnDescriptor, ListOption } from "@vuu-ui/vuu-table-types";
|
|
2
|
-
export declare const getSelectedOption: (values: ListOption[], selectedValue: string | number | undefined) => ListOption | null;
|
|
3
2
|
export declare const useLookupValues: (column: ColumnDescriptor, initialValueProp: number | string) => {
|
|
4
3
|
initialValue: ListOption | null;
|
|
5
4
|
values: ListOption[];
|