@vuu-ui/vuu-utils 0.13.111 → 0.13.112-alpha.1
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/packages/vuu-utils/src/column-utils.js +135 -25
- package/cjs/packages/vuu-utils/src/column-utils.js.map +1 -1
- package/cjs/packages/vuu-utils/src/html-utils.js.map +1 -1
- package/cjs/packages/vuu-utils/src/index.js +6 -0
- package/cjs/packages/vuu-utils/src/index.js.map +1 -1
- package/cjs/packages/vuu-utils/src/protocol-message-utils.js +4 -0
- package/cjs/packages/vuu-utils/src/protocol-message-utils.js.map +1 -1
- package/esm/packages/vuu-utils/src/column-utils.js +132 -26
- package/esm/packages/vuu-utils/src/column-utils.js.map +1 -1
- package/esm/packages/vuu-utils/src/html-utils.js.map +1 -1
- package/esm/packages/vuu-utils/src/index.js +2 -2
- package/esm/packages/vuu-utils/src/protocol-message-utils.js +3 -1
- package/esm/packages/vuu-utils/src/protocol-message-utils.js.map +1 -1
- package/package.json +6 -6
- package/types/column-utils.d.ts +18 -2
- package/types/filters/filter-utils.d.ts +2 -1
- package/types/html-utils.d.ts +1 -1
- package/types/protocol-message-utils.d.ts +3 -1
|
@@ -110,6 +110,9 @@ exports.extractGroupColumn = columnUtils.extractGroupColumn;
|
|
|
110
110
|
exports.findColumn = columnUtils.findColumn;
|
|
111
111
|
exports.flattenColumnGroup = columnUtils.flattenColumnGroup;
|
|
112
112
|
exports.fromServerDataType = columnUtils.fromServerDataType;
|
|
113
|
+
exports.getAllCellsInColumn = columnUtils.getAllCellsInColumn;
|
|
114
|
+
exports.getAriaColIndex = columnUtils.getAriaColIndex;
|
|
115
|
+
exports.getAriaRowIndex = columnUtils.getAriaRowIndex;
|
|
113
116
|
exports.getCalculatedColumnDetails = columnUtils.getCalculatedColumnDetails;
|
|
114
117
|
exports.getColumnLabel = columnUtils.getColumnLabel;
|
|
115
118
|
exports.getColumnName = columnUtils.getColumnName;
|
|
@@ -119,6 +122,7 @@ exports.getDefaultAlignment = columnUtils.getDefaultAlignment;
|
|
|
119
122
|
exports.getDefaultColumnType = columnUtils.getDefaultColumnType;
|
|
120
123
|
exports.getGroupIcon = columnUtils.getGroupIcon;
|
|
121
124
|
exports.getGroupValue = columnUtils.getGroupValue;
|
|
125
|
+
exports.getPinStateFromElement = columnUtils.getPinStateFromElement;
|
|
122
126
|
exports.getRuntimeColumnWidth = columnUtils.getRuntimeColumnWidth;
|
|
123
127
|
exports.getTableHeadings = columnUtils.getTableHeadings;
|
|
124
128
|
exports.getTypeFormattingFromColumn = columnUtils.getTypeFormattingFromColumn;
|
|
@@ -371,7 +375,9 @@ exports.isLoginResponse = protocolMessageUtils.isLoginResponse;
|
|
|
371
375
|
exports.isOpenDialogAction = protocolMessageUtils.isOpenDialogAction;
|
|
372
376
|
exports.isOpenSessionTableDialogMessage = protocolMessageUtils.isOpenSessionTableDialogMessage;
|
|
373
377
|
exports.isRequestResponse = protocolMessageUtils.isRequestResponse;
|
|
378
|
+
exports.isRpcError = protocolMessageUtils.isRpcError;
|
|
374
379
|
exports.isRpcServiceRequest = protocolMessageUtils.isRpcServiceRequest;
|
|
380
|
+
exports.isRpcSuccess = protocolMessageUtils.isRpcSuccess;
|
|
375
381
|
exports.isSelectRequest = protocolMessageUtils.isSelectRequest;
|
|
376
382
|
exports.isSelectSuccessWithRowCount = protocolMessageUtils.isSelectSuccessWithRowCount;
|
|
377
383
|
exports.isSessionTable = protocolMessageUtils.isSessionTable;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -31,6 +31,8 @@ const isRpcServiceRequest = (message) => message.type === "RPC_REQUEST";
|
|
|
31
31
|
const hasViewPortContext = (message) => message.context.type === "VIEWPORT_CONTEXT";
|
|
32
32
|
const isVuuMenuRpcRequest = (message) => MENU_RPC_TYPES.includes(message["type"]);
|
|
33
33
|
const isLoginResponse = (message) => message !== null && typeof message === "object" && "type" in message && (message.type === "LOGIN_SUCCESS" || message.type === "LOGIN_FAIL");
|
|
34
|
+
const isRpcSuccess = (rpcResult) => rpcResult?.type === "SUCCESS_RESULT";
|
|
35
|
+
const isRpcError = (rpcResult) => rpcResult?.type === "ERROR_RESULT";
|
|
34
36
|
const isRequestResponse = (message) => "requestId" in message;
|
|
35
37
|
const isOpenSessionTableDialogMessage = (rpcResponse) => rpcResponse.type === "VIEW_PORT_MENU_RESP" && isOpenDialogAction(rpcResponse.action) && "tableSchema" in rpcResponse.action;
|
|
36
38
|
const isOpenDialogAction = (action) => action !== void 0 && action.type === "OPEN_DIALOG_ACTION";
|
|
@@ -67,7 +69,9 @@ exports.isLoginResponse = isLoginResponse;
|
|
|
67
69
|
exports.isOpenDialogAction = isOpenDialogAction;
|
|
68
70
|
exports.isOpenSessionTableDialogMessage = isOpenSessionTableDialogMessage;
|
|
69
71
|
exports.isRequestResponse = isRequestResponse;
|
|
72
|
+
exports.isRpcError = isRpcError;
|
|
70
73
|
exports.isRpcServiceRequest = isRpcServiceRequest;
|
|
74
|
+
exports.isRpcSuccess = isRpcSuccess;
|
|
71
75
|
exports.isSelectRequest = isSelectRequest;
|
|
72
76
|
exports.isSelectSuccessWithRowCount = isSelectSuccessWithRowCount;
|
|
73
77
|
exports.isSessionTable = isSessionTable;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-message-utils.js","sources":["../../../../../../packages/vuu-utils/src/protocol-message-utils.ts"],"sourcesContent":["import type {\n MenuRpcAction,\n MenuRpcResponse,\n OpenDialogActionWithSchema,\n RpcResponse,\n TableSchema,\n VuuUiMessageInRequestResponse,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n VuuRpcMenuRequest,\n OpenDialogAction,\n VuuRpcRequest,\n VuuRpcResponse,\n VuuRpcMenuSuccess,\n VuuTable,\n VuuViewportRpcTypeaheadRequest,\n VuuRpcServiceRequest,\n ViewportRpcContext,\n OpenComponentInDialogAction,\n VuuLoginSuccessResponse,\n SelectRequest,\n SelectResponse,\n SelectSuccessWithRowCount,\n VuuViewportCreateSuccessResponse,\n VuuViewportCreateResponse,\n InvalidTokenReason,\n InvalidSessionReason,\n LoginErrorMessage,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { isView as componentInRegistry } from \"./component-registry\";\n\nconst MENU_RPC_TYPES = [\n \"VIEW_PORT_MENUS_SELECT_RPC\",\n \"VIEW_PORT_MENU_TABLE_RPC\",\n \"VIEW_PORT_MENU_ROW_RPC\",\n \"VIEW_PORT_MENU_CELL_RPC\",\n];\n\nexport const INVALID_SESSION: InvalidSessionReason = \"Invalid session\";\nexport const SESSION_LIMIT_EXCEEDED: InvalidSessionReason =\n \"User session limit exceeded\";\nexport const INVALID_TOKEN: InvalidTokenReason = \"Invalid token\";\nexport const TOKEN_EXPIRED: InvalidTokenReason = \"Token has expired\";\n\nconst InvalidLoginMessages: string[] = [\n INVALID_SESSION,\n SESSION_LIMIT_EXCEEDED,\n INVALID_TOKEN,\n TOKEN_EXPIRED,\n];\n\nexport const isLoginErrorMessage = (\n message: unknown,\n): message is LoginErrorMessage =>\n typeof message === \"string\" && InvalidLoginMessages.includes(message);\n\nexport const isSelectRequest = (message: object): message is SelectRequest =>\n message &&\n typeof message === \"object\" &&\n \"type\" in message &&\n (message.type === \"SELECT_ROW\" ||\n message.type === \"DESELECT_ROW\" ||\n message.type === \"SELECT_ROW_RANGE\" ||\n message.type === \"SELECT_ALL\" ||\n message.type === \"DESELECT_ALL\");\n\nexport const isSelectSuccessWithRowCount = (\n response: SelectResponse | SelectSuccessWithRowCount,\n): response is SelectSuccessWithRowCount =>\n [\n \"SELECT_ROW_SUCCESS\",\n \"DESELECT_ROW_SUCCESS\",\n \"SELECT_ROW_RANGE_SUCCESS\",\n \"SELECT_ALL_SUCCESS\",\n \"DESELECT_ALL_SUCCESS\",\n ].includes(response.type ?? \"\") &&\n typeof (response as SelectSuccessWithRowCount).selectedRowCount === \"number\";\n\nexport const isRpcServiceRequest = (message: {\n type: string;\n}): message is VuuRpcServiceRequest | Omit<VuuRpcServiceRequest, \"context\"> =>\n message.type === \"RPC_REQUEST\";\n\nexport const hasViewPortContext = (\n message: VuuRpcServiceRequest,\n): message is VuuRpcServiceRequest<ViewportRpcContext> =>\n message.context.type === \"VIEWPORT_CONTEXT\";\n\nexport const isVuuMenuRpcRequest = (\n message: VuuRpcRequest | Omit<VuuRpcRequest, \"vpId\">,\n): message is VuuRpcMenuRequest => MENU_RPC_TYPES.includes(message[\"type\"]);\n\nexport const isLoginResponse = (\n message: unknown,\n): message is VuuLoginSuccessResponse =>\n message !== null &&\n typeof message === \"object\" &&\n \"type\" in message &&\n (message.type === \"LOGIN_SUCCESS\" || message.type === \"LOGIN_FAIL\");\n\nexport const isRequestResponse = (\n message: object,\n): message is VuuUiMessageInRequestResponse => \"requestId\" in message;\n\nexport const isOpenSessionTableDialogMessage = (\n rpcResponse: RpcResponse,\n): rpcResponse is MenuRpcResponse<OpenDialogActionWithSchema> =>\n rpcResponse.type === \"VIEW_PORT_MENU_RESP\" &&\n isOpenDialogAction(rpcResponse.action) &&\n \"tableSchema\" in rpcResponse.action;\n\nexport const isOpenDialogAction = (\n action?: MenuRpcAction,\n): action is OpenDialogAction =>\n action !== undefined && action.type === \"OPEN_DIALOG_ACTION\";\n\nexport const isTypeaheadRequest = (\n request: Omit<VuuRpcRequest, \"vpId\">,\n): request is Omit<VuuViewportRpcTypeaheadRequest, \"vpId\"> => {\n return (\n isRpcServiceRequest(request) &&\n (request.rpcName === \"getUniqueFieldValues\" ||\n request.rpcName === \"getUniqueFieldValuesStartingWith\")\n );\n};\n\nexport const isCreateVpSuccess = (\n response: VuuViewportCreateResponse,\n): response is VuuViewportCreateSuccessResponse =>\n response.type === \"CREATE_VP_SUCCESS\";\n\nexport const isSessionTable = (table?: unknown) => {\n if (\n table !== null &&\n typeof table === \"object\" &&\n \"table\" in table &&\n \"module\" in table\n ) {\n return (table as VuuTable).table.startsWith(\"session\");\n }\n return false;\n};\n\nexport function isActionMessage(\n rpcResponse: VuuRpcResponse,\n): rpcResponse is VuuRpcMenuSuccess;\nexport function isActionMessage(\n rpcResponse: Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is Omit<VuuRpcMenuSuccess, \"vpId\">;\nexport function isActionMessage(\n rpcResponse: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n) {\n return rpcResponse.type === \"VIEW_PORT_MENU_RESP\";\n}\n\nexport function isSessionTableActionMessage(\n rpcResponse: VuuRpcResponse,\n): rpcResponse is VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n>;\nexport function isSessionTableActionMessage(\n rpcResponse: Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is Omit<\n VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n >,\n \"vpId\"\n>;\nexport function isSessionTableActionMessage(\n rpcResponse: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n> {\n return (\n isActionMessage(rpcResponse) &&\n isOpenDialogAction(rpcResponse.action) &&\n isSessionTable(rpcResponse.action.table) &&\n rpcResponse.action?.renderComponent === \"inline-form\"\n );\n}\n\nexport function isCustomComponentActionMessage(\n rpcResponse: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is VuuRpcMenuSuccess<\n OpenComponentInDialogAction & {\n tableSchema: TableSchema;\n }\n> {\n return (\n isActionMessage(rpcResponse) &&\n isOpenDialogAction(rpcResponse.action) &&\n isSessionTable(rpcResponse.action.table) &&\n typeof rpcResponse.action.renderComponent === \"string\" &&\n componentInRegistry(rpcResponse.action.renderComponent)\n );\n}\n"],"names":["componentInRegistry"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"protocol-message-utils.js","sources":["../../../../../../packages/vuu-utils/src/protocol-message-utils.ts"],"sourcesContent":["import type {\n MenuRpcAction,\n MenuRpcResponse,\n OpenDialogActionWithSchema,\n RpcResponse,\n TableSchema,\n VuuUiMessageInRequestResponse,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n VuuRpcMenuRequest,\n OpenDialogAction,\n VuuRpcRequest,\n VuuRpcResponse,\n VuuRpcMenuSuccess,\n VuuTable,\n VuuViewportRpcTypeaheadRequest,\n VuuRpcServiceRequest,\n ViewportRpcContext,\n OpenComponentInDialogAction,\n VuuLoginSuccessResponse,\n SelectRequest,\n SelectResponse,\n SelectSuccessWithRowCount,\n VuuViewportCreateSuccessResponse,\n VuuViewportCreateResponse,\n InvalidTokenReason,\n InvalidSessionReason,\n LoginErrorMessage,\n RpcResult,\n RpcResultSuccess,\n RpcResultError,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { isView as componentInRegistry } from \"./component-registry\";\n\nconst MENU_RPC_TYPES = [\n \"VIEW_PORT_MENUS_SELECT_RPC\",\n \"VIEW_PORT_MENU_TABLE_RPC\",\n \"VIEW_PORT_MENU_ROW_RPC\",\n \"VIEW_PORT_MENU_CELL_RPC\",\n];\n\nexport const INVALID_SESSION: InvalidSessionReason = \"Invalid session\";\nexport const SESSION_LIMIT_EXCEEDED: InvalidSessionReason =\n \"User session limit exceeded\";\nexport const INVALID_TOKEN: InvalidTokenReason = \"Invalid token\";\nexport const TOKEN_EXPIRED: InvalidTokenReason = \"Token has expired\";\n\nconst InvalidLoginMessages: string[] = [\n INVALID_SESSION,\n SESSION_LIMIT_EXCEEDED,\n INVALID_TOKEN,\n TOKEN_EXPIRED,\n];\n\nexport const isLoginErrorMessage = (\n message: unknown,\n): message is LoginErrorMessage =>\n typeof message === \"string\" && InvalidLoginMessages.includes(message);\n\nexport const isSelectRequest = (message: object): message is SelectRequest =>\n message &&\n typeof message === \"object\" &&\n \"type\" in message &&\n (message.type === \"SELECT_ROW\" ||\n message.type === \"DESELECT_ROW\" ||\n message.type === \"SELECT_ROW_RANGE\" ||\n message.type === \"SELECT_ALL\" ||\n message.type === \"DESELECT_ALL\");\n\nexport const isSelectSuccessWithRowCount = (\n response: SelectResponse | SelectSuccessWithRowCount,\n): response is SelectSuccessWithRowCount =>\n [\n \"SELECT_ROW_SUCCESS\",\n \"DESELECT_ROW_SUCCESS\",\n \"SELECT_ROW_RANGE_SUCCESS\",\n \"SELECT_ALL_SUCCESS\",\n \"DESELECT_ALL_SUCCESS\",\n ].includes(response.type ?? \"\") &&\n typeof (response as SelectSuccessWithRowCount).selectedRowCount === \"number\";\n\nexport const isRpcServiceRequest = (message: {\n type: string;\n}): message is VuuRpcServiceRequest | Omit<VuuRpcServiceRequest, \"context\"> =>\n message.type === \"RPC_REQUEST\";\n\nexport const hasViewPortContext = (\n message: VuuRpcServiceRequest,\n): message is VuuRpcServiceRequest<ViewportRpcContext> =>\n message.context.type === \"VIEWPORT_CONTEXT\";\n\nexport const isVuuMenuRpcRequest = (\n message: VuuRpcRequest | Omit<VuuRpcRequest, \"vpId\">,\n): message is VuuRpcMenuRequest => MENU_RPC_TYPES.includes(message[\"type\"]);\n\nexport const isLoginResponse = (\n message: unknown,\n): message is VuuLoginSuccessResponse =>\n message !== null &&\n typeof message === \"object\" &&\n \"type\" in message &&\n (message.type === \"LOGIN_SUCCESS\" || message.type === \"LOGIN_FAIL\");\n\nexport const isRpcSuccess = (\n rpcResult?: RpcResult,\n): rpcResult is RpcResultSuccess => rpcResult?.type === \"SUCCESS_RESULT\";\n\nexport const isRpcError = (\n rpcResult?: RpcResult,\n): rpcResult is RpcResultError => rpcResult?.type === \"ERROR_RESULT\";\n\nexport const isRequestResponse = (\n message: object,\n): message is VuuUiMessageInRequestResponse => \"requestId\" in message;\n\nexport const isOpenSessionTableDialogMessage = (\n rpcResponse: RpcResponse,\n): rpcResponse is MenuRpcResponse<OpenDialogActionWithSchema> =>\n rpcResponse.type === \"VIEW_PORT_MENU_RESP\" &&\n isOpenDialogAction(rpcResponse.action) &&\n \"tableSchema\" in rpcResponse.action;\n\nexport const isOpenDialogAction = (\n action?: MenuRpcAction,\n): action is OpenDialogAction =>\n action !== undefined && action.type === \"OPEN_DIALOG_ACTION\";\n\nexport const isTypeaheadRequest = (\n request: Omit<VuuRpcRequest, \"vpId\">,\n): request is Omit<VuuViewportRpcTypeaheadRequest, \"vpId\"> => {\n return (\n isRpcServiceRequest(request) &&\n (request.rpcName === \"getUniqueFieldValues\" ||\n request.rpcName === \"getUniqueFieldValuesStartingWith\")\n );\n};\n\nexport const isCreateVpSuccess = (\n response: VuuViewportCreateResponse,\n): response is VuuViewportCreateSuccessResponse =>\n response.type === \"CREATE_VP_SUCCESS\";\n\nexport const isSessionTable = (table?: unknown) => {\n if (\n table !== null &&\n typeof table === \"object\" &&\n \"table\" in table &&\n \"module\" in table\n ) {\n return (table as VuuTable).table.startsWith(\"session\");\n }\n return false;\n};\n\nexport function isActionMessage(\n rpcResponse: VuuRpcResponse,\n): rpcResponse is VuuRpcMenuSuccess;\nexport function isActionMessage(\n rpcResponse: Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is Omit<VuuRpcMenuSuccess, \"vpId\">;\nexport function isActionMessage(\n rpcResponse: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n) {\n return rpcResponse.type === \"VIEW_PORT_MENU_RESP\";\n}\n\nexport function isSessionTableActionMessage(\n rpcResponse: VuuRpcResponse,\n): rpcResponse is VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n>;\nexport function isSessionTableActionMessage(\n rpcResponse: Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is Omit<\n VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n >,\n \"vpId\"\n>;\nexport function isSessionTableActionMessage(\n rpcResponse: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n> {\n return (\n isActionMessage(rpcResponse) &&\n isOpenDialogAction(rpcResponse.action) &&\n isSessionTable(rpcResponse.action.table) &&\n rpcResponse.action?.renderComponent === \"inline-form\"\n );\n}\n\nexport function isCustomComponentActionMessage(\n rpcResponse: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is VuuRpcMenuSuccess<\n OpenComponentInDialogAction & {\n tableSchema: TableSchema;\n }\n> {\n return (\n isActionMessage(rpcResponse) &&\n isOpenDialogAction(rpcResponse.action) &&\n isSessionTable(rpcResponse.action.table) &&\n typeof rpcResponse.action.renderComponent === \"string\" &&\n componentInRegistry(rpcResponse.action.renderComponent)\n );\n}\n"],"names":["componentInRegistry"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { moveItem } from './array-utils.js';
|
|
2
|
+
import { queryClosest } from './html-utils.js';
|
|
2
3
|
|
|
3
4
|
const SORT_ASC = "asc";
|
|
4
5
|
const NO_HEADINGS = [];
|
|
@@ -250,18 +251,18 @@ const checkConfirmationPending = (previousConfig) => {
|
|
|
250
251
|
const isJsonAttribute = (value) => typeof value === "string" && (value.endsWith("{") || value.endsWith("["));
|
|
251
252
|
const isJsonGroup = (column, row, columnMap) => column.type?.name === "json" && isJsonAttribute(row[columnMap[column.name]]);
|
|
252
253
|
const isJsonColumn = (column) => column.type?.name === "json";
|
|
253
|
-
const sortPinnedColumns = (columns) => {
|
|
254
|
+
const sortPinnedColumns = (columns, selectionBookendWidth = 0) => {
|
|
254
255
|
const leftPinnedColumns = [];
|
|
255
256
|
const rightPinnedColumns = [];
|
|
256
257
|
const restColumns = [];
|
|
257
|
-
let pinnedWidthLeft =
|
|
258
|
+
let pinnedWidthLeft = selectionBookendWidth;
|
|
258
259
|
for (const column of columns) {
|
|
259
260
|
switch (column.pin) {
|
|
260
261
|
case "left":
|
|
261
262
|
{
|
|
262
263
|
leftPinnedColumns.push({
|
|
263
264
|
...column,
|
|
264
|
-
|
|
265
|
+
pinnedWidth: 0,
|
|
265
266
|
pinnedOffset: pinnedWidthLeft
|
|
266
267
|
});
|
|
267
268
|
pinnedWidthLeft += column.width;
|
|
@@ -278,13 +279,13 @@ const sortPinnedColumns = (columns) => {
|
|
|
278
279
|
if (leftPinnedColumns.length) {
|
|
279
280
|
leftPinnedColumns.push({
|
|
280
281
|
...leftPinnedColumns.pop(),
|
|
281
|
-
|
|
282
|
+
pinnedWidth: pinnedWidthLeft
|
|
282
283
|
});
|
|
283
284
|
}
|
|
284
|
-
|
|
285
|
+
let allColumns = leftPinnedColumns.length ? leftPinnedColumns.concat(restColumns) : restColumns;
|
|
285
286
|
if (rightPinnedColumns.length) {
|
|
286
287
|
const measuredRightPinnedColumns = [];
|
|
287
|
-
let pinnedWidthRight =
|
|
288
|
+
let pinnedWidthRight = selectionBookendWidth;
|
|
288
289
|
for (const column of rightPinnedColumns) {
|
|
289
290
|
measuredRightPinnedColumns.unshift({
|
|
290
291
|
...column,
|
|
@@ -292,11 +293,20 @@ const sortPinnedColumns = (columns) => {
|
|
|
292
293
|
});
|
|
293
294
|
pinnedWidthRight += column.width;
|
|
294
295
|
}
|
|
295
|
-
measuredRightPinnedColumns[
|
|
296
|
-
|
|
297
|
-
}
|
|
298
|
-
|
|
296
|
+
measuredRightPinnedColumns[rightPinnedColumns.length - 1].pinnedWidth = pinnedWidthRight;
|
|
297
|
+
allColumns = allColumns.concat(measuredRightPinnedColumns);
|
|
298
|
+
}
|
|
299
|
+
if (leftPinnedColumns.length || rightPinnedColumns.length) {
|
|
300
|
+
for (let i = 0; i < allColumns.length; i++) {
|
|
301
|
+
if (allColumns[i].ariaColIndex !== i + 1) {
|
|
302
|
+
allColumns[i] = {
|
|
303
|
+
...allColumns[i],
|
|
304
|
+
ariaColIndex: i + 1
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
}
|
|
299
308
|
}
|
|
309
|
+
return allColumns;
|
|
300
310
|
};
|
|
301
311
|
const measurePinnedColumns = (columns, selectionEndSize) => {
|
|
302
312
|
let pinnedWidthLeft = 0;
|
|
@@ -347,19 +357,115 @@ const getTableHeadings = (columns) => {
|
|
|
347
357
|
};
|
|
348
358
|
const getColumnStyle = ({
|
|
349
359
|
pin,
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
pinnedOffset = pin === "left" ? 0 : 4,
|
|
360
|
+
pinnedOffset = 0,
|
|
361
|
+
pinnedWidth = 0,
|
|
353
362
|
width
|
|
354
|
-
}) =>
|
|
355
|
-
left
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
+
}) => {
|
|
364
|
+
if (pinnedWidth && pin === "left") {
|
|
365
|
+
return {
|
|
366
|
+
left: pinnedOffset,
|
|
367
|
+
width,
|
|
368
|
+
"--pin-width": `${pinnedWidth - 3}px`
|
|
369
|
+
};
|
|
370
|
+
} else if (pin === "left") {
|
|
371
|
+
return {
|
|
372
|
+
left: pinnedOffset,
|
|
373
|
+
width
|
|
374
|
+
};
|
|
375
|
+
} else if (pinnedWidth && pin === "right") {
|
|
376
|
+
return {
|
|
377
|
+
right: pinnedOffset,
|
|
378
|
+
width,
|
|
379
|
+
"--pin-width": `${pinnedWidth - 5}px`
|
|
380
|
+
};
|
|
381
|
+
} else if (pin === "right") {
|
|
382
|
+
return {
|
|
383
|
+
right: pinnedOffset,
|
|
384
|
+
width
|
|
385
|
+
};
|
|
386
|
+
} else {
|
|
387
|
+
return { width };
|
|
388
|
+
}
|
|
389
|
+
};
|
|
390
|
+
const getPinnedWidthFromElement = (cell) => {
|
|
391
|
+
const cellStyle = getComputedStyle(cell);
|
|
392
|
+
return parseInt(cellStyle.getPropertyValue("--pin-width"));
|
|
393
|
+
};
|
|
394
|
+
const getAllCellsInColumn = (container, colIndex) => {
|
|
395
|
+
const byColIndex = `[aria-colindex='${colIndex}']`;
|
|
396
|
+
return Array.from(
|
|
397
|
+
container?.querySelectorAll(
|
|
398
|
+
`.vuuTableCell${byColIndex},.vuuTableHeaderCell${byColIndex},.vuuTableGroupHeaderCell${byColIndex}`
|
|
399
|
+
) ?? []
|
|
400
|
+
);
|
|
401
|
+
};
|
|
402
|
+
const getAriaRowIndex = (rowElement) => {
|
|
403
|
+
const rowIndex = rowElement?.ariaRowIndex;
|
|
404
|
+
if (rowIndex != null) {
|
|
405
|
+
const index = parseInt(rowIndex);
|
|
406
|
+
if (!isNaN(index)) {
|
|
407
|
+
return index;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
return -1;
|
|
411
|
+
};
|
|
412
|
+
const getAriaColIndex = (cellElement) => {
|
|
413
|
+
const colIndex = cellElement?.ariaColIndex;
|
|
414
|
+
if (colIndex != null) {
|
|
415
|
+
const index = parseInt(colIndex);
|
|
416
|
+
if (!isNaN(index)) {
|
|
417
|
+
return index;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
return -1;
|
|
421
|
+
};
|
|
422
|
+
const getPinDetails = (cell, className) => {
|
|
423
|
+
if (cell.classList.contains("vuuEndPin")) {
|
|
424
|
+
return {
|
|
425
|
+
cell,
|
|
426
|
+
pinnedWidth: getPinnedWidthFromElement(cell)
|
|
427
|
+
};
|
|
428
|
+
} else {
|
|
429
|
+
const endPin = cell.parentElement?.querySelector(
|
|
430
|
+
`.${className}.vuuEndPin`
|
|
431
|
+
);
|
|
432
|
+
if (endPin) {
|
|
433
|
+
let pinnedCells = void 0;
|
|
434
|
+
if (className === "vuuPinLeft") {
|
|
435
|
+
const container = queryClosest(
|
|
436
|
+
cell,
|
|
437
|
+
".vuuTable-table",
|
|
438
|
+
true
|
|
439
|
+
);
|
|
440
|
+
const startIndex = getAriaColIndex(cell);
|
|
441
|
+
const endIndex = getAriaColIndex(endPin);
|
|
442
|
+
pinnedCells = [];
|
|
443
|
+
for (let colIndex = startIndex + 1; colIndex <= endIndex; colIndex++) {
|
|
444
|
+
pinnedCells = pinnedCells?.concat(
|
|
445
|
+
getAllCellsInColumn(container, colIndex)
|
|
446
|
+
);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
console.log({ pinnedCells });
|
|
450
|
+
return {
|
|
451
|
+
cell: endPin,
|
|
452
|
+
pinnedCells,
|
|
453
|
+
pinnedWidth: getPinnedWidthFromElement(endPin)
|
|
454
|
+
};
|
|
455
|
+
} else {
|
|
456
|
+
throw Error(
|
|
457
|
+
"[column-utils] getPinDetailsFromElement, no endPin on multi column pin"
|
|
458
|
+
);
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
};
|
|
462
|
+
const getPinStateFromElement = (cell) => {
|
|
463
|
+
if (cell.classList.contains("vuuPinLeft")) {
|
|
464
|
+
return getPinDetails(cell, "vuuPinLeft");
|
|
465
|
+
} else if (cell.classList.contains("vuuPinRight")) {
|
|
466
|
+
return getPinDetails(cell, "vuuPinRight");
|
|
467
|
+
}
|
|
468
|
+
};
|
|
363
469
|
const setAggregations = (aggregations, column, aggType) => {
|
|
364
470
|
return aggregations.filter((agg) => agg.column !== column.name).concat({ column: column.name, aggType });
|
|
365
471
|
};
|
|
@@ -461,10 +567,10 @@ const getColumnsInViewport = (columns, vpStart, vpEnd) => {
|
|
|
461
567
|
const column = columns[i];
|
|
462
568
|
if (column.hidden) {
|
|
463
569
|
continue;
|
|
570
|
+
} else if (column.pin === "right") {
|
|
571
|
+
visibleColumns.push(column);
|
|
464
572
|
} else if (rightPinnedOnly) {
|
|
465
|
-
|
|
466
|
-
visibleColumns.push(column);
|
|
467
|
-
}
|
|
573
|
+
continue;
|
|
468
574
|
} else if (columnOffset + column.width < vpStart) {
|
|
469
575
|
if (column.pin === "left") {
|
|
470
576
|
visibleColumns.push(column);
|
|
@@ -829,5 +935,5 @@ const columnByAriaIndex = (columns, ariaColIndex) => {
|
|
|
829
935
|
throw Error(`no column with aria-colIndex ${ariaColIndex}`);
|
|
830
936
|
};
|
|
831
937
|
|
|
832
|
-
export { AggregationType, addColumnToSubscribedColumns, applyDefaultColumnConfig, applyGroupByToColumns, applyRuntimeColumnWidthsToConfig, applySortToColumns, applyWidthToColumns, assertAllColumnsAreIncludedInSubscription, buildColumnMap, checkConfirmationPending, columnByAriaIndex, dataAndColumnUnchanged, dataColumnAndKeyUnchanged, dataSourceRowToDataRowDto, existingSort, extractGroupColumn, findColumn, flattenColumnGroup, fromServerDataType, getCalculatedColumnDetails, getColumnLabel, getColumnName, getColumnStyle, getColumnsInViewport, getDefaultAlignment, getDefaultColumnType, getGroupIcon, getGroupValue, getRuntimeColumnWidth, getTableHeadings, getTypeFormattingFromColumn, hasCustomRenderer, hasHeadings, hasValidationRules, isCalculatedColumn, isColumnTypeRenderer, isDataLoading, isDateTimeDataType, isDateTimeDataValue, isGroupColumn, isJsonAttribute, isJsonColumn, isJsonGroup, isLookupRenderer, isMappedValueTypeRenderer, isNotHidden, isNumericColumn, isPinned, isResizing, isStringColumn, isTextColumn, isTimeDataValue, isTimestampColumn, isTypeDescriptor, isValidColumnAlignment, isValidPinLocation, isValueListRenderer, isVuuColumnDataType, mapSortCriteria, measurePinnedColumns, metadataKeys, moveColumnTo, projectUpdates, removeSort, reorderColumnItems, replaceColumn, setAggregations, setCalculatedColumnExpression, setCalculatedColumnName, setCalculatedColumnType, sortPinnedColumns, subscribedOnly, toColumnDescriptor, toColumnName, toDataSourceColumns, updateColumn, updateColumnFormatting, updateColumnRenderProps, updateColumnType, visibleColumnAtIndex };
|
|
938
|
+
export { AggregationType, addColumnToSubscribedColumns, applyDefaultColumnConfig, applyGroupByToColumns, applyRuntimeColumnWidthsToConfig, applySortToColumns, applyWidthToColumns, assertAllColumnsAreIncludedInSubscription, buildColumnMap, checkConfirmationPending, columnByAriaIndex, dataAndColumnUnchanged, dataColumnAndKeyUnchanged, dataSourceRowToDataRowDto, existingSort, extractGroupColumn, findColumn, flattenColumnGroup, fromServerDataType, getAllCellsInColumn, getAriaColIndex, getAriaRowIndex, getCalculatedColumnDetails, getColumnLabel, getColumnName, getColumnStyle, getColumnsInViewport, getDefaultAlignment, getDefaultColumnType, getGroupIcon, getGroupValue, getPinStateFromElement, getRuntimeColumnWidth, getTableHeadings, getTypeFormattingFromColumn, hasCustomRenderer, hasHeadings, hasValidationRules, isCalculatedColumn, isColumnTypeRenderer, isDataLoading, isDateTimeDataType, isDateTimeDataValue, isGroupColumn, isJsonAttribute, isJsonColumn, isJsonGroup, isLookupRenderer, isMappedValueTypeRenderer, isNotHidden, isNumericColumn, isPinned, isResizing, isStringColumn, isTextColumn, isTimeDataValue, isTimestampColumn, isTypeDescriptor, isValidColumnAlignment, isValidPinLocation, isValueListRenderer, isVuuColumnDataType, mapSortCriteria, measurePinnedColumns, metadataKeys, moveColumnTo, projectUpdates, removeSort, reorderColumnItems, replaceColumn, setAggregations, setCalculatedColumnExpression, setCalculatedColumnName, setCalculatedColumnType, sortPinnedColumns, subscribedOnly, toColumnDescriptor, toColumnName, toDataSourceColumns, updateColumn, updateColumnFormatting, updateColumnRenderProps, updateColumnType, visibleColumnAtIndex };
|
|
833
939
|
//# sourceMappingURL=column-utils.js.map
|