Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
ea0858fd27 | |||
03c00919df | |||
6917145b58 | |||
2e2ad98ed8 | |||
68375a5e58 | |||
5876225b39 | |||
342ac96429 | |||
85a472fe1c |
@ -12,6 +12,9 @@ stages:
|
|||||||
- release
|
- release
|
||||||
- metadata
|
- metadata
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- npm install -g @shipzone/npmci
|
||||||
|
|
||||||
# ====================
|
# ====================
|
||||||
# security stage
|
# security stage
|
||||||
# ====================
|
# ====================
|
||||||
@ -36,6 +39,7 @@ auditProductionDependencies:
|
|||||||
- npmci command npm audit --audit-level=high --only=prod --production
|
- npmci command npm audit --audit-level=high --only=prod --production
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- docker
|
||||||
|
allow_failure: true
|
||||||
|
|
||||||
auditDevDependencies:
|
auditDevDependencies:
|
||||||
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||||
@ -96,10 +100,9 @@ codequality:
|
|||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
script:
|
script:
|
||||||
- npmci command npm install -g tslint typescript
|
- npmci command npm install -g typescript
|
||||||
- npmci npm prepare
|
- npmci npm prepare
|
||||||
- npmci npm install
|
- npmci npm install
|
||||||
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
|
|
||||||
tags:
|
tags:
|
||||||
- lossless
|
- lossless
|
||||||
- docker
|
- docker
|
||||||
|
24
.vscode/launch.json
vendored
24
.vscode/launch.json
vendored
@ -2,28 +2,10 @@
|
|||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
{
|
{
|
||||||
"name": "current file",
|
"command": "npm test",
|
||||||
"type": "node",
|
"name": "Run npm test",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"args": [
|
"type": "node-terminal"
|
||||||
"${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"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script src="./index.ts"></script>
|
<script type="module" src="/bundle.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
</body>
|
</body>
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
// dees tools
|
// dees tools
|
||||||
import * as deesWccTools from '../ts_web';
|
import * as deesWccTools from '../ts_web/index.js';
|
||||||
import * as deesDomTools from '@designestate/dees-domtools';
|
import * as deesDomTools from '@designestate/dees-domtools';
|
||||||
|
|
||||||
// elements and pages
|
// elements and pages
|
||||||
import * as elements from '../test/elements';
|
import * as elements from '../test/elements/index.js';
|
||||||
import * as pages from '../test/pages';
|
import * as pages from '../test/pages/index.js';
|
||||||
|
|
||||||
deesWccTools.setupWccTools(elements as any, pages);
|
deesWccTools.setupWccTools(elements as any, pages);
|
||||||
deesDomTools.elementBasic.setup();
|
deesDomTools.elementBasic.setup();
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"githost": "gitlab.com",
|
"githost": "gitlab.com",
|
||||||
"gitscope": "designestate",
|
"gitscope": "designestate",
|
||||||
"gitrepo": "dees-wcctools",
|
"gitrepo": "dees-wcctools",
|
||||||
"shortDescription": "wcc tools for creating element catalogues",
|
"description": "wcc tools for creating element catalogues",
|
||||||
"npmPackagename": "@designestate/dees-wcctools",
|
"npmPackagename": "@designestate/dees-wcctools",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"projectDomain": "design.estate"
|
"projectDomain": "design.estate"
|
||||||
|
1774
package-lock.json
generated
1774
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
16
package.json
16
package.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@designestate/dees-wcctools",
|
"name": "@designestate/dees-wcctools",
|
||||||
"version": "1.0.70",
|
"version": "1.0.74",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "wcc tools for creating element catalogues",
|
"description": "wcc tools for creating element catalogues",
|
||||||
"main": "dist_ts_web/index.js",
|
"main": "dist_ts_web/index.js",
|
||||||
@ -14,16 +14,16 @@
|
|||||||
"author": "Lossless GmbH",
|
"author": "Lossless GmbH",
|
||||||
"license": "UNLICENSED",
|
"license": "UNLICENSED",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@designestate/dees-domtools": "^2.0.1",
|
"@designestate/dees-domtools": "^2.0.6",
|
||||||
"@designestate/dees-element": "^2.0.4",
|
"@designestate/dees-element": "^2.0.6",
|
||||||
"@gitzone/tsrun": "^1.2.31",
|
"@gitzone/tsrun": "^1.2.32",
|
||||||
"@pushrocks/smartdelay": "^2.0.13",
|
"@pushrocks/smartdelay": "^2.0.13",
|
||||||
"@pushrocks/smartexpress": "^4.0.0"
|
"@pushrocks/smartexpress": "^4.0.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@gitzone/tsbuild": "^2.1.60",
|
"@gitzone/tsbuild": "^2.1.61",
|
||||||
"@gitzone/tsbundle": "^1.0.101",
|
"@gitzone/tsbundle": "^1.0.102",
|
||||||
"@gitzone/tswatch": "^1.0.73",
|
"@gitzone/tswatch": "^1.0.76",
|
||||||
"@pushrocks/projectinfo": "^4.0.5",
|
"@pushrocks/projectinfo": "^4.0.5",
|
||||||
"tslint": "^6.1.3",
|
"tslint": "^6.1.3",
|
||||||
"tslint-config-prettier": "^1.17.0"
|
"tslint-config-prettier": "^1.17.0"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { DeesElement, property, html, customElement, TemplateResult, queryAsync } from '@designestate/dees-element';
|
import { DeesElement, property, html, customElement, TemplateResult, queryAsync, render, domtools } from '@designestate/dees-element';
|
||||||
|
|
||||||
import * as plugins from '../wcctools.plugins.js';
|
import * as plugins from '../wcctools.plugins.js';
|
||||||
|
|
||||||
@ -98,31 +98,6 @@ export class WccDashboard extends DeesElement {
|
|||||||
}}
|
}}
|
||||||
></wcc-properties>
|
></wcc-properties>
|
||||||
<wcc-frame id="wccFrame" viewport=${this.selectedViewport}>
|
<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>
|
</wcc-frame>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
@ -159,24 +134,39 @@ export class WccDashboard extends DeesElement {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private updating = false;
|
|
||||||
public async updated() {
|
public async updated() {
|
||||||
if (this.updating) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.domtools = await plugins.deesDomtools.DomTools.setupDomTools();
|
this.domtools = await plugins.deesDomtools.DomTools.setupDomTools();
|
||||||
await this.domtools.router._handleRouteState();
|
await this.domtools.router._handleRouteState();
|
||||||
this.updating = true;
|
|
||||||
const storeElement = this.selectedItem;
|
const storeElement = this.selectedItem;
|
||||||
setTimeout(async () => {
|
const wccFrame: WccFrame = this.shadowRoot.querySelector('wcc-frame');
|
||||||
this.selectedItem = null;
|
|
||||||
setTimeout(async () => {
|
if (this.selectedType === 'page' && this.selectedItem) {
|
||||||
this.selectedItem = storeElement;
|
if (typeof this.selectedItem === 'function') {
|
||||||
setTimeout(() => {
|
console.log('slotting page.');
|
||||||
this.updating = false;
|
const viewport = await wccFrame.getViewportElement();
|
||||||
}, 0);
|
render(this.selectedItem(), viewport);
|
||||||
});
|
console.log('rendered page.');
|
||||||
}, 0);
|
} 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() {
|
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';
|
import * as domtools from '@designestate/dees-domtools';
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
interface HTMLElementTagNameMap {
|
||||||
|
'wcc-frame': WccFrame;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@customElement('wcc-frame')
|
@customElement('wcc-frame')
|
||||||
export class WccFrame extends DeesElement {
|
export class WccFrame extends DeesElement {
|
||||||
@property()
|
@property()
|
||||||
public viewport: string;
|
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 {
|
public render(): TemplateResult {
|
||||||
return html`
|
return html`
|
||||||
<style>
|
<style>
|
||||||
:host {
|
: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) {
|
switch (this.viewport) {
|
||||||
case 'desktop':
|
case 'desktop':
|
||||||
@ -45,19 +65,17 @@ export class WccFrame extends DeesElement {
|
|||||||
}px;
|
}px;
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
})()}
|
})()}
|
||||||
}
|
}
|
||||||
|
|
||||||
.viewport {
|
.viewport {
|
||||||
container-type: inline-size;
|
|
||||||
container-name: wccToolsViewport;
|
|
||||||
position: relative;
|
|
||||||
${this.viewport !== 'desktop'
|
${this.viewport !== 'desktop'
|
||||||
? html` border-right: 1px dotted #444; border-left: 1px dotted #444; `
|
? html` border-right: 1px dotted #444; border-left: 1px dotted #444; `
|
||||||
: html``}
|
: html``
|
||||||
min-height: 100%;
|
}
|
||||||
background:
|
background:
|
||||||
${this.goBright ? `
|
${
|
||||||
|
this.goBright ? `
|
||||||
radial-gradient(#CCCCCC 3px, transparent 4px),
|
radial-gradient(#CCCCCC 3px, transparent 4px),
|
||||||
radial-gradient(#CCCCCC 3px, transparent 4px),
|
radial-gradient(#CCCCCC 3px, transparent 4px),
|
||||||
linear-gradient(#eeeeee 4px, transparent 0),
|
linear-gradient(#eeeeee 4px, transparent 0),
|
||||||
@ -75,11 +93,12 @@ export class WccFrame extends DeesElement {
|
|||||||
#222222;
|
#222222;
|
||||||
background-size: 109px 109px, 109px 109px,100% 6px, 109px 109px, 109px 109px;
|
background-size: 109px 109px, 109px 109px,100% 6px, 109px 109px, 109px 109px;
|
||||||
background-position: 54px 55px, 0px 0px, 0px 0px, 0px 0px, 0px 0px;
|
background-position: 54px 55px, 0px 0px, 0px 0px, 0px 0px, 0px 0px;
|
||||||
`}
|
`
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<div class="viewport">
|
<div class="viewport">
|
||||||
<slot></slot>
|
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
@ -89,4 +108,8 @@ export class WccFrame extends DeesElement {
|
|||||||
const slottedContent = this.children;
|
const slottedContent = this.children;
|
||||||
console.log(slottedContent);
|
console.log(slottedContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async getViewportElement(): Promise<HTMLElement> {
|
||||||
|
return this.shadowRoot.querySelector('.viewport') as HTMLElement;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -243,7 +243,7 @@ export class WccProperties extends DeesElement {
|
|||||||
});
|
});
|
||||||
return enumValues;
|
return enumValues;
|
||||||
};
|
};
|
||||||
const determinePropertyType = (propertyArg: any): TPropertyType => {
|
const determinePropertyType = async (propertyArg: any): Promise<TPropertyType> => {
|
||||||
const typeName: any | undefined = propertyArg.type.name;
|
const typeName: any | undefined = propertyArg.type.name;
|
||||||
if (typeName) {
|
if (typeName) {
|
||||||
return typeName;
|
return typeName;
|
||||||
@ -265,7 +265,7 @@ export class WccProperties extends DeesElement {
|
|||||||
console.log(anonItem.elementProperties);
|
console.log(anonItem.elementProperties);
|
||||||
const wccFrame = await this.dashboardRef.wccFrame;
|
const wccFrame = await this.dashboardRef.wccFrame;
|
||||||
let firstFoundInstantiatedElement: HTMLElement;
|
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)) {
|
if (element instanceof (this.selectedItem as any)) {
|
||||||
firstFoundInstantiatedElement = element as HTMLElement;
|
firstFoundInstantiatedElement = element as HTMLElement;
|
||||||
break;
|
break;
|
||||||
@ -287,7 +287,7 @@ export class WccProperties extends DeesElement {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const property = classProperties.get(key);
|
const property = classProperties.get(key);
|
||||||
const propertyTypeString = determinePropertyType(property);
|
const propertyTypeString = await determinePropertyType(property);
|
||||||
propertyArray.push(
|
propertyArray.push(
|
||||||
html`
|
html`
|
||||||
<div class="property">
|
<div class="property">
|
||||||
|
@ -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": {
|
"compilerOptions": {
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"target": "ES2017",
|
"useDefineForClassFields": false,
|
||||||
"moduleResolution": "Node"
|
"target": "ES2022",
|
||||||
|
"module": "ES2022",
|
||||||
|
"moduleResolution": "nodenext"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user