@evotecit/canopyx 0.3.11 → 0.3.15
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/CanopyX.Html/Assets/canopyx-calendar-edit.js +36 -18
- package/CanopyX.Html/Assets/canopyx-calendar-ics.js +7 -5
- package/CanopyX.Html/Assets/canopyx-calendar.css +124 -116
- package/CanopyX.Html/Assets/canopyx-calendar.js +74 -54
- package/CanopyX.Html/Assets/canopyx-cell-range.css +8 -8
- package/CanopyX.Html/Assets/canopyx-cell-range.js +1 -1
- package/CanopyX.Html/Assets/canopyx-changes.css +113 -113
- package/CanopyX.Html/Assets/canopyx-changes.js +7 -10
- package/CanopyX.Html/Assets/canopyx-column-groups.css +5 -5
- package/CanopyX.Html/Assets/canopyx-column-groups.js +1 -1
- package/CanopyX.Html/Assets/canopyx-data.js +2 -2
- package/CanopyX.Html/Assets/canopyx-detail-rows.css +9 -9
- package/CanopyX.Html/Assets/canopyx-detail-rows.js +2 -2
- package/CanopyX.Html/Assets/canopyx-editing.css +18 -18
- package/CanopyX.Html/Assets/canopyx-editing.js +1 -1
- package/CanopyX.Html/Assets/canopyx-enhance.js +2 -2
- package/CanopyX.Html/Assets/canopyx-export.js +8 -4
- package/CanopyX.Html/Assets/canopyx-facets.css +33 -33
- package/CanopyX.Html/Assets/canopyx-facets.js +10 -11
- package/CanopyX.Html/Assets/canopyx-filter-editor.css +57 -57
- package/CanopyX.Html/Assets/canopyx-filter-editor.js +15 -11
- package/CanopyX.Html/Assets/canopyx-flow-checks.css +11 -11
- package/CanopyX.Html/Assets/canopyx-flow-checks.js +1 -1
- package/CanopyX.Html/Assets/canopyx-flow-command.css +7 -7
- package/CanopyX.Html/Assets/canopyx-flow-command.js +1 -1
- package/CanopyX.Html/Assets/canopyx-flow-dialog.css +7 -7
- package/CanopyX.Html/Assets/canopyx-flow-dialog.js +1 -1
- package/CanopyX.Html/Assets/canopyx-flow-drafts.css +7 -7
- package/CanopyX.Html/Assets/canopyx-flow-drafts.js +1 -1
- package/CanopyX.Html/Assets/canopyx-flow-entry.css +17 -76
- package/CanopyX.Html/Assets/canopyx-flow-entry.js +9 -3
- package/CanopyX.Html/Assets/canopyx-flow-host.css +4 -4
- package/CanopyX.Html/Assets/canopyx-flow-host.js +1 -1
- package/CanopyX.Html/Assets/canopyx-flow-module.mjs +9 -3
- package/CanopyX.Html/Assets/canopyx-flow-pick.css +4 -4
- package/CanopyX.Html/Assets/canopyx-flow-pick.js +1 -1
- package/CanopyX.Html/Assets/canopyx-flow-preview.css +6 -6
- package/CanopyX.Html/Assets/canopyx-flow-preview.js +1 -1
- package/CanopyX.Html/Assets/canopyx-flow-records.css +3 -3
- package/CanopyX.Html/Assets/canopyx-flow-records.js +1 -1
- package/CanopyX.Html/Assets/canopyx-flow-tasks.css +17 -17
- package/CanopyX.Html/Assets/canopyx-flow-tasks.js +1 -1
- package/CanopyX.Html/Assets/canopyx-flow.css +79 -79
- package/CanopyX.Html/Assets/canopyx-flow.js +1 -1
- package/CanopyX.Html/Assets/canopyx-format-editor.css +23 -23
- package/CanopyX.Html/Assets/canopyx-format-editor.js +2 -3
- package/CanopyX.Html/Assets/canopyx-formatting.css +17 -17
- package/CanopyX.Html/Assets/canopyx-formatting.js +5 -5
- package/CanopyX.Html/Assets/canopyx-forms.css +5 -5
- package/CanopyX.Html/Assets/canopyx-forms.js +1 -1
- package/CanopyX.Html/Assets/canopyx-grid-module.mjs +134 -77
- package/CanopyX.Html/Assets/canopyx-grid-options.css +10 -0
- package/CanopyX.Html/Assets/canopyx-grid-options.js +47 -0
- package/CanopyX.Html/Assets/canopyx-grid.css +199 -261
- package/CanopyX.Html/Assets/canopyx-grid.js +134 -77
- package/CanopyX.Html/Assets/canopyx-grouping.css +17 -17
- package/CanopyX.Html/Assets/canopyx-grouping.js +12 -9
- package/CanopyX.Html/Assets/canopyx-highlight.css +14 -14
- package/CanopyX.Html/Assets/canopyx-highlight.js +2 -2
- package/CanopyX.Html/Assets/canopyx-interactive.css +94 -155
- package/CanopyX.Html/Assets/canopyx-interactive.js +58 -24
- package/CanopyX.Html/Assets/canopyx-labels-de.js +5 -0
- package/CanopyX.Html/Assets/canopyx-labels-es.js +5 -0
- package/CanopyX.Html/Assets/canopyx-labels-fr.js +5 -0
- package/CanopyX.Html/Assets/canopyx-labels-it.js +5 -0
- package/CanopyX.Html/Assets/canopyx-labels-pl.js +5 -0
- package/CanopyX.Html/Assets/canopyx-layouts.css +17 -17
- package/CanopyX.Html/Assets/canopyx-layouts.js +4 -12
- package/CanopyX.Html/Assets/canopyx-link.css +7 -7
- package/CanopyX.Html/Assets/canopyx-link.js +1 -1
- package/CanopyX.Html/Assets/canopyx-live.css +9 -9
- package/CanopyX.Html/Assets/canopyx-live.js +2 -2
- package/CanopyX.Html/Assets/canopyx-matrix.css +74 -74
- package/CanopyX.Html/Assets/canopyx-matrix.js +3 -4
- package/CanopyX.Html/Assets/canopyx-module.mjs +58 -24
- package/CanopyX.Html/Assets/canopyx-pager.css +2 -2
- package/CanopyX.Html/Assets/canopyx-pager.js +1 -1
- package/CanopyX.Html/Assets/canopyx-presenters.js +11 -0
- package/CanopyX.Html/Assets/canopyx-record-panel.css +49 -49
- package/CanopyX.Html/Assets/canopyx-record-panel.js +13 -11
- package/CanopyX.Html/Assets/canopyx-reporting-module.mjs +142 -84
- package/CanopyX.Html/Assets/canopyx-reporting.css +214 -276
- package/CanopyX.Html/Assets/canopyx-reporting.js +142 -84
- package/CanopyX.Html/Assets/canopyx-timeline.css +28 -28
- package/CanopyX.Html/Assets/canopyx-timeline.js +11 -10
- package/CanopyX.Html/Assets/canopyx-tree-tools.css +47 -46
- package/CanopyX.Html/Assets/canopyx-tree-tools.js +5 -4
- package/CanopyX.Html/Assets/canopyx.css +81 -142
- package/CanopyX.Html/Assets/canopyx.js +58 -24
- package/JavaScript/calendar.d.ts +15 -0
- package/JavaScript/grid.d.ts +29 -4
- package/JavaScript/hosts.d.ts +11 -0
- package/JavaScript/locales/de.mjs +5 -0
- package/JavaScript/locales/es.mjs +5 -0
- package/JavaScript/locales/fr.mjs +5 -0
- package/JavaScript/locales/it.mjs +5 -0
- package/JavaScript/locales/pl.mjs +5 -0
- package/JavaScript/plugins.d.ts +4 -0
- package/JavaScript/protocol.d.ts +14 -1
- package/JavaScript/records.d.ts +2 -0
- package/README.md +6 -2
- package/package.json +7 -1
package/JavaScript/protocol.d.ts
CHANGED
|
@@ -64,6 +64,8 @@ interface NodeDefinition {
|
|
|
64
64
|
export interface CanopyColumn {
|
|
65
65
|
id: string;
|
|
66
66
|
title: string;
|
|
67
|
+
/** Full header explanation shown as a tooltip and accessibility description. Defaults to title. */
|
|
68
|
+
headerDescription?: string;
|
|
67
69
|
width: number;
|
|
68
70
|
/** Minimum manual width in CSS pixels; defaults to 40. */
|
|
69
71
|
minWidth?: number;
|
|
@@ -87,6 +89,17 @@ export interface CanopyColumn {
|
|
|
87
89
|
alwaysVisible?: boolean;
|
|
88
90
|
/** Hover tooltip: "auto" shows a cell's full value while it is cut off; a declared column id shows that column's text. */
|
|
89
91
|
tooltip?: string;
|
|
92
|
+
/** Wrap text; maxLines is 1..12, default 2. Automatic row heights measure the visible lines. */
|
|
93
|
+
wrap?: boolean;
|
|
94
|
+
maxLines?: number;
|
|
95
|
+
/** Host-authored labels keyed by exact raw category token; query and group identities stay raw. */
|
|
96
|
+
valueLabels?: Readonly<Record<string, string>>;
|
|
97
|
+
/** Declared tokens precede unknown ordinal tokens in ascending order; null keeps the missing-value policy. */
|
|
98
|
+
valueOrder?: readonly string[];
|
|
99
|
+
/** Semantic tones keyed by raw category token. */
|
|
100
|
+
valueTones?: Readonly<Record<string, string>>;
|
|
101
|
+
/** Ordered first-match rules color plain numeric text; labels explain the rule in tooltips and the drawer. */
|
|
102
|
+
numericTones?: readonly { operator: "atMost" | "atLeast" | "below" | "above"; value: number; tone: string; label: string }[];
|
|
90
103
|
/** The tree column pins left by default and null lets it scroll; other columns pin left (after the tree column) or right. */
|
|
91
104
|
pinned?: "left" | "right" | null;
|
|
92
105
|
/** The name of a cell renderer a plugin registers (cellRenderers); an unregistered name keeps the built-in painter. */
|
|
@@ -251,7 +264,7 @@ export type LabelName =
|
|
|
251
264
|
/** The record panel (docs/record-panel.md). */
|
|
252
265
|
| "recordBack" | "recordBackTo" | "recordTrail" | "recordShowing" | "recordTabs" | "recordSections" | "recordOtherFields" | "recordShowEmpty" | "recordHideEmpty" | "recordActions" | "recordCopyValues" | "recordCopyJson" | "recordCopyLink" | "recordCopied" | "recordPrint" | "recordExportCsv" | "recordExportJson" | "recordOpenAll" | "recordLoadMore" | "recordCount" | "recordItems" | "recordMore" | "recordShowAll" | "recordRetry" | "recordLoadFailed" | "recordUnavailable" | "recordField" | "recordValue" | "recordSection" | "recordBefore" | "recordAfter" | "recordAdded" | "recordRemoved" | "recordChanged"
|
|
253
266
|
/** The calendar and resource timeline (the calendar and timeline parts of flat grids). */
|
|
254
|
-
| "calendarToday" | "calendarPrevious" | "calendarNext" | "calendarViews" | "calendarMonth" | "calendarWeek" | "calendarDay" | "calendarDays"
|
|
267
|
+
| "calendarEditOccurrence" | "calendarRemoveOccurrence" | "calendarOccurrenceScope" | "calendarSharedResources" | "calendarResourceWindow" | "calendarToday" | "calendarPrevious" | "calendarNext" | "calendarViews" | "calendarMonth" | "calendarWeek" | "calendarDay" | "calendarDays"
|
|
255
268
|
| "calendarAgenda" | "calendarYear" | "calendarTimeline" | "calendarGoTo" | "calendarAllDay" | "calendarMore" | "calendarMoreLabel" | "calendarDayEvents"
|
|
256
269
|
| "calendarNoEvents" | "calendarEvents" | "calendarShowing" | "calendarRepeats" | "calendarTruncated" | "calendarLoading" | "calendarLoadError" | "calendarNow"
|
|
257
270
|
| "calendarZoom" | "calendarZoomHour" | "calendarZoomDay" | "calendarZoomWeek" | "calendarZoomMonth" | "calendarZoomQuarter" | "calendarResources" | "calendarCapacity"
|
package/JavaScript/records.d.ts
CHANGED
|
@@ -59,6 +59,8 @@ export interface RecordFieldDefinition {
|
|
|
59
59
|
readonly id: string; readonly title: string; readonly kind?: "text" | "number" | "datetime";
|
|
60
60
|
/** A flat-grid presenter descriptor (the grid runtimes apply it). */
|
|
61
61
|
readonly presenter?: unknown; readonly wrap?: boolean; readonly section?: string;
|
|
62
|
+
/** Visible wrapped lines, from 1 to 12. Default 2; the full value remains available in its tooltip. */
|
|
63
|
+
readonly maxLines?: number;
|
|
62
64
|
}
|
|
63
65
|
export interface RecordSectionDefinition {
|
|
64
66
|
readonly id: string; readonly label: string; readonly fields?: readonly string[]; readonly collapsed?: boolean;
|
package/README.md
CHANGED
|
@@ -24,13 +24,13 @@ Turn application data into searchable trees, sortable tables and standalone HTML
|
|
|
24
24
|
- **Change views**: a text diff (inline or side by side, word marks, folded regions, windowed rows), a change list with kind badges, folders, hashes and risk flags, and how a change reached its replicas ([docs/changes.md](docs/changes.md)).
|
|
25
25
|
- **Guided flows** for setup and edit tasks: steps with typed fields, conditions as data, validation, a review page with change links, secrets that never echo, and one proposal to the host ([docs/flow.md](docs/flow.md)).
|
|
26
26
|
|
|
27
|
-

|
|
28
28
|
|
|
29
29
|
The same explorer in the dark theme, alongside its script-free output for email and print:
|
|
30
30
|
|
|
31
31
|
| Dark theme | Static outline |
|
|
32
32
|
| --- | --- |
|
|
33
|
-
|  |  |
|
|
34
34
|
|
|
35
35
|
## Features
|
|
36
36
|
|
|
@@ -46,6 +46,8 @@ The same explorer in the dark theme, alongside its script-free output for email
|
|
|
46
46
|
|
|
47
47
|
Both views use virtual rows and support keyboard navigation. Both can mark search and filter matches with a match count and next/previous navigation ([search highlighting](docs/search-highlight.md)), and let readers switch between fitting the width, scrolling sideways and (on grids) cards, in three densities ([layout modes](docs/layout-modes.md)). Reporting grids also provide multi-level grouping with aggregates, detail rows, saved views, CSV export and row copying (see [docs/grouping.md](docs/grouping.md)). Grids and trees can open each record in a record panel: record-only fields in tabs and sections, lists, objects and nested collections, links between records, timelines, record deep links, and copy, print and export of one record, with details loaded on demand for large reports (see [docs/record-panel.md](docs/record-panel.md)). English labels are built in; Polish, German, Spanish, French and Italian packs are included.
|
|
48
48
|
|
|
49
|
+
CanopyX reads the shared `--hfx-*` design roles for colours, fonts, radii and density, and includes standalone defaults. Use `data-hfx-style` and `data-hfx-mode` on a containing element to theme a page; `data-hfx-density="compact"` selects 32px rows and `"comfortable"` selects 40px rows. See [theming](docs/architecture.md#theming) for custom roles and the migration from `--cx-*` colour variables.
|
|
50
|
+
|
|
49
51
|
## Installation
|
|
50
52
|
|
|
51
53
|
### .NET
|
|
@@ -141,6 +143,8 @@ Event snapshots without a key column opt in to `CanopyGridRowIdentity.Ordinal`;
|
|
|
141
143
|
|
|
142
144
|
Grid fitting reserves readable header and content minimums before preferred whitespace. Spare width restores headers first, then preferred widths, then ordinary column growth. Headers yield with a full-title tooltip only when their capped minimums cannot collectively fit; content that still needs more room scrolls horizontally. Auto height includes the actual horizontal scrollbar gutter. The [column-fitting algorithm](docs/column-fitting.md) and `report-grid-layout.html` example describe the policy.
|
|
143
145
|
|
|
146
|
+
Grids can show page totals and all-matching totals in declarative footer rows, including the script-free fallback. Columns support safe CSS classes, logical alignment, selector-based defaults, alternate sort keys and direction cycles. Plugins can add filter operators, sort comparators and custom aggregates. See [column options and footers](docs/data-protocol.md#column-defaults-ordering-hooks-and-footer-rows), and the generated `grid-footers.html`, `grid-footers-dark.html` and `grid-footers-static.html` examples.
|
|
147
|
+
|
|
144
148
|
### Render a table for email or print
|
|
145
149
|
|
|
146
150
|
```csharp
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@evotecit/canopyx",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.15",
|
|
4
4
|
"description": "Interactive tree grids and data tables with virtual rows, search, filters and offline HTML reports.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -36,10 +36,13 @@
|
|
|
36
36
|
},
|
|
37
37
|
"./reporting.css": "./CanopyX.Html/Assets/canopyx-reporting.css",
|
|
38
38
|
"./reporting.js": "./CanopyX.Html/Assets/canopyx-reporting.js",
|
|
39
|
+
"./presenters.js": "./CanopyX.Html/Assets/canopyx-presenters.js",
|
|
39
40
|
"./filter-editor.js": "./CanopyX.Html/Assets/canopyx-filter-editor.js",
|
|
40
41
|
"./filter-editor.css": "./CanopyX.Html/Assets/canopyx-filter-editor.css",
|
|
41
42
|
"./export.js": "./CanopyX.Html/Assets/canopyx-export.js",
|
|
42
43
|
"./history.js": "./CanopyX.Html/Assets/canopyx-history.js",
|
|
44
|
+
"./grid-options.js": "./CanopyX.Html/Assets/canopyx-grid-options.js",
|
|
45
|
+
"./grid-options.css": "./CanopyX.Html/Assets/canopyx-grid-options.css",
|
|
43
46
|
"./pager.js": "./CanopyX.Html/Assets/canopyx-pager.js",
|
|
44
47
|
"./pager.css": "./CanopyX.Html/Assets/canopyx-pager.css",
|
|
45
48
|
"./enhance.js": "./CanopyX.Html/Assets/canopyx-enhance.js",
|
|
@@ -132,10 +135,13 @@
|
|
|
132
135
|
"CanopyX.Html/Assets/canopyx-reporting-module.mjs",
|
|
133
136
|
"CanopyX.Html/Assets/canopyx-reporting.js",
|
|
134
137
|
"CanopyX.Html/Assets/canopyx-reporting.css",
|
|
138
|
+
"CanopyX.Html/Assets/canopyx-presenters.js",
|
|
135
139
|
"CanopyX.Html/Assets/canopyx-filter-editor.js",
|
|
136
140
|
"CanopyX.Html/Assets/canopyx-filter-editor.css",
|
|
137
141
|
"CanopyX.Html/Assets/canopyx-export.js",
|
|
138
142
|
"CanopyX.Html/Assets/canopyx-history.js",
|
|
143
|
+
"CanopyX.Html/Assets/canopyx-grid-options.js",
|
|
144
|
+
"CanopyX.Html/Assets/canopyx-grid-options.css",
|
|
139
145
|
"CanopyX.Html/Assets/canopyx-pager.js",
|
|
140
146
|
"CanopyX.Html/Assets/canopyx-pager.css",
|
|
141
147
|
"CanopyX.Html/Assets/canopyx-enhance.js",
|