@vuu-ui/vuu-utils 0.8.23-debug → 0.8.24-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.
- package/cjs/index.js +85 -25
- package/cjs/index.js.map +3 -3
- package/esm/index.js +85 -25
- package/esm/index.js.map +3 -3
- package/package.json +5 -5
- package/types/column-utils.d.ts +12 -0
- package/types/component-registry.d.ts +13 -4
- package/types/datasource-utils.d.ts +15 -4
- package/types/html-utils.d.ts +1 -0
package/cjs/index.js
CHANGED
|
@@ -51,6 +51,7 @@ __export(src_exports, {
|
|
|
51
51
|
Home: () => Home,
|
|
52
52
|
KeySet: () => KeySet,
|
|
53
53
|
MEASURES: () => MEASURES,
|
|
54
|
+
NO_CONFIG_CHANGES: () => NO_CONFIG_CHANGES,
|
|
54
55
|
NULL_RANGE: () => NULL_RANGE,
|
|
55
56
|
NoFilter: () => NoFilter,
|
|
56
57
|
NoSort: () => NoSort,
|
|
@@ -79,10 +80,9 @@ __export(src_exports, {
|
|
|
79
80
|
assertModuleExportsAtLeastOneComponent: () => assertModuleExportsAtLeastOneComponent,
|
|
80
81
|
boxContainsPoint: () => boxContainsPoint,
|
|
81
82
|
buildColumnMap: () => buildColumnMap,
|
|
82
|
-
columnsChanged: () => columnsChanged,
|
|
83
|
-
configChanged: () => configChanged,
|
|
84
83
|
createEl: () => createEl,
|
|
85
84
|
dataAndColumnUnchanged: () => dataAndColumnUnchanged,
|
|
85
|
+
dataColumnAndKeyUnchanged: () => dataColumnAndKeyUnchanged,
|
|
86
86
|
dateTimePattern: () => dateTimePattern,
|
|
87
87
|
debounce: () => debounce,
|
|
88
88
|
defaultPatternsByType: () => defaultPatternsByType,
|
|
@@ -95,7 +95,6 @@ __export(src_exports, {
|
|
|
95
95
|
extractGroupColumn: () => extractGroupColumn,
|
|
96
96
|
fallbackDateTimePattern: () => fallbackDateTimePattern,
|
|
97
97
|
filterAsQuery: () => filterAsQuery,
|
|
98
|
-
filterChanged: () => filterChanged,
|
|
99
98
|
findColumn: () => findColumn,
|
|
100
99
|
flattenColumnGroup: () => flattenColumnGroup,
|
|
101
100
|
focusFirstFocusableElement: () => focusFirstFocusableElement,
|
|
@@ -134,6 +133,7 @@ __export(src_exports, {
|
|
|
134
133
|
getMissingItems: () => getMissingItems,
|
|
135
134
|
getMovingValueDirection: () => getMovingValueDirection,
|
|
136
135
|
getRegisteredCellRenderers: () => getRegisteredCellRenderers,
|
|
136
|
+
getRowClassNameGenerator: () => getRowClassNameGenerator,
|
|
137
137
|
getRowElementAtIndex: () => getRowElementAtIndex,
|
|
138
138
|
getRowRecord: () => getRowRecord,
|
|
139
139
|
getScrollbarSize: () => getScrollbarSize,
|
|
@@ -143,7 +143,6 @@ __export(src_exports, {
|
|
|
143
143
|
getUniqueId: () => getUniqueId,
|
|
144
144
|
getUrlParameter: () => getUrlParameter,
|
|
145
145
|
getValueFormatter: () => getValueFormatter,
|
|
146
|
-
groupByChanged: () => groupByChanged,
|
|
147
146
|
hasAction: () => hasAction,
|
|
148
147
|
hasFilter: () => hasFilter,
|
|
149
148
|
hasGroupBy: () => hasGroupBy,
|
|
@@ -157,14 +156,17 @@ __export(src_exports, {
|
|
|
157
156
|
isCharacterKey: () => isCharacterKey,
|
|
158
157
|
isColumnTypeRenderer: () => isColumnTypeRenderer,
|
|
159
158
|
isCompleteFilter: () => isCompleteFilter,
|
|
159
|
+
isConfigChanged: () => isConfigChanged,
|
|
160
160
|
isConnectionQualityMetrics: () => isConnectionQualityMetrics,
|
|
161
161
|
isConnectionStatusMessage: () => isConnectionStatusMessage,
|
|
162
162
|
isDataLoading: () => isDataLoading,
|
|
163
163
|
isDateTimeColumn: () => isDateTimeColumn,
|
|
164
164
|
isDateTimePattern: () => isDateTimePattern,
|
|
165
165
|
isErrorResponse: () => isErrorResponse,
|
|
166
|
+
isFilterChanged: () => isFilterChanged,
|
|
166
167
|
isFilterClause: () => isFilterClause,
|
|
167
168
|
isFilteredColumn: () => isFilteredColumn,
|
|
169
|
+
isGroupByChanged: () => isGroupByChanged,
|
|
168
170
|
isGroupColumn: () => isGroupColumn,
|
|
169
171
|
isGroupMenuItemDescriptor: () => isGroupMenuItemDescriptor,
|
|
170
172
|
isInFilter: () => isInFilter,
|
|
@@ -203,6 +205,7 @@ __export(src_exports, {
|
|
|
203
205
|
isVisualLinkCreatedAction: () => isVisualLinkCreatedAction,
|
|
204
206
|
isVisualLinkRemovedAction: () => isVisualLinkRemovedAction,
|
|
205
207
|
isVisualLinksAction: () => isVisualLinksAction,
|
|
208
|
+
isVuuColumnDataType: () => isVuuColumnDataType,
|
|
206
209
|
isVuuFeatureAction: () => isVuuFeatureAction,
|
|
207
210
|
itemToString: () => itemToString,
|
|
208
211
|
itemsChanged: () => itemsChanged,
|
|
@@ -220,6 +223,7 @@ __export(src_exports, {
|
|
|
220
223
|
numericFormatter: () => numericFormatter,
|
|
221
224
|
partition: () => partition,
|
|
222
225
|
projectUpdates: () => projectUpdates,
|
|
226
|
+
queryClosest: () => queryClosest,
|
|
223
227
|
rangeNewItems: () => rangeNewItems,
|
|
224
228
|
rangesAreSame: () => rangesAreSame,
|
|
225
229
|
registerComponent: () => registerComponent,
|
|
@@ -468,6 +472,15 @@ var numericTypes = ["int", "long", "double"];
|
|
|
468
472
|
var getDefaultAlignment = (serverDataType) => serverDataType === void 0 ? "left" : numericTypes.includes(serverDataType) ? "right" : "left";
|
|
469
473
|
var isValidColumnAlignment = (v) => v === "left" || v === "right";
|
|
470
474
|
var isValidPinLocation = (v) => isValidColumnAlignment(v) || v === "floating" || v === "";
|
|
475
|
+
var VUU_COLUMN_DATA_TYPES = [
|
|
476
|
+
"long",
|
|
477
|
+
"double",
|
|
478
|
+
"int",
|
|
479
|
+
"string",
|
|
480
|
+
"char",
|
|
481
|
+
"boolean"
|
|
482
|
+
];
|
|
483
|
+
var isVuuColumnDataType = (value) => VUU_COLUMN_DATA_TYPES.includes(value);
|
|
471
484
|
var fromServerDataType = (serverDataType) => {
|
|
472
485
|
switch (serverDataType) {
|
|
473
486
|
case "double":
|
|
@@ -532,6 +545,7 @@ function projectUpdates(updates) {
|
|
|
532
545
|
}
|
|
533
546
|
return results;
|
|
534
547
|
}
|
|
548
|
+
var KEY = 6;
|
|
535
549
|
var metadataKeys = {
|
|
536
550
|
IDX: 0,
|
|
537
551
|
RENDER_IDX: 1,
|
|
@@ -539,7 +553,7 @@ var metadataKeys = {
|
|
|
539
553
|
IS_EXPANDED: 3,
|
|
540
554
|
DEPTH: 4,
|
|
541
555
|
COUNT: 5,
|
|
542
|
-
KEY
|
|
556
|
+
KEY,
|
|
543
557
|
SELECTED: 7,
|
|
544
558
|
count: 8,
|
|
545
559
|
// TODO following only used in datamodel
|
|
@@ -1222,6 +1236,7 @@ function applyWidthToColumns(columns, options) {
|
|
|
1222
1236
|
return columns;
|
|
1223
1237
|
}
|
|
1224
1238
|
var dataAndColumnUnchanged = (p, p1) => p.column === p1.column && p.column.valueFormatter(p.row[p.columnMap[p.column.name]]) === p1.column.valueFormatter(p1.row[p1.columnMap[p1.column.name]]);
|
|
1239
|
+
var dataColumnAndKeyUnchanged = (p, p1) => p.column === p1.column && p.row[KEY] === p1.row[KEY] && p.column.valueFormatter(p.row[p.columnMap[p.column.name]]) === p1.column.valueFormatter(p1.row[p1.columnMap[p1.column.name]]);
|
|
1225
1240
|
|
|
1226
1241
|
// src/cookie-utils.ts
|
|
1227
1242
|
var getCookieValue = (name) => {
|
|
@@ -1238,6 +1253,7 @@ var configEditorsMap = /* @__PURE__ */ new Map();
|
|
|
1238
1253
|
var cellConfigPanelsMap = /* @__PURE__ */ new Map();
|
|
1239
1254
|
var editRuleValidatorsMap = /* @__PURE__ */ new Map();
|
|
1240
1255
|
var optionsMap = /* @__PURE__ */ new Map();
|
|
1256
|
+
var rowClassGeneratorsMap = /* @__PURE__ */ new Map();
|
|
1241
1257
|
var isTypeCompatible = (rendererType, serverDataType) => {
|
|
1242
1258
|
if (rendererType === void 0 || rendererType === "private") {
|
|
1243
1259
|
return true;
|
|
@@ -1247,11 +1263,12 @@ var isTypeCompatible = (rendererType, serverDataType) => {
|
|
|
1247
1263
|
return rendererType === serverDataType;
|
|
1248
1264
|
}
|
|
1249
1265
|
};
|
|
1250
|
-
var isCellRenderer = (type, component) => type === "cell-renderer";
|
|
1266
|
+
var isCellRenderer = (type, component) => component !== void 0 && type === "cell-renderer";
|
|
1251
1267
|
var isColumnHeaderContentRenderer = (type, component) => type === "column-header-content-renderer";
|
|
1252
1268
|
var isColumnHeaderLabelRenderer = (type, component) => type === "column-header-label-renderer";
|
|
1253
1269
|
var isCellConfigPanel = (type, component) => type === "cell-config-panel";
|
|
1254
1270
|
var isEditRuleValidator = (type, component) => type === "data-edit-validator";
|
|
1271
|
+
var isRowClassGenerator = (type, component) => type === "row-class-generator";
|
|
1255
1272
|
function registerComponent(componentName, component, type = "cell-renderer", options) {
|
|
1256
1273
|
if (isCellRenderer(type, component)) {
|
|
1257
1274
|
cellRenderersMap.set(componentName, component);
|
|
@@ -1263,6 +1280,9 @@ function registerComponent(componentName, component, type = "cell-renderer", opt
|
|
|
1263
1280
|
cellConfigPanelsMap.set(componentName, component);
|
|
1264
1281
|
} else if (isEditRuleValidator(type, component)) {
|
|
1265
1282
|
editRuleValidatorsMap.set(componentName, component);
|
|
1283
|
+
} else if (isRowClassGenerator(type, component)) {
|
|
1284
|
+
console.log(`register ${componentName}`);
|
|
1285
|
+
rowClassGeneratorsMap.set(componentName, component);
|
|
1266
1286
|
}
|
|
1267
1287
|
if (options) {
|
|
1268
1288
|
optionsMap.set(componentName, options);
|
|
@@ -1276,7 +1296,7 @@ var getRegisteredCellRenderers = (serverDataType) => {
|
|
|
1276
1296
|
const allRenderers = rendererNames.map((name) => ({
|
|
1277
1297
|
name,
|
|
1278
1298
|
...optionsMap.get(name)
|
|
1279
|
-
}));
|
|
1299
|
+
})).filter(({ userCanAssign }) => userCanAssign !== false);
|
|
1280
1300
|
if (serverDataType) {
|
|
1281
1301
|
return allRenderers.filter(
|
|
1282
1302
|
(renderer) => isTypeCompatible(renderer.serverDataType, serverDataType)
|
|
@@ -1299,6 +1319,7 @@ function getColumnHeaderLabelRenderer(column) {
|
|
|
1299
1319
|
return columnHeaderRenderersMap.get(column.colHeaderLabelRenderer);
|
|
1300
1320
|
}
|
|
1301
1321
|
}
|
|
1322
|
+
var getRowClassNameGenerator = (generatorId) => rowClassGeneratorsMap.get(generatorId);
|
|
1302
1323
|
function dataCellRenderer(column) {
|
|
1303
1324
|
if (isTypeDescriptor(column.type)) {
|
|
1304
1325
|
const { renderer } = column.type;
|
|
@@ -1387,7 +1408,7 @@ var WindowRange = class _WindowRange {
|
|
|
1387
1408
|
};
|
|
1388
1409
|
|
|
1389
1410
|
// src/DataWindow.ts
|
|
1390
|
-
var { KEY } = metadataKeys;
|
|
1411
|
+
var { KEY: KEY2 } = metadataKeys;
|
|
1391
1412
|
var DataWindow = class {
|
|
1392
1413
|
constructor({ from, to }) {
|
|
1393
1414
|
this.rowCount = 0;
|
|
@@ -1416,7 +1437,7 @@ var DataWindow = class {
|
|
|
1416
1437
|
return this.range.isWithin(index) && this.data[index - this.range.from] != null ? this.data[index - this.range.from] : void 0;
|
|
1417
1438
|
}
|
|
1418
1439
|
getByKey(key) {
|
|
1419
|
-
return this.data.find((row) => row[
|
|
1440
|
+
return this.data.find((row) => row[KEY2] === key);
|
|
1420
1441
|
}
|
|
1421
1442
|
isWithinRange(index) {
|
|
1422
1443
|
return this.range.isWithin(index) && index <= this.rowCount;
|
|
@@ -1544,7 +1565,7 @@ var exactlyTheSame = (a, b) => {
|
|
|
1544
1565
|
return false;
|
|
1545
1566
|
}
|
|
1546
1567
|
};
|
|
1547
|
-
var
|
|
1568
|
+
var isAggregationsChanged = (config, newConfig) => {
|
|
1548
1569
|
const { aggregations: agg1 } = config;
|
|
1549
1570
|
const { aggregations: agg2 } = newConfig;
|
|
1550
1571
|
if (exactlyTheSame(agg1, agg2) || equivalentAggregations(config, newConfig)) {
|
|
@@ -1558,7 +1579,7 @@ var aggregationsChanged = (config, newConfig) => {
|
|
|
1558
1579
|
({ column, aggType }, i) => column !== agg2[i].column || aggType !== agg2[i].aggType
|
|
1559
1580
|
);
|
|
1560
1581
|
};
|
|
1561
|
-
var
|
|
1582
|
+
var isColumnsChanged = (config, newConfig) => {
|
|
1562
1583
|
const { columns: cols1 } = config;
|
|
1563
1584
|
const { columns: cols2 } = newConfig;
|
|
1564
1585
|
if (exactlyTheSame(cols1, cols2) || equivalentColumns(config, newConfig)) {
|
|
@@ -1570,7 +1591,7 @@ var columnsChanged = (config, newConfig) => {
|
|
|
1570
1591
|
}
|
|
1571
1592
|
return cols1.some((column, i) => column !== (cols2 == null ? void 0 : cols2[i]));
|
|
1572
1593
|
};
|
|
1573
|
-
var
|
|
1594
|
+
var isFilterChanged = (c1, c2) => {
|
|
1574
1595
|
var _a, _b;
|
|
1575
1596
|
if (equivalentFilter(c1, c2)) {
|
|
1576
1597
|
return false;
|
|
@@ -1578,7 +1599,7 @@ var filterChanged = (c1, c2) => {
|
|
|
1578
1599
|
return ((_a = c1.filter) == null ? void 0 : _a.filter) !== ((_b = c2.filter) == null ? void 0 : _b.filter);
|
|
1579
1600
|
}
|
|
1580
1601
|
};
|
|
1581
|
-
var
|
|
1602
|
+
var isGroupByChanged = (config, newConfig) => {
|
|
1582
1603
|
const { groupBy: g1 } = config;
|
|
1583
1604
|
const { groupBy: g2 } = newConfig;
|
|
1584
1605
|
if (exactlyTheSame(g1, g2) || equivalentGroupBy(config, newConfig)) {
|
|
@@ -1590,7 +1611,7 @@ var groupByChanged = (config, newConfig) => {
|
|
|
1590
1611
|
}
|
|
1591
1612
|
return g1.some((column, i) => column !== (g2 == null ? void 0 : g2[i]));
|
|
1592
1613
|
};
|
|
1593
|
-
var
|
|
1614
|
+
var isSortChanged = (config, newConfig) => {
|
|
1594
1615
|
const { sort: s1 } = config;
|
|
1595
1616
|
const { sort: s2 } = newConfig;
|
|
1596
1617
|
if (exactlyTheSame(s1, s2) || equivalentSort(config, newConfig)) {
|
|
@@ -1604,17 +1625,45 @@ var sortChanged = (config, newConfig) => {
|
|
|
1604
1625
|
({ column, sortType }, i) => column !== s2.sortDefs[i].column || sortType !== s2.sortDefs[i].sortType
|
|
1605
1626
|
);
|
|
1606
1627
|
};
|
|
1607
|
-
var
|
|
1628
|
+
var isVisualLinkChanged = () => {
|
|
1608
1629
|
return false;
|
|
1609
1630
|
};
|
|
1610
|
-
var
|
|
1631
|
+
var NO_CONFIG_CHANGES = {
|
|
1632
|
+
aggregationsChanged: false,
|
|
1633
|
+
columnsChanged: false,
|
|
1634
|
+
filterChanged: false,
|
|
1635
|
+
groupByChanged: false,
|
|
1636
|
+
noChanges: true,
|
|
1637
|
+
sortChanged: false,
|
|
1638
|
+
visualLinkChanged: false
|
|
1639
|
+
};
|
|
1640
|
+
var isConfigChanged = (config, newConfig) => {
|
|
1611
1641
|
if (exactlyTheSame(config, newConfig)) {
|
|
1612
|
-
return
|
|
1613
|
-
}
|
|
1614
|
-
if (config === void 0
|
|
1615
|
-
return
|
|
1616
|
-
}
|
|
1617
|
-
|
|
1642
|
+
return NO_CONFIG_CHANGES;
|
|
1643
|
+
}
|
|
1644
|
+
if (config === void 0 && newConfig == void 0) {
|
|
1645
|
+
return NO_CONFIG_CHANGES;
|
|
1646
|
+
} else if (config === void 0) {
|
|
1647
|
+
return isConfigChanged({}, newConfig);
|
|
1648
|
+
} else if (newConfig === void 0) {
|
|
1649
|
+
return isConfigChanged(config, {});
|
|
1650
|
+
}
|
|
1651
|
+
const aggregationsChanged = isAggregationsChanged(config, newConfig);
|
|
1652
|
+
const columnsChanged = isColumnsChanged(config, newConfig);
|
|
1653
|
+
const filterChanged = isFilterChanged(config, newConfig);
|
|
1654
|
+
const groupByChanged = isGroupByChanged(config, newConfig);
|
|
1655
|
+
const sortChanged = isSortChanged(config, newConfig);
|
|
1656
|
+
const visualLinkChanged = isVisualLinkChanged(config, newConfig);
|
|
1657
|
+
const noChanges = !(aggregationsChanged || columnsChanged || filterChanged || groupByChanged || sortChanged || visualLinkChanged);
|
|
1658
|
+
return {
|
|
1659
|
+
aggregationsChanged,
|
|
1660
|
+
columnsChanged,
|
|
1661
|
+
filterChanged,
|
|
1662
|
+
groupByChanged,
|
|
1663
|
+
noChanges,
|
|
1664
|
+
sortChanged,
|
|
1665
|
+
visualLinkChanged
|
|
1666
|
+
};
|
|
1618
1667
|
};
|
|
1619
1668
|
var hasGroupBy = (config) => config !== void 0 && config.groupBy !== void 0 && config.groupBy.length > 0;
|
|
1620
1669
|
var hasFilter = (config) => (config == null ? void 0 : config.filter) !== void 0 && config.filter.filter.length > 0;
|
|
@@ -2679,7 +2728,8 @@ var getElementDataIndex = (el) => {
|
|
|
2679
2728
|
}
|
|
2680
2729
|
return -1;
|
|
2681
2730
|
};
|
|
2682
|
-
var
|
|
2731
|
+
var queryClosest = (el, cssQueryString) => el.closest(cssQueryString);
|
|
2732
|
+
var getClosest = (el, dataProperty) => queryClosest(el, `[data-${dataProperty}]`);
|
|
2683
2733
|
var getClosestIndexItem = (el) => getClosest(el, "index");
|
|
2684
2734
|
function getElementByDataIndex(container, index, throwIfNotFound = false) {
|
|
2685
2735
|
if (container === null && throwIfNotFound) {
|
|
@@ -3731,8 +3781,18 @@ ThemeProvider.displayName = "ThemeProvider";
|
|
|
3731
3781
|
|
|
3732
3782
|
// src/url-utils.ts
|
|
3733
3783
|
var getUrlParameter = (paramName, defaultValue) => {
|
|
3734
|
-
|
|
3735
|
-
|
|
3784
|
+
const url = new URL(document.location.href);
|
|
3785
|
+
const parameter = url.searchParams.get(paramName);
|
|
3786
|
+
if (parameter) {
|
|
3787
|
+
return parameter;
|
|
3788
|
+
}
|
|
3789
|
+
const hashParams = url.hash;
|
|
3790
|
+
const regex = new RegExp(`${paramName}=([a-zA-Z]*)`);
|
|
3791
|
+
const result = regex.exec(hashParams);
|
|
3792
|
+
if (result) {
|
|
3793
|
+
return result[1];
|
|
3794
|
+
}
|
|
3795
|
+
return defaultValue;
|
|
3736
3796
|
};
|
|
3737
3797
|
var hasUrlParameter = (paramName) => new URL(document.location.href).searchParams.has(paramName);
|
|
3738
3798
|
|