Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 25f46162c5 | |||
| b84b0e7ce6 | |||
| 69840de3a6 | |||
| 85badfbd21 | |||
| 264e460365 | |||
| bfda6b75e7 | |||
| 825a74b810 | |||
| f6bf0f8a45 | |||
| 66661e05a9 | |||
| 162688cdb5 | |||
| 8158b791c7 | |||
| ed8167385f |
54
changelog.md
54
changelog.md
@@ -1,5 +1,59 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2026-01-27 - 3.41.1 - fix(dataview-codebox)
|
||||||
|
fix dees-dataview codebox layout to ensure full-height, proper flex behavior and scrolling; bump internal dependencies
|
||||||
|
|
||||||
|
- Updated CSS in ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.ts: added height:100%, box-sizing, display:flex and flex-direction:column on container, set flex-shrink on header elements, made code grid overflow:auto with flex:1 and min-height:0 to prevent overflow issues.
|
||||||
|
- Bumped dependencies in package.json: @design.estate/dees-domtools from ^2.3.7 to ^2.3.8 and @design.estate/dees-element from ^2.1.5 to ^2.1.6.
|
||||||
|
- Non-breaking visual/layout fix — suitable for a patch release.
|
||||||
|
|
||||||
|
## 2026-01-27 - 3.41.0 - feat(docs)
|
||||||
|
document new media & tile components and expand Workspace/IDE component docs; update component count to 90+
|
||||||
|
|
||||||
|
- Updated README component count from 70+ to 90+.
|
||||||
|
- Added Media & Tile components documentation (DeesTilePdf, DeesTileImage, DeesTileAudio, DeesTileVideo, DeesTileNote, DeesTileFolder, DeesPreview, DeesPdfViewer, DeesImageViewer, DeesAudioViewer, DeesVideoViewer).
|
||||||
|
- Expanded Workspace/IDE documentation and introduced workspace subcomponents (DeesWorkspace, DeesWorkspaceMonaco, DeesWorkspaceDiffEditor, DeesWorkspaceFiletree, DeesWorkspaceTerminal, DeesWorkspaceTerminalPreview, DeesWorkspaceMarkdown, DeesWorkspaceMarkdownoutlet, DeesWorkspaceBottombar).
|
||||||
|
- Enhanced Contextmenu docs to demonstrate nested submenus and programmatic API usage.
|
||||||
|
- Added ITileFolderItem interface example for tile folder items.
|
||||||
|
|
||||||
|
## 2026-01-27 - 3.40.0 - feat(dees-tile)
|
||||||
|
unify tile badge styling and markup; replace component-specific badge classes with shared tile-badge classes and update related imports/tests
|
||||||
|
|
||||||
|
- Add shared badge styles: .tile-badge-corner, .tile-badge-topright, .tile-badge and layout rules in dees-tile-shared/styles.ts
|
||||||
|
- Update tile components (audio, video, image, folder, note, pdf) to use new badge markup and remove duplicated badge CSS
|
||||||
|
- Shift badge positioning when a tile label is present (.tile-container:has(.tile-label))
|
||||||
|
- Remove older per-component badge rules (duration-badge, item-count-badge, dimension-badge, note-language/note-line-indicator, preview-page-indicator) and replace with unified classes
|
||||||
|
- Update tests to import dees-contextmenu and dees-dashboardgrid from new 00group-overlay / 00group-layout paths to reflect folder reorganization
|
||||||
|
|
||||||
|
## 2026-01-27 - 3.39.1 - fix(dees-tile-note)
|
||||||
|
use horizontal pointer position to scroll note body by computing percentage from clientX and element width instead of clientY and height
|
||||||
|
|
||||||
|
- Changed ts_web/elements/00group-media/dees-tile-note/component.ts: use x = e.clientX - rect.left and percentage = x / rect.width to drive scrollTop calculation instead of using vertical coordinates
|
||||||
|
- Fixes incorrect scroll mapping where vertical mouse position was used for horizontal scrolling interaction
|
||||||
|
|
||||||
|
## 2026-01-27 - 3.39.0 - feat(components)
|
||||||
|
add large set of new UI components and demos, reorganize groups, and bump a few dependencies
|
||||||
|
|
||||||
|
- Add Media viewers: dees-image-viewer, dees-audio-viewer, dees-video-viewer, DeesPdf/DeesPdfViewer and related PDF utilities (CanvasPool, PdfManager) and demos
|
||||||
|
- Introduce dees-preview composite that auto-detects content and delegates to appropriate viewers
|
||||||
|
- New Tile system (DeesTileBase) and tile components: dees-tile-pdf, dees-tile-image, dees-tile-audio, dees-tile-video, dees-tile-note, dees-tile-folder plus demos
|
||||||
|
- Add dashboard/grid system: dees-dashboardgrid with drag/resize, collision resolution, layout helpers, demos and utilities
|
||||||
|
- Data view additions: dees-table with lucene-like query parser, column utilities, and dees-statsgrid enhancements (including cpuCores visualization)
|
||||||
|
- New feedback & overlay components: dees-toast, dees-actionbar, dees-progressbar, dees-spinner, dees-badge and supporting demos/interfaces
|
||||||
|
- Many layout and utility components added or improved: dees-panel, dees-chips, dees-heading, dees-label, dees-pagination, dees-stepper, and associated demos
|
||||||
|
- Refactor project structure: components organized into 00group-* directories and demo metadata migrated from demoGroup to demoGroups (string[]); many import path updates to match new grouping
|
||||||
|
- Deprecations/notes: dees-pdf-preview and legacy dees-pdf marked as deprecated in favor of new viewers/tiles
|
||||||
|
- Dependency bumps in package.json: @design.estate/dees-wcctools -> ^3.8.0, @git.zone/tstest -> ^3.1.8
|
||||||
|
|
||||||
|
## 2026-01-26 - 3.38.0 - feat(appui)
|
||||||
|
add app shell and bottom bar APIs, new input components, and update README component listings and docs
|
||||||
|
|
||||||
|
- README: updated components count (80+ → 70+), reorganized categories (added App Shell / Pre-built Templates, renamed Workspace/IDE) and improved typography
|
||||||
|
- Document listing: added DeesActionbar, DeesInputToggle, DeesInputCode, DeesAppuiBottombar and other component entries
|
||||||
|
- Menu item interface: added closeable and onClose properties for dismissible menu items
|
||||||
|
- IViewDefinition: expanded content type to accept element constructors and async content, added badgeVariant and cache flags
|
||||||
|
- New interfaces added: IBottomBarWidget, IBottomBarAction, IViewActivationContext to support bottom bar widgets/actions and view activation context
|
||||||
|
|
||||||
## 2026-01-25 - 3.37.1 - fix(editor)
|
## 2026-01-25 - 3.37.1 - fix(editor)
|
||||||
fix monaco/editor layout, update dev deps, simplify watch script and remove Playwright snapshots
|
fix monaco/editor layout, update dev deps, simplify watch script and remove Playwright snapshots
|
||||||
|
|
||||||
|
|||||||
10
package.json
10
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@design.estate/dees-catalog",
|
"name": "@design.estate/dees-catalog",
|
||||||
"version": "3.37.1",
|
"version": "3.41.1",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
|
"description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
|
||||||
"main": "dist_ts_web/index.js",
|
"main": "dist_ts_web/index.js",
|
||||||
@@ -16,9 +16,9 @@
|
|||||||
"author": "Lossless GmbH",
|
"author": "Lossless GmbH",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@design.estate/dees-domtools": "^2.3.7",
|
"@design.estate/dees-domtools": "^2.3.8",
|
||||||
"@design.estate/dees-element": "^2.1.5",
|
"@design.estate/dees-element": "^2.1.6",
|
||||||
"@design.estate/dees-wcctools": "^3.7.1",
|
"@design.estate/dees-wcctools": "^3.8.0",
|
||||||
"@fortawesome/fontawesome-svg-core": "^7.1.0",
|
"@fortawesome/fontawesome-svg-core": "^7.1.0",
|
||||||
"@fortawesome/free-brands-svg-icons": "^7.1.0",
|
"@fortawesome/free-brands-svg-icons": "^7.1.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "^7.1.0",
|
"@fortawesome/free-regular-svg-icons": "^7.1.0",
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@git.zone/tsbuild": "^4.1.2",
|
"@git.zone/tsbuild": "^4.1.2",
|
||||||
"@git.zone/tsbundle": "^2.8.3",
|
"@git.zone/tsbundle": "^2.8.3",
|
||||||
"@git.zone/tstest": "^3.1.7",
|
"@git.zone/tstest": "^3.1.8",
|
||||||
"@git.zone/tswatch": "^3.0.1",
|
"@git.zone/tswatch": "^3.0.1",
|
||||||
"@push.rocks/projectinfo": "^5.0.2",
|
"@push.rocks/projectinfo": "^5.0.2",
|
||||||
"@types/node": "^25.0.10"
|
"@types/node": "^25.0.10"
|
||||||
|
|||||||
87
pnpm-lock.yaml
generated
87
pnpm-lock.yaml
generated
@@ -9,14 +9,14 @@ importers:
|
|||||||
.:
|
.:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@design.estate/dees-domtools':
|
'@design.estate/dees-domtools':
|
||||||
specifier: ^2.3.7
|
specifier: ^2.3.8
|
||||||
version: 2.3.7
|
version: 2.3.8
|
||||||
'@design.estate/dees-element':
|
'@design.estate/dees-element':
|
||||||
specifier: ^2.1.5
|
specifier: ^2.1.6
|
||||||
version: 2.1.5
|
version: 2.1.6
|
||||||
'@design.estate/dees-wcctools':
|
'@design.estate/dees-wcctools':
|
||||||
specifier: ^3.7.1
|
specifier: ^3.8.0
|
||||||
version: 3.7.1
|
version: 3.8.0
|
||||||
'@fortawesome/fontawesome-svg-core':
|
'@fortawesome/fontawesome-svg-core':
|
||||||
specifier: ^7.1.0
|
specifier: ^7.1.0
|
||||||
version: 7.1.0
|
version: 7.1.0
|
||||||
@@ -94,8 +94,8 @@ importers:
|
|||||||
specifier: ^2.8.3
|
specifier: ^2.8.3
|
||||||
version: 2.8.3
|
version: 2.8.3
|
||||||
'@git.zone/tstest':
|
'@git.zone/tstest':
|
||||||
specifier: ^3.1.7
|
specifier: ^3.1.8
|
||||||
version: 3.1.7(@push.rocks/smartserve@2.0.1)(socks@2.8.7)(typescript@5.9.3)
|
version: 3.1.8(@push.rocks/smartserve@2.0.1)(socks@2.8.7)(typescript@5.9.3)
|
||||||
'@git.zone/tswatch':
|
'@git.zone/tswatch':
|
||||||
specifier: ^3.0.1
|
specifier: ^3.0.1
|
||||||
version: 3.0.1(@tiptap/pm@2.27.2)
|
version: 3.0.1(@tiptap/pm@2.27.2)
|
||||||
@@ -340,6 +340,9 @@ packages:
|
|||||||
'@cloudflare/workers-types@4.20260124.0':
|
'@cloudflare/workers-types@4.20260124.0':
|
||||||
resolution: {integrity: sha512-h6TJlew6AtGuEXFc+k5ifalk+tg3fkg0lla6XbMAb2AKKfJGwlFNTwW2xyT/Ha92KY631CIJ+Ace08DPdFohdA==}
|
resolution: {integrity: sha512-h6TJlew6AtGuEXFc+k5ifalk+tg3fkg0lla6XbMAb2AKKfJGwlFNTwW2xyT/Ha92KY631CIJ+Ace08DPdFohdA==}
|
||||||
|
|
||||||
|
'@cloudflare/workers-types@4.20260127.0':
|
||||||
|
resolution: {integrity: sha512-4M1HLcWViSdT/pAeDGEB5x5P3sqW7UIi34QrBRnxXbqjAY9if8vBU/lWRWnM+UqKzxWGB2LYjEVOzZrp0jZL+w==}
|
||||||
|
|
||||||
'@configvault.io/interfaces@1.0.17':
|
'@configvault.io/interfaces@1.0.17':
|
||||||
resolution: {integrity: sha512-bEcCUR2VBDJsTin8HQh8Uw/mlYl2v8A3jMIaQ+MTB9Hrqd6CZL2dL7iJdWyFl/3EIX+LDxWFR+Oq7liIq7w+1Q==}
|
resolution: {integrity: sha512-bEcCUR2VBDJsTin8HQh8Uw/mlYl2v8A3jMIaQ+MTB9Hrqd6CZL2dL7iJdWyFl/3EIX+LDxWFR+Oq7liIq7w+1Q==}
|
||||||
|
|
||||||
@@ -349,14 +352,14 @@ packages:
|
|||||||
'@design.estate/dees-comms@1.0.30':
|
'@design.estate/dees-comms@1.0.30':
|
||||||
resolution: {integrity: sha512-KchMlklJfKAjQiJiR0xmofXtQ27VgZtBIxcMwPE9d+h3jJRv+lPZxzBQVOM0eyM0uS44S5vJMZ11IeV4uDXSHg==}
|
resolution: {integrity: sha512-KchMlklJfKAjQiJiR0xmofXtQ27VgZtBIxcMwPE9d+h3jJRv+lPZxzBQVOM0eyM0uS44S5vJMZ11IeV4uDXSHg==}
|
||||||
|
|
||||||
'@design.estate/dees-domtools@2.3.7':
|
'@design.estate/dees-domtools@2.3.8':
|
||||||
resolution: {integrity: sha512-MXoDBrP7JTOpni8b12aFXHJKnKBoQppM8cYBuL9cesRmCVGdB7p39XMRQ7dRyMhmmyr66L3cOczhiCV6febCwg==}
|
resolution: {integrity: sha512-jUG9GMvPxKMwmRIZ9oLTL3c8hHvHuiwIk8cTrYnuZzGO/uJJ5/czk9o6LRXUuCOOG7TRLtqgOpK8EEQgaadfZA==}
|
||||||
|
|
||||||
'@design.estate/dees-element@2.1.5':
|
'@design.estate/dees-element@2.1.6':
|
||||||
resolution: {integrity: sha512-czUOFvBiUKi34I+/keDRDc71fuORZS0NfbSuD2jJ4D1ODiTPjaZ6A6SkdQ2QqCEzVsx73XF99Pu8pxPnaOLnHg==}
|
resolution: {integrity: sha512-7zyHkUjB8UEQgT9VbB2IJtc/yuPt9CI5JGel3b6BxA1kecY64ceIjFvof1uIkc0QP8q2fMLLY45r1c+9zDTjzg==}
|
||||||
|
|
||||||
'@design.estate/dees-wcctools@3.7.1':
|
'@design.estate/dees-wcctools@3.8.0':
|
||||||
resolution: {integrity: sha512-BiNWghUoC05RTQOGVCTK+wis6d18LyLY+2p8vHC0q2OBw9hrPoY8k9EplpQgY40MvP0sTXWUwaa7VPXra8ASjA==}
|
resolution: {integrity: sha512-CC14iVKUrguzD9jIrdPBd9fZ4egVJEZMxl5y8iy0l7WLumeoYvGsoXj5INVkRPLRVLqziIdi4Je1hXqHt2NU+g==}
|
||||||
|
|
||||||
'@emnapi/core@1.8.1':
|
'@emnapi/core@1.8.1':
|
||||||
resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==}
|
resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==}
|
||||||
@@ -559,8 +562,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-NEcnsjvlC1o3Z6SS3VhKCf6Ev+Sh4EAinmggslrIR/ppMrvjDbXNFXoyr3PB+GLeSAR0JRZ1fGvVYjpEzjBdIg==}
|
resolution: {integrity: sha512-NEcnsjvlC1o3Z6SS3VhKCf6Ev+Sh4EAinmggslrIR/ppMrvjDbXNFXoyr3PB+GLeSAR0JRZ1fGvVYjpEzjBdIg==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
'@git.zone/tstest@3.1.7':
|
'@git.zone/tstest@3.1.8':
|
||||||
resolution: {integrity: sha512-YCDA+65LJhoY3WJxrNduKlpGf37aq4bFe+fdRqE0dZ2W1f7j3sUunBaBzckShSHKRjkMdPZKr0W0sXFXUK/PcA==}
|
resolution: {integrity: sha512-nmiLGeOkKMkLDyIk5BUBLx5ExskFbKHKlPdrWCARPVFkU4cAAiuIyJWVfLwISoS0TO/zSInLqArPwIc76yvaNw==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
'@git.zone/tswatch@3.0.1':
|
'@git.zone/tswatch@3.0.1':
|
||||||
@@ -851,8 +854,8 @@ packages:
|
|||||||
'@push.rocks/smartbucket@3.3.10':
|
'@push.rocks/smartbucket@3.3.10':
|
||||||
resolution: {integrity: sha512-0H2MioALspC8Aj0Q1FPCs2w4k2u9oJg7Q5yM8+1TZo7aRfrdxgM5HQ7z3apUaqC3ZEDewW6vSlttjHFHhMEC3A==}
|
resolution: {integrity: sha512-0H2MioALspC8Aj0Q1FPCs2w4k2u9oJg7Q5yM8+1TZo7aRfrdxgM5HQ7z3apUaqC3ZEDewW6vSlttjHFHhMEC3A==}
|
||||||
|
|
||||||
'@push.rocks/smartbucket@4.3.1':
|
'@push.rocks/smartbucket@4.4.1':
|
||||||
resolution: {integrity: sha512-fMA8w98/E+usaaLkLm6wDj1XSpR0shTtG8AxTdwWIlH1YemQj/aCf4wReezDxUFVoUpC3HMzzV2RTFtQvHndeQ==}
|
resolution: {integrity: sha512-68GFLgJKW+LXvuN+yuV8O/FozGMecraoT+PkI5whdRPFe7N3u2iYIHWAUjvQvVU4ygpdJv0kih2JDf5k3PYycw==}
|
||||||
|
|
||||||
'@push.rocks/smartbuffer@3.0.5':
|
'@push.rocks/smartbuffer@3.0.5':
|
||||||
resolution: {integrity: sha512-pWYF08Mn8s/KF/9nHRk7pZPzuMjmYVQay2c5gGexdayxn1W4eCSYYhWH73vR2JBfGeGq/izbRNuUuEaIEeTIKA==}
|
resolution: {integrity: sha512-pWYF08Mn8s/KF/9nHRk7pZPzuMjmYVQay2c5gGexdayxn1W4eCSYYhWH73vR2JBfGeGq/izbRNuUuEaIEeTIKA==}
|
||||||
@@ -1927,8 +1930,8 @@ packages:
|
|||||||
asynckit@0.4.0:
|
asynckit@0.4.0:
|
||||||
resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=}
|
resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=}
|
||||||
|
|
||||||
axios@1.13.2:
|
axios@1.13.3:
|
||||||
resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==}
|
resolution: {integrity: sha512-ERT8kdX7DZjtUm7IitEyV7InTHAF42iJuMArIiDIV5YtPanJkgw4hw5Dyg9fh0mihdWNn1GKaeIWErfe56UQ1g==}
|
||||||
|
|
||||||
b4a@1.7.3:
|
b4a@1.7.3:
|
||||||
resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==}
|
resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==}
|
||||||
@@ -1952,8 +1955,8 @@ packages:
|
|||||||
bare-abort-controller:
|
bare-abort-controller:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
bare-fs@4.5.2:
|
bare-fs@4.5.3:
|
||||||
resolution: {integrity: sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==}
|
resolution: {integrity: sha512-9+kwVx8QYvt3hPWnmb19tPnh38c6Nihz8Lx3t0g9+4GoIf3/fTgYwM4Z6NxgI+B9elLQA7mLE9PpqcWtOMRDiQ==}
|
||||||
engines: {bare: '>=1.16.0'}
|
engines: {bare: '>=1.16.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
bare-buffer: '*'
|
bare-buffer: '*'
|
||||||
@@ -4048,7 +4051,7 @@ snapshots:
|
|||||||
'@api.global/typedrequest': 3.2.5
|
'@api.global/typedrequest': 3.2.5
|
||||||
'@api.global/typedrequest-interfaces': 3.0.19
|
'@api.global/typedrequest-interfaces': 3.0.19
|
||||||
'@api.global/typedsocket': 3.1.1(@push.rocks/smartserve@2.0.1)
|
'@api.global/typedsocket': 3.1.1(@push.rocks/smartserve@2.0.1)
|
||||||
'@cloudflare/workers-types': 4.20260124.0
|
'@cloudflare/workers-types': 4.20260127.0
|
||||||
'@design.estate/dees-comms': 1.0.30
|
'@design.estate/dees-comms': 1.0.30
|
||||||
'@push.rocks/lik': 6.2.2
|
'@push.rocks/lik': 6.2.2
|
||||||
'@push.rocks/smartchok': 1.2.0
|
'@push.rocks/smartchok': 1.2.0
|
||||||
@@ -4719,15 +4722,17 @@ snapshots:
|
|||||||
|
|
||||||
'@cloudflare/workers-types@4.20260124.0': {}
|
'@cloudflare/workers-types@4.20260124.0': {}
|
||||||
|
|
||||||
|
'@cloudflare/workers-types@4.20260127.0': {}
|
||||||
|
|
||||||
'@configvault.io/interfaces@1.0.17':
|
'@configvault.io/interfaces@1.0.17':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@api.global/typedrequest-interfaces': 3.0.19
|
'@api.global/typedrequest-interfaces': 3.0.19
|
||||||
|
|
||||||
'@design.estate/dees-catalog@3.37.0(@tiptap/pm@2.27.2)':
|
'@design.estate/dees-catalog@3.37.0(@tiptap/pm@2.27.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@design.estate/dees-domtools': 2.3.7
|
'@design.estate/dees-domtools': 2.3.8
|
||||||
'@design.estate/dees-element': 2.1.5
|
'@design.estate/dees-element': 2.1.6
|
||||||
'@design.estate/dees-wcctools': 3.7.1
|
'@design.estate/dees-wcctools': 3.8.0
|
||||||
'@fortawesome/fontawesome-svg-core': 7.1.0
|
'@fortawesome/fontawesome-svg-core': 7.1.0
|
||||||
'@fortawesome/free-brands-svg-icons': 7.1.0
|
'@fortawesome/free-brands-svg-icons': 7.1.0
|
||||||
'@fortawesome/free-regular-svg-icons': 7.1.0
|
'@fortawesome/free-regular-svg-icons': 7.1.0
|
||||||
@@ -4765,7 +4770,7 @@ snapshots:
|
|||||||
'@push.rocks/smartdelay': 3.0.5
|
'@push.rocks/smartdelay': 3.0.5
|
||||||
broadcast-channel: 7.3.0
|
broadcast-channel: 7.3.0
|
||||||
|
|
||||||
'@design.estate/dees-domtools@2.3.7':
|
'@design.estate/dees-domtools@2.3.8':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@api.global/typedrequest': 3.2.5
|
'@api.global/typedrequest': 3.2.5
|
||||||
'@design.estate/dees-comms': 1.0.30
|
'@design.estate/dees-comms': 1.0.30
|
||||||
@@ -4791,9 +4796,9 @@ snapshots:
|
|||||||
- supports-color
|
- supports-color
|
||||||
- vue
|
- vue
|
||||||
|
|
||||||
'@design.estate/dees-element@2.1.5':
|
'@design.estate/dees-element@2.1.6':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@design.estate/dees-domtools': 2.3.7
|
'@design.estate/dees-domtools': 2.3.8
|
||||||
'@push.rocks/isounique': 1.0.5
|
'@push.rocks/isounique': 1.0.5
|
||||||
'@push.rocks/smartrx': 3.0.10
|
'@push.rocks/smartrx': 3.0.10
|
||||||
lit: 3.3.2
|
lit: 3.3.2
|
||||||
@@ -4803,10 +4808,10 @@ snapshots:
|
|||||||
- supports-color
|
- supports-color
|
||||||
- vue
|
- vue
|
||||||
|
|
||||||
'@design.estate/dees-wcctools@3.7.1':
|
'@design.estate/dees-wcctools@3.8.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@design.estate/dees-domtools': 2.3.7
|
'@design.estate/dees-domtools': 2.3.8
|
||||||
'@design.estate/dees-element': 2.1.5
|
'@design.estate/dees-element': 2.1.6
|
||||||
'@push.rocks/smartdelay': 3.0.5
|
'@push.rocks/smartdelay': 3.0.5
|
||||||
lit: 3.3.2
|
lit: 3.3.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@@ -5002,7 +5007,7 @@ snapshots:
|
|||||||
'@push.rocks/smartshell': 3.3.0
|
'@push.rocks/smartshell': 3.3.0
|
||||||
tsx: 4.21.0
|
tsx: 4.21.0
|
||||||
|
|
||||||
'@git.zone/tstest@3.1.7(@push.rocks/smartserve@2.0.1)(socks@2.8.7)(typescript@5.9.3)':
|
'@git.zone/tstest@3.1.8(@push.rocks/smartserve@2.0.1)(socks@2.8.7)(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@api.global/typedserver': 3.0.80(@push.rocks/smartserve@2.0.1)
|
'@api.global/typedserver': 3.0.80(@push.rocks/smartserve@2.0.1)
|
||||||
'@git.zone/tsbundle': 2.8.3
|
'@git.zone/tsbundle': 2.8.3
|
||||||
@@ -5572,7 +5577,7 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- aws-crt
|
- aws-crt
|
||||||
|
|
||||||
'@push.rocks/smartbucket@4.3.1':
|
'@push.rocks/smartbucket@4.4.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@aws-sdk/client-s3': 3.975.0
|
'@aws-sdk/client-s3': 3.975.0
|
||||||
'@push.rocks/smartmime': 2.0.4
|
'@push.rocks/smartmime': 2.0.4
|
||||||
@@ -5916,7 +5921,7 @@ snapshots:
|
|||||||
|
|
||||||
'@push.rocks/smartntml@2.0.8':
|
'@push.rocks/smartntml@2.0.8':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@design.estate/dees-element': 2.1.5
|
'@design.estate/dees-element': 2.1.6
|
||||||
'@happy-dom/global-registrator': 15.11.7
|
'@happy-dom/global-registrator': 15.11.7
|
||||||
'@push.rocks/smartpromise': 4.2.3
|
'@push.rocks/smartpromise': 4.2.3
|
||||||
fake-indexeddb: 6.2.5
|
fake-indexeddb: 6.2.5
|
||||||
@@ -6023,7 +6028,7 @@ snapshots:
|
|||||||
|
|
||||||
'@push.rocks/smarts3@3.0.3':
|
'@push.rocks/smarts3@3.0.3':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@push.rocks/smartbucket': 4.3.1
|
'@push.rocks/smartbucket': 4.4.1
|
||||||
'@push.rocks/smartfs': 1.3.1
|
'@push.rocks/smartfs': 1.3.1
|
||||||
'@push.rocks/smartpath': 6.0.0
|
'@push.rocks/smartpath': 6.0.0
|
||||||
'@push.rocks/smartxml': 2.0.0
|
'@push.rocks/smartxml': 2.0.0
|
||||||
@@ -6173,7 +6178,7 @@ snapshots:
|
|||||||
|
|
||||||
'@push.rocks/taskbuffer@3.5.0':
|
'@push.rocks/taskbuffer@3.5.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@design.estate/dees-element': 2.1.5
|
'@design.estate/dees-element': 2.1.6
|
||||||
'@push.rocks/lik': 6.2.2
|
'@push.rocks/lik': 6.2.2
|
||||||
'@push.rocks/smartdelay': 3.0.5
|
'@push.rocks/smartdelay': 3.0.5
|
||||||
'@push.rocks/smartlog': 3.1.10
|
'@push.rocks/smartlog': 3.1.10
|
||||||
@@ -7112,7 +7117,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@peculiar/x509': 1.14.3
|
'@peculiar/x509': 1.14.3
|
||||||
asn1js: 3.0.7
|
asn1js: 3.0.7
|
||||||
axios: 1.13.2(debug@4.4.3)
|
axios: 1.13.3(debug@4.4.3)
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
node-forge: 1.3.3
|
node-forge: 1.3.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@@ -7171,7 +7176,7 @@ snapshots:
|
|||||||
|
|
||||||
asynckit@0.4.0: {}
|
asynckit@0.4.0: {}
|
||||||
|
|
||||||
axios@1.13.2(debug@4.4.3):
|
axios@1.13.3(debug@4.4.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects: 1.15.11(debug@4.4.3)
|
follow-redirects: 1.15.11(debug@4.4.3)
|
||||||
form-data: 4.0.5
|
form-data: 4.0.5
|
||||||
@@ -7187,7 +7192,7 @@ snapshots:
|
|||||||
|
|
||||||
bare-events@2.8.2: {}
|
bare-events@2.8.2: {}
|
||||||
|
|
||||||
bare-fs@4.5.2:
|
bare-fs@4.5.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
bare-events: 2.8.2
|
bare-events: 2.8.2
|
||||||
bare-path: 3.0.0
|
bare-path: 3.0.0
|
||||||
@@ -9403,7 +9408,7 @@ snapshots:
|
|||||||
pump: 3.0.3
|
pump: 3.0.3
|
||||||
tar-stream: 3.1.7
|
tar-stream: 3.1.7
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
bare-fs: 4.5.2
|
bare-fs: 4.5.3
|
||||||
bare-path: 3.0.0
|
bare-path: 3.0.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- bare-abort-controller
|
- bare-abort-controller
|
||||||
|
|||||||
136
readme.hints.md
136
readme.hints.md
@@ -912,6 +912,93 @@ appui.getBottomBarVisible();
|
|||||||
- `ts_web/elements/00group-appui/dees-appui-bottombar/dees-appui-bottombar.demo.ts` - Demo
|
- `ts_web/elements/00group-appui/dees-appui-bottombar/dees-appui-bottombar.demo.ts` - Demo
|
||||||
- `ts_web/elements/interfaces/appconfig.ts` - New interfaces added
|
- `ts_web/elements/interfaces/appconfig.ts` - New interfaces added
|
||||||
|
|
||||||
|
## Media Components (2026-01-26)
|
||||||
|
|
||||||
|
New media viewer components and a unified preview composite component.
|
||||||
|
|
||||||
|
### Directory: `ts_web/elements/00group-media/`
|
||||||
|
|
||||||
|
#### dees-image-viewer
|
||||||
|
- Image display with zoom, pan, fit, and download controls
|
||||||
|
- Properties: `src`, `alt`, `fit` ('contain'|'cover'|'actual'), `showToolbar`
|
||||||
|
- Features: mouse wheel zoom, click-drag pan, double-click toggle, checkerboard transparency background
|
||||||
|
- Toolbar matches PDF viewer pattern (48px height, 32px buttons, 16px icons, 6px border-radius)
|
||||||
|
|
||||||
|
#### dees-audio-viewer
|
||||||
|
- Audio player with waveform visualization via Web Audio API
|
||||||
|
- Properties: `src`, `title`, `artist`, `showWaveform`, `autoplay`, `loop`
|
||||||
|
- Features: canvas waveform rendering, play/pause, seek, volume control, mute toggle, loop toggle
|
||||||
|
- Uses `HTMLAudioElement` for playback, `AudioContext.decodeAudioData` for waveform data
|
||||||
|
|
||||||
|
#### dees-video-viewer
|
||||||
|
- Video player with custom overlay controls
|
||||||
|
- Properties: `src`, `poster`, `showControls`, `autoplay`, `loop`, `muted`
|
||||||
|
- Features: custom controls bar with gradient, seekbar, volume slider, fullscreen toggle, auto-hide controls, 16:9 aspect ratio
|
||||||
|
|
||||||
|
### dees-preview (Composite Component)
|
||||||
|
- Auto-detects content type and delegates to the appropriate viewer
|
||||||
|
- Directory: `ts_web/elements/dees-preview/`
|
||||||
|
- Properties: `url`, `file` (File object), `base64`, `textContent`, `contentType` (override), `language`, `mimeType`, `filename`, `showToolbar`, `showFilename`
|
||||||
|
- Content type detection priority: explicit override → MIME type → file extension → fallback
|
||||||
|
- Renders: image→DeesImageViewer, pdf→DeesPdfViewer, code→DeesDataviewCodebox, audio→DeesAudioViewer, video→DeesVideoViewer, text→pre, unknown→placeholder
|
||||||
|
- Header bar with file type icon, filename, and type badge
|
||||||
|
|
||||||
|
### dees-dataview-codebox modification
|
||||||
|
- Removed `<dees-windowcontrols>` elements from the appbar (Step 1 of the plan)
|
||||||
|
- Now shows clean centered filename title bar without fake window buttons
|
||||||
|
|
||||||
|
### Icon Sizing Convention
|
||||||
|
- All `dees-icon` elements in buttons need explicit `font-size: 16px` CSS rule
|
||||||
|
- Toolbar buttons: 32px × 32px, border-radius: 6px
|
||||||
|
- Placeholder/error icons: `font-size: 32px`
|
||||||
|
- Pattern: `.button-class dees-icon { font-size: 16px; }`
|
||||||
|
|
||||||
|
## Tile Component System (2026-01-27)
|
||||||
|
|
||||||
|
A family of 200×260px content preview cards with a shared abstract base class. All tiles support lazy loading (IntersectionObserver with 200px margin), hover lift effect, click events, loading/error states, and three sizes (small: 150×195, default: 200×260, large: 250×325).
|
||||||
|
|
||||||
|
### Architecture
|
||||||
|
|
||||||
|
- **DeesTileBase** (`dees-tile-shared/DeesTileBase.ts`) — Abstract base class extending DeesElement
|
||||||
|
- Common properties: `clickable`, `loading`, `error`, `size`, `label`
|
||||||
|
- IntersectionObserver lazy loading via `onBecameVisible()` hook
|
||||||
|
- Click dispatch via `tile-click` CustomEvent (detail from `getTileClickDetail()`)
|
||||||
|
- Subclasses implement `renderTileContent(): TemplateResult`
|
||||||
|
|
||||||
|
### Components
|
||||||
|
|
||||||
|
| Tag | Class | Description |
|
||||||
|
|-----|-------|-------------|
|
||||||
|
| `dees-tile-pdf` | `DeesTilePdf` | PDF page thumbnail with hover-to-browse pages. Canvas-rendered via PDF.js/CanvasPool. |
|
||||||
|
| `dees-tile-image` | `DeesTileImage` | Image thumbnail with `object-fit: cover`, dimension detection on load |
|
||||||
|
| `dees-tile-audio` | `DeesTileAudio` | Music icon + mini waveform (AudioContext decode), duration badge |
|
||||||
|
| `dees-tile-video` | `DeesTileVideo` | Auto-captured first frame, duration badge, hover muted auto-preview |
|
||||||
|
| `dees-tile-note` | `DeesTileNote` | First ~12 lines of text in monospace, gradient fade, optional language badge |
|
||||||
|
| `dees-tile-folder` | `DeesTileFolder` | 2×2 grid of mini-previews (thumbnails or type icons), item count badge |
|
||||||
|
|
||||||
|
### Deprecations
|
||||||
|
|
||||||
|
- `dees-pdf-preview` → Use `dees-tile-pdf` instead. Old tag still works as a thin wrapper with console warning.
|
||||||
|
- `dees-pdf` deprecation comment updated to reference `DeesTilePdf`.
|
||||||
|
|
||||||
|
### File Structure
|
||||||
|
|
||||||
|
All tile components live in `ts_web/elements/00group-media/dees-tile-*/`:
|
||||||
|
- `component.ts` — Main component class
|
||||||
|
- `demo.ts` — Demo function
|
||||||
|
- `index.ts` — Re-export
|
||||||
|
- `styles.ts` — (PDF tile only) Component-specific styles
|
||||||
|
- Shared base: `dees-tile-shared/{DeesTileBase,styles,index}.ts`
|
||||||
|
|
||||||
|
### Interface: ITileFolderItem
|
||||||
|
```typescript
|
||||||
|
interface ITileFolderItem {
|
||||||
|
type: 'pdf' | 'image' | 'audio' | 'video' | 'note' | 'folder' | 'unknown';
|
||||||
|
thumbnailSrc?: string;
|
||||||
|
name: string;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## StatsGrid Enhancements (2026-01-12)
|
## StatsGrid Enhancements (2026-01-12)
|
||||||
|
|
||||||
### Column Spanning
|
### Column Spanning
|
||||||
@@ -973,4 +1060,51 @@ Features:
|
|||||||
- `trend` - Sparkline with recent data
|
- `trend` - Sparkline with recent data
|
||||||
- `text` - Text value display
|
- `text` - Text value display
|
||||||
- `multiPercentage` - Multiple progress bars
|
- `multiPercentage` - Multiple progress bars
|
||||||
- `cpuCores` - Vertical bar visualization for CPU cores
|
- `cpuCores` - Vertical bar visualization for CPU cores
|
||||||
|
|
||||||
|
## Component Group Taxonomy (2026-01-27)
|
||||||
|
|
||||||
|
All components are organized into `00group-*` directories with 14 groups visible in the wcctools sidebar. The `demoGroups` property (plural, `string[]`) replaces the old `demoGroup` (singular). Components can belong to multiple groups.
|
||||||
|
|
||||||
|
### Group Directories
|
||||||
|
| Directory | Group Name | Count |
|
||||||
|
|-----------|-----------|-------|
|
||||||
|
| `00group-appui` | App UI | 10 |
|
||||||
|
| `00group-button` | Button | 3 |
|
||||||
|
| `00group-chart` | Chart | 2 |
|
||||||
|
| `00group-dataview` | Data View | 4 |
|
||||||
|
| `00group-feedback` | Feedback | 6 |
|
||||||
|
| `00group-form` | Form | 2 |
|
||||||
|
| `00group-input` | Input | 18 |
|
||||||
|
| `00group-layout` | Layout | 7 |
|
||||||
|
| `00group-media` | Media | 14 (viewers + PDF + tiles) |
|
||||||
|
| `00group-overlay` | Overlay | 4 |
|
||||||
|
| `00group-simple` | Simple | 3 |
|
||||||
|
| `00group-utility` | Utility | 5 |
|
||||||
|
| `00group-workspace` | Workspace | 9 |
|
||||||
|
| `00group-runtime` | (internal) | - |
|
||||||
|
|
||||||
|
### Multi-Group Components
|
||||||
|
Some components appear in multiple groups via `demoGroups = ['Primary', 'Secondary']`:
|
||||||
|
- `dees-chart-log`: Chart, Workspace
|
||||||
|
- `dees-dataview-codebox`: Data View, Workspace
|
||||||
|
- `dees-input-code`: Input, Workspace
|
||||||
|
- `dees-input-wysiwyg`: Input, Workspace
|
||||||
|
- `dees-form-submit`: Form, Button
|
||||||
|
- `dees-preview`: Media, Data View
|
||||||
|
- `dees-pdf*` / `dees-tile-pdf`: Media, PDF
|
||||||
|
- `dees-stepper`: Layout, Form
|
||||||
|
- `dees-label`: Layout, Input
|
||||||
|
- `dees-toast`: Feedback, Overlay
|
||||||
|
- `dees-actionbar`: Feedback, Overlay
|
||||||
|
|
||||||
|
### Import Conventions
|
||||||
|
- Within same group: `import '../sibling-component/file.js'`
|
||||||
|
- Cross-group (from depth-2): `import '../../00group-X/component/file.js'`
|
||||||
|
- Shared utilities: `import '../../00plugins.js'`, `import '../../00theme.js'`, etc.
|
||||||
|
|
||||||
|
### Key Notes
|
||||||
|
- The old `demoGroup` property (singular, string) is fully removed
|
||||||
|
- All 79 components with demos use `demoGroups` (plural, string[])
|
||||||
|
- `00group-pdf` no longer exists; PDF components are in `00group-media`
|
||||||
|
- `dees-search` and `dees-tooltip` remain standalone (no demos)
|
||||||
660
readme.md
660
readme.md
@@ -1,6 +1,6 @@
|
|||||||
# @design.estate/dees-catalog
|
# @design.estate/dees-catalog
|
||||||
|
|
||||||
A comprehensive web components library built with TypeScript and LitElement, providing **80+ production-ready UI components** for building modern web applications with consistent design and behavior. 🚀
|
A comprehensive web components library built with TypeScript and LitElement, providing **90+ production-ready UI components** for building modern web applications with consistent design and behavior. 🚀
|
||||||
|
|
||||||
[](https://www.typescriptlang.org/)
|
[](https://www.typescriptlang.org/)
|
||||||
[](https://lit.dev/)
|
[](https://lit.dev/)
|
||||||
@@ -11,12 +11,15 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
|
|||||||
|
|
||||||
## ✨ Features
|
## ✨ Features
|
||||||
|
|
||||||
- 🎨 **Consistent Design System** - Beautiful, cohesive components following modern UI/UX principles
|
- 🎨 **Consistent Design System** — Beautiful, cohesive components following modern UI/UX principles
|
||||||
- 🌙 **Dark/Light Theme Support** - All components automatically adapt to your theme
|
- 🌙 **Dark/Light Theme Support** — All components automatically adapt to your theme
|
||||||
- ⌨️ **Keyboard Accessible** - Full keyboard navigation and ARIA support
|
- ⌨️ **Keyboard Accessible** — Full keyboard navigation and ARIA support
|
||||||
- 📱 **Responsive** - Mobile-first design that works across all screen sizes
|
- 📱 **Responsive** — Mobile-first design that works across all screen sizes
|
||||||
- 🔧 **TypeScript-First** - Fully typed APIs with excellent IDE support
|
- 🔧 **TypeScript-First** — Fully typed APIs with excellent IDE support
|
||||||
- 🧩 **Modular** - Use only what you need, tree-shakeable architecture
|
- 🧩 **Modular** — Use only what you need, tree-shakeable architecture
|
||||||
|
- 🏗️ **Full App Shell** — `dees-appui` provides a complete application framework with menus, routing, activity log, and bottom bar
|
||||||
|
- 🎬 **Media Components** — Rich tile-based previews for PDFs, images, audio, video, notes, and folders
|
||||||
|
- 💻 **IDE Workspace** — Full workspace component with Monaco editor, file tree, terminal, and diff viewer
|
||||||
|
|
||||||
## 📦 Installation
|
## 📦 Installation
|
||||||
|
|
||||||
@@ -52,16 +55,17 @@ For developers working on this library, please refer to the [UI Components Playb
|
|||||||
|
|
||||||
| Category | Components |
|
| Category | Components |
|
||||||
|----------|------------|
|
|----------|------------|
|
||||||
| **Core UI** | [`DeesButton`](#deesbutton), [`DeesButtonExit`](#deesbuttonexit), [`DeesButtonGroup`](#deesbuttongroup), [`DeesBadge`](#deesbadge), [`DeesChips`](#deeschips), [`DeesHeading`](#deesheading), [`DeesHint`](#deeshint), [`DeesIcon`](#deesicon), [`DeesLabel`](#deeslabel), [`DeesPanel`](#deespanel), [`DeesSearchbar`](#deessearchbar), [`DeesSpinner`](#deesspinner), [`DeesToast`](#deestoast), [`DeesWindowcontrols`](#deeswindowcontrols) |
|
| **Core UI** | [`DeesButton`](#deesbutton), [`DeesButtonExit`](#deesbuttonexit), [`DeesButtonGroup`](#deesbuttongroup), [`DeesBadge`](#deesbadge), [`DeesChips`](#deeschips), [`DeesHeading`](#deesheading), [`DeesHint`](#deeshint), [`DeesIcon`](#deesicon), [`DeesLabel`](#deeslabel), [`DeesPanel`](#deespanel), [`DeesSearchbar`](#deessearchbar), [`DeesSpinner`](#deesspinner), [`DeesToast`](#deestoast), [`DeesWindowcontrols`](#deeswindowcontrols), [`DeesActionbar`](#deesactionbar) |
|
||||||
| **Forms** | [`DeesForm`](#deesform), [`DeesInputText`](#deesinputtext), [`DeesInputCheckbox`](#deesinputcheckbox), [`DeesInputDropdown`](#deesinputdropdown), [`DeesInputRadiogroup`](#deesinputradiogroup), [`DeesInputFileupload`](#deesinputfileupload), [`DeesInputIban`](#deesinputiban), [`DeesInputPhone`](#deesinputphone), [`DeesInputQuantitySelector`](#deesinputquantityselector), [`DeesInputMultitoggle`](#deesinputmultitoggle), [`DeesInputTags`](#deesinputtags), [`DeesInputTypelist`](#deesinputtypelist), [`DeesInputList`](#deesinputlist), [`DeesInputProfilepicture`](#deesinputprofilepicture), [`DeesInputRichtext`](#deesinputrichtext), [`DeesInputWysiwyg`](#deesinputwysiwyg), [`DeesInputDatepicker`](#deesinputdatepicker), [`DeesInputSearchselect`](#deesinputsearchselect), [`DeesFormSubmit`](#deesformsubmit) |
|
| **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) |
|
||||||
| **Layout** | [`DeesAppui`](#deesappui), [`DeesAppuiMainmenu`](#deesappuimainmenu), [`DeesAppuiSecondarymenu`](#deesappuisecondarymenu), [`DeesAppuiMaincontent`](#deesappuimaincontent), [`DeesAppuiAppbar`](#deesappuiappbar), [`DeesAppuiActivitylog`](#deesappuiactivitylog), [`DeesAppuiProfiledropdown`](#deesappuiprofiledropdown), [`DeesAppuiTabs`](#deesappuitabs), [`DeesMobileNavigation`](#deesmobilenavigation), [`DeesDashboardGrid`](#deesdashboardgrid) |
|
| **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) |
|
||||||
| **Data Display** | [`DeesTable`](#deestable), [`DeesDataviewCodebox`](#deesdataviewcodebox), [`DeesDataviewStatusobject`](#deesdataviewstatusobject), [`DeesPdf`](#deespdf), [`DeesStatsGrid`](#deesstatsgrid), [`DeesPagination`](#deespagination) |
|
| **Data Display** | [`DeesTable`](#deestable), [`DeesDataviewCodebox`](#deesdataviewcodebox), [`DeesDataviewStatusobject`](#deesdataviewstatusobject), [`DeesPdf`](#deespdf), [`DeesStatsGrid`](#deesstatsgrid), [`DeesPagination`](#deespagination) |
|
||||||
|
| **Media & Tiles** | [`DeesTilePdf`](#deestilepdf), [`DeesTileImage`](#deestileimage), [`DeesTileAudio`](#deestileaudio), [`DeesTileVideo`](#deestilevideo), [`DeesTileNote`](#deestilenote), [`DeesTileFolder`](#deestilefolder), [`DeesPreview`](#deespreview), [`DeesPdfViewer`](#deespdfviewer), [`DeesPdfPreview`](#deespdfpreview), [`DeesImageViewer`](#deesimageviewer), [`DeesAudioViewer`](#deesaudioviewer), [`DeesVideoViewer`](#deesvideoviewer) |
|
||||||
| **Visualization** | [`DeesChartArea`](#deeschartarea), [`DeesChartLog`](#deeschartlog) |
|
| **Visualization** | [`DeesChartArea`](#deeschartarea), [`DeesChartLog`](#deeschartlog) |
|
||||||
| **Dialogs & Overlays** | [`DeesModal`](#deesmodal), [`DeesContextmenu`](#deescontextmenu), [`DeesSpeechbubble`](#deesspeechbubble), [`DeesWindowlayer`](#deeswindowlayer) |
|
| **Dialogs & Overlays** | [`DeesModal`](#deesmodal), [`DeesContextmenu`](#deescontextmenu), [`DeesSpeechbubble`](#deesspeechbubble), [`DeesWindowlayer`](#deeswindowlayer) |
|
||||||
| **Navigation** | [`DeesStepper`](#deesstepper), [`DeesProgressbar`](#deesprogressbar) |
|
| **Navigation** | [`DeesStepper`](#deesstepper), [`DeesProgressbar`](#deesprogressbar) |
|
||||||
| **Development** | [`DeesEditor`](#deeseditor), [`DeesEditorMarkdown`](#deeseditormarkdown), [`DeesEditorMarkdownoutlet`](#deeseditormarkdownoutlet), [`DeesTerminal`](#deesterminal), [`DeesUpdater`](#deesupdater) |
|
| **Workspace / IDE** | [`DeesWorkspace`](#deesworkspace), [`DeesWorkspaceMonaco`](#deesworkspacemonaco), [`DeesWorkspaceDiffEditor`](#deesworkspacediffeditor), [`DeesWorkspaceFiletree`](#deesworkspacefiletree), [`DeesWorkspaceTerminal`](#deesworkspaceterminal), [`DeesWorkspaceTerminalPreview`](#deesworkspaceterminalpreview), [`DeesWorkspaceMarkdown`](#deesworkspacemarkdown), [`DeesWorkspaceMarkdownoutlet`](#deesworkspacemarkdownoutlet), [`DeesWorkspaceBottombar`](#deesworkspacebottombar) |
|
||||||
| **Theming** | [`DeesTheme`](#deestheme) |
|
| **Theming** | [`DeesTheme`](#deestheme) |
|
||||||
| **Auth & Utilities** | [`DeesSimpleAppdash`](#deessimpleappdash), [`DeesSimpleLogin`](#deessimplelogin) |
|
| **Pre-built Templates** | [`DeesSimpleAppdash`](#deessimpleappdash), [`DeesSimpleLogin`](#deessimplelogin) |
|
||||||
| **Shopping** | [`DeesShoppingProductcard`](#deesshoppingproductcard) |
|
| **Shopping** | [`DeesShoppingProductcard`](#deesshoppingproductcard) |
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -117,14 +121,14 @@ Interactive chips/tags with selection capabilities.
|
|||||||
Display icons from FontAwesome and Lucide icon libraries with library prefixes.
|
Display icons from FontAwesome and Lucide icon libraries with library prefixes.
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
// FontAwesome icons - use 'fa:' prefix
|
// FontAwesome icons — use 'fa:' prefix
|
||||||
<dees-icon
|
<dees-icon
|
||||||
icon="fa:check" // FontAwesome icon with fa: prefix
|
icon="fa:check" // FontAwesome icon with fa: prefix
|
||||||
iconSize="24" // Size in pixels
|
iconSize="24" // Size in pixels
|
||||||
color="#22c55e" // Optional: custom color
|
color="#22c55e" // Optional: custom color
|
||||||
></dees-icon>
|
></dees-icon>
|
||||||
|
|
||||||
// Lucide icons - use 'lucide:' prefix
|
// Lucide icons — use 'lucide:' prefix
|
||||||
<dees-icon
|
<dees-icon
|
||||||
icon="lucide:menu" // Lucide icon with lucide: prefix
|
icon="lucide:menu" // Lucide icon with lucide: prefix
|
||||||
iconSize="24" // Size in pixels
|
iconSize="24" // Size in pixels
|
||||||
@@ -134,7 +138,7 @@ Display icons from FontAwesome and Lucide icon libraries with library prefixes.
|
|||||||
|
|
||||||
// Legacy API (deprecated but still supported)
|
// Legacy API (deprecated but still supported)
|
||||||
<dees-icon
|
<dees-icon
|
||||||
iconFA="check" // Without prefix - assumes FontAwesome
|
iconFA="check" // Without prefix — assumes FontAwesome
|
||||||
></dees-icon>
|
></dees-icon>
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -287,6 +291,18 @@ Window control buttons (minimize, maximize, close) for desktop-like applications
|
|||||||
></dees-windowcontrols>
|
></dees-windowcontrols>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### `DeesActionbar`
|
||||||
|
Floating action bar for contextual actions.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
<dees-actionbar
|
||||||
|
.actions=${[
|
||||||
|
{ icon: 'lucide:save', label: 'Save', action: () => handleSave() },
|
||||||
|
{ icon: 'lucide:trash', label: 'Delete', action: () => handleDelete() }
|
||||||
|
]}
|
||||||
|
></dees-actionbar>
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Form Components
|
### Form Components
|
||||||
@@ -331,6 +347,18 @@ Checkbox input component for boolean values.
|
|||||||
></dees-input-checkbox>
|
></dees-input-checkbox>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### `DeesInputToggle`
|
||||||
|
Toggle switch component for boolean on/off states.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
<dees-input-toggle
|
||||||
|
key="darkMode"
|
||||||
|
label="Enable Dark Mode"
|
||||||
|
.value=${true}
|
||||||
|
@change=${handleToggle}
|
||||||
|
></dees-input-toggle>
|
||||||
|
```
|
||||||
|
|
||||||
#### `DeesInputDropdown`
|
#### `DeesInputDropdown`
|
||||||
Dropdown selection component with search and filtering capabilities.
|
Dropdown selection component with search and filtering capabilities.
|
||||||
|
|
||||||
@@ -658,6 +686,19 @@ Advanced block-based editor with slash commands and rich content blocks.
|
|||||||
- Collaborative editing ready
|
- Collaborative editing ready
|
||||||
- Extensible block types
|
- Extensible block types
|
||||||
|
|
||||||
|
#### `DeesInputCode`
|
||||||
|
Code input component for editing source code with syntax highlighting.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
<dees-input-code
|
||||||
|
key="snippet"
|
||||||
|
label="Code Snippet"
|
||||||
|
.value=${codeString}
|
||||||
|
language="typescript"
|
||||||
|
@change=${handleCodeChange}
|
||||||
|
></dees-input-code>
|
||||||
|
```
|
||||||
|
|
||||||
#### `DeesFormSubmit`
|
#### `DeesFormSubmit`
|
||||||
Submit button component specifically designed for `DeesForm`.
|
Submit button component specifically designed for `DeesForm`.
|
||||||
|
|
||||||
@@ -670,10 +711,10 @@ Submit button component specifically designed for `DeesForm`.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Layout Components
|
### App Shell (Layout) Components
|
||||||
|
|
||||||
#### `DeesAppui`
|
#### `DeesAppui` 🏗️
|
||||||
A comprehensive application shell component providing a complete UI framework with navigation, menus, activity logging, and view management.
|
A comprehensive application shell component providing a complete UI framework with navigation, menus, activity logging, bottom bar, and view management.
|
||||||
|
|
||||||
> **Full API Documentation**: See [ts_web/elements/00group-appui/dees-appui/readme.md](./ts_web/elements/00group-appui/dees-appui/readme.md) for complete documentation including all programmatic APIs, view lifecycle hooks, and TypeScript interfaces.
|
> **Full API Documentation**: See [ts_web/elements/00group-appui/dees-appui/readme.md](./ts_web/elements/00group-appui/dees-appui/readme.md) for complete documentation including all programmatic APIs, view lifecycle hooks, and TypeScript interfaces.
|
||||||
|
|
||||||
@@ -690,7 +731,6 @@ class MyApp extends DeesElement {
|
|||||||
async firstUpdated() {
|
async firstUpdated() {
|
||||||
this.appui = this.shadowRoot.querySelector('dees-appui');
|
this.appui = this.shadowRoot.querySelector('dees-appui');
|
||||||
|
|
||||||
// Configure with views and menu
|
|
||||||
this.appui.configure({
|
this.appui.configure({
|
||||||
branding: { logoIcon: 'lucide:box', logoText: 'My App' },
|
branding: { logoIcon: 'lucide:box', logoText: 'My App' },
|
||||||
views: [
|
views: [
|
||||||
@@ -700,7 +740,13 @@ class MyApp extends DeesElement {
|
|||||||
mainMenu: {
|
mainMenu: {
|
||||||
sections: [{ name: 'Main', views: ['dashboard', 'settings'] }]
|
sections: [{ name: 'Main', views: ['dashboard', 'settings'] }]
|
||||||
},
|
},
|
||||||
defaultView: 'dashboard'
|
defaultView: 'dashboard',
|
||||||
|
bottomBar: {
|
||||||
|
visible: true,
|
||||||
|
widgets: [
|
||||||
|
{ id: 'status', iconName: 'lucide:activity', label: 'Online', status: 'success' }
|
||||||
|
]
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -710,43 +756,123 @@ class MyApp extends DeesElement {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
**Key Features:**
|
**Architecture Overview:**
|
||||||
- **Configure API**: Single `configure()` method for complete app setup
|
|
||||||
- **View Management**: Automatic view caching, lazy loading, and lifecycle hooks
|
|
||||||
- **Programmatic APIs**: Full control over AppBar, Main Menu, Secondary Menu, Content Tabs, and Activity Log
|
|
||||||
- **View Lifecycle Hooks**: `onActivate()`, `onDeactivate()`, and `canDeactivate()` for view components
|
|
||||||
- **Hash-based Routing**: Automatic URL synchronization with view navigation
|
|
||||||
- **RxJS Observables**: `viewChanged$` and `viewLifecycle$` for reactive programming
|
|
||||||
- **TypeScript-first**: Typed `IViewActivationContext` passed to views on activation
|
|
||||||
- **Activity Log Toggle**: Built-in appbar button to show/hide activity panel with entry count badge
|
|
||||||
|
|
||||||
**Programmatic APIs include:**
|
```
|
||||||
- `navigateToView(viewId, params?)` - Navigate between views
|
┌─────────────────────────────────────────────────────────────────────┐
|
||||||
- `setAppBarMenus()`, `setBreadcrumbs()`, `setUser()` - Control the app bar
|
│ AppBar (dees-appui-appbar) │
|
||||||
- `setMainMenu()`, `setMainMenuSelection()`, `setMainMenuBadge()` - Control main navigation
|
│ ├── Menus (File, Edit, View...) │
|
||||||
- `setMainMenuCollapsed()`, `setMainMenuVisible()` - Control main menu visibility
|
│ ├── Breadcrumbs │
|
||||||
- `setSecondaryMenu()`, `setSecondaryMenuCollapsed()`, `setSecondaryMenuVisible()` - Control secondary menu
|
│ ├── User Profile + Dropdown │
|
||||||
- `setContentTabs()`, `setContentTabsVisible()` - Control view-specific UI
|
│ └── Activity Log Toggle │
|
||||||
- `activityLog.add()`, `activityLog.addMany()`, `activityLog.clear()` - Manage activity entries
|
├─────────────┬───────────────────────────────────┬───────────────────┤
|
||||||
- `setActivityLogVisible()`, `toggleActivityLog()`, `getActivityLogVisible()` - Control activity panel
|
│ Main Menu │ Content Area │ Activity Log │
|
||||||
|
│ (collapsed/ │ ├── Content Tabs │ (slide panel) │
|
||||||
|
│ expanded) │ │ (closable, from tables/lists)│ │
|
||||||
|
│ │ └── View Container │ │
|
||||||
|
│ ┌─────────┐ │ └── Active View │ │
|
||||||
|
│ │ 🏠 Home │ ├─────────────────────────────────┐ │ │
|
||||||
|
│ │ 📁 Files│ │ Secondary Menu │ │ │
|
||||||
|
│ │ ⚙ Set.. │ │ ├── Collapsible Groups │ │ │
|
||||||
|
│ │ │ │ │ ├── Tabs / Actions │ │ │
|
||||||
|
│ └─────────┘ │ │ ├── Filters / Links │ │ │
|
||||||
|
│ │ │ └── Dividers / Headers │ │ │
|
||||||
|
├─────────────┴──┴───────────────────────────────┴───────────────────┤
|
||||||
|
│ Bottom Bar (dees-appui-bottombar) — 24px status bar │
|
||||||
|
│ ├── Status widgets (left/right) │
|
||||||
|
│ └── Action buttons (left/right) │
|
||||||
|
└─────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
**Configuration (`IAppConfig`):**
|
||||||
|
|
||||||
**View Visibility Control:**
|
|
||||||
```typescript
|
```typescript
|
||||||
// In your view's onActivate hook
|
interface IAppConfig {
|
||||||
onActivate(context: IViewActivationContext) {
|
branding?: { logoIcon?: string; logoText?: string };
|
||||||
// Hide secondary menu for a fullscreen view
|
appBar?: IAppBarConfig;
|
||||||
context.appui.setSecondaryMenuVisible(false);
|
views: IViewDefinition[];
|
||||||
|
mainMenu?: IMainMenuConfig;
|
||||||
// Hide content tabs
|
defaultView?: string;
|
||||||
context.appui.setContentTabsVisible(false);
|
activityLog?: IActivityLogConfig;
|
||||||
|
bottomBar?: IBottomBarConfig;
|
||||||
// Collapse main menu to give more space
|
onViewChange?: (viewId: string, view: IViewDefinition) => void;
|
||||||
context.appui.setMainMenuCollapsed(true);
|
onSearch?: (query: string) => void;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Key Features:**
|
||||||
|
- 🔧 **Configure API** — Single `configure()` method for complete app setup
|
||||||
|
- 📄 **View Management** — Automatic view caching, lazy loading, and lifecycle hooks (`onActivate`, `onDeactivate`, `canDeactivate`)
|
||||||
|
- 🧭 **Hash-based Routing** — Automatic URL synchronization with view navigation and parameterized routes
|
||||||
|
- 📊 **Activity Log** — Slide-out panel with stacked entries, date grouping, search, and filtering
|
||||||
|
- 📌 **Bottom Status Bar** — Configurable widgets and actions with status colors and loading states
|
||||||
|
- 🎯 **RxJS Observables** — `viewChanged$` and `viewLifecycle$` for reactive programming
|
||||||
|
- 🏷️ **TypeScript-first** — Typed `IViewActivationContext` passed to views on activation
|
||||||
|
|
||||||
|
**Programmatic APIs:**
|
||||||
|
|
||||||
|
| Area | Methods |
|
||||||
|
|------|---------|
|
||||||
|
| **Navigation** | `navigateToView(viewId, params?)`, `getCurrentView()`, `getViewRegistry()` |
|
||||||
|
| **App Bar** | `setAppBarMenus()`, `updateAppBarMenu()`, `setBreadcrumbs()`, `setUser()`, `setProfileMenuItems()`, `setSearchVisible()`, `onSearch()`, `setWindowControlsVisible()` |
|
||||||
|
| **Main Menu** | `setMainMenu()`, `updateMainMenuGroup()`, `addMainMenuItem()`, `removeMainMenuItem()`, `setMainMenuSelection()`, `setMainMenuCollapsed()`, `setMainMenuVisible()`, `setMainMenuBadge()`, `clearMainMenuBadge()` |
|
||||||
|
| **Secondary Menu** | `setSecondaryMenu()`, `updateSecondaryMenuGroup()`, `addSecondaryMenuItem()`, `setSecondaryMenuSelection()`, `setSecondaryMenuCollapsed()`, `setSecondaryMenuVisible()`, `clearSecondaryMenu()` |
|
||||||
|
| **Content Tabs** | `setContentTabs()`, `addContentTab()`, `removeContentTab()`, `selectContentTab()`, `getSelectedContentTab()`, `setContentTabsVisible()`, `setContentTabsAutoHide()` |
|
||||||
|
| **Activity Log** | `activityLog.add()`, `activityLog.addMany()`, `activityLog.clear()`, `activityLog.getEntries()`, `activityLog.filter()`, `activityLog.search()`, `setActivityLogVisible()`, `toggleActivityLog()`, `getActivityLogVisible()` |
|
||||||
|
| **Bottom Bar** | `bottomBar.addWidget()`, `bottomBar.updateWidget()`, `bottomBar.removeWidget()`, `bottomBar.getWidget()`, `bottomBar.clearWidgets()`, `bottomBar.addAction()`, `bottomBar.removeAction()`, `bottomBar.clearActions()`, `setBottomBarVisible()`, `getBottomBarVisible()` |
|
||||||
|
| **Observables** | `viewChanged$`, `viewLifecycle$` |
|
||||||
|
|
||||||
|
**View Lifecycle Hooks:**
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import { DeesElement, customElement } from '@design.estate/dees-element';
|
||||||
|
import type { IViewActivationContext, IViewLifecycle } from '@design.estate/dees-catalog';
|
||||||
|
|
||||||
|
@customElement('my-settings-view')
|
||||||
|
class MySettingsView extends DeesElement implements IViewLifecycle {
|
||||||
|
// Called when view becomes visible
|
||||||
|
async onActivate(context: IViewActivationContext) {
|
||||||
|
const { appui, viewId, params } = context;
|
||||||
|
|
||||||
|
// Set view-specific secondary menu
|
||||||
|
appui.setSecondaryMenu({
|
||||||
|
heading: 'Settings',
|
||||||
|
groups: [{ name: 'Options', items: [...] }]
|
||||||
|
});
|
||||||
|
|
||||||
|
// Control visibility of other shell parts
|
||||||
|
appui.setContentTabsVisible(false);
|
||||||
|
appui.setSecondaryMenuVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Called when navigating away
|
||||||
|
onDeactivate() { /* cleanup */ }
|
||||||
|
|
||||||
|
// Return false or a message string to block navigation
|
||||||
|
canDeactivate(): boolean | string {
|
||||||
|
if (this.hasUnsavedChanges) return 'You have unsaved changes. Leave anyway?';
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Secondary Menu Item Types:**
|
||||||
|
|
||||||
|
The secondary menu supports **8 distinct item types** for building rich contextual sidebars:
|
||||||
|
|
||||||
|
| Type | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| **Tab** (default) | Selectable item that stays highlighted |
|
||||||
|
| **Action** | Executes on click without staying selected (blue styling) |
|
||||||
|
| **Filter** | Checkbox toggle for filtering |
|
||||||
|
| **MultiFilter** | Collapsible multi-select filter box |
|
||||||
|
| **Divider** | Visual separator line |
|
||||||
|
| **Header** | Non-interactive section label |
|
||||||
|
| **Link** | Opens an external URL |
|
||||||
|
| **Danger Action** | Red-styled action with optional confirmation |
|
||||||
|
|
||||||
#### `DeesAppuiMainmenu`
|
#### `DeesAppuiMainmenu`
|
||||||
Main navigation menu component for application-wide navigation.
|
Main navigation menu component for application-wide navigation. Supports collapsed (icon-only) mode.
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
<dees-appui-mainmenu
|
<dees-appui-mainmenu
|
||||||
@@ -759,12 +885,12 @@ Main navigation menu component for application-wide navigation.
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
]}
|
]}
|
||||||
collapsed // Optional: show collapsed version
|
collapsed // Optional: show collapsed icon-only version
|
||||||
></dees-appui-mainmenu>
|
></dees-appui-mainmenu>
|
||||||
```
|
```
|
||||||
|
|
||||||
#### `DeesAppuiSecondarymenu`
|
#### `DeesAppuiSecondarymenu`
|
||||||
Secondary navigation component for sub-section selection with collapsible groups and badges.
|
Secondary navigation component for sub-section selection with collapsible groups, badges, and 8 item types.
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
<dees-appui-secondarymenu
|
<dees-appui-secondarymenu
|
||||||
@@ -806,28 +932,12 @@ Professional application bar component with hierarchical menus, breadcrumb navig
|
|||||||
.menuItems=${[
|
.menuItems=${[
|
||||||
{
|
{
|
||||||
name: 'File',
|
name: 'File',
|
||||||
action: async () => {}, // No-op for parent menu items
|
action: async () => {},
|
||||||
submenu: [
|
submenu: [
|
||||||
{
|
{ name: 'New File', shortcut: 'Cmd+N', iconName: 'file-plus', action: async () => handleNewFile() },
|
||||||
name: 'New File',
|
{ name: 'Open...', shortcut: 'Cmd+O', iconName: 'folder-open', action: async () => handleOpen() },
|
||||||
shortcut: 'Cmd+N',
|
{ divider: true },
|
||||||
iconName: 'file-plus',
|
{ name: 'Save', shortcut: 'Cmd+S', iconName: 'save', action: async () => handleSave(), disabled: true }
|
||||||
action: async () => handleNewFile()
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Open...',
|
|
||||||
shortcut: 'Cmd+O',
|
|
||||||
iconName: 'folder-open',
|
|
||||||
action: async () => handleOpen()
|
|
||||||
},
|
|
||||||
{ divider: true }, // Menu separator
|
|
||||||
{
|
|
||||||
name: 'Save',
|
|
||||||
shortcut: 'Cmd+S',
|
|
||||||
iconName: 'save',
|
|
||||||
action: async () => handleSave(),
|
|
||||||
disabled: true // Disabled state
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]}
|
]}
|
||||||
@@ -849,12 +959,12 @@ Professional application bar component with hierarchical menus, breadcrumb navig
|
|||||||
```
|
```
|
||||||
|
|
||||||
**Key Features:**
|
**Key Features:**
|
||||||
- **Hierarchical Menu System** - Top-level menus with dropdown submenus, icons, and keyboard shortcuts
|
- **Hierarchical Menu System** — Top-level menus with dropdown submenus, icons, and keyboard shortcuts
|
||||||
- **Keyboard Navigation** - Full keyboard support (Tab, Arrow keys, Enter, Escape)
|
- **Keyboard Navigation** — Full keyboard support (Tab, Arrow keys, Enter, Escape)
|
||||||
- **Breadcrumb Navigation** - Customizable breadcrumb trail with click events
|
- **Breadcrumb Navigation** — Customizable breadcrumb trail with click events
|
||||||
- **User Account Section** - Avatar with status indicator and profile dropdown
|
- **User Account Section** — Avatar with status indicator and profile dropdown
|
||||||
- **Activity Log Toggle** - Button with badge count to show/hide activity panel
|
- **Activity Log Toggle** — Button with badge count to show/hide activity panel
|
||||||
- **Accessibility** - Full ARIA support with menubar roles
|
- **Accessibility** — Full ARIA support with menubar roles
|
||||||
|
|
||||||
#### `DeesAppuiActivitylog`
|
#### `DeesAppuiActivitylog`
|
||||||
Real-time activity log panel for displaying user actions and system events.
|
Real-time activity log panel for displaying user actions and system events.
|
||||||
@@ -886,6 +996,61 @@ activityLog.search('settings'); // Search by message
|
|||||||
- Animated slide-in/out panel
|
- Animated slide-in/out panel
|
||||||
- Theme-aware styling
|
- Theme-aware styling
|
||||||
|
|
||||||
|
#### `DeesAppuiBottombar`
|
||||||
|
A 24px fixed-height status bar at the bottom of the application shell. Supports status widgets and action buttons positioned left or right.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Configure via DeesAppui
|
||||||
|
appui.configure({
|
||||||
|
bottomBar: {
|
||||||
|
visible: true,
|
||||||
|
widgets: [
|
||||||
|
{
|
||||||
|
id: 'status',
|
||||||
|
iconName: 'lucide:activity',
|
||||||
|
label: 'System Online',
|
||||||
|
status: 'success', // 'idle' | 'active' | 'success' | 'warning' | 'error'
|
||||||
|
tooltip: 'All systems operational',
|
||||||
|
onClick: () => console.log('Status clicked'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'version',
|
||||||
|
iconName: 'lucide:gitBranch',
|
||||||
|
label: 'v1.2.3',
|
||||||
|
position: 'right',
|
||||||
|
}
|
||||||
|
],
|
||||||
|
actions: [
|
||||||
|
{
|
||||||
|
id: 'terminal',
|
||||||
|
iconName: 'lucide:terminal',
|
||||||
|
tooltip: 'Open Terminal',
|
||||||
|
position: 'right',
|
||||||
|
onClick: () => console.log('Terminal clicked'),
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Programmatic updates
|
||||||
|
appui.bottomBar.addWidget({ id: 'build', iconName: 'lucide:hammer', label: 'Building...', loading: true, status: 'active' });
|
||||||
|
appui.bottomBar.updateWidget('build', { label: 'Build complete', loading: false, status: 'success' });
|
||||||
|
appui.bottomBar.removeWidget('build');
|
||||||
|
|
||||||
|
appui.bottomBar.addAction({ id: 'refresh', iconName: 'lucide:refreshCw', onClick: () => location.reload() });
|
||||||
|
appui.bottomBar.removeAction('refresh');
|
||||||
|
|
||||||
|
appui.setBottomBarVisible(false);
|
||||||
|
```
|
||||||
|
|
||||||
|
**Key Features:**
|
||||||
|
- Configurable status widgets with icons, labels, and colored status indicators
|
||||||
|
- Loading spinner state for widgets
|
||||||
|
- Contextual actions with icon buttons
|
||||||
|
- Left/right positioning for both widgets and actions
|
||||||
|
- Tooltips on hover
|
||||||
|
- Context menu support per widget
|
||||||
|
|
||||||
#### `DeesAppuiTabs`
|
#### `DeesAppuiTabs`
|
||||||
Reusable tab component with horizontal/vertical layout support.
|
Reusable tab component with horizontal/vertical layout support.
|
||||||
|
|
||||||
@@ -1007,7 +1172,7 @@ A responsive grid component for displaying statistical data with various visuali
|
|||||||
value: 125420,
|
value: 125420,
|
||||||
unit: '$',
|
unit: '$',
|
||||||
type: 'number',
|
type: 'number',
|
||||||
icon: 'faDollarSign',
|
icon: 'lucide:dollarSign',
|
||||||
description: '+12.5% from last month',
|
description: '+12.5% from last month',
|
||||||
color: '#22c55e'
|
color: '#22c55e'
|
||||||
},
|
},
|
||||||
@@ -1016,7 +1181,7 @@ A responsive grid component for displaying statistical data with various visuali
|
|||||||
title: 'CPU Usage',
|
title: 'CPU Usage',
|
||||||
value: 73,
|
value: 73,
|
||||||
type: 'gauge',
|
type: 'gauge',
|
||||||
icon: 'faMicrochip',
|
icon: 'lucide:cpu',
|
||||||
gaugeOptions: {
|
gaugeOptions: {
|
||||||
min: 0, max: 100,
|
min: 0, max: 100,
|
||||||
thresholds: [
|
thresholds: [
|
||||||
@@ -1032,8 +1197,22 @@ A responsive grid component for displaying statistical data with various visuali
|
|||||||
value: '1.2k',
|
value: '1.2k',
|
||||||
unit: '/min',
|
unit: '/min',
|
||||||
type: 'trend',
|
type: 'trend',
|
||||||
icon: 'faServer',
|
icon: 'lucide:server',
|
||||||
trendData: [45, 52, 38, 65, 72, 68, 75, 82, 79, 85, 88, 92]
|
trendData: [45, 52, 38, 65, 72, 68, 75, 82, 79, 85, 88, 92]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'cores',
|
||||||
|
title: 'CPU Cores',
|
||||||
|
value: 0,
|
||||||
|
type: 'cpuCores',
|
||||||
|
icon: 'lucide:cpu',
|
||||||
|
columnSpan: 2,
|
||||||
|
coresData: [
|
||||||
|
{ id: 0, usage: 45, label: '0' },
|
||||||
|
{ id: 1, usage: 72, label: '1' },
|
||||||
|
{ id: 2, usage: 30, label: '2' },
|
||||||
|
{ id: 3, usage: 88, label: '3' }
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]}
|
]}
|
||||||
.minTileWidth=${250}
|
.minTileWidth=${250}
|
||||||
@@ -1041,6 +1220,8 @@ A responsive grid component for displaying statistical data with various visuali
|
|||||||
></dees-statsgrid>
|
></dees-statsgrid>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Tile Types:** `number`, `gauge`, `percentage`, `trend`, `text`, `multiPercentage`, `cpuCores`
|
||||||
|
|
||||||
#### `DeesPagination`
|
#### `DeesPagination`
|
||||||
Pagination component for navigating through large datasets.
|
Pagination component for navigating through large datasets.
|
||||||
|
|
||||||
@@ -1056,6 +1237,146 @@ Pagination component for navigating through large datasets.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### Media & Tile Components 🎬
|
||||||
|
|
||||||
|
A rich collection of tile-based preview components for displaying media files in grids. All tiles share a consistent base class (`DeesTileBase`) with lazy loading via `IntersectionObserver`, hover interactions, click events, context menus, and three size variants (`small`, `default`, `large`).
|
||||||
|
|
||||||
|
All tile badges use a unified styling system with label-awareness — when a `label` is set, bottom badges automatically shift up to avoid overlapping.
|
||||||
|
|
||||||
|
#### `DeesTilePdf`
|
||||||
|
PDF document tile with live page preview on hover.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
<dees-tile-pdf
|
||||||
|
pdfUrl="/documents/report.pdf"
|
||||||
|
label="Annual Report"
|
||||||
|
clickable
|
||||||
|
@tile-click=${handleClick}
|
||||||
|
></dees-tile-pdf>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Key Features:**
|
||||||
|
- Renders first page as canvas preview
|
||||||
|
- Hover to scrub through pages (mouse X position maps to page number)
|
||||||
|
- Shows page count badge, hover page indicator
|
||||||
|
- Detects A4/Letter vs non-standard aspect ratios
|
||||||
|
|
||||||
|
#### `DeesTileImage`
|
||||||
|
Image tile with lazy loading and dimension display.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
<dees-tile-image
|
||||||
|
src="/photos/landscape.jpg"
|
||||||
|
alt="Mountain landscape"
|
||||||
|
label="landscape.jpg"
|
||||||
|
clickable
|
||||||
|
@tile-click=${handleClick}
|
||||||
|
></dees-tile-image>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Key Features:**
|
||||||
|
- Lazy loads image on scroll into view
|
||||||
|
- Shows image dimensions on hover (e.g. "1920 × 1080")
|
||||||
|
- Checkerboard background for transparent images
|
||||||
|
|
||||||
|
#### `DeesTileAudio`
|
||||||
|
Audio file tile with waveform visualization.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
<dees-tile-audio
|
||||||
|
src="/music/track.mp3"
|
||||||
|
title="Summer Vibes"
|
||||||
|
artist="DJ Example"
|
||||||
|
clickable
|
||||||
|
@tile-click=${handleClick}
|
||||||
|
></dees-tile-audio>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Key Features:**
|
||||||
|
- Generates waveform visualization from audio data
|
||||||
|
- Shows duration badge (e.g. "3:42")
|
||||||
|
- Displays title and artist metadata
|
||||||
|
- Play overlay on hover
|
||||||
|
|
||||||
|
#### `DeesTileVideo`
|
||||||
|
Video tile with thumbnail capture and hover preview.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
<dees-tile-video
|
||||||
|
src="/videos/intro.mp4"
|
||||||
|
poster="/thumbs/intro.jpg"
|
||||||
|
label="Introduction"
|
||||||
|
clickable
|
||||||
|
@tile-click=${handleClick}
|
||||||
|
></dees-tile-video>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Key Features:**
|
||||||
|
- Auto-captures first frame as thumbnail (or uses provided `poster`)
|
||||||
|
- Plays video preview on hover
|
||||||
|
- Shows duration badge
|
||||||
|
- Play button overlay
|
||||||
|
|
||||||
|
#### `DeesTileNote`
|
||||||
|
Code/text snippet tile with syntax-aware display.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
<dees-tile-note
|
||||||
|
title="config.ts"
|
||||||
|
language="TypeScript"
|
||||||
|
.content=${codeString}
|
||||||
|
clickable
|
||||||
|
@tile-click=${handleClick}
|
||||||
|
></dees-tile-note>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Key Features:**
|
||||||
|
- Monospace font with line numbers
|
||||||
|
- Language badge (top-right)
|
||||||
|
- Scrollable content on hover (mouse X position controls scroll)
|
||||||
|
- Line indicator badge while scrolling
|
||||||
|
- Gradient fade at bottom
|
||||||
|
|
||||||
|
#### `DeesTileFolder`
|
||||||
|
Folder tile with 2×2 content preview grid.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
<dees-tile-folder
|
||||||
|
name="Project Assets"
|
||||||
|
.items=${[
|
||||||
|
{ type: 'image', name: 'logo.png', thumbnailSrc: '/thumbs/logo.png' },
|
||||||
|
{ type: 'pdf', name: 'spec.pdf' },
|
||||||
|
{ type: 'audio', name: 'jingle.mp3' },
|
||||||
|
{ type: 'video', name: 'demo.mp4' },
|
||||||
|
]}
|
||||||
|
clickable
|
||||||
|
@tile-click=${handleClick}
|
||||||
|
></dees-tile-folder>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Key Features:**
|
||||||
|
- 2×2 preview grid showing first 4 items (thumbnails or type icons)
|
||||||
|
- Item count badge (e.g. "12 items")
|
||||||
|
- Folder icon header with name
|
||||||
|
- Supports: `pdf`, `image`, `audio`, `video`, `note`, `folder`, `unknown` types
|
||||||
|
|
||||||
|
#### `DeesPreview`
|
||||||
|
Unified preview component that auto-selects the right tile type based on content.
|
||||||
|
|
||||||
|
#### `DeesPdfViewer` / `DeesPdfPreview`
|
||||||
|
Full PDF viewing components with navigation controls.
|
||||||
|
|
||||||
|
#### `DeesImageViewer`
|
||||||
|
Full-screen image viewer with zoom and pan.
|
||||||
|
|
||||||
|
#### `DeesAudioViewer`
|
||||||
|
Audio playback component with waveform and controls.
|
||||||
|
|
||||||
|
#### `DeesVideoViewer`
|
||||||
|
Video playback component with standard controls.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### Visualization Components
|
### Visualization Components
|
||||||
|
|
||||||
#### `DeesChartArea`
|
#### `DeesChartArea`
|
||||||
@@ -1116,16 +1437,41 @@ DeesModal.createAndShow({
|
|||||||
```
|
```
|
||||||
|
|
||||||
#### `DeesContextmenu`
|
#### `DeesContextmenu`
|
||||||
Context menu component for right-click actions.
|
Context menu component for right-click actions with nested submenu support.
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
<dees-contextmenu
|
// Programmatic usage
|
||||||
.items=${[
|
DeesContextmenu.openContextMenuWithOptions(mouseEvent, [
|
||||||
{ label: 'Edit', icon: 'edit', action: () => handleEdit() },
|
{
|
||||||
{ label: 'Delete', icon: 'trash', action: () => handleDelete() }
|
name: 'Edit',
|
||||||
]}
|
iconName: 'lucide:edit',
|
||||||
position="right"
|
action: async () => handleEdit()
|
||||||
></dees-contextmenu>
|
},
|
||||||
|
{ divider: true },
|
||||||
|
{
|
||||||
|
name: 'More Options',
|
||||||
|
iconName: 'lucide:moreHorizontal',
|
||||||
|
submenu: [
|
||||||
|
{ name: 'Duplicate', iconName: 'lucide:copy', action: async () => handleDuplicate() },
|
||||||
|
{ name: 'Archive', iconName: 'lucide:archive', action: async () => handleArchive() },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Delete',
|
||||||
|
iconName: 'lucide:trash2',
|
||||||
|
action: async () => handleDelete()
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Component-based (implement getContextMenuItems on any element)
|
||||||
|
class MyComponent extends DeesElement {
|
||||||
|
getContextMenuItems() {
|
||||||
|
return [
|
||||||
|
{ name: 'View Details', iconName: 'lucide:eye', action: async () => { ... } },
|
||||||
|
{ name: 'Edit', iconName: 'lucide:edit', action: async () => { ... } },
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### `DeesSpeechbubble`
|
#### `DeesSpeechbubble`
|
||||||
@@ -1189,7 +1535,7 @@ Progress indicator component for tracking completion status.
|
|||||||
Theme provider component that wraps children and provides CSS custom properties for consistent theming.
|
Theme provider component that wraps children and provides CSS custom properties for consistent theming.
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
// Basic usage - wrap your app
|
// Basic usage — wrap your app
|
||||||
<dees-theme>
|
<dees-theme>
|
||||||
<my-app></my-app>
|
<my-app></my-app>
|
||||||
</dees-theme>
|
</dees-theme>
|
||||||
@@ -1217,76 +1563,71 @@ Theme provider component that wraps children and provides CSS custom properties
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Development Components
|
### Workspace / IDE Components 💻
|
||||||
|
|
||||||
#### `DeesEditor`
|
A full-featured IDE workspace component suite for building browser-based code editors, terminal interfaces, and documentation viewers.
|
||||||
Code editor component with syntax highlighting and code completion, powered by Monaco Editor.
|
|
||||||
|
#### `DeesWorkspace`
|
||||||
|
Top-level workspace shell that composes editor, file tree, terminal, and bottom bar into an IDE-like layout.
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
<dees-editor
|
<dees-workspace></dees-workspace>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `DeesWorkspaceMonaco`
|
||||||
|
Monaco Editor integration for code editing with full IntelliSense, syntax highlighting, and language support.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
<dees-workspace-monaco
|
||||||
.value=${code}
|
.value=${code}
|
||||||
@change=${handleCodeChange}
|
|
||||||
.language=${'typescript'}
|
.language=${'typescript'}
|
||||||
.theme=${'vs-dark'}
|
@change=${handleCodeChange}
|
||||||
.options=${{
|
></dees-workspace-monaco>
|
||||||
lineNumbers: true,
|
|
||||||
minimap: { enabled: true },
|
|
||||||
autoClosingBrackets: 'always'
|
|
||||||
}}
|
|
||||||
></dees-editor>
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### `DeesEditorMarkdown`
|
#### `DeesWorkspaceDiffEditor`
|
||||||
Markdown editor component with live preview.
|
Side-by-side diff editor powered by Monaco for comparing file versions.
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
<dees-editor-markdown
|
<dees-workspace-diff-editor
|
||||||
.value=${markdown}
|
.originalValue=${originalCode}
|
||||||
@change=${handleMarkdownChange}
|
.modifiedValue=${modifiedCode}
|
||||||
.options=${{ preview: true, toolbar: true, spellcheck: true }}
|
.language=${'typescript'}
|
||||||
></dees-editor-markdown>
|
></dees-workspace-diff-editor>
|
||||||
```
|
```
|
||||||
|
|
||||||
#### `DeesEditorMarkdownoutlet`
|
#### `DeesWorkspaceFiletree`
|
||||||
Markdown preview component for rendering markdown content.
|
File tree navigation component with expand/collapse, file icons, and selection.
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
<dees-editor-markdownoutlet
|
<dees-workspace-filetree
|
||||||
.markdown=${markdownContent}
|
.files=${fileTreeData}
|
||||||
.theme=${'github'}
|
@file-select=${handleFileSelect}
|
||||||
allowHtml={false}
|
></dees-workspace-filetree>
|
||||||
></dees-editor-markdownoutlet>
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### `DeesTerminal`
|
#### `DeesWorkspaceTerminal`
|
||||||
Terminal emulator component for command-line interface.
|
Terminal emulator component powered by xterm.js.
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
<dees-terminal
|
<dees-workspace-terminal></dees-workspace-terminal>
|
||||||
.commands=${{
|
|
||||||
'echo': (args) => `Echo: ${args.join(' ')}`,
|
|
||||||
'help': () => 'Available commands: echo, help'
|
|
||||||
}}
|
|
||||||
.prompt=${'$'}
|
|
||||||
.welcomeMessage=${'Welcome! Type "help" for available commands.'}
|
|
||||||
></dees-terminal>
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### `DeesUpdater`
|
#### `DeesWorkspaceTerminalPreview`
|
||||||
Component for managing application updates and version control.
|
Terminal with integrated preview pane for output visualization.
|
||||||
|
|
||||||
```typescript
|
#### `DeesWorkspaceMarkdown`
|
||||||
<dees-updater
|
Markdown editor with live preview.
|
||||||
.currentVersion=${'1.5.2'}
|
|
||||||
.checkInterval=${3600000}
|
#### `DeesWorkspaceMarkdownoutlet`
|
||||||
.autoUpdate=${false}
|
Read-only markdown renderer for documentation display.
|
||||||
@update-available=${handleUpdateAvailable}
|
|
||||||
></dees-updater>
|
#### `DeesWorkspaceBottombar`
|
||||||
```
|
IDE-style bottom status bar for the workspace.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Auth & Utilities Components
|
### Pre-built Templates
|
||||||
|
|
||||||
#### `DeesSimpleAppdash`
|
#### `DeesSimpleAppdash`
|
||||||
Simple application dashboard component for quick prototyping.
|
Simple application dashboard component for quick prototyping.
|
||||||
@@ -1360,6 +1701,8 @@ interface IMenuItem {
|
|||||||
action: () => void;
|
action: () => void;
|
||||||
badge?: string | number;
|
badge?: string | number;
|
||||||
badgeVariant?: 'default' | 'success' | 'warning' | 'error';
|
badgeVariant?: 'default' | 'success' | 'warning' | 'error';
|
||||||
|
closeable?: boolean;
|
||||||
|
onClose?: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Menu group interface for organized menus
|
// Menu group interface for organized menus
|
||||||
@@ -1375,11 +1718,13 @@ interface IViewDefinition {
|
|||||||
id: string;
|
id: string;
|
||||||
name: string;
|
name: string;
|
||||||
iconName?: string;
|
iconName?: string;
|
||||||
content: string | HTMLElement | (() => TemplateResult);
|
content: string | (new () => HTMLElement) | (() => TemplateResult) | (() => Promise<any>);
|
||||||
secondaryMenu?: ISecondaryMenuGroup[];
|
secondaryMenu?: ISecondaryMenuGroup[];
|
||||||
contentTabs?: IMenuItem[];
|
contentTabs?: IMenuItem[];
|
||||||
route?: string;
|
route?: string;
|
||||||
badge?: string | number;
|
badge?: string | number;
|
||||||
|
badgeVariant?: 'default' | 'success' | 'warning' | 'error';
|
||||||
|
cache?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Activity log entry
|
// Activity log entry
|
||||||
@@ -1392,6 +1737,43 @@ interface IActivityEntry {
|
|||||||
iconName?: string;
|
iconName?: string;
|
||||||
data?: Record<string, unknown>;
|
data?: Record<string, unknown>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Bottom bar widget
|
||||||
|
interface IBottomBarWidget {
|
||||||
|
id: string;
|
||||||
|
iconName?: string;
|
||||||
|
label?: string;
|
||||||
|
status?: 'idle' | 'active' | 'success' | 'warning' | 'error';
|
||||||
|
tooltip?: string;
|
||||||
|
loading?: boolean;
|
||||||
|
onClick?: () => void;
|
||||||
|
position?: 'left' | 'right';
|
||||||
|
order?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bottom bar action button
|
||||||
|
interface IBottomBarAction {
|
||||||
|
id: string;
|
||||||
|
iconName: string;
|
||||||
|
tooltip?: string;
|
||||||
|
onClick: () => void | Promise<void>;
|
||||||
|
disabled?: boolean;
|
||||||
|
position?: 'left' | 'right';
|
||||||
|
}
|
||||||
|
|
||||||
|
// View activation context (passed to onActivate)
|
||||||
|
interface IViewActivationContext {
|
||||||
|
appui: DeesAppui;
|
||||||
|
viewId: string;
|
||||||
|
params?: Record<string, string>;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tile folder item (for DeesTileFolder)
|
||||||
|
interface ITileFolderItem {
|
||||||
|
type: 'pdf' | 'image' | 'audio' | 'video' | 'note' | 'folder' | 'unknown';
|
||||||
|
thumbnailSrc?: string;
|
||||||
|
name: string;
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
||||||
import { DeesContextmenu } from '../ts_web/elements/dees-contextmenu/dees-contextmenu.js';
|
import { DeesContextmenu } from '../ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.js';
|
||||||
import { demoFunc } from '../ts_web/elements/dees-contextmenu/dees-contextmenu.demo.js';
|
import { demoFunc } from '../ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.demo.js';
|
||||||
|
|
||||||
tap.test('should render context menu demo', async () => {
|
tap.test('should render context menu demo', async () => {
|
||||||
// Create demo container
|
// Create demo container
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
||||||
import { DeesContextmenu } from '../ts_web/elements/dees-contextmenu/dees-contextmenu.js';
|
import { DeesContextmenu } from '../ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.js';
|
||||||
|
|
||||||
tap.test('should close all parent menus when clicking action in nested submenu', async () => {
|
tap.test('should close all parent menus when clicking action in nested submenu', async () => {
|
||||||
let actionCalled = false;
|
let actionCalled = false;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
||||||
import { DeesContextmenu } from '../ts_web/elements/dees-contextmenu/dees-contextmenu.js';
|
import { DeesContextmenu } from '../ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.js';
|
||||||
import { DeesElement, customElement, html } from '@design.estate/dees-element';
|
import { DeesElement, customElement, html } from '@design.estate/dees-element';
|
||||||
|
|
||||||
// Create a test element with shadow DOM
|
// Create a test element with shadow DOM
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
||||||
import { DeesContextmenu } from '../ts_web/elements/dees-contextmenu/dees-contextmenu.js';
|
import { DeesContextmenu } from '../ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.js';
|
||||||
|
|
||||||
tap.test('should show context menu with nested submenu', async () => {
|
tap.test('should show context menu with nested submenu', async () => {
|
||||||
// Create a test element with context menu items
|
// Create a test element with context menu items
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
|
|||||||
import {
|
import {
|
||||||
resolveWidgetPlacement,
|
resolveWidgetPlacement,
|
||||||
collectCollisions,
|
collectCollisions,
|
||||||
} from '../ts_web/elements/dees-dashboardgrid/layout.ts';
|
} from '../ts_web/elements/00group-layout/dees-dashboardgrid/layout.ts';
|
||||||
import type { DashboardWidget } from '../ts_web/elements/dees-dashboardgrid/types.ts';
|
import type { DashboardWidget } from '../ts_web/elements/00group-layout/dees-dashboardgrid/types.ts';
|
||||||
|
|
||||||
tap.test('dashboardgrid does not overlap widgets after swap attempt', async () => {
|
tap.test('dashboardgrid does not overlap widgets after swap attempt', async () => {
|
||||||
const widgets: DashboardWidget[] = [
|
const widgets: DashboardWidget[] = [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
||||||
import { DeesInputWysiwyg } from '../ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.js';
|
import { DeesInputWysiwyg } from '../ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.js';
|
||||||
import { DeesContextmenu } from '../ts_web/elements/dees-contextmenu/dees-contextmenu.js';
|
import { DeesContextmenu } from '../ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.js';
|
||||||
|
|
||||||
tap.test('should change block type via context menu', async () => {
|
tap.test('should change block type via context menu', async () => {
|
||||||
// Create WYSIWYG editor with a paragraph
|
// Create WYSIWYG editor with a paragraph
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
import { expect, tap } from '@git.zone/tstest/tapbundle';
|
||||||
import { DeesInputWysiwyg } from '../ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.js';
|
import { DeesInputWysiwyg } from '../ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.js';
|
||||||
import { DeesContextmenu } from '../ts_web/elements/dees-contextmenu/dees-contextmenu.js';
|
import { DeesContextmenu } from '../ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.js';
|
||||||
|
|
||||||
tap.test('should show context menu on WYSIWYG blocks', async () => {
|
tap.test('should show context menu on WYSIWYG blocks', async () => {
|
||||||
// Create WYSIWYG editor
|
// Create WYSIWYG editor
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@design.estate/dees-catalog',
|
name: '@design.estate/dees-catalog',
|
||||||
version: '3.37.1',
|
version: '3.41.1',
|
||||||
description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
|
description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ import {
|
|||||||
} from '@design.estate/dees-element';
|
} from '@design.estate/dees-element';
|
||||||
|
|
||||||
import * as domtools from '@design.estate/dees-domtools';
|
import * as domtools from '@design.estate/dees-domtools';
|
||||||
import { DeesContextmenu } from '../../dees-contextmenu/dees-contextmenu.js';
|
import { DeesContextmenu } from '../../00group-overlay/dees-contextmenu/dees-contextmenu.js';
|
||||||
import '../../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
import type { IActivityEntry, IActivityLogAPI } from '../../interfaces/appconfig.js';
|
import type { IActivityEntry, IActivityLogAPI } from '../../interfaces/appconfig.js';
|
||||||
import { demoFunc } from './dees-appui-activitylog.demo.js';
|
import { demoFunc } from './dees-appui-activitylog.demo.js';
|
||||||
import { themeDefaultStyles } from '../../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
@@ -20,7 +20,7 @@ import { themeDefaultStyles } from '../../00theme.js';
|
|||||||
export class DeesAppuiActivitylog extends DeesElement implements IActivityLogAPI {
|
export class DeesAppuiActivitylog extends DeesElement implements IActivityLogAPI {
|
||||||
// STATIC
|
// STATIC
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'App UI';
|
public static demoGroups = ['App UI'];
|
||||||
|
|
||||||
// INSTANCE PROPERTIES
|
// INSTANCE PROPERTIES
|
||||||
@state()
|
@state()
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ import { appuiAppbarStyles } from './styles.js';
|
|||||||
import { renderAppuiAppbar } from './template.js';
|
import { renderAppuiAppbar } from './template.js';
|
||||||
|
|
||||||
// Import required components
|
// Import required components
|
||||||
import '../../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
import '../../dees-windowcontrols/dees-windowcontrols.js';
|
import '../../00group-utility/dees-windowcontrols/dees-windowcontrols.js';
|
||||||
import '../dees-appui-profiledropdown/dees-appui-profiledropdown.js';
|
import '../dees-appui-profiledropdown/dees-appui-profiledropdown.js';
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
@@ -28,7 +28,7 @@ declare global {
|
|||||||
@customElement('dees-appui-appbar')
|
@customElement('dees-appui-appbar')
|
||||||
export class DeesAppuiBar extends DeesElement {
|
export class DeesAppuiBar extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'App UI';
|
public static demoGroups = ['App UI'];
|
||||||
|
|
||||||
// INSTANCE PROPERTIES
|
// INSTANCE PROPERTIES
|
||||||
@property({ type: Array })
|
@property({ type: Array })
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import {
|
|||||||
state,
|
state,
|
||||||
} from '@design.estate/dees-element';
|
} from '@design.estate/dees-element';
|
||||||
import { themeDefaultStyles } from '../../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
import '../../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
import { DeesContextmenu } from '../../dees-contextmenu/dees-contextmenu.js';
|
import { DeesContextmenu } from '../../00group-overlay/dees-contextmenu/dees-contextmenu.js';
|
||||||
import type {
|
import type {
|
||||||
IBottomBarWidget,
|
IBottomBarWidget,
|
||||||
IBottomBarAction,
|
IBottomBarAction,
|
||||||
@@ -26,7 +26,7 @@ declare global {
|
|||||||
@customElement('dees-appui-bottombar')
|
@customElement('dees-appui-bottombar')
|
||||||
export class DeesAppuiBottombar extends DeesElement implements IBottomBarAPI {
|
export class DeesAppuiBottombar extends DeesElement implements IBottomBarAPI {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'App UI';
|
public static demoGroups = ['App UI'];
|
||||||
|
|
||||||
// INSTANCE PROPERTIES
|
// INSTANCE PROPERTIES
|
||||||
@state()
|
@state()
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ export class DeesAppuiMaincontent extends DeesElement {
|
|||||||
</div>
|
</div>
|
||||||
</dees-appui-maincontent>
|
</dees-appui-maincontent>
|
||||||
`;
|
`;
|
||||||
public static demoGroup = 'App UI';
|
public static demoGroups = ['App UI'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
@property({
|
@property({
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import {
|
|||||||
css,
|
css,
|
||||||
cssManager,
|
cssManager,
|
||||||
} from '@design.estate/dees-element';
|
} from '@design.estate/dees-element';
|
||||||
import { DeesContextmenu } from '../../dees-contextmenu/dees-contextmenu.js';
|
import { DeesContextmenu } from '../../00group-overlay/dees-contextmenu/dees-contextmenu.js';
|
||||||
import { demoFunc } from './dees-appui-mainmenu.demo.js';
|
import { demoFunc } from './dees-appui-mainmenu.demo.js';
|
||||||
import { themeDefaultStyles } from '../../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ import { themeDefaultStyles } from '../../00theme.js';
|
|||||||
@customElement('dees-appui-mainmenu')
|
@customElement('dees-appui-mainmenu')
|
||||||
export class DeesAppuiMainmenu extends DeesElement {
|
export class DeesAppuiMainmenu extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'App UI';
|
public static demoGroups = ['App UI'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ export class DeesAppuiProfileDropdown extends DeesElement {
|
|||||||
.isOpen=${true}
|
.isOpen=${true}
|
||||||
></dees-appui-profiledropdown>
|
></dees-appui-profiledropdown>
|
||||||
`;
|
`;
|
||||||
public static demoGroup = 'App UI';
|
public static demoGroups = ['App UI'];
|
||||||
|
|
||||||
@property({ type: Object })
|
@property({ type: Object })
|
||||||
accessor user: {
|
accessor user: {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import * as plugins from '../../00plugins.js';
|
import * as plugins from '../../00plugins.js';
|
||||||
import * as interfaces from '../../interfaces/index.js';
|
import * as interfaces from '../../interfaces/index.js';
|
||||||
|
|
||||||
import { DeesContextmenu } from '../../dees-contextmenu/dees-contextmenu.js';
|
import { DeesContextmenu } from '../../00group-overlay/dees-contextmenu/dees-contextmenu.js';
|
||||||
import '../../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
DeesElement,
|
DeesElement,
|
||||||
@@ -33,7 +33,7 @@ import { themeDefaultStyles } from '../../00theme.js';
|
|||||||
@customElement('dees-appui-secondarymenu')
|
@customElement('dees-appui-secondarymenu')
|
||||||
export class DeesAppuiSecondarymenu extends DeesElement {
|
export class DeesAppuiSecondarymenu extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'App UI';
|
public static demoGroups = ['App UI'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import { themeDefaultStyles } from '../../00theme.js';
|
|||||||
@customElement('dees-appui-tabs')
|
@customElement('dees-appui-tabs')
|
||||||
export class DeesAppuiTabs extends DeesElement {
|
export class DeesAppuiTabs extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'App UI';
|
public static demoGroups = ['App UI'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
@property({
|
@property({
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ import type { DeesAppui } from './dees-appui.js';
|
|||||||
import type { IAppConfig, IViewActivationContext } from '../../interfaces/appconfig.js';
|
import type { IAppConfig, IViewActivationContext } from '../../interfaces/appconfig.js';
|
||||||
import type * as interfaces from '../../interfaces/index.js';
|
import type * as interfaces from '../../interfaces/index.js';
|
||||||
import '@design.estate/dees-wcctools/demotools';
|
import '@design.estate/dees-wcctools/demotools';
|
||||||
import '../../dees-statsgrid/dees-statsgrid.js';
|
import '../../00group-dataview/dees-statsgrid/dees-statsgrid.js';
|
||||||
import type { IStatsTile } from '../../dees-statsgrid/dees-statsgrid.js';
|
import type { IStatsTile } from '../../00group-dataview/dees-statsgrid/dees-statsgrid.js';
|
||||||
|
|
||||||
// Demo view component with lifecycle hooks
|
// Demo view component with lifecycle hooks
|
||||||
@customElement('demo-dashboard-view')
|
@customElement('demo-dashboard-view')
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ declare global {
|
|||||||
@customElement('dees-appui')
|
@customElement('dees-appui')
|
||||||
export class DeesAppui extends DeesElement {
|
export class DeesAppui extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'App UI';
|
public static demoGroups = ['App UI'];
|
||||||
|
|
||||||
// ==========================================
|
// ==========================================
|
||||||
// REACTIVE OBSERVABLES (RxJS Subjects)
|
// REACTIVE OBSERVABLES (RxJS Subjects)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { html, css } from '@design.estate/dees-element';
|
import { html, css } from '@design.estate/dees-element';
|
||||||
import '../00group-button/dees-button/dees-button.js';
|
import '../00group-button/dees-button/dees-button.js';
|
||||||
import '../dees-panel/dees-panel.js';
|
import '../../00group-layout/dees-panel/dees-panel.js';
|
||||||
import '@design.estate/dees-wcctools/demotools';
|
import '@design.estate/dees-wcctools/demotools';
|
||||||
|
|
||||||
export const demoFunc = () => html`
|
export const demoFunc = () => html`
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import * as plugins from '../00plugins.js';
|
import * as plugins from '../../00plugins.js';
|
||||||
import { zIndexRegistry } from '../00zindex.js';
|
import { zIndexRegistry } from '../../00zindex.js';
|
||||||
import { cssGeistFontFamily } from '../00fonts.js';
|
import { cssGeistFontFamily } from '../../00fonts.js';
|
||||||
import {
|
import {
|
||||||
cssManager,
|
cssManager,
|
||||||
css,
|
css,
|
||||||
@@ -12,13 +12,14 @@ import {
|
|||||||
property,
|
property,
|
||||||
state,
|
state,
|
||||||
} from '@design.estate/dees-element';
|
} from '@design.estate/dees-element';
|
||||||
import { DeesWindowLayer } from '../dees-windowlayer/dees-windowlayer.js';
|
import { DeesWindowLayer } from '../../00group-overlay/dees-windowlayer/dees-windowlayer.js';
|
||||||
import '../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
import { themeDefaultStyles } from '../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
|
|
||||||
@customElement('dees-mobilenavigation')
|
@customElement('dees-mobilenavigation')
|
||||||
export class DeesMobilenavigation extends DeesElement {
|
export class DeesMobilenavigation extends DeesElement {
|
||||||
// STATIC
|
// STATIC
|
||||||
|
public static demoGroups = ['App UI'];
|
||||||
public static demo = () => html`
|
public static demo = () => html`
|
||||||
<dees-button @click=${() => {
|
<dees-button @click=${() => {
|
||||||
DeesMobilenavigation.createAndShow([
|
DeesMobilenavigation.createAndShow([
|
||||||
@@ -8,3 +8,4 @@ export * from './dees-appui-mainmenu/index.js';
|
|||||||
export * from './dees-appui-secondarymenu/index.js';
|
export * from './dees-appui-secondarymenu/index.js';
|
||||||
export * from './dees-appui-profiledropdown/index.js';
|
export * from './dees-appui-profiledropdown/index.js';
|
||||||
export * from './dees-appui-tabs/index.js';
|
export * from './dees-appui-tabs/index.js';
|
||||||
|
export * from './dees-mobilenavigation/index.js';
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export class DeesButtonExit extends DeesElement {
|
|||||||
public static demo = () => html`
|
public static demo = () => html`
|
||||||
<dees-button-exit></dees-button-exit>
|
<dees-button-exit></dees-button-exit>
|
||||||
`;
|
`;
|
||||||
public static demoGroup = 'Button';
|
public static demoGroups = ['Button'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
@property({
|
@property({
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ declare global {
|
|||||||
@customElement('dees-button-group')
|
@customElement('dees-button-group')
|
||||||
export class DeesButtonGroup extends DeesElement {
|
export class DeesButtonGroup extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Button';
|
public static demoGroups = ['Button'];
|
||||||
|
|
||||||
@property()
|
@property()
|
||||||
accessor label: string = '';
|
accessor label: string = '';
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { html, css, cssManager, domtools } from '@design.estate/dees-element';
|
import { html, css, cssManager, domtools } from '@design.estate/dees-element';
|
||||||
import '@design.estate/dees-wcctools/demotools';
|
import '@design.estate/dees-wcctools/demotools';
|
||||||
import '../../dees-panel/dees-panel.js';
|
import '../../00group-layout/dees-panel/dees-panel.js';
|
||||||
import '../../00group-form/dees-form/dees-form.js';
|
import '../../00group-form/dees-form/dees-form.js';
|
||||||
import '../../00group-form/dees-form-submit/dees-form-submit.js';
|
import '../../00group-form/dees-form-submit/dees-form-submit.js';
|
||||||
import '../../00group-input/dees-input-text/dees-input-text.js';
|
import '../../00group-input/dees-input-text/dees-input-text.js';
|
||||||
import '../../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
import type { DeesButton } from '../dees-button/dees-button.js';
|
import type { DeesButton } from '../dees-button/dees-button.js';
|
||||||
|
|
||||||
export const demoFunc = () => html`
|
export const demoFunc = () => html`
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ declare global {
|
|||||||
@customElement('dees-button')
|
@customElement('dees-button')
|
||||||
export class DeesButton extends DeesElement {
|
export class DeesButton extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Button';
|
public static demoGroups = ['Button'];
|
||||||
|
|
||||||
@property({
|
@property({
|
||||||
reflect: true,
|
reflect: true,
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ declare global {
|
|||||||
@customElement('dees-chart-area')
|
@customElement('dees-chart-area')
|
||||||
export class DeesChartArea extends DeesElement {
|
export class DeesChartArea extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Chart';
|
public static demoGroups = ['Chart'];
|
||||||
|
|
||||||
// instance
|
// instance
|
||||||
@state()
|
@state()
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ export interface ILogMetrics {
|
|||||||
@customElement('dees-chart-log')
|
@customElement('dees-chart-log')
|
||||||
export class DeesChartLog extends DeesElement {
|
export class DeesChartLog extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Chart';
|
public static demoGroups = ['Chart', 'Workspace'];
|
||||||
|
|
||||||
@property()
|
@property()
|
||||||
accessor label: string = 'Server Logs';
|
accessor label: string = 'Server Logs';
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import type { HLJSApi } from 'highlight.js';
|
|||||||
import * as smartstring from '@push.rocks/smartstring';
|
import * as smartstring from '@push.rocks/smartstring';
|
||||||
|
|
||||||
import * as domtools from '@design.estate/dees-domtools';
|
import * as domtools from '@design.estate/dees-domtools';
|
||||||
import { DeesContextmenu } from '../../dees-contextmenu/dees-contextmenu.js';
|
import { DeesContextmenu } from '../../00group-overlay/dees-contextmenu/dees-contextmenu.js';
|
||||||
import { DeesServiceLibLoader } from '../../../services/index.js';
|
import { DeesServiceLibLoader } from '../../../services/index.js';
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
@@ -27,7 +27,7 @@ declare global {
|
|||||||
@customElement('dees-dataview-codebox')
|
@customElement('dees-dataview-codebox')
|
||||||
export class DeesDataviewCodebox extends DeesElement {
|
export class DeesDataviewCodebox extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Data View';
|
public static demoGroups = ['Data View', 'Workspace'];
|
||||||
|
|
||||||
@property()
|
@property()
|
||||||
accessor progLang: string = 'typescript';
|
accessor progLang: string = 'typescript';
|
||||||
@@ -52,6 +52,8 @@ export class DeesDataviewCodebox extends DeesElement {
|
|||||||
text-align: left;
|
text-align: left;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-family: ${cssGeistFontFamily};
|
font-family: ${cssGeistFontFamily};
|
||||||
|
height: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
.mainbox {
|
.mainbox {
|
||||||
position: relative;
|
position: relative;
|
||||||
@@ -61,6 +63,10 @@ export class DeesDataviewCodebox extends DeesElement {
|
|||||||
background: ${cssManager.bdTheme('#ffffff', '#09090b')};
|
background: ${cssManager.bdTheme('#ffffff', '#09090b')};
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.appbar {
|
.appbar {
|
||||||
@@ -74,6 +80,7 @@ export class DeesDataviewCodebox extends DeesElement {
|
|||||||
line-height: 32px;
|
line-height: 32px;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.appbar .fileName {
|
.appbar .fileName {
|
||||||
@@ -95,6 +102,7 @@ export class DeesDataviewCodebox extends DeesElement {
|
|||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.spacesLabel {
|
.spacesLabel {
|
||||||
@@ -121,7 +129,9 @@ export class DeesDataviewCodebox extends DeesElement {
|
|||||||
.codegrid {
|
.codegrid {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 50px auto;
|
grid-template-columns: 50px auto;
|
||||||
overflow: hidden;
|
overflow: auto;
|
||||||
|
flex: 1;
|
||||||
|
min-height: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lineNumbers {
|
.lineNumbers {
|
||||||
@@ -206,9 +216,7 @@ export class DeesDataviewCodebox extends DeesElement {
|
|||||||
}}"
|
}}"
|
||||||
>
|
>
|
||||||
<div class="appbar">
|
<div class="appbar">
|
||||||
<dees-windowcontrols type="mac" position="left"></dees-windowcontrols>
|
|
||||||
<div class="fileName">index.ts</div>
|
<div class="fileName">index.ts</div>
|
||||||
<dees-windowcontrols type="mac" position="right"></dees-windowcontrols>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="codegrid">
|
<div class="codegrid">
|
||||||
<div class="lineNumbers">
|
<div class="lineNumbers">
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import {
|
|||||||
} from '@design.estate/dees-element';
|
} from '@design.estate/dees-element';
|
||||||
|
|
||||||
import * as tsclass from '@tsclass/tsclass';
|
import * as tsclass from '@tsclass/tsclass';
|
||||||
import { DeesContextmenu } from '../../dees-contextmenu/dees-contextmenu.js';
|
import { DeesContextmenu } from '../../00group-overlay/dees-contextmenu/dees-contextmenu.js';
|
||||||
import { themeDefaultStyles } from '../../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
@@ -27,7 +27,7 @@ declare global {
|
|||||||
@customElement('dees-dataview-statusobject')
|
@customElement('dees-dataview-statusobject')
|
||||||
export class DeesDataviewStatusobject extends DeesElement {
|
export class DeesDataviewStatusobject extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Data View';
|
public static demoGroups = ['Data View'];
|
||||||
|
|
||||||
@property({ type: Object }) accessor statusObject: tsclass.code.IStatusObject;
|
@property({ type: Object }) accessor statusObject: tsclass.code.IStatusObject;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { html, css, cssManager } from '@design.estate/dees-element';
|
import { html, css, cssManager } from '@design.estate/dees-element';
|
||||||
import '@design.estate/dees-wcctools/demotools';
|
import '@design.estate/dees-wcctools/demotools';
|
||||||
import '../dees-panel/dees-panel.js';
|
import '../../00group-layout/dees-panel/dees-panel.js';
|
||||||
import type { IStatsTile, ICpuCore, IPartitionData, IDiskData } from '../dees-statsgrid/dees-statsgrid.js';
|
import type { IStatsTile, ICpuCore, IPartitionData, IDiskData } from '../dees-statsgrid/dees-statsgrid.js';
|
||||||
|
|
||||||
// Helper function to generate random CPU core data
|
// Helper function to generate random CPU core data
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { demoFunc } from './dees-statsgrid.demo.js';
|
import { demoFunc } from './dees-statsgrid.demo.js';
|
||||||
import * as plugins from '../00plugins.js';
|
import * as plugins from '../../00plugins.js';
|
||||||
import { cssGeistFontFamily } from '../00fonts.js';
|
import { cssGeistFontFamily } from '../../00fonts.js';
|
||||||
import {
|
import {
|
||||||
customElement,
|
customElement,
|
||||||
html,
|
html,
|
||||||
@@ -13,10 +13,10 @@ import {
|
|||||||
} from '@design.estate/dees-element';
|
} from '@design.estate/dees-element';
|
||||||
import type { TemplateResult } from '@design.estate/dees-element';
|
import type { TemplateResult } from '@design.estate/dees-element';
|
||||||
|
|
||||||
import '../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
import '../dees-contextmenu/dees-contextmenu.js';
|
import '../../00group-overlay/dees-contextmenu/dees-contextmenu.js';
|
||||||
import '../00group-button/dees-button/dees-button.js';
|
import '../../00group-button/dees-button/dees-button.js';
|
||||||
import { themeDefaultStyles } from '../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
interface HTMLElementTagNameMap {
|
interface HTMLElementTagNameMap {
|
||||||
@@ -96,6 +96,7 @@ export interface IStatsTile {
|
|||||||
@customElement('dees-statsgrid')
|
@customElement('dees-statsgrid')
|
||||||
export class DeesStatsGrid extends DeesElement {
|
export class DeesStatsGrid extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
|
public static demoGroups = ['Data View'];
|
||||||
|
|
||||||
@property({ type: Array })
|
@property({ type: Array })
|
||||||
accessor tiles: IStatsTile[] = [];
|
accessor tiles: IStatsTile[] = [];
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { type ITableAction } from './dees-table.js';
|
import { type ITableAction } from './dees-table.js';
|
||||||
import * as plugins from '../00plugins.js';
|
import * as plugins from '../../00plugins.js';
|
||||||
import { html, css, cssManager } from '@design.estate/dees-element';
|
import { html, css, cssManager } from '@design.estate/dees-element';
|
||||||
|
|
||||||
interface ITableDemoData {
|
interface ITableDemoData {
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
import * as plugins from '../00plugins.js';
|
import * as plugins from '../../00plugins.js';
|
||||||
import { demoFunc } from './dees-table.demo.js';
|
import { demoFunc } from './dees-table.demo.js';
|
||||||
import { customElement, html, DeesElement, property, type TemplateResult, directives } from '@design.estate/dees-element';
|
import { customElement, html, DeesElement, property, type TemplateResult, directives } from '@design.estate/dees-element';
|
||||||
|
|
||||||
import { DeesContextmenu } from '../dees-contextmenu/dees-contextmenu.js';
|
import { DeesContextmenu } from '../../00group-overlay/dees-contextmenu/dees-contextmenu.js';
|
||||||
import * as domtools from '@design.estate/dees-domtools';
|
import * as domtools from '@design.estate/dees-domtools';
|
||||||
import { type TIconKey } from '../dees-icon/dees-icon.js';
|
import { type TIconKey } from '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
import { tableStyles } from './styles.js';
|
import { tableStyles } from './styles.js';
|
||||||
import type { Column, ITableAction, ITableActionDataArg, TDisplayFunction } from './types.js';
|
import type { Column, ITableAction, ITableActionDataArg, TDisplayFunction } from './types.js';
|
||||||
import {
|
import {
|
||||||
@@ -14,7 +14,7 @@ import {
|
|||||||
getViewData as getViewDataFn,
|
getViewData as getViewDataFn,
|
||||||
} from './data.js';
|
} from './data.js';
|
||||||
import { compileLucenePredicate } from './lucene.js';
|
import { compileLucenePredicate } from './lucene.js';
|
||||||
import { themeDefaultStyles } from '../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
|
|
||||||
export type { Column, ITableAction, ITableActionDataArg, TDisplayFunction } from './types.js';
|
export type { Column, ITableAction, ITableActionDataArg, TDisplayFunction } from './types.js';
|
||||||
|
|
||||||
@@ -30,6 +30,7 @@ declare global {
|
|||||||
@customElement('dees-table')
|
@customElement('dees-table')
|
||||||
export class DeesTable<T> extends DeesElement {
|
export class DeesTable<T> extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
|
public static demoGroups = ['Data View'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
@property({
|
@property({
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { cssManager, css, type CSSResult } from '@design.estate/dees-element';
|
import { cssManager, css, type CSSResult } from '@design.estate/dees-element';
|
||||||
import { cssGeistFontFamily } from '../00fonts.js';
|
import { cssGeistFontFamily } from '../../00fonts.js';
|
||||||
import { themeDefaultStyles } from '../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
|
|
||||||
export const tableStyles: CSSResult[] = [
|
export const tableStyles: CSSResult[] = [
|
||||||
themeDefaultStyles,
|
themeDefaultStyles,
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import type { TemplateResult } from '@design.estate/dees-element';
|
import type { TemplateResult } from '@design.estate/dees-element';
|
||||||
import type { TIconKey } from '../dees-icon/dees-icon.js';
|
import type { TIconKey } from '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
|
|
||||||
export interface ITableActionDataArg<T> {
|
export interface ITableActionDataArg<T> {
|
||||||
item: T;
|
item: T;
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
// Data View Components
|
// Data View Components
|
||||||
export * from './dees-dataview-codebox/index.js';
|
export * from './dees-dataview-codebox/index.js';
|
||||||
export * from './dees-dataview-statusobject/index.js';
|
export * from './dees-dataview-statusobject/index.js';
|
||||||
|
export * from './dees-table/index.js';
|
||||||
|
export * from './dees-statsgrid/index.js';
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import {
|
|||||||
state,
|
state,
|
||||||
cssManager,
|
cssManager,
|
||||||
} from '@design.estate/dees-element';
|
} from '@design.estate/dees-element';
|
||||||
import { themeDefaultStyles } from '../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
import '../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
import type {
|
import type {
|
||||||
IActionBarOptions,
|
IActionBarOptions,
|
||||||
IActionBarResult,
|
IActionBarResult,
|
||||||
@@ -25,6 +25,7 @@ declare global {
|
|||||||
@customElement('dees-actionbar')
|
@customElement('dees-actionbar')
|
||||||
export class DeesActionbar extends DeesElement {
|
export class DeesActionbar extends DeesElement {
|
||||||
// STATIC
|
// STATIC
|
||||||
|
public static demoGroups = ['Feedback', 'Overlay'];
|
||||||
public static demo = () => {
|
public static demo = () => {
|
||||||
const getActionbar = (e: Event) => {
|
const getActionbar = (e: Event) => {
|
||||||
const button = e.currentTarget as HTMLElement;
|
const button = e.currentTarget as HTMLElement;
|
||||||
@@ -11,7 +11,7 @@ import {
|
|||||||
|
|
||||||
import * as domtools from '@design.estate/dees-domtools';
|
import * as domtools from '@design.estate/dees-domtools';
|
||||||
import { demoFunc } from './dees-badge.demo.js';
|
import { demoFunc } from './dees-badge.demo.js';
|
||||||
import { themeDefaultStyles } from '../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
interface HTMLElementTagNameMap {
|
interface HTMLElementTagNameMap {
|
||||||
@@ -22,6 +22,7 @@ declare global {
|
|||||||
@customElement('dees-badge')
|
@customElement('dees-badge')
|
||||||
export class DeesBadge extends DeesElement {
|
export class DeesBadge extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
|
public static demoGroups = ['Feedback'];
|
||||||
|
|
||||||
@property({ type: String })
|
@property({ type: String })
|
||||||
accessor type: 'default' | 'primary' | 'success' | 'warning' | 'error' = 'default';
|
accessor type: 'default' | 'primary' | 'success' | 'warning' | 'error' = 'default';
|
||||||
@@ -11,7 +11,7 @@ import {
|
|||||||
|
|
||||||
import * as domtools from '@design.estate/dees-domtools';
|
import * as domtools from '@design.estate/dees-domtools';
|
||||||
import { demoFunc } from './dees-hint.demo.js';
|
import { demoFunc } from './dees-hint.demo.js';
|
||||||
import { themeDefaultStyles } from '../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
interface HTMLElementTagNameMap {
|
interface HTMLElementTagNameMap {
|
||||||
@@ -22,6 +22,7 @@ declare global {
|
|||||||
@customElement('dees-hint')
|
@customElement('dees-hint')
|
||||||
export class DeesHint extends DeesElement {
|
export class DeesHint extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
|
public static demoGroups = ['Feedback'];
|
||||||
|
|
||||||
@property({ type: String })
|
@property({ type: String })
|
||||||
accessor type: 'info' | 'warn' | 'error' | 'critical' = 'info';
|
accessor type: 'info' | 'warn' | 'error' | 'critical' = 'info';
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as plugins from '../00plugins.js';
|
import * as plugins from '../../00plugins.js';
|
||||||
import * as colors from '../00colors.js';
|
import * as colors from '../../00colors.js';
|
||||||
import { demoFunc } from './dees-progressbar.demo.js';
|
import { demoFunc } from './dees-progressbar.demo.js';
|
||||||
import {
|
import {
|
||||||
customElement,
|
customElement,
|
||||||
@@ -16,12 +16,13 @@ import {
|
|||||||
} from '@design.estate/dees-element';
|
} from '@design.estate/dees-element';
|
||||||
|
|
||||||
import * as domtools from '@design.estate/dees-domtools';
|
import * as domtools from '@design.estate/dees-domtools';
|
||||||
import { themeDefaultStyles } from '../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
|
|
||||||
@customElement('dees-progressbar')
|
@customElement('dees-progressbar')
|
||||||
export class DeesProgressbar extends DeesElement {
|
export class DeesProgressbar extends DeesElement {
|
||||||
// STATIC
|
// STATIC
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
|
public static demoGroups = ['Feedback'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
@property({
|
@property({
|
||||||
@@ -11,7 +11,7 @@ import {
|
|||||||
} from '@design.estate/dees-element';
|
} from '@design.estate/dees-element';
|
||||||
|
|
||||||
import * as domtools from '@design.estate/dees-domtools';
|
import * as domtools from '@design.estate/dees-domtools';
|
||||||
import { themeDefaultStyles } from '../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
interface HTMLElementTagNameMap {
|
interface HTMLElementTagNameMap {
|
||||||
@@ -21,6 +21,7 @@ declare global {
|
|||||||
|
|
||||||
@customElement('dees-spinner')
|
@customElement('dees-spinner')
|
||||||
export class DeesSpinner extends DeesElement {
|
export class DeesSpinner extends DeesElement {
|
||||||
|
public static demoGroups = ['Feedback'];
|
||||||
public static demo = () => html`
|
public static demo = () => html`
|
||||||
<dees-spinner></dees-spinner>
|
<dees-spinner></dees-spinner>
|
||||||
<dees-spinner status="success"></dees-spinner>
|
<dees-spinner status="success"></dees-spinner>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { html, css, cssManager } from '@design.estate/dees-element';
|
import { html, css, cssManager } from '@design.estate/dees-element';
|
||||||
import { DeesToast } from '../dees-toast/dees-toast.js';
|
import { DeesToast } from '../dees-toast/dees-toast.js';
|
||||||
import '../00group-button/dees-button/dees-button.js';
|
import '../../00group-button/dees-button/dees-button.js';
|
||||||
|
|
||||||
export const demoFunc = () => html`
|
export const demoFunc = () => html`
|
||||||
<style>
|
<style>
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
import { customElement, DeesElement, type TemplateResult, html, css, property, cssManager } from '@design.estate/dees-element';
|
import { customElement, DeesElement, type TemplateResult, html, css, property, cssManager } from '@design.estate/dees-element';
|
||||||
|
|
||||||
import * as domtools from '@design.estate/dees-domtools';
|
import * as domtools from '@design.estate/dees-domtools';
|
||||||
import { zIndexLayers } from '../00zindex.js';
|
import { zIndexLayers } from '../../00zindex.js';
|
||||||
import { demoFunc } from './dees-toast.demo.js';
|
import { demoFunc } from './dees-toast.demo.js';
|
||||||
import { cssGeistFontFamily } from '../00fonts.js';
|
import { cssGeistFontFamily } from '../../00fonts.js';
|
||||||
import { themeDefaultStyles } from '../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
interface HTMLElementTagNameMap {
|
interface HTMLElementTagNameMap {
|
||||||
@@ -26,6 +26,7 @@ export interface IToastOptions {
|
|||||||
export class DeesToast extends DeesElement {
|
export class DeesToast extends DeesElement {
|
||||||
// STATIC
|
// STATIC
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
|
public static demoGroups = ['Feedback', 'Overlay'];
|
||||||
|
|
||||||
private static toastContainers = new Map<ToastPosition, HTMLDivElement>();
|
private static toastContainers = new Map<ToastPosition, HTMLDivElement>();
|
||||||
|
|
||||||
7
ts_web/elements/00group-feedback/index.ts
Normal file
7
ts_web/elements/00group-feedback/index.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
// Feedback Components
|
||||||
|
export * from './dees-actionbar/index.js';
|
||||||
|
export * from './dees-badge/index.js';
|
||||||
|
export * from './dees-hint/index.js';
|
||||||
|
export * from './dees-progressbar/index.js';
|
||||||
|
export * from './dees-spinner/index.js';
|
||||||
|
export * from './dees-toast/index.js';
|
||||||
@@ -19,7 +19,7 @@ declare global {
|
|||||||
@customElement('dees-form-submit')
|
@customElement('dees-form-submit')
|
||||||
export class DeesFormSubmit extends DeesElement {
|
export class DeesFormSubmit extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Form';
|
public static demoGroups = ['Form', 'Button'];
|
||||||
|
|
||||||
@property({
|
@property({
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import { DeesInputPhone } from '../../00group-input/dees-input-phone/dees-input-
|
|||||||
import { DeesInputToggle } from '../../00group-input/dees-input-toggle/dees-input-toggle.js';
|
import { DeesInputToggle } from '../../00group-input/dees-input-toggle/dees-input-toggle.js';
|
||||||
import { DeesInputTypelist } from '../../00group-input/dees-input-typelist/dees-input-typelist.js';
|
import { DeesInputTypelist } from '../../00group-input/dees-input-typelist/dees-input-typelist.js';
|
||||||
import { DeesFormSubmit } from '../dees-form-submit/dees-form-submit.js';
|
import { DeesFormSubmit } from '../dees-form-submit/dees-form-submit.js';
|
||||||
import { DeesTable } from '../../dees-table/index.js';
|
import { DeesTable } from '../../00group-dataview/dees-table/index.js';
|
||||||
import { demoFunc } from './dees-form.demo.js';
|
import { demoFunc } from './dees-form.demo.js';
|
||||||
|
|
||||||
// Unified set for form input types
|
// Unified set for form input types
|
||||||
@@ -68,7 +68,7 @@ declare global {
|
|||||||
@customElement('dees-form')
|
@customElement('dees-form')
|
||||||
export class DeesForm extends DeesElement {
|
export class DeesForm extends DeesElement {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Form';
|
public static demoGroups = ['Form'];
|
||||||
|
|
||||||
public name: string = 'myform';
|
public name: string = 'myform';
|
||||||
public changeSubject = new domtools.plugins.smartrx.rxjs.Subject();
|
public changeSubject = new domtools.plugins.smartrx.rxjs.Subject();
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { html, css, cssManager } from '@design.estate/dees-element';
|
import { html, css, cssManager } from '@design.estate/dees-element';
|
||||||
import '@design.estate/dees-wcctools/demotools';
|
import '@design.estate/dees-wcctools/demotools';
|
||||||
import '../../dees-panel/dees-panel.js';
|
import '../../00group-layout/dees-panel/dees-panel.js';
|
||||||
import type { DeesInputCheckbox } from '../dees-input-checkbox/dees-input-checkbox.js';
|
import type { DeesInputCheckbox } from '../dees-input-checkbox/dees-input-checkbox.js';
|
||||||
import '../../00group-button/dees-button/dees-button.js';
|
import '../../00group-button/dees-button/dees-button.js';
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ declare global {
|
|||||||
export class DeesInputCheckbox extends DeesInputBase<DeesInputCheckbox> {
|
export class DeesInputCheckbox extends DeesInputBase<DeesInputCheckbox> {
|
||||||
// STATIC
|
// STATIC
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
|
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ import {
|
|||||||
state,
|
state,
|
||||||
} from '@design.estate/dees-element';
|
} from '@design.estate/dees-element';
|
||||||
import { themeDefaultStyles } from '../../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
import { DeesModal } from '../../dees-modal/dees-modal.js';
|
import { DeesModal } from '../../00group-overlay/dees-modal/dees-modal.js';
|
||||||
import '../../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
import '../../dees-label/dees-label.js';
|
import '../../00group-layout/dees-label/dees-label.js';
|
||||||
import '../../00group-workspace/dees-workspace-monaco/dees-workspace-monaco.js';
|
import '../../00group-workspace/dees-workspace-monaco/dees-workspace-monaco.js';
|
||||||
import { DeesWorkspaceMonaco } from '../../00group-workspace/dees-workspace-monaco/dees-workspace-monaco.js';
|
import { DeesWorkspaceMonaco } from '../../00group-workspace/dees-workspace-monaco/dees-workspace-monaco.js';
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ export class DeesInputCode extends DeesInputBase<string> {
|
|||||||
.value=${'const greeting: string = "Hello World";\nconsole.log(greeting);'}
|
.value=${'const greeting: string = "Hello World";\nconsole.log(greeting);'}
|
||||||
></dees-input-code>
|
></dees-input-code>
|
||||||
`;
|
`;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input', 'Workspace'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
@property({ type: String })
|
@property({ type: String })
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import { demoFunc } from './demo.js';
|
|||||||
import { datepickerStyles } from './styles.js';
|
import { datepickerStyles } from './styles.js';
|
||||||
import { renderDatepicker } from './template.js';
|
import { renderDatepicker } from './template.js';
|
||||||
import type { IDateEvent } from './types.js';
|
import type { IDateEvent } from './types.js';
|
||||||
import '../../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
import '../../dees-label/dees-label.js';
|
import '../../00group-layout/dees-label/dees-label.js';
|
||||||
|
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
@@ -22,7 +22,7 @@ declare global {
|
|||||||
@customElement('dees-input-datepicker')
|
@customElement('dees-input-datepicker')
|
||||||
export class DeesInputDatepicker extends DeesInputBase<DeesInputDatepicker> {
|
export class DeesInputDatepicker extends DeesInputBase<DeesInputDatepicker> {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
@property({ type: String })
|
@property({ type: String })
|
||||||
accessor value: string = '';
|
accessor value: string = '';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { html, css } from '@design.estate/dees-element';
|
import { html, css } from '@design.estate/dees-element';
|
||||||
import '@design.estate/dees-wcctools/demotools';
|
import '@design.estate/dees-wcctools/demotools';
|
||||||
import '../../dees-panel/dees-panel.js';
|
import '../../00group-layout/dees-panel/dees-panel.js';
|
||||||
import './component.js';
|
import './component.js';
|
||||||
import type { DeesInputDatepicker } from './component.js';
|
import type { DeesInputDatepicker } from './component.js';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { html, css } from '@design.estate/dees-element';
|
import { html, css } from '@design.estate/dees-element';
|
||||||
import '@design.estate/dees-wcctools/demotools';
|
import '@design.estate/dees-wcctools/demotools';
|
||||||
import '../../dees-panel/dees-panel.js';
|
import '../../00group-layout/dees-panel/dees-panel.js';
|
||||||
import '../../00group-form/dees-form/dees-form.js';
|
import '../../00group-form/dees-form/dees-form.js';
|
||||||
import '../../00group-form/dees-form-submit/dees-form-submit.js';
|
import '../../00group-form/dees-form-submit/dees-form-submit.js';
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ declare global {
|
|||||||
@customElement('dees-input-dropdown')
|
@customElement('dees-input-dropdown')
|
||||||
export class DeesInputDropdown extends DeesInputBase<DeesInputDropdown> {
|
export class DeesInputDropdown extends DeesInputBase<DeesInputDropdown> {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { DeesInputBase } from '../dees-input-base/dees-input-base.js';
|
import { DeesInputBase } from '../dees-input-base/dees-input-base.js';
|
||||||
import { demoFunc } from './demo.js';
|
import { demoFunc } from './demo.js';
|
||||||
import { fileuploadStyles } from './styles.js';
|
import { fileuploadStyles } from './styles.js';
|
||||||
import '../../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
import '../../dees-label/dees-label.js';
|
import '../../00group-layout/dees-label/dees-label.js';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
customElement,
|
customElement,
|
||||||
@@ -21,7 +21,7 @@ declare global {
|
|||||||
@customElement('dees-input-fileupload')
|
@customElement('dees-input-fileupload')
|
||||||
export class DeesInputFileupload extends DeesInputBase<DeesInputFileupload> {
|
export class DeesInputFileupload extends DeesInputBase<DeesInputFileupload> {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
@property({ attribute: false })
|
@property({ attribute: false })
|
||||||
accessor value: File[] = [];
|
accessor value: File[] = [];
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { css, cssManager, html } from '@design.estate/dees-element';
|
import { css, cssManager, html } from '@design.estate/dees-element';
|
||||||
import './component.js';
|
import './component.js';
|
||||||
import '../../dees-panel/dees-panel.js';
|
import '../../00group-layout/dees-panel/dees-panel.js';
|
||||||
|
|
||||||
export const demoFunc = () => html`
|
export const demoFunc = () => html`
|
||||||
<dees-demowrapper>
|
<dees-demowrapper>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import { themeDefaultStyles } from '../../00theme.js';
|
|||||||
export class DeesInputIban extends DeesInputBase<DeesInputIban> {
|
export class DeesInputIban extends DeesInputBase<DeesInputIban> {
|
||||||
// STATIC
|
// STATIC
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
@state()
|
@state()
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { html, css } from '@design.estate/dees-element';
|
import { html, css } from '@design.estate/dees-element';
|
||||||
import '@design.estate/dees-wcctools/demotools';
|
import '@design.estate/dees-wcctools/demotools';
|
||||||
import '../../dees-panel/dees-panel.js';
|
import '../../00group-layout/dees-panel/dees-panel.js';
|
||||||
import '../../00group-form/dees-form/dees-form.js';
|
import '../../00group-form/dees-form/dees-form.js';
|
||||||
import '../dees-input-text/dees-input-text.js';
|
import '../dees-input-text/dees-input-text.js';
|
||||||
import '../../00group-form/dees-form-submit/dees-form-submit.js';
|
import '../../00group-form/dees-form-submit/dees-form-submit.js';
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import {
|
|||||||
type TemplateResult,
|
type TemplateResult,
|
||||||
} from '@design.estate/dees-element';
|
} from '@design.estate/dees-element';
|
||||||
import { DeesInputBase } from '../dees-input-base/dees-input-base.js';
|
import { DeesInputBase } from '../dees-input-base/dees-input-base.js';
|
||||||
import '../../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
import '../../00group-button/dees-button/dees-button.js';
|
import '../../00group-button/dees-button/dees-button.js';
|
||||||
import { demoFunc } from './dees-input-list.demo.js';
|
import { demoFunc } from './dees-input-list.demo.js';
|
||||||
import { themeDefaultStyles } from '../../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
@@ -23,7 +23,7 @@ declare global {
|
|||||||
export class DeesInputList extends DeesInputBase<DeesInputList> {
|
export class DeesInputList extends DeesInputBase<DeesInputList> {
|
||||||
// STATIC
|
// STATIC
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
@property({ type: Array })
|
@property({ type: Array })
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ declare global {
|
|||||||
@customElement('dees-input-multitoggle')
|
@customElement('dees-input-multitoggle')
|
||||||
export class DeesInputMultitoggle extends DeesInputBase<DeesInputMultitoggle> {
|
export class DeesInputMultitoggle extends DeesInputBase<DeesInputMultitoggle> {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
|
|
||||||
@property()
|
@property()
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ declare global {
|
|||||||
export class DeesInputPhone extends DeesInputBase<DeesInputPhone> {
|
export class DeesInputPhone extends DeesInputBase<DeesInputPhone> {
|
||||||
// STATIC
|
// STATIC
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
@state()
|
@state()
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { html, css, cssManager } from '@design.estate/dees-element';
|
import { html, css, cssManager } from '@design.estate/dees-element';
|
||||||
import '../../dees-shopping-productcard/dees-shopping-productcard.js';
|
import '../../00group-simple/dees-shopping-productcard/dees-shopping-productcard.js';
|
||||||
|
|
||||||
export const demoFunc = () => html`
|
export const demoFunc = () => html`
|
||||||
<dees-demowrapper>
|
<dees-demowrapper>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ declare global {
|
|||||||
@customElement('dees-input-quantityselector')
|
@customElement('dees-input-quantityselector')
|
||||||
export class DeesInputQuantitySelector extends DeesInputBase<DeesInputQuantitySelector> {
|
export class DeesInputQuantitySelector extends DeesInputBase<DeesInputQuantitySelector> {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { html, css } from '@design.estate/dees-element';
|
import { html, css } from '@design.estate/dees-element';
|
||||||
import '@design.estate/dees-wcctools/demotools';
|
import '@design.estate/dees-wcctools/demotools';
|
||||||
import '../../dees-panel/dees-panel.js';
|
import '../../00group-layout/dees-panel/dees-panel.js';
|
||||||
|
|
||||||
export const demoFunc = () => html`
|
export const demoFunc = () => html`
|
||||||
<dees-demowrapper>
|
<dees-demowrapper>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ type RadioOption = string | { option: string; key: string; payload?: any };
|
|||||||
@customElement('dees-input-radiogroup')
|
@customElement('dees-input-radiogroup')
|
||||||
export class DeesInputRadiogroup extends DeesInputBase<string | object> {
|
export class DeesInputRadiogroup extends DeesInputBase<string | object> {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { demoFunc } from './demo.js';
|
|||||||
import { richtextStyles } from './styles.js';
|
import { richtextStyles } from './styles.js';
|
||||||
import { renderRichtext } from './template.js';
|
import { renderRichtext } from './template.js';
|
||||||
import type { IToolbarButton } from './types.js';
|
import type { IToolbarButton } from './types.js';
|
||||||
import '../../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
customElement,
|
customElement,
|
||||||
@@ -28,7 +28,7 @@ declare global {
|
|||||||
@customElement('dees-input-richtext')
|
@customElement('dees-input-richtext')
|
||||||
export class DeesInputRichtext extends DeesInputBase<string> {
|
export class DeesInputRichtext extends DeesInputBase<string> {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
@property({
|
@property({
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { html, css } from '@design.estate/dees-element';
|
import { html, css } from '@design.estate/dees-element';
|
||||||
import '@design.estate/dees-wcctools/demotools';
|
import '@design.estate/dees-wcctools/demotools';
|
||||||
import './component.js';
|
import './component.js';
|
||||||
import '../../dees-panel/dees-panel.js';
|
import '../../00group-layout/dees-panel/dees-panel.js';
|
||||||
|
|
||||||
export const demoFunc = () => html`
|
export const demoFunc = () => html`
|
||||||
<dees-demowrapper>
|
<dees-demowrapper>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { html, css } from '@design.estate/dees-element';
|
import { html, css } from '@design.estate/dees-element';
|
||||||
import '@design.estate/dees-wcctools/demotools';
|
import '@design.estate/dees-wcctools/demotools';
|
||||||
import '../../dees-panel/dees-panel.js';
|
import '../../00group-layout/dees-panel/dees-panel.js';
|
||||||
|
|
||||||
export const demoFunc = () => html`
|
export const demoFunc = () => html`
|
||||||
<dees-demowrapper>
|
<dees-demowrapper>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import {
|
|||||||
type TemplateResult,
|
type TemplateResult,
|
||||||
} from '@design.estate/dees-element';
|
} from '@design.estate/dees-element';
|
||||||
import { DeesInputBase } from '../dees-input-base/dees-input-base.js';
|
import { DeesInputBase } from '../dees-input-base/dees-input-base.js';
|
||||||
import '../../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
import { demoFunc } from './dees-input-tags.demo.js';
|
import { demoFunc } from './dees-input-tags.demo.js';
|
||||||
import { themeDefaultStyles } from '../../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ declare global {
|
|||||||
export class DeesInputTags extends DeesInputBase<DeesInputTags> {
|
export class DeesInputTags extends DeesInputBase<DeesInputTags> {
|
||||||
// STATIC
|
// STATIC
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
@property({ type: Array })
|
@property({ type: Array })
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { html, css, cssManager } from '@design.estate/dees-element';
|
import { html, css, cssManager } from '@design.estate/dees-element';
|
||||||
import '@design.estate/dees-wcctools/demotools';
|
import '@design.estate/dees-wcctools/demotools';
|
||||||
import '../../dees-panel/dees-panel.js';
|
import '../../00group-layout/dees-panel/dees-panel.js';
|
||||||
import type { DeesInputText } from '../dees-input-text/dees-input-text.js';
|
import type { DeesInputText } from '../dees-input-text/dees-input-text.js';
|
||||||
|
|
||||||
export const demoFunc = () => html`
|
export const demoFunc = () => html`
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ declare global {
|
|||||||
@customElement('dees-input-text')
|
@customElement('dees-input-text')
|
||||||
export class DeesInputText extends DeesInputBase {
|
export class DeesInputText extends DeesInputBase {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
@property({
|
@property({
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { html, css, cssManager } from '@design.estate/dees-element';
|
import { html, css, cssManager } from '@design.estate/dees-element';
|
||||||
import '@design.estate/dees-wcctools/demotools';
|
import '@design.estate/dees-wcctools/demotools';
|
||||||
import '../../dees-panel/dees-panel.js';
|
import '../../00group-layout/dees-panel/dees-panel.js';
|
||||||
import type { DeesInputToggle } from './dees-input-toggle.js';
|
import type { DeesInputToggle } from './dees-input-toggle.js';
|
||||||
|
|
||||||
export const demoFunc = () => html`
|
export const demoFunc = () => html`
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ declare global {
|
|||||||
export class DeesInputToggle extends DeesInputBase<DeesInputToggle> {
|
export class DeesInputToggle extends DeesInputBase<DeesInputToggle> {
|
||||||
// STATIC
|
// STATIC
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import { themeDefaultStyles } from '../../00theme.js';
|
|||||||
@customElement('dees-input-typelist')
|
@customElement('dees-input-typelist')
|
||||||
export class DeesInputTypelist extends DeesInputBase<DeesInputTypelist> {
|
export class DeesInputTypelist extends DeesInputBase<DeesInputTypelist> {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { html, css, type TemplateResult } from '@design.estate/dees-element';
|
import { html, css, type TemplateResult } from '@design.estate/dees-element';
|
||||||
import '@design.estate/dees-wcctools/demotools';
|
import '@design.estate/dees-wcctools/demotools';
|
||||||
import '../dees-panel/dees-panel.js';
|
import '../00group-layout/dees-panel/dees-panel.js';
|
||||||
import type { DeesInputWysiwyg } from './dees-input-wysiwyg/dees-input-wysiwyg.js';
|
import type { DeesInputWysiwyg } from './dees-input-wysiwyg/dees-input-wysiwyg.js';
|
||||||
import type { IBlock } from './dees-input-wysiwyg/wysiwyg.types.js';
|
import type { IBlock } from './dees-input-wysiwyg/wysiwyg.types.js';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { DeesInputBase } from '../dees-input-base/dees-input-base.js';
|
import { DeesInputBase } from '../dees-input-base/dees-input-base.js';
|
||||||
import { demoFunc } from '../dees-input-wysiwyg.demo.js';
|
import { demoFunc } from '../dees-input-wysiwyg.demo.js';
|
||||||
import { DeesModal } from '../../dees-modal/dees-modal.js';
|
import { DeesModal } from '../../00group-overlay/dees-modal/dees-modal.js';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
customElement,
|
customElement,
|
||||||
@@ -39,7 +39,7 @@ declare global {
|
|||||||
@customElement('dees-input-wysiwyg')
|
@customElement('dees-input-wysiwyg')
|
||||||
export class DeesInputWysiwyg extends DeesInputBase<string> {
|
export class DeesInputWysiwyg extends DeesInputBase<string> {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input', 'Workspace'];
|
||||||
|
|
||||||
@property({ type: String })
|
@property({ type: String })
|
||||||
accessor value: string = '';
|
accessor value: string = '';
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import {
|
|||||||
state,
|
state,
|
||||||
} from '@design.estate/dees-element';
|
} from '@design.estate/dees-element';
|
||||||
import { zIndexRegistry } from '../../00zindex.js';
|
import { zIndexRegistry } from '../../00zindex.js';
|
||||||
import '../../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
|
|
||||||
import { type ISlashMenuItem } from './wysiwyg.types.js';
|
import { type ISlashMenuItem } from './wysiwyg.types.js';
|
||||||
import { WysiwygShortcuts } from './wysiwyg.shortcuts.js';
|
import { WysiwygShortcuts } from './wysiwyg.shortcuts.js';
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import { WysiwygSelection } from './wysiwyg.selection.js';
|
|||||||
import { BlockRegistry, type IBlockEventHandlers } from './blocks/index.js';
|
import { BlockRegistry, type IBlockEventHandlers } from './blocks/index.js';
|
||||||
import './wysiwyg.blockregistration.js';
|
import './wysiwyg.blockregistration.js';
|
||||||
import { WysiwygShortcuts } from './wysiwyg.shortcuts.js';
|
import { WysiwygShortcuts } from './wysiwyg.shortcuts.js';
|
||||||
import '../../dees-contextmenu/dees-contextmenu.js';
|
import '../../00group-overlay/dees-contextmenu/dees-contextmenu.js';
|
||||||
import { themeDefaultStyles } from '../../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { html, type TemplateResult, cssManager } from '@design.estate/dees-element';
|
import { html, type TemplateResult, cssManager } from '@design.estate/dees-element';
|
||||||
import { DeesModal } from '../../dees-modal/dees-modal.js';
|
import { DeesModal } from '../../00group-overlay/dees-modal/dees-modal.js';
|
||||||
import { type IBlock } from './wysiwyg.types.js';
|
import { type IBlock } from './wysiwyg.types.js';
|
||||||
import { WysiwygShortcuts } from './wysiwyg.shortcuts.js';
|
import { WysiwygShortcuts } from './wysiwyg.shortcuts.js';
|
||||||
import { PROGRAMMING_LANGUAGES } from './wysiwyg.constants.js';
|
import { PROGRAMMING_LANGUAGES } from './wysiwyg.constants.js';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { html, css } from '@design.estate/dees-element';
|
import { html, css } from '@design.estate/dees-element';
|
||||||
import '@design.estate/dees-wcctools/demotools';
|
import '@design.estate/dees-wcctools/demotools';
|
||||||
import '../../dees-panel/dees-panel.js';
|
import '../../00group-layout/dees-panel/dees-panel.js';
|
||||||
import './dees-input-profilepicture.js';
|
import './dees-input-profilepicture.js';
|
||||||
import type { DeesInputProfilePicture } from './dees-input-profilepicture.js';
|
import type { DeesInputProfilePicture } from './dees-input-profilepicture.js';
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import {
|
|||||||
type TemplateResult,
|
type TemplateResult,
|
||||||
} from '@design.estate/dees-element';
|
} from '@design.estate/dees-element';
|
||||||
import { DeesInputBase } from '../dees-input-base/dees-input-base.js';
|
import { DeesInputBase } from '../dees-input-base/dees-input-base.js';
|
||||||
import '../../dees-icon/dees-icon.js';
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
||||||
import '../../dees-label/dees-label.js';
|
import '../../00group-layout/dees-label/dees-label.js';
|
||||||
import { ProfilePictureModal } from './profilepicture.modal.js';
|
import { ProfilePictureModal } from './profilepicture.modal.js';
|
||||||
import { demoFunc } from './dees-input-profilepicture.demo.js';
|
import { demoFunc } from './dees-input-profilepicture.demo.js';
|
||||||
import { themeDefaultStyles } from '../../00theme.js';
|
import { themeDefaultStyles } from '../../00theme.js';
|
||||||
@@ -25,7 +25,7 @@ export type ProfileShape = 'square' | 'round';
|
|||||||
@customElement('dees-input-profilepicture')
|
@customElement('dees-input-profilepicture')
|
||||||
export class DeesInputProfilePicture extends DeesInputBase<DeesInputProfilePicture> {
|
export class DeesInputProfilePicture extends DeesInputBase<DeesInputProfilePicture> {
|
||||||
public static demo = demoFunc;
|
public static demo = demoFunc;
|
||||||
public static demoGroup = 'Input';
|
public static demoGroups = ['Input'];
|
||||||
|
|
||||||
@property({ type: String })
|
@property({ type: String })
|
||||||
accessor value: string = ''; // Base64 encoded image or URL
|
accessor value: string = ''; // Base64 encoded image or URL
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user