Compare commits
14 Commits
Author | SHA1 | Date | |
---|---|---|---|
d1fe66f1ba | |||
8ea7c53154 | |||
ea0858fd27 | |||
03c00919df | |||
6917145b58 | |||
2e2ad98ed8 | |||
68375a5e58 | |||
5876225b39 | |||
342ac96429 | |||
85a472fe1c | |||
4fecae83dc | |||
b7a666ac66 | |||
e559ed072c | |||
c44d9e7365 |
@ -12,40 +12,36 @@ stages:
|
||||
- release
|
||||
- metadata
|
||||
|
||||
before_script:
|
||||
- pnpm install -g pnpm
|
||||
- pnpm install -g @shipzone/npmci
|
||||
- npmci npm prepare
|
||||
|
||||
# ====================
|
||||
# security stage
|
||||
# ====================
|
||||
# ====================
|
||||
# security stage
|
||||
# ====================
|
||||
mirror:
|
||||
stage: security
|
||||
script:
|
||||
- npmci git mirror
|
||||
only:
|
||||
- tags
|
||||
tags:
|
||||
- lossless
|
||||
- docker
|
||||
- notpriv
|
||||
|
||||
auditProductionDependencies:
|
||||
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||
stage: security
|
||||
script:
|
||||
- npmci npm prepare
|
||||
- npmci command npm install --production --ignore-scripts
|
||||
- npmci command npm config set registry https://registry.npmjs.org
|
||||
- npmci command npm audit --audit-level=high --only=prod --production
|
||||
- npmci command npm config set registry https://registry.npmjs.org
|
||||
- npmci command pnpm audit --audit-level=high --prod
|
||||
tags:
|
||||
- lossless
|
||||
- docker
|
||||
allow_failure: true
|
||||
|
||||
auditDevDependencies:
|
||||
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||
stage: security
|
||||
script:
|
||||
- npmci npm prepare
|
||||
- npmci command npm install --ignore-scripts
|
||||
- npmci command npm config set registry https://registry.npmjs.org
|
||||
- npmci command npm audit --audit-level=high --only=dev
|
||||
- npmci command pnpm audit --audit-level=high --dev
|
||||
tags:
|
||||
- lossless
|
||||
- docker
|
||||
allow_failure: true
|
||||
|
||||
@ -56,7 +52,6 @@ auditDevDependencies:
|
||||
testStable:
|
||||
stage: test
|
||||
script:
|
||||
- npmci npm prepare
|
||||
- npmci node install stable
|
||||
- npmci npm install
|
||||
- npmci npm test
|
||||
@ -67,10 +62,9 @@ testStable:
|
||||
testBuild:
|
||||
stage: test
|
||||
script:
|
||||
- npmci npm prepare
|
||||
- npmci node install stable
|
||||
- npmci npm install
|
||||
- npmci command npm run build
|
||||
- npmci npm build
|
||||
coverage: /\d+.?\d+?\%\s*coverage/
|
||||
tags:
|
||||
- docker
|
||||
@ -96,10 +90,9 @@ codequality:
|
||||
only:
|
||||
- tags
|
||||
script:
|
||||
- npmci command npm install -g tslint typescript
|
||||
- npmci command npm install -g typescript
|
||||
- npmci npm prepare
|
||||
- npmci npm install
|
||||
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
|
||||
tags:
|
||||
- lossless
|
||||
- docker
|
||||
@ -119,11 +112,9 @@ trigger:
|
||||
pages:
|
||||
stage: metadata
|
||||
script:
|
||||
- npmci node install lts
|
||||
- npmci command npm install -g @gitzone/tsdoc
|
||||
- npmci npm prepare
|
||||
- npmci node install stable
|
||||
- npmci npm install
|
||||
- npmci command tsdoc
|
||||
- npmci command npm run buildDocs
|
||||
tags:
|
||||
- lossless
|
||||
- docker
|
||||
|
24
.vscode/launch.json
vendored
24
.vscode/launch.json
vendored
@ -2,28 +2,10 @@
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "current file",
|
||||
"type": "node",
|
||||
"command": "npm test",
|
||||
"name": "Run npm test",
|
||||
"request": "launch",
|
||||
"args": [
|
||||
"${relativeFile}"
|
||||
],
|
||||
"runtimeArgs": ["-r", "@gitzone/tsrun"],
|
||||
"cwd": "${workspaceRoot}",
|
||||
"protocol": "inspector",
|
||||
"internalConsoleOptions": "openOnSessionStart"
|
||||
},
|
||||
{
|
||||
"name": "test.ts",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"args": [
|
||||
"test/test.ts"
|
||||
],
|
||||
"runtimeArgs": ["-r", "@gitzone/tsrun"],
|
||||
"cwd": "${workspaceRoot}",
|
||||
"protocol": "inspector",
|
||||
"internalConsoleOptions": "openOnSessionStart"
|
||||
"type": "node-terminal"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--gitzone element-->
|
||||
<!-- made by Lossless GmbH -->
|
||||
<!-- made by Task Venture Capital GmbH -->
|
||||
<!-- checkout https://maintainedby.lossless.com for awesome OpenSource projects -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
@ -10,6 +10,12 @@
|
||||
/>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<link rel="preconnect" href="https://rsms.me/">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://rsms.me/inter/inter.css">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&family=Courier+Prime:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
body {
|
||||
margin: 0px;
|
||||
@ -17,7 +23,7 @@
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="./index.ts"></script>
|
||||
<script type="module" src="/bundle.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
|
@ -1,10 +1,10 @@
|
||||
// dees tools
|
||||
import * as deesWccTools from '../ts_web';
|
||||
import * as deesWccTools from '../ts_web/index.js';
|
||||
import * as deesDomTools from '@designestate/dees-domtools';
|
||||
|
||||
// elements and pages
|
||||
import * as elements from '../test/elements';
|
||||
import * as pages from '../test/pages';
|
||||
import * as elements from '../test/elements/index.js';
|
||||
import * as pages from '../test/pages/index.js';
|
||||
|
||||
deesWccTools.setupWccTools(elements as any, pages);
|
||||
deesDomTools.elementBasic.setup();
|
||||
|
@ -5,7 +5,7 @@
|
||||
"githost": "gitlab.com",
|
||||
"gitscope": "designestate",
|
||||
"gitrepo": "dees-wcctools",
|
||||
"shortDescription": "wcc tools for creating element catalogues",
|
||||
"description": "wcc tools for creating element catalogues",
|
||||
"npmPackagename": "@designestate/dees-wcctools",
|
||||
"license": "MIT",
|
||||
"projectDomain": "design.estate"
|
||||
|
26378
package-lock.json
generated
26378
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
30
package.json
30
package.json
@ -1,34 +1,32 @@
|
||||
{
|
||||
"name": "@designestate/dees-wcctools",
|
||||
"version": "1.0.68",
|
||||
"version": "1.0.75",
|
||||
"private": false,
|
||||
"description": "wcc tools for creating element catalogues",
|
||||
"main": "dist_ts_web/index.js",
|
||||
"typings": "dist_ts_web/index.d.ts",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"test": "(npm run build)",
|
||||
"build": "(tsbuild custom ts_web --web && tsbundle element)",
|
||||
"watch": "tswatch element"
|
||||
"build": "(tsbuild element --web --allowimplicitany && tsbundle element)",
|
||||
"watch": "tswatch element",
|
||||
"buildDocs": "tsdoc"
|
||||
},
|
||||
"author": "Lossless GmbH",
|
||||
"license": "UNLICENSED",
|
||||
"dependencies": {
|
||||
"@designestate/dees-domtools": "^1.0.114",
|
||||
"@designestate/dees-element": "^1.0.35",
|
||||
"@gitzone/tsrun": "^1.2.18",
|
||||
"@designestate/dees-domtools": "^2.0.6",
|
||||
"@designestate/dees-element": "^2.0.6",
|
||||
"@gitzone/tsrun": "^1.2.32",
|
||||
"@pushrocks/smartdelay": "^2.0.13",
|
||||
"@pushrocks/smartexpress": "^3.0.108",
|
||||
"lit-element": "^3.2.0",
|
||||
"lit-html": "^2.2.0",
|
||||
"typescript": "^4.6.2"
|
||||
"@pushrocks/smartexpress": "^4.0.4",
|
||||
"lit": "^2.5.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@gitzone/tsbuild": "^2.1.29",
|
||||
"@gitzone/tsbundle": "^1.0.89",
|
||||
"@gitzone/tswatch": "^1.0.56",
|
||||
"@pushrocks/projectinfo": "^4.0.5",
|
||||
"tslint": "^6.1.3",
|
||||
"tslint-config-prettier": "^1.17.0"
|
||||
"@gitzone/tsbuild": "^2.1.61",
|
||||
"@gitzone/tsbundle": "^2.0.7",
|
||||
"@gitzone/tswatch": "^2.0.5",
|
||||
"@pushrocks/projectinfo": "^5.0.1"
|
||||
},
|
||||
"files": [
|
||||
"ts/**/*",
|
||||
|
2744
pnpm-lock.yaml
generated
Normal file
2744
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -21,7 +21,6 @@ Code Style | [](htt
|
||||
PackagePhobia (total standalone install weight) | [](https://lossless.cloud)
|
||||
PackagePhobia (package size on registry) | [](https://lossless.cloud)
|
||||
BundlePhobia (total size when bundled) | [](https://lossless.cloud)
|
||||
Platform support | [](https://lossless.cloud) [](https://lossless.cloud)
|
||||
|
||||
## Usage
|
||||
|
||||
@ -35,7 +34,6 @@ We are always happy for code contributions. If you are not the code contributing
|
||||
|
||||
For further information read the linked docs at the top of this readme.
|
||||
|
||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||
## Legal
|
||||
> MIT licensed | **©** [Task Venture Capital GmbH](https://task.vc)
|
||||
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
|
||||
|
||||
[](https://maintainedby.lossless.com)
|
||||
|
@ -1 +1 @@
|
||||
export * from './test-demoelement';
|
||||
export * from './test-demoelement.js';
|
||||
|
@ -86,7 +86,7 @@ export class TestDemoelement extends DeesElement {
|
||||
border-radius: 50px;
|
||||
}
|
||||
`)}
|
||||
|
||||
|
||||
pre b {
|
||||
color: green;
|
||||
}
|
||||
|
@ -1,3 +1,3 @@
|
||||
import * as wcctools from '../ts_web/index';
|
||||
import * as elements from './elements';
|
||||
import * as wcctools from '../ts_web/index.js';
|
||||
import * as elements from './elements/index.js';
|
||||
wcctools.setupWccTools(elements as any, {});
|
||||
|
8
ts_web/00_commitinfo_data.ts
Normal file
8
ts_web/00_commitinfo_data.ts
Normal file
@ -0,0 +1,8 @@
|
||||
/**
|
||||
* autocreated commitinfo by @pushrocks/commitinfo
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@designestate/dees-wcctools',
|
||||
version: '1.0.75',
|
||||
description: 'wcc tools for creating element catalogues'
|
||||
}
|
@ -1,19 +1,18 @@
|
||||
import { LitElement, property, html, customElement, TemplateResult, queryAsync } from 'lit-element';
|
||||
import { DeesElement, property, html, customElement, TemplateResult, queryAsync, render, domtools } from '@designestate/dees-element';
|
||||
|
||||
import * as plugins from '../wcctools.plugins';
|
||||
import * as plugins from '../wcctools.plugins.js';
|
||||
|
||||
// wcc tools
|
||||
import './wcc-frame';
|
||||
import './wcc-sidebar';
|
||||
import './wcc-properties';
|
||||
import { TTheme } from './wcc-properties';
|
||||
import { TElementType } from './wcc-sidebar';
|
||||
import './wcc-frame.js';
|
||||
import './wcc-sidebar.js';
|
||||
import './wcc-properties.js';
|
||||
import { TTheme } from './wcc-properties.js';
|
||||
import { TElementType } from './wcc-sidebar.js';
|
||||
import { breakpoints } from '@designestate/dees-domtools';
|
||||
import { WccFrame } from './wcc-frame';
|
||||
import { WccFrame } from './wcc-frame.js';
|
||||
|
||||
@customElement('wcc-dashboard')
|
||||
export class WccDashboard extends LitElement {
|
||||
public domtools: plugins.deesDomtools.DomTools;
|
||||
export class WccDashboard extends DeesElement {
|
||||
|
||||
@property()
|
||||
public selectedType: TElementType;
|
||||
@ -22,7 +21,7 @@ export class WccDashboard extends LitElement {
|
||||
public selectedItemName: string;
|
||||
|
||||
@property()
|
||||
public selectedItem: (() => TemplateResult) | LitElement;
|
||||
public selectedItem: (() => TemplateResult) | DeesElement;
|
||||
|
||||
@property()
|
||||
public selectedViewport: plugins.deesDomtools.breakpoints.TViewport = 'desktop';
|
||||
@ -34,7 +33,7 @@ export class WccDashboard extends LitElement {
|
||||
public pages: { [key: string]: () => TemplateResult } = {};
|
||||
|
||||
@property()
|
||||
public elements: { [key: string]: LitElement } = {};
|
||||
public elements: { [key: string]: DeesElement } = {};
|
||||
|
||||
@property()
|
||||
public warning: string = null;
|
||||
@ -43,7 +42,7 @@ export class WccDashboard extends LitElement {
|
||||
public wccFrame: Promise<WccFrame>;
|
||||
|
||||
constructor(
|
||||
elementsArg?: { [key: string]: LitElement },
|
||||
elementsArg?: { [key: string]: DeesElement },
|
||||
pagesArg?: { [key: string]: () => TemplateResult }
|
||||
) {
|
||||
super();
|
||||
@ -99,31 +98,6 @@ export class WccDashboard extends LitElement {
|
||||
}}
|
||||
></wcc-properties>
|
||||
<wcc-frame id="wccFrame" viewport=${this.selectedViewport}>
|
||||
${(() => {
|
||||
if (this.selectedType === 'page' && this.selectedItem) {
|
||||
if (typeof this.selectedItem === 'function') {
|
||||
return this.selectedItem();
|
||||
} else {
|
||||
console.error('The selected item looks strange:');
|
||||
console.log(this.selectedItem);
|
||||
}
|
||||
} else if (this.selectedType === 'element' && this.selectedItem) {
|
||||
// console.log(this.selectedItem);
|
||||
const anonItem: any = this.selectedItem;
|
||||
if (!anonItem.demo) {
|
||||
this.setWarning(`component ${anonItem.name} does not expose a demo property.`);
|
||||
return;
|
||||
}
|
||||
if (!(typeof anonItem.demo === 'function')) {
|
||||
this.setWarning(
|
||||
`component ${anonItem.name} has demo property, but it is not of type function`
|
||||
);
|
||||
return;
|
||||
}
|
||||
this.setWarning(null);
|
||||
return html`${anonItem.demo()}`;
|
||||
}
|
||||
})()}
|
||||
</wcc-frame>
|
||||
`;
|
||||
}
|
||||
@ -160,24 +134,39 @@ export class WccDashboard extends LitElement {
|
||||
);
|
||||
}
|
||||
|
||||
private updating = false;
|
||||
public async updated() {
|
||||
if (this.updating) {
|
||||
return;
|
||||
}
|
||||
this.domtools = await plugins.deesDomtools.DomTools.setupDomTools();
|
||||
await this.domtools.router._handleRouteState();
|
||||
this.updating = true;
|
||||
const storeElement = this.selectedItem;
|
||||
setTimeout(async () => {
|
||||
this.selectedItem = null;
|
||||
setTimeout(async () => {
|
||||
this.selectedItem = storeElement;
|
||||
setTimeout(() => {
|
||||
this.updating = false;
|
||||
}, 0);
|
||||
});
|
||||
}, 0);
|
||||
const wccFrame: WccFrame = this.shadowRoot.querySelector('wcc-frame');
|
||||
|
||||
if (this.selectedType === 'page' && this.selectedItem) {
|
||||
if (typeof this.selectedItem === 'function') {
|
||||
console.log('slotting page.');
|
||||
const viewport = await wccFrame.getViewportElement();
|
||||
render(this.selectedItem(), viewport);
|
||||
console.log('rendered page.');
|
||||
} else {
|
||||
console.error('The selected item looks strange:');
|
||||
console.log(this.selectedItem);
|
||||
}
|
||||
} else if (this.selectedType === 'element' && this.selectedItem) {
|
||||
console.log('slotting element.');
|
||||
const anonItem: any = this.selectedItem;
|
||||
if (!anonItem.demo) {
|
||||
this.setWarning(`component ${anonItem.name} does not expose a demo property.`);
|
||||
return;
|
||||
}
|
||||
if (!(typeof anonItem.demo === 'function')) {
|
||||
this.setWarning(
|
||||
`component ${anonItem.name} has demo property, but it is not of type function`
|
||||
);
|
||||
return;
|
||||
}
|
||||
this.setWarning(null);
|
||||
const viewport = await wccFrame.getViewportElement();
|
||||
render(anonItem.demo(), viewport);;
|
||||
}
|
||||
}
|
||||
|
||||
public buildUrl() {
|
||||
|
@ -1,25 +1,45 @@
|
||||
import { DeesElement, property, html, customElement, TemplateResult } from '@designestate/dees-element';
|
||||
import { DeesElement, property, html, customElement, TemplateResult, css, cssManager } from '@designestate/dees-element';
|
||||
|
||||
import * as domtools from '@designestate/dees-domtools';
|
||||
|
||||
declare global {
|
||||
interface HTMLElementTagNameMap {
|
||||
'wcc-frame': WccFrame;
|
||||
}
|
||||
}
|
||||
|
||||
@customElement('wcc-frame')
|
||||
export class WccFrame extends DeesElement {
|
||||
@property()
|
||||
public viewport: string;
|
||||
|
||||
public static styles = [
|
||||
css`
|
||||
:host {
|
||||
border: 10px solid #ffaeaf;
|
||||
position: absolute;
|
||||
background: ${cssManager.bdTheme('#333', '#000')};
|
||||
left: 200px;
|
||||
right: 0px;
|
||||
top: 0px;
|
||||
bottom: 100px;
|
||||
overflow-y: auto;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.viewport {
|
||||
container-type: inline-size;
|
||||
container-name: wccToolsViewport;
|
||||
position: relative;
|
||||
min-height: 100%;
|
||||
}
|
||||
`,
|
||||
]
|
||||
|
||||
public render(): TemplateResult {
|
||||
return html`
|
||||
<style>
|
||||
:host {
|
||||
border: 10px solid #ffaeaf;
|
||||
position: absolute;
|
||||
background: ${this.goBright ? '#333': '#000'};
|
||||
left: 200px;
|
||||
right: 0px;
|
||||
top: 0px;
|
||||
bottom: 100px;
|
||||
overflow-y: auto;
|
||||
overflow-x: auto;
|
||||
${(() => {
|
||||
switch (this.viewport) {
|
||||
case 'desktop':
|
||||
@ -45,19 +65,17 @@ export class WccFrame extends DeesElement {
|
||||
}px;
|
||||
`;
|
||||
}
|
||||
})()}
|
||||
})()}
|
||||
}
|
||||
|
||||
|
||||
.viewport {
|
||||
container-type: inline-size;
|
||||
container-name: wccToolsViewport;
|
||||
position: relative;
|
||||
${this.viewport !== 'desktop'
|
||||
? html` border-right: 1px dotted #444; border-left: 1px dotted #444; `
|
||||
: html``}
|
||||
min-height: 100%;
|
||||
? html` border-right: 1px dotted #444; border-left: 1px dotted #444; `
|
||||
: html``
|
||||
}
|
||||
background:
|
||||
${this.goBright ? `
|
||||
${
|
||||
this.goBright ? `
|
||||
radial-gradient(#CCCCCC 3px, transparent 4px),
|
||||
radial-gradient(#CCCCCC 3px, transparent 4px),
|
||||
linear-gradient(#eeeeee 4px, transparent 0),
|
||||
@ -75,11 +93,12 @@ export class WccFrame extends DeesElement {
|
||||
#222222;
|
||||
background-size: 109px 109px, 109px 109px,100% 6px, 109px 109px, 109px 109px;
|
||||
background-position: 54px 55px, 0px 0px, 0px 0px, 0px 0px, 0px 0px;
|
||||
`}
|
||||
`
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<div class="viewport">
|
||||
<slot></slot>
|
||||
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
@ -89,4 +108,8 @@ export class WccFrame extends DeesElement {
|
||||
const slottedContent = this.children;
|
||||
console.log(slottedContent);
|
||||
}
|
||||
|
||||
public async getViewportElement(): Promise<HTMLElement> {
|
||||
return this.shadowRoot.querySelector('.viewport') as HTMLElement;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { LitElement, property, html, customElement, TemplateResult, state } from 'lit-element';
|
||||
import { WccDashboard } from './wcc-dashboard';
|
||||
import { DeesElement, property, html, customElement, TemplateResult, state } from '@designestate/dees-element';
|
||||
import { WccDashboard } from './wcc-dashboard.js';
|
||||
|
||||
export type TPropertyType = 'String' | 'Number' | 'Boolean' | 'Object' | 'Enum' | 'Array';
|
||||
|
||||
@ -13,12 +13,14 @@ export const setEnvironment = (envArg) => {
|
||||
};
|
||||
|
||||
@customElement('wcc-properties')
|
||||
export class WccProperties extends LitElement {
|
||||
@property()
|
||||
dashboardRef: WccDashboard;
|
||||
export class WccProperties extends DeesElement {
|
||||
@property({
|
||||
type: WccDashboard
|
||||
})
|
||||
public dashboardRef: WccDashboard;
|
||||
|
||||
@property()
|
||||
public selectedItem: (() => TemplateResult) | LitElement;
|
||||
public selectedItem: (() => TemplateResult) | DeesElement;
|
||||
|
||||
@property()
|
||||
public selectedViewport: TEnvironment = 'native';
|
||||
@ -34,7 +36,6 @@ export class WccProperties extends LitElement {
|
||||
|
||||
public render(): TemplateResult {
|
||||
return html`
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
|
||||
<style>
|
||||
:host {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
@ -60,6 +61,21 @@ export class WccProperties extends LitElement {
|
||||
grid-template-columns: 33% 33% 33%;
|
||||
}
|
||||
|
||||
.material-symbols-outlined {
|
||||
font-family: 'Material Symbols Outlined';
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-size: 24px; /* Preferred icon size */
|
||||
display: inline-block;
|
||||
line-height: 1;
|
||||
text-transform: none;
|
||||
letter-spacing: normal;
|
||||
word-wrap: normal;
|
||||
white-space: nowrap;
|
||||
direction: ltr;
|
||||
font-variation-settings: 'FILL' 1, 'wght' 700, 'GRAD' 0, 'opsz' 48;
|
||||
}
|
||||
|
||||
.properties .property {
|
||||
padding: 5px;
|
||||
background: #444;
|
||||
@ -155,7 +171,7 @@ export class WccProperties extends LitElement {
|
||||
this.selectTheme('dark');
|
||||
}}
|
||||
>
|
||||
Dark<br /><i class="material-icons">brightness_3</i>
|
||||
Dark<br /><i class="material-symbols-outlined">brightness_3</i>
|
||||
</div>
|
||||
<div
|
||||
class="button ${this.selectedTheme === 'bright' ? 'selected' : null}"
|
||||
@ -163,7 +179,7 @@ export class WccProperties extends LitElement {
|
||||
this.selectTheme('bright');
|
||||
}}
|
||||
>
|
||||
Bright<br /><i class="material-icons">flare</i>
|
||||
Bright<br /><i class="material-symbols-outlined">flare</i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -176,7 +192,7 @@ export class WccProperties extends LitElement {
|
||||
this.selectViewport('phone');
|
||||
}}
|
||||
>
|
||||
Phone<br /><i class="material-icons">smartphone</i>
|
||||
Phone<br /><i class="material-symbols-outlined">smartphone</i>
|
||||
</div>
|
||||
<div
|
||||
class="button ${this.selectedViewport === 'phablet' ? 'selected' : null}"
|
||||
@ -184,7 +200,7 @@ export class WccProperties extends LitElement {
|
||||
this.selectViewport('phablet');
|
||||
}}
|
||||
>
|
||||
Phablet<br /><i class="material-icons">smartphone</i>
|
||||
Phablet<br /><i class="material-symbols-outlined">smartphone</i>
|
||||
</div>
|
||||
<div
|
||||
class="button ${this.selectedViewport === 'tablet' ? 'selected' : null}"
|
||||
@ -192,7 +208,7 @@ export class WccProperties extends LitElement {
|
||||
this.selectViewport('tablet');
|
||||
}}
|
||||
>
|
||||
Tablet<br /><i class="material-icons">tablet</i>
|
||||
Tablet<br /><i class="material-symbols-outlined">tablet</i>
|
||||
</div>
|
||||
<div
|
||||
class="button ${this.selectedViewport === 'desktop' ||
|
||||
@ -203,7 +219,7 @@ export class WccProperties extends LitElement {
|
||||
this.selectViewport('native');
|
||||
}}
|
||||
>
|
||||
Desktop<br /><i class="material-icons">desktop_windows</i>
|
||||
Desktop<br /><i class="material-symbols-outlined">desktop_windows</i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -241,7 +257,7 @@ export class WccProperties extends LitElement {
|
||||
});
|
||||
return enumValues;
|
||||
};
|
||||
const determinePropertyType = (propertyArg: any): TPropertyType => {
|
||||
const determinePropertyType = async (propertyArg: any): Promise<TPropertyType> => {
|
||||
const typeName: any | undefined = propertyArg.type.name;
|
||||
if (typeName) {
|
||||
return typeName;
|
||||
@ -263,7 +279,7 @@ export class WccProperties extends LitElement {
|
||||
console.log(anonItem.elementProperties);
|
||||
const wccFrame = await this.dashboardRef.wccFrame;
|
||||
let firstFoundInstantiatedElement: HTMLElement;
|
||||
for (const element of Array.from(wccFrame.children)) {
|
||||
for (const element of Array.from((await wccFrame.getViewportElement()).children)) {
|
||||
if (element instanceof (this.selectedItem as any)) {
|
||||
firstFoundInstantiatedElement = element as HTMLElement;
|
||||
break;
|
||||
@ -285,7 +301,7 @@ export class WccProperties extends LitElement {
|
||||
continue;
|
||||
}
|
||||
const property = classProperties.get(key);
|
||||
const propertyTypeString = determinePropertyType(property);
|
||||
const propertyTypeString = await determinePropertyType(property);
|
||||
propertyArray.push(
|
||||
html`
|
||||
<div class="property">
|
||||
|
@ -1,16 +1,16 @@
|
||||
import * as plugins from '../wcctools.plugins';
|
||||
import { LitElement, property, html, customElement, TemplateResult } from 'lit-element';
|
||||
import { WccDashboard } from './wcc-dashboard';
|
||||
import * as plugins from '../wcctools.plugins.js';
|
||||
import { DeesElement, property, html, customElement, TemplateResult } from '@designestate/dees-element';
|
||||
import { WccDashboard } from './wcc-dashboard.js';
|
||||
|
||||
export type TElementType = 'element' | 'page';
|
||||
|
||||
@customElement('wcc-sidebar')
|
||||
export class WccSidebar extends LitElement {
|
||||
export class WccSidebar extends DeesElement {
|
||||
@property({type: Array})
|
||||
public websites: string[] = [];
|
||||
|
||||
@property({ attribute: false })
|
||||
public selectedItem: LitElement | (() => TemplateResult);
|
||||
public selectedItem: DeesElement | (() => TemplateResult);
|
||||
|
||||
@property({ attribute: false })
|
||||
public selectedType: TElementType;
|
||||
@ -39,6 +39,21 @@ export class WccSidebar extends LitElement {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.material-symbols-outlined {
|
||||
font-family: 'Material Symbols Outlined';
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-size: 24px; /* Preferred icon size */
|
||||
display: inline-block;
|
||||
line-height: 1;
|
||||
text-transform: none;
|
||||
letter-spacing: normal;
|
||||
word-wrap: normal;
|
||||
white-space: nowrap;
|
||||
direction: ltr;
|
||||
font-variation-settings: 'FILL' 1, 'wght' 700, 'GRAD' 0, 'opsz' 48;
|
||||
}
|
||||
|
||||
.heading {
|
||||
font-size: 24px;
|
||||
text-align: center;
|
||||
@ -78,13 +93,13 @@ export class WccSidebar extends LitElement {
|
||||
background: #455A64;
|
||||
}
|
||||
|
||||
.selectOption .material-icons {
|
||||
.selectOption .material-symbols-outlined {
|
||||
color: #666;
|
||||
display: block;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.selectOption.selected .material-icons {
|
||||
.selectOption.selected .material-symbols-outlined {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
@ -106,7 +121,7 @@ export class WccSidebar extends LitElement {
|
||||
<div class="menu">
|
||||
<h3>Live Websites</h3>
|
||||
${this.websites.map(website => {
|
||||
return html`<div class="selectOption"><i class="material-icons">ondemand_video</i><div class="text">${website}</div></div>`;
|
||||
return html`<div class="selectOption"><i class="material-symbols-outlined">ondemand_video</i><div class="text">${website}</div></div>`;
|
||||
})}
|
||||
<h3>Pages</h3>
|
||||
${(() => {
|
||||
@ -121,7 +136,7 @@ export class WccSidebar extends LitElement {
|
||||
this.selectItem('page', pageName, item);
|
||||
}}
|
||||
>
|
||||
<i class="material-icons">insert_drive_file</i>
|
||||
<i class="material-symbols-outlined">insert_drive_file</i>
|
||||
<div class="text">${pageName}</div>
|
||||
</div>
|
||||
`;
|
||||
@ -140,7 +155,7 @@ export class WccSidebar extends LitElement {
|
||||
this.selectItem('element', elementName, item);
|
||||
}}
|
||||
>
|
||||
<i class="material-icons">featured_video</i>
|
||||
<i class="material-symbols-outlined">featured_video</i>
|
||||
<div class="text">${elementName}</div>
|
||||
</div>
|
||||
`;
|
||||
@ -150,7 +165,7 @@ export class WccSidebar extends LitElement {
|
||||
`;
|
||||
}
|
||||
|
||||
public selectItem(typeArg: TElementType, itemNameArg: string, itemArg: (() => TemplateResult) | LitElement) {
|
||||
public selectItem(typeArg: TElementType, itemNameArg: string, itemArg: (() => TemplateResult) | DeesElement) {
|
||||
console.log('selected item');
|
||||
console.log(itemNameArg);
|
||||
console.log(itemArg);
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { WccDashboard } from './elements/wcc-dashboard';
|
||||
import { LitElement, TemplateResult } from 'lit-element';
|
||||
import { WccDashboard } from './elements/wcc-dashboard.js';
|
||||
import { LitElement, TemplateResult } from 'lit';
|
||||
|
||||
const setupWccTools = (elementsArg?: { [key: string]: LitElement }, pagesArg?: { [key: string]: () => TemplateResult }) => {
|
||||
let hasRun = false;
|
||||
|
@ -1,16 +0,0 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es2017",
|
||||
"module": "es2015",
|
||||
"moduleResolution": "node",
|
||||
"lib": ["es2017", "dom"],
|
||||
"declaration": true,
|
||||
"inlineSources": true,
|
||||
"inlineSourceMap": true,
|
||||
"noUnusedLocals": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"outDir": "dist/",
|
||||
"skipLibCheck": true,
|
||||
"experimentalDecorators": true
|
||||
}
|
||||
}
|
@ -1,7 +1,9 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"experimentalDecorators": true,
|
||||
"target": "ES2017",
|
||||
"moduleResolution": "Node"
|
||||
"useDefineForClassFields": false,
|
||||
"target": "ES2022",
|
||||
"module": "ES2022",
|
||||
"moduleResolution": "nodenext"
|
||||
}
|
||||
}
|
||||
|
17
tslint.json
17
tslint.json
@ -1,17 +0,0 @@
|
||||
{
|
||||
"extends": ["tslint:latest", "tslint-config-prettier"],
|
||||
"rules": {
|
||||
"semicolon": [true, "always"],
|
||||
"no-console": false,
|
||||
"ordered-imports": false,
|
||||
"object-literal-sort-keys": false,
|
||||
"member-ordering": {
|
||||
"options":{
|
||||
"order": [
|
||||
"static-method"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"defaultSeverity": "warning"
|
||||
}
|
Reference in New Issue
Block a user