@design.estate/dees-catalog 3.76.0 → 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 +477 -451
- 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-checkbox/dees-input-checkbox.demo.js +96 -94
- package/dist_ts_web/elements/00group-input/dees-input-dropdown/dees-input-dropdown.demo.js +27 -31
- package/dist_ts_web/elements/00group-input/dees-input-fileupload/demo.js +36 -36
- package/dist_ts_web/elements/00group-input/dees-input-iban/dees-input-iban.demo.js +20 -24
- package/dist_ts_web/elements/00group-input/dees-input-list/dees-input-list.demo.js +22 -20
- package/dist_ts_web/elements/00group-input/dees-input-multitoggle/dees-input-multitoggle.demo.js +67 -65
- package/dist_ts_web/elements/00group-input/dees-input-phone/dees-input-phone.demo.js +20 -24
- package/dist_ts_web/elements/00group-input/dees-input-quantityselector/dees-input-quantityselector.demo.js +5 -11
- package/dist_ts_web/elements/00group-input/dees-input-radiogroup/dees-input-radiogroup.demo.js +54 -54
- package/dist_ts_web/elements/00group-input/dees-input-tags/dees-input-tags.demo.js +21 -19
- package/dist_ts_web/elements/00group-input/dees-input-text/dees-input-text.demo.js +37 -41
- package/dist_ts_web/elements/00group-input/dees-input-toggle/dees-input-toggle.demo.js +35 -33
- package/dist_ts_web/elements/00group-input/dees-input-typelist/dees-input-typelist.demo.js +19 -25
- 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-checkbox/dees-input-checkbox.demo.ts +95 -93
- package/ts_web/elements/00group-input/dees-input-dropdown/dees-input-dropdown.demo.ts +40 -44
- package/ts_web/elements/00group-input/dees-input-fileupload/demo.ts +35 -35
- package/ts_web/elements/00group-input/dees-input-iban/dees-input-iban.demo.ts +19 -23
- package/ts_web/elements/00group-input/dees-input-list/dees-input-list.demo.ts +21 -19
- package/ts_web/elements/00group-input/dees-input-multitoggle/dees-input-multitoggle.demo.ts +66 -64
- package/ts_web/elements/00group-input/dees-input-phone/dees-input-phone.demo.ts +19 -23
- package/ts_web/elements/00group-input/dees-input-quantityselector/dees-input-quantityselector.demo.ts +4 -10
- package/ts_web/elements/00group-input/dees-input-radiogroup/dees-input-radiogroup.demo.ts +53 -53
- package/ts_web/elements/00group-input/dees-input-tags/dees-input-tags.demo.ts +20 -18
- package/ts_web/elements/00group-input/dees-input-text/dees-input-text.demo.ts +36 -40
- package/ts_web/elements/00group-input/dees-input-toggle/dees-input-toggle.demo.ts +34 -32
- package/ts_web/elements/00group-input/dees-input-typelist/dees-input-typelist.demo.ts +18 -24
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
|
/**
|
|
@@ -111,90 +111,92 @@ export const demoFunc = () => html`
|
|
|
111
111
|
|
|
112
112
|
<div class="demo-container">
|
|
113
113
|
<dees-panel .title=${'Basic Checkboxes'} .subtitle=${'Simple checkbox examples with various labels'}>
|
|
114
|
-
<
|
|
115
|
-
<dees-input-checkbox
|
|
116
|
-
.label=${'I agree to the Terms and Conditions'}
|
|
114
|
+
<dees-form>
|
|
115
|
+
<dees-input-checkbox
|
|
116
|
+
.label=${'I agree to the Terms and Conditions'}
|
|
117
117
|
.value=${true}
|
|
118
118
|
.key=${'terms'}
|
|
119
119
|
></dees-input-checkbox>
|
|
120
|
-
|
|
121
|
-
<dees-input-checkbox
|
|
122
|
-
.label=${'Subscribe to newsletter'}
|
|
120
|
+
|
|
121
|
+
<dees-input-checkbox
|
|
122
|
+
.label=${'Subscribe to newsletter'}
|
|
123
123
|
.value=${false}
|
|
124
124
|
.key=${'newsletter'}
|
|
125
125
|
></dees-input-checkbox>
|
|
126
|
-
|
|
127
|
-
<dees-input-checkbox
|
|
128
|
-
.label=${'Enable notifications'}
|
|
126
|
+
|
|
127
|
+
<dees-input-checkbox
|
|
128
|
+
.label=${'Enable notifications'}
|
|
129
129
|
.value=${false}
|
|
130
130
|
.description=${'Receive email updates about your account'}
|
|
131
131
|
.key=${'notifications'}
|
|
132
132
|
></dees-input-checkbox>
|
|
133
|
-
</
|
|
133
|
+
</dees-form>
|
|
134
134
|
</dees-panel>
|
|
135
135
|
|
|
136
136
|
<dees-panel .title=${'Checkbox States'} .subtitle=${'Different checkbox states and configurations'}>
|
|
137
|
-
<
|
|
138
|
-
<dees-input-checkbox
|
|
139
|
-
.label=${'Default state'}
|
|
137
|
+
<dees-form>
|
|
138
|
+
<dees-input-checkbox
|
|
139
|
+
.label=${'Default state'}
|
|
140
140
|
.value=${false}
|
|
141
141
|
></dees-input-checkbox>
|
|
142
|
-
|
|
143
|
-
<dees-input-checkbox
|
|
144
|
-
.label=${'Checked state'}
|
|
142
|
+
|
|
143
|
+
<dees-input-checkbox
|
|
144
|
+
.label=${'Checked state'}
|
|
145
145
|
.value=${true}
|
|
146
146
|
></dees-input-checkbox>
|
|
147
|
-
|
|
148
|
-
<dees-input-checkbox
|
|
149
|
-
.label=${'Disabled unchecked'}
|
|
147
|
+
|
|
148
|
+
<dees-input-checkbox
|
|
149
|
+
.label=${'Disabled unchecked'}
|
|
150
150
|
.value=${false}
|
|
151
151
|
.disabled=${true}
|
|
152
152
|
></dees-input-checkbox>
|
|
153
|
-
|
|
154
|
-
<dees-input-checkbox
|
|
155
|
-
.label=${'Disabled checked'}
|
|
153
|
+
|
|
154
|
+
<dees-input-checkbox
|
|
155
|
+
.label=${'Disabled checked'}
|
|
156
156
|
.value=${true}
|
|
157
157
|
.disabled=${true}
|
|
158
158
|
></dees-input-checkbox>
|
|
159
|
-
|
|
160
|
-
<dees-input-checkbox
|
|
161
|
-
.label=${'Required checkbox'}
|
|
159
|
+
|
|
160
|
+
<dees-input-checkbox
|
|
161
|
+
.label=${'Required checkbox'}
|
|
162
162
|
.required=${true}
|
|
163
163
|
.key=${'required'}
|
|
164
164
|
></dees-input-checkbox>
|
|
165
|
-
</
|
|
165
|
+
</dees-form>
|
|
166
166
|
</dees-panel>
|
|
167
167
|
|
|
168
168
|
<dees-panel .title=${'Horizontal Layout'} .subtitle=${'Checkboxes arranged horizontally for compact forms'}>
|
|
169
|
-
<
|
|
170
|
-
<
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
169
|
+
<dees-form>
|
|
170
|
+
<div class="horizontal-checkboxes">
|
|
171
|
+
<dees-input-checkbox
|
|
172
|
+
.label=${'Option A'}
|
|
173
|
+
.value=${false}
|
|
174
|
+
.layoutMode=${'horizontal'}
|
|
175
|
+
.key=${'optionA'}
|
|
176
|
+
></dees-input-checkbox>
|
|
177
|
+
|
|
178
|
+
<dees-input-checkbox
|
|
179
|
+
.label=${'Option B'}
|
|
180
|
+
.value=${true}
|
|
181
|
+
.layoutMode=${'horizontal'}
|
|
182
|
+
.key=${'optionB'}
|
|
183
|
+
></dees-input-checkbox>
|
|
184
|
+
|
|
185
|
+
<dees-input-checkbox
|
|
186
|
+
.label=${'Option C'}
|
|
187
|
+
.value=${false}
|
|
188
|
+
.layoutMode=${'horizontal'}
|
|
189
|
+
.key=${'optionC'}
|
|
190
|
+
></dees-input-checkbox>
|
|
191
|
+
|
|
192
|
+
<dees-input-checkbox
|
|
193
|
+
.label=${'Option D'}
|
|
194
|
+
.value=${true}
|
|
195
|
+
.layoutMode=${'horizontal'}
|
|
196
|
+
.key=${'optionD'}
|
|
197
|
+
></dees-input-checkbox>
|
|
198
|
+
</div>
|
|
199
|
+
</dees-form>
|
|
198
200
|
</dees-panel>
|
|
199
201
|
|
|
200
202
|
<dees-panel .title=${'Feature Selection Example'} .subtitle=${'Common use case for feature toggles with batch operations'}>
|
|
@@ -204,76 +206,76 @@ export const demoFunc = () => html`
|
|
|
204
206
|
</div>
|
|
205
207
|
|
|
206
208
|
<div class="feature-list">
|
|
207
|
-
<
|
|
208
|
-
<dees-input-checkbox
|
|
209
|
-
.label=${'Dark Mode Support'}
|
|
209
|
+
<dees-form>
|
|
210
|
+
<dees-input-checkbox
|
|
211
|
+
.label=${'Dark Mode Support'}
|
|
210
212
|
.value=${true}
|
|
211
213
|
.key=${'feature1'}
|
|
212
214
|
></dees-input-checkbox>
|
|
213
|
-
|
|
214
|
-
<dees-input-checkbox
|
|
215
|
-
.label=${'Email Notifications'}
|
|
215
|
+
|
|
216
|
+
<dees-input-checkbox
|
|
217
|
+
.label=${'Email Notifications'}
|
|
216
218
|
.value=${true}
|
|
217
219
|
.key=${'feature2'}
|
|
218
220
|
></dees-input-checkbox>
|
|
219
|
-
|
|
220
|
-
<dees-input-checkbox
|
|
221
|
-
.label=${'Two-Factor Authentication'}
|
|
221
|
+
|
|
222
|
+
<dees-input-checkbox
|
|
223
|
+
.label=${'Two-Factor Authentication'}
|
|
222
224
|
.value=${false}
|
|
223
225
|
.key=${'feature3'}
|
|
224
226
|
></dees-input-checkbox>
|
|
225
|
-
|
|
226
|
-
<dees-input-checkbox
|
|
227
|
-
.label=${'API Access'}
|
|
227
|
+
|
|
228
|
+
<dees-input-checkbox
|
|
229
|
+
.label=${'API Access'}
|
|
228
230
|
.value=${true}
|
|
229
231
|
.key=${'feature4'}
|
|
230
232
|
></dees-input-checkbox>
|
|
231
|
-
|
|
232
|
-
<dees-input-checkbox
|
|
233
|
-
.label=${'Advanced Analytics'}
|
|
233
|
+
|
|
234
|
+
<dees-input-checkbox
|
|
235
|
+
.label=${'Advanced Analytics'}
|
|
234
236
|
.value=${false}
|
|
235
237
|
.key=${'feature5'}
|
|
236
238
|
></dees-input-checkbox>
|
|
237
|
-
</
|
|
239
|
+
</dees-form>
|
|
238
240
|
</div>
|
|
239
241
|
</dees-panel>
|
|
240
242
|
|
|
241
243
|
<dees-panel .title=${'Privacy Settings Example'} .subtitle=${'Checkboxes in a typical form context'}>
|
|
242
244
|
<div class="form-section">
|
|
243
245
|
<h4 class="section-title">Privacy Preferences</h4>
|
|
244
|
-
|
|
245
|
-
<
|
|
246
|
-
<dees-input-checkbox
|
|
247
|
-
.label=${'Share analytics data'}
|
|
246
|
+
|
|
247
|
+
<dees-form>
|
|
248
|
+
<dees-input-checkbox
|
|
249
|
+
.label=${'Share analytics data'}
|
|
248
250
|
.value=${true}
|
|
249
251
|
.description=${'Help us improve by sharing anonymous usage data'}
|
|
250
252
|
></dees-input-checkbox>
|
|
251
|
-
|
|
252
|
-
<dees-input-checkbox
|
|
253
|
-
.label=${'Personalized recommendations'}
|
|
253
|
+
|
|
254
|
+
<dees-input-checkbox
|
|
255
|
+
.label=${'Personalized recommendations'}
|
|
254
256
|
.value=${true}
|
|
255
257
|
.description=${'Get suggestions based on your activity'}
|
|
256
258
|
></dees-input-checkbox>
|
|
257
|
-
|
|
258
|
-
<dees-input-checkbox
|
|
259
|
-
.label=${'Marketing communications'}
|
|
259
|
+
|
|
260
|
+
<dees-input-checkbox
|
|
261
|
+
.label=${'Marketing communications'}
|
|
260
262
|
.value=${false}
|
|
261
263
|
.description=${'Receive promotional emails and special offers'}
|
|
262
264
|
></dees-input-checkbox>
|
|
263
|
-
|
|
264
|
-
<dees-input-checkbox
|
|
265
|
-
.label=${'Third-party integrations'}
|
|
265
|
+
|
|
266
|
+
<dees-input-checkbox
|
|
267
|
+
.label=${'Third-party integrations'}
|
|
266
268
|
.value=${false}
|
|
267
269
|
.description=${'Allow approved partners to access your data'}
|
|
268
270
|
></dees-input-checkbox>
|
|
269
|
-
</
|
|
271
|
+
</dees-form>
|
|
270
272
|
</div>
|
|
271
273
|
</dees-panel>
|
|
272
274
|
|
|
273
275
|
<dees-panel .title=${'Interactive Example'} .subtitle=${'Click checkboxes to see value changes'}>
|
|
274
|
-
<
|
|
275
|
-
<dees-input-checkbox
|
|
276
|
-
.label=${'Feature toggle'}
|
|
276
|
+
<dees-form>
|
|
277
|
+
<dees-input-checkbox
|
|
278
|
+
.label=${'Feature toggle'}
|
|
277
279
|
.value=${false}
|
|
278
280
|
@changeSubject=${(event: CustomEvent) => {
|
|
279
281
|
const output = document.querySelector('#checkbox-output');
|
|
@@ -283,9 +285,9 @@ export const demoFunc = () => html`
|
|
|
283
285
|
}
|
|
284
286
|
}}
|
|
285
287
|
></dees-input-checkbox>
|
|
286
|
-
|
|
287
|
-
<dees-input-checkbox
|
|
288
|
-
.label=${'Debug mode'}
|
|
288
|
+
|
|
289
|
+
<dees-input-checkbox
|
|
290
|
+
.label=${'Debug mode'}
|
|
289
291
|
.value=${false}
|
|
290
292
|
@changeSubject=${(event: CustomEvent) => {
|
|
291
293
|
const output = document.querySelector('#debug-output');
|
|
@@ -295,8 +297,8 @@ export const demoFunc = () => html`
|
|
|
295
297
|
}
|
|
296
298
|
}}
|
|
297
299
|
></dees-input-checkbox>
|
|
298
|
-
</
|
|
299
|
-
|
|
300
|
+
</dees-form>
|
|
301
|
+
|
|
300
302
|
<div class="interactive-section">
|
|
301
303
|
<div id="checkbox-output" class="output-text">Feature is disabled</div>
|
|
302
304
|
<div id="debug-output" class="output-text" style="margin-top: 8px;">Debug mode: OFF</div>
|
|
@@ -31,12 +31,6 @@ export const demoFunc = () => html`
|
|
|
31
31
|
flex-wrap: wrap;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
.input-group {
|
|
35
|
-
display: flex;
|
|
36
|
-
flex-direction: column;
|
|
37
|
-
gap: 16px;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
34
|
.spacer {
|
|
41
35
|
height: 200px;
|
|
42
36
|
display: flex;
|
|
@@ -69,7 +63,7 @@ export const demoFunc = () => html`
|
|
|
69
63
|
}
|
|
70
64
|
}}>
|
|
71
65
|
<dees-panel .title=${'1. Basic Dropdowns'} .subtitle=${'Standard dropdown with search functionality and various options'}>
|
|
72
|
-
<
|
|
66
|
+
<dees-form>
|
|
73
67
|
<dees-input-dropdown
|
|
74
68
|
.label=${'Select Country'}
|
|
75
69
|
.description=${'Choose the country where your business is registered'}
|
|
@@ -95,7 +89,7 @@ export const demoFunc = () => html`
|
|
|
95
89
|
{ option: 'Guest', key: 'guest' }
|
|
96
90
|
]}
|
|
97
91
|
></dees-input-dropdown>
|
|
98
|
-
</
|
|
92
|
+
</dees-form>
|
|
99
93
|
</dees-panel>
|
|
100
94
|
</dees-demowrapper>
|
|
101
95
|
|
|
@@ -136,40 +130,42 @@ export const demoFunc = () => html`
|
|
|
136
130
|
});
|
|
137
131
|
}}>
|
|
138
132
|
<dees-panel .title=${'3. Horizontal Layout'} .subtitle=${'Multiple dropdowns in a horizontal layout for compact forms'}>
|
|
139
|
-
<
|
|
140
|
-
<
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
{
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
{
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
{
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
133
|
+
<dees-form>
|
|
134
|
+
<div class="horizontal-group">
|
|
135
|
+
<dees-input-dropdown
|
|
136
|
+
.label=${'Department'}
|
|
137
|
+
.layoutMode=${'horizontal'}
|
|
138
|
+
.options=${[
|
|
139
|
+
{ option: 'Engineering', key: 'eng' },
|
|
140
|
+
{ option: 'Design', key: 'design' },
|
|
141
|
+
{ option: 'Marketing', key: 'marketing' },
|
|
142
|
+
{ option: 'Sales', key: 'sales' }
|
|
143
|
+
]}
|
|
144
|
+
></dees-input-dropdown>
|
|
145
|
+
|
|
146
|
+
<dees-input-dropdown
|
|
147
|
+
.label=${'Team Size'}
|
|
148
|
+
.layoutMode=${'horizontal'}
|
|
149
|
+
.enableSearch=${false}
|
|
150
|
+
.options=${[
|
|
151
|
+
{ option: '1-5', key: 'small' },
|
|
152
|
+
{ option: '6-20', key: 'medium' },
|
|
153
|
+
{ option: '21-50', key: 'large' },
|
|
154
|
+
{ option: '50+', key: 'xlarge' }
|
|
155
|
+
]}
|
|
156
|
+
></dees-input-dropdown>
|
|
157
|
+
|
|
158
|
+
<dees-input-dropdown
|
|
159
|
+
.label=${'Location'}
|
|
160
|
+
.layoutMode=${'horizontal'}
|
|
161
|
+
.options=${[
|
|
162
|
+
{ option: 'Remote', key: 'remote' },
|
|
163
|
+
{ option: 'On-site', key: 'onsite' },
|
|
164
|
+
{ option: 'Hybrid', key: 'hybrid' }
|
|
165
|
+
]}
|
|
166
|
+
></dees-input-dropdown>
|
|
167
|
+
</div>
|
|
168
|
+
</dees-form>
|
|
173
169
|
</dees-panel>
|
|
174
170
|
</dees-demowrapper>
|
|
175
171
|
|
|
@@ -185,7 +181,7 @@ export const demoFunc = () => html`
|
|
|
185
181
|
}
|
|
186
182
|
}}>
|
|
187
183
|
<dees-panel .title=${'4. States'} .subtitle=${'Different states and configurations'}>
|
|
188
|
-
<
|
|
184
|
+
<dees-form>
|
|
189
185
|
<dees-input-dropdown
|
|
190
186
|
.label=${'Required Field'}
|
|
191
187
|
.required=${true}
|
|
@@ -204,7 +200,7 @@ export const demoFunc = () => html`
|
|
|
204
200
|
]}
|
|
205
201
|
.selectedOption=${{ option: 'Cannot Select', key: 'disabled' }}
|
|
206
202
|
></dees-input-dropdown>
|
|
207
|
-
</
|
|
203
|
+
</dees-form>
|
|
208
204
|
</dees-panel>
|
|
209
205
|
</dees-demowrapper>
|
|
210
206
|
|