Compare commits

...

30 Commits

Author SHA1 Message Date
ab0219d3e4 1.0.155 2023-03-27 23:21:27 +02:00
7cefd9cba5 fix(core): update 2023-03-27 23:21:27 +02:00
4cf5ca2d7f 1.0.154 2023-03-27 01:22:16 +02:00
a9791220fb fix(core): update 2023-03-27 01:22:15 +02:00
4aed14c7a2 1.0.153 2023-03-25 20:56:13 +01:00
49d1cba3fd fix(core): update 2023-03-25 20:56:12 +01:00
9bacca3070 1.0.152 2023-03-25 17:32:55 +01:00
42e7ae6d6b fix(core): update 2023-03-25 17:32:55 +01:00
a8b244520c 1.0.151 2023-03-25 17:30:42 +01:00
9879a2cb6a fix(core): update 2023-03-25 17:30:41 +01:00
e2a54c6f18 1.0.150 2023-03-09 17:08:20 +01:00
dfd13e641a fix(core): update 2023-03-09 17:08:19 +01:00
2284159b72 1.0.149 2023-01-17 17:12:48 +01:00
1de86c6bfa fix(core): update 2023-01-17 17:12:47 +01:00
62087a686a 1.0.148 2023-01-17 16:52:14 +01:00
572deb990e fix(core): update 2023-01-17 16:52:13 +01:00
719c63a092 1.0.147 2023-01-16 11:57:25 +01:00
9d9700214f fix(core): update 2023-01-16 11:57:24 +01:00
bc82e110ef 1.0.146 2023-01-16 11:51:22 +01:00
fe15ebe82d fix(core): update 2023-01-16 11:51:21 +01:00
1b8577d300 1.0.145 2023-01-16 01:19:34 +01:00
ef4cfb81d8 fix(core): update 2023-01-16 01:19:33 +01:00
abea5942b7 1.0.144 2023-01-13 12:03:20 +01:00
a6274e9a2d fix(core): update 2023-01-13 12:03:19 +01:00
8b3752f586 1.0.143 2023-01-13 11:57:47 +01:00
c8e1d24224 fix(core): update 2023-01-13 11:57:47 +01:00
dbd7748ac0 1.0.142 2023-01-13 11:48:00 +01:00
68984d5702 fix(core): update 2023-01-13 11:48:00 +01:00
5237439f88 1.0.141 2023-01-13 02:15:31 +01:00
c3df73616f fix(core): update 2023-01-13 02:15:30 +01:00
11 changed files with 528 additions and 284 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "@designestate/dees-catalog", "name": "@designestate/dees-catalog",
"version": "1.0.140", "version": "1.0.155",
"private": false, "private": false,
"description": "website for lossless.com", "description": "website for lossless.com",
"main": "dist_ts_web/index.js", "main": "dist_ts_web/index.js",
@ -16,14 +16,14 @@
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@designestate/dees-domtools": "^2.0.28", "@designestate/dees-domtools": "^2.0.28",
"@designestate/dees-element": "^2.0.18", "@designestate/dees-element": "^2.0.19",
"@designestate/dees-wcctools": "^1.0.76", "@designestate/dees-wcctools": "^1.0.76",
"@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/fontawesome-svg-core": "^6.3.0",
"@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-brands-svg-icons": "^6.3.0",
"@fortawesome/free-regular-svg-icons": "^6.2.1", "@fortawesome/free-regular-svg-icons": "^6.3.0",
"@fortawesome/free-solid-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.3.0",
"@pushrocks/smartpromise": "^3.1.7", "@pushrocks/smartpromise": "^3.1.7",
"@tsclass/tsclass": "^4.0.29", "@tsclass/tsclass": "^4.0.34",
"pdfjs-dist": "^2.15.349" "pdfjs-dist": "^2.15.349"
}, },
"devDependencies": { "devDependencies": {
@ -33,7 +33,7 @@
"@gitzone/tswatch": "^2.0.5", "@gitzone/tswatch": "^2.0.5",
"@pushrocks/projectinfo": "^5.0.1", "@pushrocks/projectinfo": "^5.0.1",
"@pushrocks/tapbundle": "^5.0.4", "@pushrocks/tapbundle": "^5.0.4",
"@types/node": "^18.11.18" "@types/node": "^18.15.9"
}, },
"files": [ "files": [
"ts/**/*", "ts/**/*",

576
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@designestate/dees-catalog', name: '@designestate/dees-catalog',
version: '1.0.140', version: '1.0.155',
description: 'website for lossless.com' description: 'website for lossless.com'
} }

View File

@ -31,7 +31,12 @@ export class DeesButton extends DeesElement {
<p><dees-button disabled status="error">Error Status</dees-button></p> <p><dees-button disabled status="error">Error Status</dees-button></p>
`; `;
@property() @property({
reflect: true,
hasChanged() {
return true;
}
})
public text: string; public text: string;
@property() @property()
@ -81,8 +86,8 @@ export class DeesButton extends DeesElement {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
background: ${cssManager.bdTheme('#eee', '#333')}; background: ${cssManager.bdTheme('#fff', '#333')};
box-shadow: ${cssManager.bdTheme('0px 0px 5px rgba(0,0,0,0.1)', 'none')}; box-shadow: ${cssManager.bdTheme('0px 1px 4px rgba(0,0,0,0.3)', 'none')};
border: 1px solid ${cssManager.bdTheme('#eee', '#333')}; border: 1px solid ${cssManager.bdTheme('#eee', '#333')};
border-top: ${cssManager.bdTheme('1px solid #eee', '1px solid #444')}; border-top: ${cssManager.bdTheme('1px solid #eee', '1px solid #444')};
border-radius: 4px; border-radius: 4px;

View File

@ -29,8 +29,29 @@ export class DeesContextmenu extends DeesElement {
margin: 20px; margin: 20px;
} }
</style> </style>
<dees-button @click=${(eventArg) => { <dees-button @contextmenu=${(eventArg) => {
DeesContextmenu.openContextMenuWithOptions(eventArg, []); DeesContextmenu.openContextMenuWithOptions(eventArg, [
{
name: 'copy',
iconName: 'copySolid',
action: async () => {
return null;
},
},
{
name: 'edit',
iconName: 'penToSquare',
action: async () => {
return null;
},
},{
name: 'paste',
iconName: 'pasteSolid',
action: async () => {
return null;
},
},
]);
}}>Hello</dees-button> }}>Hello</dees-button>
<dees-contextmenu class="withMargin"></dees-contextmenu> <dees-contextmenu class="withMargin"></dees-contextmenu>
<dees-contextmenu <dees-contextmenu
@ -55,13 +76,20 @@ export class DeesContextmenu extends DeesElement {
`; `;
// STATIC // STATIC
public static openContextMenuWithOptions(eventArg, contextOptions: plugins.tsclass.website.IMenuItem[]) { public static async openContextMenuWithOptions(eventArg: MouseEvent, menuItemsArg: plugins.tsclass.website.IMenuItem[]) {
eventArg.preventDefault();
const contextMenu = new DeesContextmenu(); const contextMenu = new DeesContextmenu();
contextMenu.style.position = 'absolute'; contextMenu.style.position = 'absolute';
contextMenu; contextMenu.style.top = `${eventArg.clientY.toString()}px`;
const windowLayer = new DeesWindowLayer(); contextMenu.style.left = `${eventArg.clientX.toString()}px`;
windowLayer.append(contextMenu); contextMenu.style.opacity = '0';
document.body.append(windowLayer); contextMenu.style.transform = 'scale(0.95,0.95)';
contextMenu.style.transformOrigin = 'top left';
contextMenu.menuItems = menuItemsArg;
document.body.append(contextMenu);
await domtools.plugins.smartdelay.delayFor(0);
contextMenu.style.opacity = '1';
contextMenu.style.transform = 'scale(1,1)';
} }
@property({ @property({
@ -78,6 +106,7 @@ export class DeesContextmenu extends DeesElement {
css` css`
:host { :host {
display: block; display: block;
transition: all 0.1s;
} }
.mainbox { .mainbox {
@ -120,7 +149,7 @@ export class DeesContextmenu extends DeesElement {
<div class="mainbox"> <div class="mainbox">
${this.menuItems.map((menuItemArg) => { ${this.menuItems.map((menuItemArg) => {
return html` return html`
<div class="menuitem"> <div class="menuitem" @click=${() => this.handleClick(menuItemArg)}>
<dees-icon .iconFA=${(menuItemArg.iconName as any) || 'minus'}></dees-icon <dees-icon .iconFA=${(menuItemArg.iconName as any) || 'minus'}></dees-icon
>${menuItemArg.name} >${menuItemArg.name}
</div> </div>
@ -136,4 +165,16 @@ export class DeesContextmenu extends DeesElement {
mainbox.textContent = 'no menu items present'; mainbox.textContent = 'no menu items present';
} }
} }
public async handleClick(menuItem: plugins.tsclass.website.IMenuItem) {
menuItem.action();
await this.destroy();
}
public async destroy() {
this.style.opacity = '0';
this.style.transform = 'scale(0.95,0,95)';
await domtools.plugins.smartdelay.delayFor(100);
this.parentElement.removeChild(this);
}
} }

View File

@ -41,8 +41,7 @@ export class DeesFormSubmit extends DeesElement {
public render() { public render() {
return html` return html`
<dees-button status=${this.status} @click=${this.submit} .disabled=${this.disabled}> <dees-button status=${this.status} @click=${this.submit} .disabled=${this.disabled} .text=${this.text ? this.text : this.textContent}>
${this.text ? this.text : html`<slot></slot>`}
</dees-button> </dees-button>
`; `;
} }

View File

@ -43,8 +43,11 @@ import {
faCircleXmark as faCircleXmarkSolid, faCircleXmark as faCircleXmarkSolid,
faCopy as faCopySolid, faCopy as faCopySolid,
faDesktop as faDesktopSolid, faDesktop as faDesktopSolid,
faEye as faEyeSolid,
faEyeSlash as faEyeSlashSolid,
faGrip as faGripSolid, faGrip as faGripSolid,
faMessage as faMessageSolid, faMessage as faMessageSolid,
faMugHot as faMugHotSolid,
faMinus as faMinusSolid, faMinus as faMinusSolid,
faPaste as faPasteSolid, faPaste as faPasteSolid,
faPenToSquare as faPenToSquareSolid, faPenToSquare as faPenToSquareSolid,
@ -82,10 +85,16 @@ export const faIcons = {
copySolid: faCopySolid, copySolid: faCopySolid,
desktop: faDesktopSolid, desktop: faDesktopSolid,
desktopSolid: faDesktopSolid, desktopSolid: faDesktopSolid,
eye: faEyeSolid,
eyeSolid: faEyeSolid,
eyeSlash: faEyeSlashSolid,
eyeSlashSolid: faEyeSlashSolid,
grip: faGripSolid, grip: faGripSolid,
gripSolid: faGripSolid, gripSolid: faGripSolid,
message: faMessageRegular, message: faMessageRegular,
messageSolid: faMessageSolid, messageSolid: faMessageSolid,
mugHot: faMugHotSolid,
faMugHotSolid: faMugHotSolid,
minus: faMinusSolid, minus: faMinusSolid,
minusSolid: faMinusSolid, minusSolid: faMinusSolid,
paste: faPasteRegular, paste: faPasteRegular,
@ -181,7 +190,7 @@ export class DeesIcon extends DeesElement {
`; `;
} }
public async firstUpdated() { public async updated() {
if (!this.iconSize) { if (!this.iconSize) {
this.iconSize = parseInt(globalThis.getComputedStyle(this).fontSize.replace(/\D/g,'')); this.iconSize = parseInt(globalThis.getComputedStyle(this).fontSize.replace(/\D/g,''));
} }

View File

@ -1,4 +1,4 @@
import { customElement, DeesElement, TemplateResult, property, html } from '@designestate/dees-element'; import { customElement, DeesElement, TemplateResult, property, html, css, cssManager } from '@designestate/dees-element';
import * as domtools from '@designestate/dees-domtools'; import * as domtools from '@designestate/dees-domtools';
declare global { declare global {
@ -9,7 +9,15 @@ declare global {
@customElement('dees-input-dropdown') @customElement('dees-input-dropdown')
export class DeesInputDropdown extends DeesElement { export class DeesInputDropdown extends DeesElement {
public static demo = () => html`<dees-input-dropdown></dees-input-dropdown>` public static demo = () => html`
<dees-input-dropdown
.options=${[
{option: 'option 1', key: 'option1'},
{option: 'option 2', key: 'option2'},
{option: 'option 3', key: 'option3'}
]}
></dees-input-dropdown>
`
// INSTANCE // INSTANCE
public changeSubject = new domtools.rxjs.Subject(); public changeSubject = new domtools.rxjs.Subject();
@ -40,11 +48,10 @@ export class DeesInputDropdown extends DeesElement {
}) })
public disabled: boolean = false; public disabled: boolean = false;
public render(): TemplateResult { public static styles = [
return html` cssManager.defaultStyles,
${domtools.elementBasic.styles} css`
<style> * {
* {
box-sizing: border-box; box-sizing: border-box;
} }
@ -52,6 +59,7 @@ export class DeesInputDropdown extends DeesElement {
position: relative; position: relative;
display: block; display: block;
height: 40px; height: 40px;
color: ${cssManager.bdTheme('#222', '#fff')};
} }
.maincontainer { .maincontainer {
@ -68,41 +76,68 @@ export class DeesInputDropdown extends DeesElement {
position: relative; position: relative;
max-width: 420px; max-width: 420px;
height: 40px; height: 40px;
border: 1px solid #CCC; line-height: 40px;
padding: 12px; padding: 0px 8px;
z-index: 0px; z-index: 0px;
background: ${cssManager.bdTheme('#ffffff', '#333333')};
box-shadow: ${cssManager.bdTheme('0px 1px 4px rgba(0,0,0,0.3)', 'none')};
border-radius: 3px;
border-top: 1px solid #CCCCCC00;
border-bottom: 1px solid #66666600;
}
.selectedBox.show {
border-top: 1px solid ${cssManager.bdTheme('#ffffff', '#666666')};
border-bottom: 1px solid ${cssManager.bdTheme('#fafafa', '#222222')};
} }
.selectionBox { .selectionBox {
will-change:transform;
pointer-events: none; pointer-events: none;
cursor: pointer; cursor: pointer;
transition: all 0.2s ease; transition: all 0.2s ease;
opacity: 0; opacity: 0;
position: relative; position: relative;
background: #ffffff; background: ${cssManager.bdTheme('#ffffff', '#222222')};
max-width: 420px; max-width: 420px;
box-shadow: 0px 0px 5px rgba(0,0,0,0.2); box-shadow: 0px 0px 5px rgba(0,0,0,0.2);
height: 40px; min-height: 40px;
margin-top: -40px; margin-top: -40px;
z-index: 100; z-index: 100;
border-radius: 3px;
padding: 4px;
transform: scale(0.99,0.99);
} }
.selectionBox.show { .selectionBox.show {
pointer-events: all; pointer-events: all;
opacity: 1; opacity: 1;
min-height: 160px; transform: scale(1,1);
} }
.option { .option {
padding: 12px; transition: all 0.1s;
line-height: 40px;
padding: 0px 4px;
border-radius: 3px;
} }
.option:hover { .option:hover {
background: #fafafa; color: #fff;
padding-left: 8px;
background: #0277bd;
} }
`
]
public render(): TemplateResult {
return html`
${domtools.elementBasic.styles}
<style>
</style> </style>
<div class="maincontainer"> <div class="maincontainer">
<div class="selectedBox" @click="${event => {this.toggleSelectionBox();}}"> <div class="selectedBox show" @click="${event => {this.toggleSelectionBox();}}">
${this.selectedOption?.option} ${this.selectedOption?.option}
</div> </div>
<div class="selectionBox"> <div class="selectionBox">
@ -132,6 +167,7 @@ export class DeesInputDropdown extends DeesElement {
} }
public toggleSelectionBox() { public toggleSelectionBox() {
this.shadowRoot.querySelector('.selectedBox').classList.toggle('show');
this.shadowRoot.querySelector('.selectionBox').classList.toggle('show'); this.shadowRoot.querySelector('.selectionBox').classList.toggle('show');
} }
} }

View File

@ -9,15 +9,19 @@ declare global {
@customElement('dees-input-text') @customElement('dees-input-text')
export class DeesInputText extends DeesElement { export class DeesInputText extends DeesElement {
public static demo = () => html`<dees-input-text></dees-input-text>`; public static demo = () => html`
<dees-input-text .label=${'this is a label'}></dees-input-text>
<dees-input-text .isPasswordBool=${true}></dees-input-text>
`;
// INSTANCE // INSTANCE
public changeSubject = new domtools.rxjs.Subject(); public changeSubject = new domtools.rxjs.Subject<DeesInputText>();
public valueChangeSubject = new domtools.rxjs.Subject<string>();
@property({ @property({
type: String type: String
}) })
public label: string = 'Label'; public label: string;
@property({ @property({
type: String type: String
@ -39,6 +43,18 @@ export class DeesInputText extends DeesElement {
}) })
public disabled: boolean = false; public disabled: boolean = false;
@property({
type: Boolean,
reflect: true,
})
public isPasswordBool = false;
@property({
type: Boolean,
reflect: true,
})
public showPasswordBool = false;
public render(): TemplateResult { public render(): TemplateResult {
return html ` return html `
<style> <style>
@ -77,7 +93,8 @@ export class DeesInputText extends DeesElement {
transition: all 0.2s; transition: all 0.2s;
outline: none; outline: none;
font-size: 16px; font-size: 16px;
font-family: Inter; font-family: ${this.isPasswordBool ? 'monospace': 'Inter'};
letter-spacing: ${this.isPasswordBool ? '1px': 'normal'};
color: ${this.goBright ? '#333' : '#ccc'}; color: ${this.goBright ? '#333' : '#ccc'};
} }
@ -92,10 +109,30 @@ export class DeesInputText extends DeesElement {
outline: none; outline: none;
border-bottom: 1px solid #e4002b; border-bottom: 1px solid #e4002b;
} }
.showPassword {
position: absolute;
bottom: 8px;
right: 10px;
border: 1px dashed #444;
border-radius: 7px;
padding: 8px 0px;
width: 40px;
}
.showPassword:hover {
cursor: pointer;
background: #333;
}
</style> </style>
<div class="maincontainer"> <div class="maincontainer">
<div class="label">${this.label}</div> ${this.label ? html`<div class="label">${this.label}</div>` : html``}
<input type="text" value=${this.value} @input="${this.updateValue}" .disabled=${this.disabled} /> <input type="${this.isPasswordBool && !this.showPasswordBool ? 'password' : 'text'}" value=${this.value} @input="${this.updateValue}" .disabled=${this.disabled} />
${this.isPasswordBool ? html`
<div class="showPassword" @click=${this.togglePasswordView}>
<dees-icon .iconFA=${this.showPasswordBool ? 'eye' : 'eyeSlash'}></dees-icon>
</div>
` : html``}
</div> </div>
`; `;
} }
@ -104,6 +141,7 @@ export class DeesInputText extends DeesElement {
const target: any = eventArg.target; const target: any = eventArg.target;
this.value = target.value; this.value = target.value;
this.changeSubject.next(this); this.changeSubject.next(this);
this.valueChangeSubject.next(this.value);
} }
public async freeze() { public async freeze() {
@ -113,4 +151,15 @@ export class DeesInputText extends DeesElement {
public async unfreeze() { public async unfreeze() {
this.disabled = false; this.disabled = false;
} }
public async togglePasswordView () {
const domtools = await this.domtoolsPromise;
this.showPasswordBool = !this.showPasswordBool;
console.log(`this.showPasswordBool is: ${this.showPasswordBool}`)
}
public async focus() {
const textInput = this.shadowRoot.querySelector('input');
textInput.focus();
}
} }

View File

@ -134,7 +134,7 @@ export class DeesSpeechbubble extends DeesElement {
return html` return html`
<div class="maincontainer" @click=${this.handleClick}> <div class="maincontainer" @click=${this.handleClick}>
<div class="arrow"></div> <div class="arrow"></div>
<div class="speechbubble"><span class="wave">👋</span> Hey! We are API-driven.</div> <div class="speechbubble"><span class="wave">👋</span> We build with launch.sh, and you can too.</div>
</div> </div>
`; `;
} }
@ -144,7 +144,7 @@ export class DeesSpeechbubble extends DeesElement {
return; return;
} }
globalThis.location.href = "https://api.global" globalThis.location.href = "https://launch.sh"
} }
public async firstUpdated() { public async firstUpdated() {

View File

@ -143,10 +143,11 @@ export class DeesTable<T> extends DeesElement {
display: block; display: block;
width: 100%; width: 100%;
min-height: 50px; min-height: 50px;
background: ${cssManager.bdTheme('#fafafa', '#333333')}; background: ${cssManager.bdTheme('#ffffff', '#333333')};
border-radius: 3px; border-radius: 3px;
border-top: 1px solid ${cssManager.bdTheme('#fff', '#444')}; border-top: 1px solid ${cssManager.bdTheme('#fff', '#444')};
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.3); box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3);
overflow-x: auto;
} }
.headingSeparation { .headingSeparation {
margin-top: 7px; margin-top: 7px;