Compare commits

..

28 Commits

Author SHA1 Message Date
965ab02315 1.0.261 2024-01-22 01:29:28 +01:00
991784eae6 fix(core): update 2024-01-22 01:29:27 +01:00
b474b7986c 1.0.260 2024-01-22 01:26:13 +01:00
98542252cb fix(core): update 2024-01-22 01:26:13 +01:00
0d78deadf2 1.0.259 2024-01-22 01:11:29 +01:00
5108f47e56 fix(core): update 2024-01-22 01:11:28 +01:00
7d4e5f2ca7 1.0.258 2024-01-22 00:59:26 +01:00
c0ad0f4570 fix(core): update 2024-01-22 00:59:25 +01:00
d56eb602a9 1.0.257 2024-01-21 22:37:39 +01:00
f1c791eb12 fix(core): update 2024-01-21 22:37:39 +01:00
e872188be7 1.0.256 2024-01-21 17:14:16 +01:00
2d712e78b0 fix(core): update 2024-01-21 17:14:15 +01:00
ebeecd0686 1.0.255 2024-01-21 14:25:03 +01:00
1d09f994c6 fix(core): update 2024-01-21 14:25:02 +01:00
686c3714fc 1.0.254 2024-01-21 14:14:57 +01:00
e29086036c fix(core): update 2024-01-21 14:14:57 +01:00
78e24aa720 1.0.253 2024-01-21 13:57:46 +01:00
7c8876c835 fix(core): update 2024-01-21 13:57:46 +01:00
2222fb1e01 1.0.252 2024-01-21 13:57:27 +01:00
46b30a1ef0 fix(core): update 2024-01-21 13:57:26 +01:00
d49d5f70ef 1.0.251 2024-01-21 13:36:48 +01:00
76a950e2ba fix(core): update 2024-01-21 13:36:47 +01:00
077aba5e58 1.0.250 2024-01-21 13:27:29 +01:00
857362423f fix(core): update 2024-01-21 13:27:29 +01:00
e7232b6a53 1.0.249 2024-01-21 01:45:36 +01:00
2eb26544b3 fix(core): update 2024-01-21 01:45:35 +01:00
a40834d1cf 1.0.248 2024-01-21 01:42:07 +01:00
0c1159d4c7 fix(core): update 2024-01-21 01:42:06 +01:00
6 changed files with 153 additions and 45 deletions

View File

@@ -1,6 +1,6 @@
{ {
"name": "@design.estate/dees-catalog", "name": "@design.estate/dees-catalog",
"version": "1.0.247", "version": "1.0.261",
"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",

View File

@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@design.estate/dees-catalog', name: '@design.estate/dees-catalog',
version: '1.0.247', version: '1.0.261',
description: 'website for lossless.com' description: 'website for lossless.com'
} }

View File

@@ -52,6 +52,7 @@ import {
faFileInvoiceDollar as faFileInvoiceDollarSolid, faFileInvoiceDollar as faFileInvoiceDollarSolid,
faGear as faGearSolid, faGear as faGearSolid,
faGrip as faGripSolid, faGrip as faGripSolid,
faMagnifyingGlass as faMagnifyingGlassSolid,
faMessage as faMessageSolid, faMessage as faMessageSolid,
faMoneyCheckDollar as faMoneyCheckDollarSolid, faMoneyCheckDollar as faMoneyCheckDollarSolid,
faMugHot as faMugHotSolid, faMugHot as faMugHotSolid,
@@ -97,6 +98,7 @@ export const faIcons = {
fileInvoiceDoller: faFileInvoiceDollarSolid, fileInvoiceDoller: faFileInvoiceDollarSolid,
gear: faGearSolid, gear: faGearSolid,
grip: faGripSolid, grip: faGripSolid,
magnifyingGlass: faMagnifyingGlassSolid,
message: faMessageRegular, message: faMessageRegular,
messageSolid: faMessageSolid, messageSolid: faMessageSolid,
moneyCheckDollar: faMoneyCheckDollarSolid, moneyCheckDollar: faMoneyCheckDollarSolid,

View File

@@ -21,6 +21,11 @@ export class DeesInputMultitoggle extends DeesElement {
}) })
public label: string; public label: string;
@property({
type: String,
})
public description: string;
@property() @property()
type: 'boolean' | 'multi' | 'single' = 'multi'; type: 'boolean' | 'multi' | 'single' = 'multi';
@@ -104,7 +109,7 @@ export class DeesInputMultitoggle extends DeesElement {
public render(): TemplateResult { public render(): TemplateResult {
return html` return html`
${this.label ? html`<div class="label">${this.label}</div>` : html``} <dees-label .label=${this.label} .description=${this.description}></dees-label>
<div class="mainbox"> <div class="mainbox">
<div class="selections"> <div class="selections">
<div class="indicator"></div> <div class="indicator"></div>

View File

@@ -27,30 +27,54 @@ export class DeesSimpleAppDash extends DeesElement {
@property() @property()
public name = 'Dees Simple Login'; public name = 'Dees Simple Login';
@property()
public views: Array<{ name: string; icon: string; viewFunction: () => Promise<TemplateResult> }> = [];
public static styles = [ public static styles = [
cssManager.defaultStyles, cssManager.defaultStyles,
css` css`
:host { :host {
color: ${cssManager.bdTheme('#333', '#fff')}; color: ${cssManager.bdTheme('#333', '#ccc')};
user-select: none; user-select: none;
} }
.appbar { .appbar {
position: absolute; position: fixed;
top: 0; top: 0;
height: 40px; height: 40px;
width: 100%; width: 100%;
background: ${cssManager.bdTheme('#eeeeeb', '#000')}; background: ${cssManager.bdTheme('#eeeeeb', '#222')};
border-bottom: 1px solid ${cssManager.bdTheme('#ccc', '#333')}; border-bottom: 1px solid ${cssManager.bdTheme('#ccc', '#ffffff10')};
font-size: 14px; font-size: 14px;
line-height: 40px; line-height: 40px;
font-family: 'Roboto', 'Inter', sans-serif; font-family: 'Roboto', 'Inter', sans-serif;
padding: 0px 16px; padding: 0px 16px;
z-index: 2;
box-shadow: 0px 4px 10px 0px rgba(0, 0, 0, 0.8);
display: grid;
grid-template-columns: min-content 1fr auto;
} }
.appName {
white-space: nowrap;
}
.appActions {
display: flex;
}
.appActions .action {}
.appActions .action:hover {
color: ${cssManager.bdTheme('#000', '#fff')};
}
.appcontent { .appcontent {
position: absolute; z-index: 1;
position: fixed;
top: 40px; top: 40px;
bottom: 0; height: calc(100vh - 40px);
bottom: 0px;
width: 100%; width: 100%;
overflow: auto;
background: ${cssManager.bdTheme('#eeeeeb', '#000')}; background: ${cssManager.bdTheme('#eeeeeb', '#000')};
} }
`, `,
@@ -59,7 +83,13 @@ export class DeesSimpleAppDash extends DeesElement {
public render(): TemplateResult { public render(): TemplateResult {
return html` return html`
<div class="appbar"> <div class="appbar">
configvault v1.2.3 <div class="appName">${this.name}</div>
<div class="viewTabs"></div>
<div class="appActions">
<div class="action">
Logout
</div>
</div>
</div> </div>
<div class="appcontent"> <div class="appcontent">
<slot></slot> <slot></slot>

View File

@@ -117,12 +117,21 @@ export class DeesTable<T> extends DeesElement {
public changeSubject = new domtools.plugins.smartrx.rxjs.Subject<DeesTable<T>>(); public changeSubject = new domtools.plugins.smartrx.rxjs.Subject<DeesTable<T>>();
// end dees-form compatibility ----------------------------------------- // end dees-form compatibility -----------------------------------------
/**
* What does a row of data represent?
*/
@property({ @property({
type: String, type: String,
reflect: true, reflect: true,
}) })
public dataName: string; public dataName: string;
@property({
type: Boolean,
})
searchable: boolean = true;
@property({ @property({
type: Array, type: Array,
}) })
@@ -169,9 +178,9 @@ export class DeesTable<T> extends DeesElement {
display: block; display: block;
width: 100%; width: 100%;
min-height: 50px; min-height: 50px;
background: ${cssManager.bdTheme('#ffffff', '#333333')}; background: ${cssManager.bdTheme('#ffffff', '#222222')};
border-radius: 3px; border-radius: 3px;
border-top: 1px solid ${cssManager.bdTheme('#fff', '#444')}; border-top: 1px solid ${cssManager.bdTheme('#fff', '#ffffff10')};
box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3); box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3);
overflow-x: auto; overflow-x: auto;
cursor: default; cursor: default;
@@ -199,15 +208,20 @@ export class DeesTable<T> extends DeesElement {
.headingSeparation { .headingSeparation {
margin-top: 7px; margin-top: 7px;
border-bottom: 1px solid ${cssManager.bdTheme('#bcbcbc', '#bcbcbc')}; border-bottom: 1px solid ${cssManager.bdTheme('#bcbcbc', '#444444')};
} }
.headerActions { .headerActions {
user-select: none;
display: flex;
flex-direction: row;
margin-left: auto; margin-left: auto;
} }
.headerAction { .headerAction {
display: flex; display: flex;
flex-direction: row;
color: ${cssManager.bdTheme('#333', '#ccc')}; color: ${cssManager.bdTheme('#333', '#ccc')};
margin-left: 16px;
} }
.headerAction:hover { .headerAction:hover {
@@ -219,9 +233,21 @@ export class DeesTable<T> extends DeesElement {
} }
.searchGrid { .searchGrid {
background: ${cssManager.bdTheme('#fff', '#111111')};
display: grid; display: grid;
grid-gap: 16px; grid-gap: 16px;
grid-template-columns: 1fr 200px; grid-template-columns: 1fr 200px;
margin-top: 16px;
padding: 0px 16px;
border-top: 1px solid ${cssManager.bdTheme('#fff', '#ffffff20')};
border-radius: 8px;
}
.searchGrid.hidden {
height: 0px;
opacity: 0;
overflow: hidden;
margin-top: 0px;
} }
table, table,
@@ -311,19 +337,20 @@ export class DeesTable<T> extends DeesElement {
font-weight: inherit; font-weight: inherit;
padding: 0px 6px; padding: 0px 6px;
} }
.actionsContainer {
.action { display: flex;
margin: -6px 0px; flex-direction: row;
padding: 10px; height: 24px;
line-height: 36px; transform: translateY(-4px);
height: 36px; margin-left: -6px;
display: inline-block;
border-radius: 8px;
} }
.action {
.action:first-child { position: relative;
margin-left: -8px; padding: 8px 10px;
width: min-content; line-height: 24px;
height: 32px;
size: 16px;
border-radius: 8px;
} }
.action:hover { .action:hover {
@@ -414,11 +441,30 @@ export class DeesTable<T> extends DeesElement {
</div> </div>
</div> </div>
<div class="headingSeparation"></div> <div class="headingSeparation"></div>
<div class="searchGrid"> <div class="searchGrid hidden">
<dees-input-text .label=${'lucene syntax search'}></dees-input-text> <dees-input-text
.label=${'lucene syntax search'}
.description=${`
You can use the lucene syntax to search for data, e.g.:
\`\`\`
name: "john" AND age: 18
\`\`\`
`}
></dees-input-text>
<dees-input-multitoggle <dees-input-multitoggle
.label=${'search mode'} .label=${'search mode'}
.options=${['table', 'data', 'server']} .options=${['table', 'data', 'server']}
.selectedOption=${'table'}
.description=${`
There are three basic modes:
* table: only searches data already in the table
* data: searches original data, ignoring table transforms
* server: searches data on the server
`}
></dees-input-multitoggle> ></dees-input-multitoggle>
</div> </div>
@@ -547,22 +593,28 @@ export class DeesTable<T> extends DeesElement {
return html` return html`
<td> <td>
<div class="innerCellContainer"> <div class="innerCellContainer">
${this.getActionsForType('inRow').map( <div class="actionsContainer">
(actionArg) => html`<div ${this.getActionsForType('inRow').map(
class="action" (actionArg) => html`
@click=${() => <div
actionArg.actionFunc({ class="action"
item: itemArg, @click=${() =>
table: this, actionArg.actionFunc({
})} item: itemArg,
> table: this,
${actionArg.iconName })}
? html` >
<dees-icon .iconFA=${actionArg.iconName}></dees-icon> ${actionArg.iconName
` ? html`
: actionArg.name} <dees-icon
</div>` .iconFA=${actionArg.iconName}
)} ></dees-icon>
`
: actionArg.name}
</div>
`
)}
</div>
</div> </div>
</td> </td>
`; `;
@@ -611,11 +663,30 @@ export class DeesTable<T> extends DeesElement {
`; `;
} }
public async firstUpdated() {} public async firstUpdated() {
}
public async updated(changedProperties: Map<string | number | symbol, unknown>): Promise<void> { public async updated(changedProperties: Map<string | number | symbol, unknown>): Promise<void> {
super.updated(changedProperties); super.updated(changedProperties);
this.determineColumnWidths(); this.determineColumnWidths();
if (this.searchable) {
const existing = this.dataActions.find((actionArg) => actionArg.type.includes('header') && actionArg.name === 'Search');
if (!existing) {
this.dataActions.unshift({
name: 'Search',
iconName: 'magnifyingGlass',
type: ['header'],
actionFunc: async () => {
console.log('open search');
const searchGrid = this.shadowRoot.querySelector('.searchGrid');
searchGrid.classList.toggle('hidden');
}
});
console.log(this.dataActions);
this.requestUpdate();
};
}
} }
public async determineColumnWidths() { public async determineColumnWidths() {
@@ -636,7 +707,7 @@ export class DeesTable<T> extends DeesElement {
const width = window.getComputedStyle(cell).width; const width = window.getComputedStyle(cell).width;
if (cell.textContent.includes('Actions')) { if (cell.textContent.includes('Actions')) {
const neededWidth = const neededWidth =
this.dataActions.filter((actionArg) => actionArg.type.includes('inRow')).length * 35; this.dataActions.filter((actionArg) => actionArg.type.includes('inRow')).length * 36;
cell.style.width = `${Math.max(neededWidth, 68)}px`; cell.style.width = `${Math.max(neededWidth, 68)}px`;
} else { } else {
cell.style.width = width; cell.style.width = width;