@vuu-ui/vuu-utils 0.8.17-debug → 0.8.18-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/package.json CHANGED
@@ -1,17 +1,19 @@
1
1
  {
2
2
  "name": "@vuu-ui/vuu-utils",
3
- "version": "0.8.17-debug",
3
+ "version": "0.8.18-debug",
4
4
  "author": "heswell",
5
5
  "license": "Apache-2.0",
6
6
  "devDependencies": {
7
- "@vuu-ui/vuu-table-types": "0.8.17-debug",
8
- "@vuu-ui/vuu-filter-types": "0.8.17-debug",
9
- "@vuu-ui/vuu-protocol-types": "0.8.17-debug"
7
+ "@vuu-ui/vuu-data-types": "0.8.18-debug",
8
+ "@vuu-ui/vuu-table-types": "0.8.18-debug",
9
+ "@vuu-ui/vuu-filter-types": "0.8.18-debug",
10
+ "@vuu-ui/vuu-protocol-types": "0.8.18-debug"
10
11
  },
11
12
  "peerDependencies": {
12
13
  "react": ">=17.0.2",
13
14
  "react-dom": ">=17.0.2"
14
15
  },
16
+ "sideEffects": false,
15
17
  "files": [
16
18
  "cjs",
17
19
  "esm",
@@ -0,0 +1,32 @@
1
+ import React, { ReactNode } from "react";
2
+ export declare const DEFAULT_DENSITY: Density;
3
+ export declare const DEFAULT_THEME = "salt-theme";
4
+ export declare const DEFAULT_THEME_MODE: ThemeMode;
5
+ export type Density = "high" | "medium" | "low" | "touch";
6
+ export type ThemeMode = "light" | "dark";
7
+ export type TargetElement = "root" | "scope" | "child";
8
+ export interface ThemeContextProps {
9
+ density: Density;
10
+ theme: string;
11
+ themeMode: ThemeMode;
12
+ }
13
+ export declare const ThemeContext: React.Context<ThemeContextProps>;
14
+ export type ThemeClasses = [string, string, ThemeMode];
15
+ export type ThemeAttributes = {
16
+ themeClass: string;
17
+ densityClass: string;
18
+ dataMode: ThemeMode;
19
+ };
20
+ export declare const useThemeAttributes: (themeAttributes?: ThemeAttributes) => [string, string, ThemeMode];
21
+ interface ThemeProviderProps {
22
+ applyThemeClasses?: boolean;
23
+ children: ReactNode;
24
+ density?: Density;
25
+ theme?: string;
26
+ themeMode?: ThemeMode;
27
+ }
28
+ export declare const ThemeProvider: {
29
+ ({ applyThemeClasses, children, theme: themeProp, themeMode: themeModeProp, density: densityProp, }: ThemeProviderProps): JSX.Element;
30
+ displayName: string;
31
+ };
32
+ export {};
@@ -1,9 +1,7 @@
1
- import type { SchemaColumn, TableSchema } from "@vuu-ui/vuu-data";
2
- import type { DataSourceFilter, DataSourceRow } from "@vuu-ui/vuu-data-types";
3
- import type { ColumnAlignment, ColumnDescriptor, ColumnType, ColumnTypeDescriptor, ColumnTypeRendering, ColumnTypeWithValidationRules, GroupColumnDescriptor, RuntimeColumnDescriptor, MappedValueTypeRenderer, PinLocation, TableHeadings, ColumnTypeFormatting, LookupRenderer, ValueListRenderer, DateTimeColumnTypeSimple } from "@vuu-ui/vuu-table-types";
1
+ import type { DataSourceFilter, DataSourceRow, SchemaColumn, TableSchema } from "@vuu-ui/vuu-data-types";
4
2
  import type { Filter } from "@vuu-ui/vuu-filter-types";
5
3
  import type { VuuAggregation, VuuAggType, VuuColumnDataType, VuuDataRow, VuuGroupBy, VuuRowRecord, VuuSort } from "@vuu-ui/vuu-protocol-types";
6
- import { DefaultColumnConfiguration } from "@vuu-ui/vuu-shell";
4
+ import type { ColumnAlignment, ColumnDescriptor, ColumnType, ColumnTypeDescriptor, ColumnTypeFormatting, ColumnTypeRendering, ColumnTypeSimple, ColumnTypeWithValidationRules, DefaultColumnConfiguration, GroupColumnDescriptor, LookupRenderer, MappedValueTypeRenderer, PinLocation, RuntimeColumnDescriptor, TableHeadings, ValueListRenderer, DateTimeColumnDescriptor } from "@vuu-ui/vuu-table-types";
7
5
  import type { CSSProperties } from "react";
8
6
  /**
9
7
  * ColumnMap provides a lookup of the index position of a data item within a row
@@ -23,22 +21,12 @@ export declare const isValidPinLocation: (v: string) => v is PinLocation;
23
21
  export declare const isKeyedColumn: (column: ColumnDescriptor) => column is RuntimeColumnDescriptor;
24
22
  export declare const fromServerDataType: (serverDataType: VuuColumnDataType) => ColumnTypeSimple;
25
23
  export declare const isNumericColumn: ({ serverDataType, type }: ColumnDescriptor) => boolean;
26
- type DateTimeColumnType = DateTimeColumnTypeSimple | (Omit<ColumnTypeDescriptor, "name"> & {
27
- name: DateTimeColumnTypeSimple;
28
- });
29
- export type DateTimeColumnDescriptor = Omit<ColumnDescriptor, "type"> & {
30
- type: DateTimeColumnType;
31
- };
32
- export declare const isDateColumn: ({ type }: ColumnDescriptor) => boolean;
33
- export declare const isTimeColumn: ({ type }: ColumnDescriptor) => boolean;
34
24
  export declare const isDateTimeColumn: (column: ColumnDescriptor) => column is DateTimeColumnDescriptor;
35
25
  export declare const isPinned: (column: ColumnDescriptor) => boolean;
36
26
  export declare const hasHeadings: (column: ColumnDescriptor) => boolean;
37
27
  export declare const isResizing: (column: RuntimeColumnDescriptor) => boolean | undefined;
38
28
  export declare const isTextColumn: ({ serverDataType }: ColumnDescriptor) => boolean;
39
29
  export declare const toColumnDescriptor: (name: string) => ColumnDescriptor;
40
- export declare const isSimpleColumnType: (value: unknown) => value is ColumnTypeSimple;
41
- export declare type ColumnTypeSimple = "string" | "number" | "boolean" | "json" | "date" | "time" | "checkbox";
42
30
  /**
43
31
  *
44
32
  */
@@ -83,8 +71,8 @@ export declare const isFilteredColumn: (column: RuntimeColumnDescriptor) => bool
83
71
  export declare const stripFilterFromColumns: (columns: RuntimeColumnDescriptor[]) => {
84
72
  align?: "left" | "right" | undefined;
85
73
  CellRenderer?: import("react").FunctionComponent<import("@vuu-ui/vuu-table-types").TableCellRendererProps> | undefined;
86
- HeaderCellLabelRenderer?: import("react").FunctionComponent<HeaderCellProps> | undefined;
87
- HeaderCellContentRenderer?: import("react").FunctionComponent<HeaderCellProps> | undefined;
74
+ HeaderCellLabelRenderer?: import("react").FunctionComponent<import("@vuu-ui/vuu-table-types").HeaderCellProps> | undefined;
75
+ HeaderCellContentRenderer?: import("react").FunctionComponent<import("@vuu-ui/vuu-table-types").HeaderCellProps> | undefined;
88
76
  className?: string | undefined;
89
77
  clientSideEditValidationCheck?: import("packages/vuu-ui-controls/src").ClientSideValidationChecker | undefined;
90
78
  endPin?: true | undefined;
@@ -129,7 +117,8 @@ export declare const isNotHidden: (column: RuntimeColumnDescriptor) => boolean;
129
117
  export declare const visibleColumnAtIndex: (columns: RuntimeColumnDescriptor[], index: number) => RuntimeColumnDescriptor | undefined;
130
118
  export declare const getGroupValueAndOffset: (columns: RuntimeColumnDescriptor[], row: DataSourceRow) => [unknown, number];
131
119
  export declare const getDefaultColumnType: (serverDataType?: VuuColumnDataType) => ColumnTypeSimple;
132
- export declare const updateColumnType: <T extends ColumnDescriptor = ColumnDescriptor>(column: T, formatting: ColumnTypeFormatting) => T;
120
+ export declare const updateColumnFormatting: <T extends ColumnDescriptor = ColumnDescriptor>(column: T, formatting: ColumnTypeFormatting) => T;
121
+ export declare function updateColumnType<T extends ColumnDescriptor = ColumnDescriptor>(column: T, type: ColumnTypeSimple): T;
133
122
  export declare const updateColumnRenderProps: <T extends ColumnDescriptor = ColumnDescriptor>(column: T, renderer: ColumnTypeRendering) => T;
134
123
  export declare const getTypeFormattingFromColumn: (column: ColumnDescriptor) => ColumnTypeFormatting;
135
124
  /**
@@ -150,4 +139,3 @@ export declare const setCalculatedColumnExpression: (column: ColumnDescriptor, e
150
139
  export declare const moveColumnTo: (columns: ColumnDescriptor[], column: ColumnDescriptor, newIndex: number) => ColumnDescriptor[];
151
140
  export declare function replaceColumn<C extends ColumnDescriptor = RuntimeColumnDescriptor>(columns: C[], column: C): C[];
152
141
  export declare const applyDefaultColumnConfig: ({ columns, table }: TableSchema, getDefaultColumnConfig?: DefaultColumnConfiguration) => SchemaColumn[];
153
- export {};
@@ -1,7 +1,6 @@
1
1
  import { FunctionComponent as FC, HTMLAttributes } from "react";
2
- import { ColumnDescriptor, ColumnDescriptorCustomRenderer, ColumnTypeRendering, EditValidationRule, TableCellRendererProps } from "@vuu-ui/vuu-table-types";
2
+ import { ColumnDescriptor, ColumnDescriptorCustomRenderer, ColumnTypeRendering, EditValidationRule, HeaderCellProps, TableCellRendererProps } from "@vuu-ui/vuu-table-types";
3
3
  import { VuuColumnDataType, VuuRowDataItemType } from "@vuu-ui/vuu-protocol-types";
4
- import { HeaderCellProps } from "@vuu-ui/vuu-table";
5
4
  export interface CellConfigPanelProps extends HTMLAttributes<HTMLDivElement> {
6
5
  onConfigChange: () => void;
7
6
  }
@@ -13,7 +12,7 @@ export interface ConfigurationEditorProps {
13
12
  }
14
13
  export type ConfigEditorComponent = FC<CellConfigPanelProps>;
15
14
  export type EditRuleValidator = (editRule: EditValidationRule, value?: VuuRowDataItemType) => boolean | string;
16
- export type ComponentType = "cell-renderer" | "cell-config-panel" | "data-edit-validator";
15
+ export type ComponentType = "cell-renderer" | "column-header-content-renderer" | "column-header-label-renderer" | "cell-config-panel" | "data-edit-validator";
17
16
  type CellRendererOptions = {
18
17
  configEditor?: string;
19
18
  description?: string;
@@ -27,7 +26,9 @@ export declare function registerComponent<T extends TableCellRendererProps | Cel
27
26
  export declare const registerConfigurationEditor: (componentName: string, configurationEditor: FC<ConfigurationEditorProps>) => void;
28
27
  export declare const getRegisteredCellRenderers: (serverDataType?: VuuColumnDataType | "json") => CellRendererDescriptor[];
29
28
  export declare const getCellRendererOptions: (renderName: string) => CellRendererOptions | undefined;
30
- export declare function getCellRenderer(column: ColumnDescriptor, cellType?: "cell" | "col-content" | "col-label"): FC<TableCellRendererProps> | undefined;
29
+ export declare function getCellRenderer(column: ColumnDescriptor): FC<TableCellRendererProps> | undefined;
30
+ export declare function getColumnHeaderContentRenderer(column: ColumnDescriptor): FC<HeaderCellProps> | undefined;
31
+ export declare function getColumnHeaderLabelRenderer(column: ColumnDescriptor): FC<HeaderCellProps> | undefined;
31
32
  export declare function getConfigurationEditor(configEditor?: string): FC<ConfigurationEditorProps> | undefined;
32
33
  export declare function getCellConfigPanelRenderer(name: string): ConfigEditorComponent | undefined;
33
34
  export declare function getEditRuleValidator(name: string): EditRuleValidator | undefined;
@@ -0,0 +1,7 @@
1
+ import { DataSourceMenusMessage, DataSourceVisualLinkCreatedMessage, DataSourceVisualLinkRemovedMessage, DataSourceVisualLinksMessage, VuuFeatureMessage } from "@vuu-ui/vuu-data-types";
2
+ import { GridAction } from "@vuu-ui/vuu-table-types";
3
+ export declare const isVisualLinksAction: (action: GridAction) => action is DataSourceVisualLinksMessage;
4
+ export declare const isVisualLinkCreatedAction: (action: GridAction) => action is DataSourceVisualLinkCreatedMessage;
5
+ export declare const isVisualLinkRemovedAction: (action: GridAction) => action is DataSourceVisualLinkRemovedMessage;
6
+ export declare const isViewportMenusAction: (action: GridAction) => action is DataSourceMenusMessage;
7
+ export declare const isVuuFeatureAction: (action: GridAction) => action is VuuFeatureMessage;
@@ -0,0 +1,25 @@
1
+ import { ConnectionQualityMetrics, ConnectionStatusMessage, DataSourceConfig, MenuRpcResponse, RpcResponse, TypeaheadSuggestionProvider, VuuUIMessageIn, VuuUIMessageInRPC, VuuUIMessageInRPCEditReject, VuuUIMessageInRPCEditResponse, VuuUIMessageInTableMeta, VuuUIMessageOutViewport, WithFilter, WithFullConfig, WithGroupBy, WithSort } from "@vuu-ui/vuu-data-types";
2
+ import { LinkDescriptorWithLabel, VuuFilter, VuuSort } from "@vuu-ui/vuu-protocol-types";
3
+ export declare const NoFilter: VuuFilter;
4
+ export declare const NoSort: VuuSort;
5
+ export declare const vanillaConfig: WithFullConfig;
6
+ type DataConfigPredicate = (config: DataSourceConfig, newConfig: DataSourceConfig) => boolean;
7
+ export declare const columnsChanged: DataConfigPredicate;
8
+ export declare const filterChanged: DataConfigPredicate;
9
+ export declare const groupByChanged: DataConfigPredicate;
10
+ export declare const configChanged: (config: DataSourceConfig | undefined, newConfig: DataSourceConfig | undefined) => boolean;
11
+ export declare const hasGroupBy: (config?: DataSourceConfig) => config is WithGroupBy;
12
+ export declare const hasFilter: (config?: DataSourceConfig) => config is WithFilter;
13
+ export declare const hasSort: (config?: DataSourceConfig) => config is WithSort;
14
+ export declare const isTypeaheadSuggestionProvider: (source: unknown) => source is TypeaheadSuggestionProvider;
15
+ export declare const isTableSchema: (message: VuuUIMessageIn) => message is VuuUIMessageInTableMeta;
16
+ export declare const isConnectionStatusMessage: (msg: object | ConnectionStatusMessage) => msg is ConnectionStatusMessage;
17
+ export declare const isConnectionQualityMetrics: (msg: object) => msg is ConnectionQualityMetrics;
18
+ export declare const messageHasResult: (msg: object) => msg is VuuUIMessageInRPC;
19
+ export declare const isErrorResponse: (response?: RpcResponse) => response is VuuUIMessageInRPCEditReject;
20
+ export declare const hasAction: (response?: RpcResponse) => response is MenuRpcResponse | VuuUIMessageInRPCEditResponse;
21
+ export declare const isViewporttMessage: (msg: object) => msg is VuuUIMessageOutViewport;
22
+ export declare const withConfigDefaults: (config: DataSourceConfig) => WithFullConfig & {
23
+ visualLink?: LinkDescriptorWithLabel;
24
+ };
25
+ export {};
@@ -1,5 +1,8 @@
1
- import { DateTimeColumnTypeSimple } from "@vuu-ui/vuu-table-types";
2
- import { DateTimeColumnDescriptor } from "../column-utils";
1
+ import { DateTimeColumnDescriptor } from "@vuu-ui/vuu-table-types";
3
2
  import { DateTimePattern } from "./types";
4
- export declare const defaultPatternByTypes: Record<DateTimeColumnTypeSimple, DateTimePattern>;
3
+ export declare const defaultPatternsByType: {
4
+ readonly time: "hh:mm:ss";
5
+ readonly date: "dd.mm.yyyy";
6
+ };
7
+ export declare const fallbackDateTimePattern: DateTimePattern;
5
8
  export declare function dateTimePattern(type: DateTimeColumnDescriptor["type"]): DateTimePattern;
@@ -1,2 +1,3 @@
1
1
  export * from "./formatter";
2
- export { isDateTimePattern, type DateTimePattern } from "./types";
2
+ export { isDateTimePattern, type DateTimePattern, supportedDateTimePatterns, } from "./types";
3
+ export { defaultPatternsByType, fallbackDateTimePattern } from "./helpers";
@@ -1,7 +1,18 @@
1
+ import { ColumnTypeFormatting } from "@vuu-ui/vuu-table-types";
1
2
  declare const supportedDatePatterns: readonly ["dd.mm.yyyy", "dd/mm/yyyy", "dd MMM yyyy", "dd MMMM yyyy", "mm/dd/yyyy", "MMM dd, yyyy", "MMMM dd, yyyy"];
2
3
  declare const supportedTimePatterns: readonly ["hh:mm:ss", "hh:mm:ss a"];
4
+ export declare const supportedDateTimePatterns: {
5
+ date: readonly ["dd.mm.yyyy", "dd/mm/yyyy", "dd MMM yyyy", "dd MMMM yyyy", "mm/dd/yyyy", "MMM dd, yyyy", "MMMM dd, yyyy"];
6
+ time: readonly ["hh:mm:ss", "hh:mm:ss a"];
7
+ };
3
8
  export type DatePattern = (typeof supportedDatePatterns)[number];
4
9
  export type TimePattern = (typeof supportedTimePatterns)[number];
5
- export type DateTimePattern = DatePattern | TimePattern;
6
- export declare const isDateTimePattern: (pattern?: string) => pattern is DateTimePattern;
10
+ export type DateTimePattern = {
11
+ date?: DatePattern;
12
+ time: TimePattern;
13
+ } | {
14
+ date: DatePattern;
15
+ time?: TimePattern;
16
+ };
17
+ export declare const isDateTimePattern: (pattern?: ColumnTypeFormatting["pattern"]) => pattern is DateTimePattern;
7
18
  export {};
@@ -1,6 +1,13 @@
1
1
  type Listener = (...args: any[]) => void;
2
2
  export type EmittedEvents = Record<string, Listener>;
3
- export declare class EventEmitter<Events extends EmittedEvents> {
3
+ export interface IEventEmitter<Events extends EmittedEvents> {
4
+ addListener<E extends keyof Events>(event: E, listener: Events[E]): void;
5
+ emit<E extends keyof Events>(event: E, ...args: Parameters<Events[E]>): void;
6
+ on<E extends keyof Events>(event: E, listener: Events[E]): void;
7
+ removeListener<E extends keyof Events>(event: E, listener: Events[E]): void;
8
+ removeAllListeners<E extends keyof Events>(event?: E): void;
9
+ }
10
+ export declare class EventEmitter<Events extends EmittedEvents> implements IEventEmitter<Events> {
4
11
  #private;
5
12
  addListener<E extends keyof Events>(event: E, listener: Events[E]): void;
6
13
  removeListener<E extends keyof Events>(event: E, listener: Events[E]): void;
package/types/index.d.ts CHANGED
@@ -6,6 +6,8 @@ export * from "./component-registry";
6
6
  export * from "./DataWindow";
7
7
  export * from "./common-types";
8
8
  export * from "./data-utils";
9
+ export * from "./datasource-action-utils";
10
+ export * from "./datasource-utils";
9
11
  export * from "./date";
10
12
  export * from "./debug-utils";
11
13
  export * from "./filter-utils";
@@ -30,5 +32,8 @@ export * from "./row-utils";
30
32
  export * from "./selection-utils";
31
33
  export * from "./sort-utils";
32
34
  export * from "./text-utils";
35
+ export * from "./ThemeProvider";
36
+ export * from "./ts-utils";
33
37
  export * from "./url-utils";
34
- export * from "./screenshot-utils";
38
+ export * from "./useId";
39
+ export * from "./useLayoutEffectSkipFirst";
@@ -1,5 +1,5 @@
1
- import { DataSourceRow } from "@vuu-ui/vuu-data-types";
2
- import { Selection, SelectionItem, TableSelectionModel } from "@vuu-ui/vuu-table-types";
1
+ import { DataSourceRow, Selection, SelectionItem } from "@vuu-ui/vuu-data-types";
2
+ import { TableSelectionModel } from "@vuu-ui/vuu-table-types";
3
3
  export declare const RowSelected: {
4
4
  False: number;
5
5
  True: number;
@@ -0,0 +1 @@
1
+ export declare function isNotNullOrUndefined<T>(value: T | undefined | null): value is NonNullable<T>;
@@ -0,0 +1 @@
1
+ export declare const useId: (id?: string) => string;
@@ -0,0 +1,2 @@
1
+ import { DependencyList, EffectCallback } from "react";
2
+ export declare const useLayoutEffectSkipFirst: (func: EffectCallback, deps: DependencyList) => void;
@@ -1,6 +0,0 @@
1
- /**
2
- * Takes a screenshot of the given node and returns the base64 encoded image url
3
- * @param node Node to take screenshot of
4
- * @returns Base64 encoded image url
5
- */
6
- export declare function takeScreenshot(node: HTMLElement): Promise<string | undefined>;