@design.estate/dees-catalog 3.76.1 → 3.77.0
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/dist_bundle/bundle.js +50 -46
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/00group-dataview/dees-table/dees-table.js +28 -3
- package/dist_ts_web/elements/00group-dataview/dees-table/styles.js +28 -1
- package/dist_ts_web/elements/00group-dataview/dees-table/types.d.ts +15 -0
- package/dist_ts_web/elements/00group-input/dees-input-dropdown/dees-input-dropdown.demo.js +1 -7
- package/dist_ts_web/elements/00group-input/dees-input-iban/dees-input-iban.demo.js +1 -7
- package/dist_ts_web/elements/00group-input/dees-input-phone/dees-input-phone.demo.js +1 -7
- package/dist_ts_web/elements/00group-input/dees-input-quantityselector/dees-input-quantityselector.demo.js +1 -7
- package/dist_ts_web/elements/00group-input/dees-input-radiogroup/dees-input-radiogroup.demo.js +1 -7
- package/dist_ts_web/elements/00group-input/dees-input-text/dees-input-text.demo.js +1 -7
- package/dist_ts_web/elements/00group-input/dees-input-typelist/dees-input-typelist.demo.js +1 -7
- package/dist_watch/bundle.js +442 -449
- package/dist_watch/bundle.js.map +2 -2
- package/package.json +1 -1
- package/readme.md +19 -12
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-dataview/dees-table/dees-table.ts +28 -2
- package/ts_web/elements/00group-dataview/dees-table/styles.ts +33 -0
- package/ts_web/elements/00group-dataview/dees-table/types.ts +19 -0
- package/ts_web/elements/00group-input/dees-input-dropdown/dees-input-dropdown.demo.ts +0 -6
- package/ts_web/elements/00group-input/dees-input-iban/dees-input-iban.demo.ts +0 -6
- package/ts_web/elements/00group-input/dees-input-phone/dees-input-phone.demo.ts +0 -6
- package/ts_web/elements/00group-input/dees-input-quantityselector/dees-input-quantityselector.demo.ts +0 -6
- package/ts_web/elements/00group-input/dees-input-radiogroup/dees-input-radiogroup.demo.ts +0 -6
- package/ts_web/elements/00group-input/dees-input-text/dees-input-text.demo.ts +0 -6
- package/ts_web/elements/00group-input/dees-input-typelist/dees-input-typelist.demo.ts +0 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@design.estate/dees-catalog",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.77.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
|
|
6
6
|
"main": "dist_ts_web/index.js",
|
package/readme.md
CHANGED
|
@@ -59,8 +59,8 @@ For developers working on this library, please refer to the [UI Components Playb
|
|
|
59
59
|
| **Forms** | [`DeesForm`](#deesform), [`DeesInputText`](#deesinputtext), [`DeesInputCheckbox`](#deesinputcheckbox), [`DeesInputDropdown`](#deesinputdropdown), [`DeesInputRadiogroup`](#deesinputradiogroup), [`DeesInputFileupload`](#deesinputfileupload), [`DeesInputIban`](#deesinputiban), [`DeesInputPhone`](#deesinputphone), [`DeesInputQuantitySelector`](#deesinputquantityselector), [`DeesInputMultitoggle`](#deesinputmultitoggle), [`DeesInputToggle`](#deesinputtoggle), [`DeesInputTags`](#deesinputtags), [`DeesInputTypelist`](#deesinputtypelist), [`DeesInputList`](#deesinputlist), [`DeesInputProfilepicture`](#deesinputprofilepicture), [`DeesInputRichtext`](#deesinputrichtext), [`DeesInputWysiwyg`](#deesinputwysiwyg), [`DeesInputDatepicker`](#deesinputdatepicker), [`DeesInputSearchselect`](#deesinputsearchselect), [`DeesInputCode`](#deesinputcode), [`DeesFormSubmit`](#deesformsubmit) |
|
|
60
60
|
| **App Shell (Layout)** | [`DeesAppui`](#deesappui-️), [`DeesAppuiMainmenu`](#deesappuimainmenu), [`DeesAppuiSecondarymenu`](#deesappuisecondarymenu), [`DeesAppuiMaincontent`](#deesappuimaincontent), [`DeesAppuiAppbar`](#deesappuiappbar), [`DeesAppuiActivitylog`](#deesappuiactivitylog), [`DeesAppuiBottombar`](#deesappuibottombar), [`DeesAppuiProfiledropdown`](#deesappuiprofiledropdown), [`DeesAppuiTabs`](#deesappuitabs), [`DeesMobileNavigation`](#deesmobilenavigation), [`DeesDashboardGrid`](#deesdashboardgrid) |
|
|
61
61
|
| **Data Display** | [`DeesTable`](#deestable), [`DeesDataviewCodebox`](#deesdataviewcodebox), [`DeesDataviewStatusobject`](#deesdataviewstatusobject), [`DeesPdf`](#deespdf), [`DeesStatsGrid`](#deesstatsgrid), [`DeesPagination`](#deespagination), [`DeesStorageBrowser`](#deesstorgebrowser) |
|
|
62
|
-
| **Media &
|
|
63
|
-
| **Visualization** | [`DeesChartArea`](#deeschartarea), [`DeesChartLog`](#deeschartlog) |
|
|
62
|
+
| **Media & Thumbnails** | [`DeesThumbnailPdf`](#deesthumbnailpdf), [`DeesThumbnailImage`](#deesthumbnailimage), [`DeesThumbnailAudio`](#deesthumbnailaudio), [`DeesThumbnailVideo`](#deesthumbnalvideo), [`DeesThumbnailNote`](#deesthumbnailnote), [`DeesThumbnailFolder`](#deesthumbnailfolder), [`DeesPreview`](#deespreview), [`DeesPdfViewer`](#deespdfviewer), [`DeesImageViewer`](#deesimageviewer), [`DeesAudioViewer`](#deesaudioviewer), [`DeesVideoViewer`](#deesvideoviewer) |
|
|
63
|
+
| **Visualization** | [`DeesChartArea`](#deeschartarea), [`DeesChartBar`](#deeschartbar), [`DeesChartDonut`](#deeschartdonut), [`DeesChartGauge`](#deeschartgauge), [`DeesChartRadar`](#deeschartradar), [`DeesChartLog`](#deeschartlog) |
|
|
64
64
|
| **Dialogs & Overlays** | [`DeesModal`](#deesmodal), [`DeesContextmenu`](#deescontextmenu), [`DeesSpeechbubble`](#deesspeechbubble), [`DeesWindowlayer`](#deeswindowlayer) |
|
|
65
65
|
| **Navigation** | [`DeesStepper`](#deesstepper), [`DeesProgressbar`](#deesprogressbar) |
|
|
66
66
|
| **Workspace / IDE** | [`DeesWorkspace`](#deesworkspace), [`DeesWorkspaceMonaco`](#deesworkspacemonaco), [`DeesWorkspaceDiffEditor`](#deesworkspacediffeditor), [`DeesWorkspaceFiletree`](#deesworkspacefiletree), [`DeesWorkspaceTerminal`](#deesworkspaceterminal), [`DeesWorkspaceTerminalPreview`](#deesworkspaceterminalpreview), [`DeesWorkspaceMarkdown`](#deesworkspacemarkdown), [`DeesWorkspaceMarkdownoutlet`](#deesworkspacemarkdownoutlet), [`DeesWorkspaceBottombar`](#deesworkspacebottombar) |
|
|
@@ -143,14 +143,13 @@ Display icons from FontAwesome and Lucide icon libraries with library prefixes.
|
|
|
143
143
|
```
|
|
144
144
|
|
|
145
145
|
#### `DeesLabel`
|
|
146
|
-
Text label component with optional
|
|
146
|
+
Text label component with optional required indicator and info tooltip. Used internally by all input components.
|
|
147
147
|
|
|
148
148
|
```typescript
|
|
149
149
|
<dees-label
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
size="medium" // Options: small, medium, large
|
|
150
|
+
.label=${'Email Address'} // Label text
|
|
151
|
+
.required=${true} // Optional: shows red asterisk
|
|
152
|
+
.infoText=${'We will never share your email'} // Optional: shows hover info icon with tooltip
|
|
154
153
|
></dees-label>
|
|
155
154
|
```
|
|
156
155
|
|
|
@@ -321,7 +320,7 @@ Container component for form elements with built-in validation and data handling
|
|
|
321
320
|
```
|
|
322
321
|
|
|
323
322
|
#### `DeesInputText`
|
|
324
|
-
Text input field with validation and
|
|
323
|
+
Text input field with validation, info tooltips, description text, and context menu (Cut/Copy/Paste/Select All).
|
|
325
324
|
|
|
326
325
|
```typescript
|
|
327
326
|
<dees-input-text
|
|
@@ -330,10 +329,20 @@ Text input field with validation and formatting options.
|
|
|
330
329
|
value="initial@value.com" // Initial value
|
|
331
330
|
required // Makes the field required
|
|
332
331
|
disabled // Disables the input
|
|
333
|
-
|
|
332
|
+
.infoText=${'Hover icon tooltip text'} // Shows ⓘ icon on label with hover tooltip
|
|
333
|
+
.description=${'Permanent help text below the input'} // Small text below the input
|
|
334
|
+
.validationFunction=${(value) => { // Auto-validates on every keystroke
|
|
335
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
336
|
+
if (emailRegex.test(value)) {
|
|
337
|
+
return { valid: true, message: 'Email is valid' };
|
|
338
|
+
}
|
|
339
|
+
return { valid: false, message: 'Please enter a valid email' };
|
|
340
|
+
}}
|
|
334
341
|
></dees-input-text>
|
|
335
342
|
```
|
|
336
343
|
|
|
344
|
+
> 💡 **All input components** share these common properties from `DeesInputBase`: `key`, `label`, `required`, `disabled`, `infoText`, `description`, `layoutMode`, `labelPosition`.
|
|
345
|
+
|
|
337
346
|
#### `DeesInputCheckbox`
|
|
338
347
|
Checkbox input component for boolean values.
|
|
339
348
|
|
|
@@ -1780,7 +1789,7 @@ interface ITileFolderItem {
|
|
|
1780
1789
|
|
|
1781
1790
|
## License and Legal Information
|
|
1782
1791
|
|
|
1783
|
-
This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [LICENSE](./
|
|
1792
|
+
This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [LICENSE](./LICENSE) file.
|
|
1784
1793
|
|
|
1785
1794
|
**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
|
|
1786
1795
|
|
|
@@ -1798,5 +1807,3 @@ Registered at District Court Bremen HRB 35230 HB, Germany
|
|
|
1798
1807
|
For any legal inquiries or further information, please contact us via email at hello@task.vc.
|
|
1799
1808
|
|
|
1800
1809
|
By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
|
|
1801
|
-
|
|
1802
|
-
By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@design.estate/dees-catalog',
|
|
6
|
-
version: '3.
|
|
6
|
+
version: '3.77.0',
|
|
7
7
|
description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
|
|
8
8
|
}
|
|
@@ -695,6 +695,7 @@ export class DeesTable<T> extends DeesElement {
|
|
|
695
695
|
this.__editingCell?.rowId === rowId &&
|
|
696
696
|
this.__editingCell?.colKey === editKey;
|
|
697
697
|
const isFlashing = !!flashSet?.has(editKey);
|
|
698
|
+
const useFlashBorder = isFlashing && !!col.flashBorder;
|
|
698
699
|
const cellClasses = [
|
|
699
700
|
isEditable ? 'editable' : '',
|
|
700
701
|
isFocused && !isEditing ? 'focused' : '',
|
|
@@ -702,8 +703,13 @@ export class DeesTable<T> extends DeesElement {
|
|
|
702
703
|
]
|
|
703
704
|
.filter(Boolean)
|
|
704
705
|
.join(' ');
|
|
706
|
+
const flashClass = isFlashing
|
|
707
|
+
? useFlashBorder
|
|
708
|
+
? 'innerCellContainer flashing-border'
|
|
709
|
+
: 'innerCellContainer flashing'
|
|
710
|
+
: 'innerCellContainer';
|
|
705
711
|
const innerHtml = html`<div
|
|
706
|
-
class=${
|
|
712
|
+
class=${flashClass}
|
|
707
713
|
>
|
|
708
714
|
${isEditing ? this.renderCellEditor(itemArg, col) : content}
|
|
709
715
|
</div>`;
|
|
@@ -1362,6 +1368,7 @@ export class DeesTable<T> extends DeesElement {
|
|
|
1362
1368
|
|
|
1363
1369
|
const effectiveColumns = this.__getEffectiveColumns();
|
|
1364
1370
|
const visibleCols = effectiveColumns.filter((c) => !c.hidden);
|
|
1371
|
+
const colByKey = new Map<string, Column<T>>(visibleCols.map((c) => [String(c.key), c]));
|
|
1365
1372
|
const nextSnapshot = new Map<string, Map<string, unknown>>();
|
|
1366
1373
|
const newlyFlashing = new Map<string, Set<string>>();
|
|
1367
1374
|
|
|
@@ -1376,7 +1383,26 @@ export class DeesTable<T> extends DeesElement {
|
|
|
1376
1383
|
const prevCells = this.__prevSnapshot?.get(rowId);
|
|
1377
1384
|
if (!prevCells) continue; // new row — not an "update"
|
|
1378
1385
|
for (const [colKey, nextVal] of cellMap) {
|
|
1379
|
-
|
|
1386
|
+
const prevVal = prevCells.get(colKey);
|
|
1387
|
+
|
|
1388
|
+
// Look up the column definition for flash options.
|
|
1389
|
+
const colDef = colByKey.get(colKey);
|
|
1390
|
+
|
|
1391
|
+
// Determine whether the cell changed.
|
|
1392
|
+
let changed: boolean;
|
|
1393
|
+
if (colDef?.flashCompare) {
|
|
1394
|
+
// Explicit custom comparator — caller decides.
|
|
1395
|
+
changed = colDef.flashCompare(prevVal, nextVal);
|
|
1396
|
+
} else if (nextVal !== null && nextVal !== undefined && typeof nextVal === 'object') {
|
|
1397
|
+
// Non-primitive (TemplateResult, object, array, etc.) — skip by
|
|
1398
|
+
// default. Custom renderings don't benefit from the text-color
|
|
1399
|
+
// flash and reference inequality causes false positives.
|
|
1400
|
+
changed = false;
|
|
1401
|
+
} else {
|
|
1402
|
+
changed = prevVal !== nextVal;
|
|
1403
|
+
}
|
|
1404
|
+
|
|
1405
|
+
if (changed) {
|
|
1380
1406
|
// Don't flash the cell the user is actively editing.
|
|
1381
1407
|
if (
|
|
1382
1408
|
this.__editingCell &&
|
|
@@ -404,11 +404,44 @@ export const tableStyles: CSSResult[] = [
|
|
|
404
404
|
100% { color: var(--dees-color-text-primary); }
|
|
405
405
|
}
|
|
406
406
|
|
|
407
|
+
/* Border/background flash variant for cells with styled content
|
|
408
|
+
(badges, icons, custom components) where a text-color animation
|
|
409
|
+
would be invisible. Activated via flashBorder on Column. */
|
|
410
|
+
.innerCellContainer.flashing-border {
|
|
411
|
+
animation: dees-table-cell-flash-border
|
|
412
|
+
var(--dees-table-flash-duration, 900ms)
|
|
413
|
+
var(--dees-table-flash-easing);
|
|
414
|
+
border-radius: 3px;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
@keyframes dees-table-cell-flash-border {
|
|
418
|
+
0%,
|
|
419
|
+
35% {
|
|
420
|
+
box-shadow: inset 0 0 0 1.5px var(--dees-table-flash-color);
|
|
421
|
+
background: ${cssManager.bdTheme(
|
|
422
|
+
'hsl(45 93% 62% / 0.10)',
|
|
423
|
+
'hsl(45 93% 62% / 0.08)'
|
|
424
|
+
)};
|
|
425
|
+
}
|
|
426
|
+
100% {
|
|
427
|
+
box-shadow: inset 0 0 0 1.5px transparent;
|
|
428
|
+
background: transparent;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
|
|
407
432
|
@media (prefers-reduced-motion: reduce) {
|
|
408
433
|
.innerCellContainer.flashing {
|
|
409
434
|
animation: none;
|
|
410
435
|
color: var(--dees-table-flash-color);
|
|
411
436
|
}
|
|
437
|
+
.innerCellContainer.flashing-border {
|
|
438
|
+
animation: none;
|
|
439
|
+
box-shadow: inset 0 0 0 1.5px var(--dees-table-flash-color);
|
|
440
|
+
background: ${cssManager.bdTheme(
|
|
441
|
+
'hsl(45 93% 62% / 0.10)',
|
|
442
|
+
'hsl(45 93% 62% / 0.08)'
|
|
443
|
+
)};
|
|
444
|
+
}
|
|
412
445
|
}
|
|
413
446
|
|
|
414
447
|
/* Dev-time warning banner shown when highlight-updates="flash" but
|
|
@@ -65,6 +65,25 @@ export interface Column<T = any> {
|
|
|
65
65
|
parse?: (editorValue: any, row: T) => any;
|
|
66
66
|
/** Validate the parsed value before commit. Return string for error, true/void for ok. */
|
|
67
67
|
validate?: (value: any, row: T) => true | string | void;
|
|
68
|
+
|
|
69
|
+
// ─── Flash highlight options ───
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Custom comparison for flash-on-update diffing.
|
|
73
|
+
* Return `true` if the cell should flash (i.e. the values differ).
|
|
74
|
+
* When absent, non-primitive cell values are skipped entirely
|
|
75
|
+
* (only strings, numbers, booleans, null, and undefined are diffed).
|
|
76
|
+
*/
|
|
77
|
+
flashCompare?: (prevVal: any, nextVal: any) => boolean;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* When `true`, flash this cell with a border/background pulse instead of
|
|
81
|
+
* the default text-color animation. Useful for cells containing styled
|
|
82
|
+
* badges, icons, or custom web-component renderings where a text-color
|
|
83
|
+
* change would be invisible.
|
|
84
|
+
* @default false
|
|
85
|
+
*/
|
|
86
|
+
flashBorder?: boolean;
|
|
68
87
|
}
|
|
69
88
|
|
|
70
89
|
/**
|