@omegagrid/bucket 0.10.2 → 0.10.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.d.ts +54 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +12 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/options.d.ts +12 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +16 -0
- package/dist/options.js.map +1 -0
- package/dist/types.d.ts +87 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/bucket.alerts.d.ts +17 -0
- package/dist/ui/bucket.alerts.d.ts.map +1 -0
- package/dist/ui/bucket.alerts.js +47 -0
- package/dist/ui/bucket.alerts.js.map +1 -0
- package/dist/ui/bucket.components.d.ts +24 -0
- package/dist/ui/bucket.components.d.ts.map +1 -0
- package/dist/ui/bucket.components.js +111 -0
- package/dist/ui/bucket.components.js.map +1 -0
- package/dist/ui/bucket.d.ts +83 -0
- package/dist/ui/bucket.d.ts.map +1 -0
- package/dist/ui/bucket.dialogs.d.ts +11 -0
- package/dist/ui/bucket.dialogs.d.ts.map +1 -0
- package/dist/ui/bucket.dialogs.js +46 -0
- package/dist/ui/bucket.dialogs.js.map +1 -0
- package/dist/ui/bucket.js +372 -0
- package/dist/ui/bucket.js.map +1 -0
- package/dist/ui/bucket.sidebars.d.ts +15 -0
- package/dist/ui/bucket.sidebars.d.ts.map +1 -0
- package/dist/ui/bucket.sidebars.js +77 -0
- package/dist/ui/bucket.sidebars.js.map +1 -0
- package/dist/ui/bucket.style.d.ts +3 -0
- package/dist/ui/bucket.style.d.ts.map +1 -0
- package/dist/ui/bucket.style.js +90 -0
- package/dist/ui/bucket.style.js.map +1 -0
- package/dist/ui/bucketAlert.d.ts +20 -0
- package/dist/ui/bucketAlert.d.ts.map +1 -0
- package/dist/ui/bucketAlert.js +114 -0
- package/dist/ui/bucketAlert.js.map +1 -0
- package/dist/ui/bucketAlert.style.d.ts +2 -0
- package/dist/ui/bucketAlert.style.d.ts.map +1 -0
- package/dist/ui/bucketAlert.style.js +58 -0
- package/dist/ui/bucketAlert.style.js.map +1 -0
- package/dist/ui/bucketButton.d.ts +12 -0
- package/dist/ui/bucketButton.d.ts.map +1 -0
- package/dist/ui/bucketButton.js +105 -0
- package/dist/ui/bucketButton.js.map +1 -0
- package/dist/ui/commonMenus.d.ts +4 -0
- package/dist/ui/commonMenus.d.ts.map +1 -0
- package/dist/ui/commonMenus.js +7 -0
- package/dist/ui/commonMenus.js.map +1 -0
- package/dist/ui/componentHost.d.ts +19 -0
- package/dist/ui/componentHost.d.ts.map +1 -0
- package/dist/ui/componentHost.js +119 -0
- package/dist/ui/componentHost.js.map +1 -0
- package/dist/ui/index.d.ts +11 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +11 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/modalSidebar.d.ts +22 -0
- package/dist/ui/modalSidebar.d.ts.map +1 -0
- package/dist/ui/modalSidebar.js +85 -0
- package/dist/ui/modalSidebar.js.map +1 -0
- package/dist/ui/modalSidebar.style.d.ts +3 -0
- package/dist/ui/modalSidebar.style.d.ts.map +1 -0
- package/dist/ui/modalSidebar.style.js +58 -0
- package/dist/ui/modalSidebar.style.js.map +1 -0
- package/dist/ui/path.d.ts +17 -0
- package/dist/ui/path.d.ts.map +1 -0
- package/dist/ui/path.js +97 -0
- package/dist/ui/path.js.map +1 -0
- package/dist/ui/sidebar.d.ts +15 -0
- package/dist/ui/sidebar.d.ts.map +1 -0
- package/dist/ui/sidebar.js +62 -0
- package/dist/ui/sidebar.js.map +1 -0
- package/dist/ui/sidemenu.d.ts +23 -0
- package/dist/ui/sidemenu.d.ts.map +1 -0
- package/dist/ui/sidemenu.js +135 -0
- package/dist/ui/sidemenu.js.map +1 -0
- package/dist/ui/top.d.ts +14 -0
- package/dist/ui/top.d.ts.map +1 -0
- package/dist/ui/top.js +64 -0
- package/dist/ui/top.js.map +1 -0
- package/dist/ui/top.style.d.ts +3 -0
- package/dist/ui/top.style.d.ts.map +1 -0
- package/dist/ui/top.style.js +35 -0
- package/dist/ui/top.style.js.map +1 -0
- package/package.json +6 -6
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { dom } from '@omegagrid/core';
|
|
8
|
+
import { LitElement, html } from 'lit';
|
|
9
|
+
import { customElement, property, query } from 'lit/decorators.js';
|
|
10
|
+
import style from './modalSidebar.style';
|
|
11
|
+
let ModalSidebar = class ModalSidebar extends LitElement {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.closable = false;
|
|
15
|
+
// _onSave = () => {
|
|
16
|
+
// if (!this.isEdited) return;
|
|
17
|
+
// this.bucket.editorContainer.model.walk(tab => {
|
|
18
|
+
// if (tab.id == this.componentId) tab.unsaved = false;
|
|
19
|
+
// });
|
|
20
|
+
// this.isEdited = false;
|
|
21
|
+
// this.bucket.editorContainer.updateTabs();
|
|
22
|
+
// }
|
|
23
|
+
this.showLoader = () => this.overlay.show(this);
|
|
24
|
+
this.hideLoader = () => this.overlay.hide();
|
|
25
|
+
this._onClose = () => {
|
|
26
|
+
this.close();
|
|
27
|
+
};
|
|
28
|
+
this.render = () => html `
|
|
29
|
+
<div class="header">
|
|
30
|
+
<div class="title">${this.caption}</div>
|
|
31
|
+
${this.closable ? html `<div class="close" @click="${() => this.close()}">×</div>` : ``}
|
|
32
|
+
</div>
|
|
33
|
+
<div class="body"></div>
|
|
34
|
+
<og-overlay defaultLoader></og-overlay>
|
|
35
|
+
`;
|
|
36
|
+
}
|
|
37
|
+
// private isEdited = false;
|
|
38
|
+
layout() {
|
|
39
|
+
this.component?.layout();
|
|
40
|
+
}
|
|
41
|
+
disconnectedCallback() {
|
|
42
|
+
this.component?.removeEventListener('close', this._onClose);
|
|
43
|
+
}
|
|
44
|
+
async updated(props) {
|
|
45
|
+
if (props.has('componentId') && this.componentId) {
|
|
46
|
+
this.showLoader();
|
|
47
|
+
const component = await this.bucket.components.get(this.componentId);
|
|
48
|
+
this.component = component;
|
|
49
|
+
dom.empty(this.body);
|
|
50
|
+
this.body.appendChild(component);
|
|
51
|
+
// component.removeEventListener('save', this._onSave);
|
|
52
|
+
// component.addEventListener('save', this._onSave);
|
|
53
|
+
component.addEventListener('close', this._onClose, { once: true });
|
|
54
|
+
component.focus();
|
|
55
|
+
this.hideLoader();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
close() {
|
|
59
|
+
this.bucket.sidebars.closeModalSidebar();
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
ModalSidebar.styles = [style];
|
|
63
|
+
__decorate([
|
|
64
|
+
property({ type: String })
|
|
65
|
+
], ModalSidebar.prototype, "caption", void 0);
|
|
66
|
+
__decorate([
|
|
67
|
+
property({ type: Boolean })
|
|
68
|
+
], ModalSidebar.prototype, "closable", void 0);
|
|
69
|
+
__decorate([
|
|
70
|
+
property({ type: Object })
|
|
71
|
+
], ModalSidebar.prototype, "bucket", void 0);
|
|
72
|
+
__decorate([
|
|
73
|
+
property({ type: String })
|
|
74
|
+
], ModalSidebar.prototype, "componentId", void 0);
|
|
75
|
+
__decorate([
|
|
76
|
+
query('.body')
|
|
77
|
+
], ModalSidebar.prototype, "body", void 0);
|
|
78
|
+
__decorate([
|
|
79
|
+
query('og-overlay')
|
|
80
|
+
], ModalSidebar.prototype, "overlay", void 0);
|
|
81
|
+
ModalSidebar = __decorate([
|
|
82
|
+
customElement('og-bucket-modal-sidebar')
|
|
83
|
+
], ModalSidebar);
|
|
84
|
+
export { ModalSidebar };
|
|
85
|
+
//# sourceMappingURL=modalSidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modalSidebar.js","sourceRoot":"","sources":["../../src/ui/modalSidebar.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAe,GAAG,EAAmB,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,KAAK,MAAM,sBAAsB,CAAC;AAGlC,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,UAAU;IAArC;;QAQN,aAAQ,GAAG,KAAK,CAAC;QAqBjB,oBAAoB;QACpB,+BAA+B;QAC/B,mDAAmD;QACnD,yDAAyD;QACzD,OAAO;QACP,0BAA0B;QAC1B,6CAA6C;QAC7C,IAAI;QAEJ,eAAU,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,eAAU,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAEvC,aAAQ,GAAG,GAAG,EAAE;YACf,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,CAAA;QAyBD,WAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAA;;wBAEI,IAAI,CAAC,OAAO;KAC/B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA,8BAA8B,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE;;;;EAI5F,CAAC;IAEH,CAAC;IAtDA,4BAA4B;IAE5B,MAAM;QACJ,IAAI,CAAC,SAAoB,EAAE,MAAM,EAAE,CAAC;IACtC,CAAC;IAkBD,oBAAoB;QACnB,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAgC;QAC7C,IAAI,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAClD,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACjC,uDAAuD;YACvD,oDAAoD;YACpD,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;YACjE,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QACnB,CAAC;IACF,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;IAC1C,CAAC;;AAhEM,mBAAM,GAAG,CAAC,KAAK,CAAC,AAAV,CAAW;AAGxB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;6CACT;AAGhB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;8CACT;AAGjB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;4CACV;AAGf;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;iDACA;AAGzB;IADC,KAAK,CAAC,OAAO,CAAC;0CACM;AAGrB;IADC,KAAK,CAAC,YAAY,CAAC;6CACH;AApBL,YAAY;IADxB,aAAa,CAAC,yBAAyB,CAAC;GAC5B,YAAY,CA6ExB","sourcesContent":["import { ComponentId, dom, Layout, Overlay } from '@omegagrid/core';\nimport { LitElement, html } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { Bucket } from './bucket';\nimport style from './modalSidebar.style';\n\n@customElement('og-bucket-modal-sidebar')\nexport class ModalSidebar extends LitElement implements Layout {\n\n\tstatic styles = [style];\n\n\t@property({type: String})\n\tcaption: string;\n\n\t@property({type: Boolean})\n\tclosable = false;\n\n\t@property({type: Object})\n\tbucket: Bucket;\n\n\t@property({type: String})\n\tcomponentId: ComponentId;\n\n\t@query('.body')\n\tbody: HTMLDivElement;\n\n\t@query('og-overlay')\n\toverlay: Overlay;\n\n\tprivate component: HTMLElement;\n\t// private isEdited = false;\n\n\tlayout() {\n\t\t(this.component as Layout)?.layout();\n\t}\n\n\t// _onSave = () => {\n\t// \tif (!this.isEdited) return;\n\t// \tthis.bucket.editorContainer.model.walk(tab => {\n\t// \t\tif (tab.id == this.componentId) tab.unsaved = false;\n\t// \t});\n\t// \tthis.isEdited = false;\n\t// \tthis.bucket.editorContainer.updateTabs();\n\t// }\n\n\tshowLoader = () => this.overlay.show(this);\n\thideLoader = () => this.overlay.hide();\n\n\t_onClose = () => {\n\t\tthis.close();\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.component?.removeEventListener('close', this._onClose);\n\t}\n\n\tasync updated(props: Map<PropertyKey, unknown>) {\n\t\tif (props.has('componentId') && this.componentId) {\n\t\t\tthis.showLoader();\n\t\t\tconst component = await this.bucket.components.get(this.componentId);\n\t\t\tthis.component = component;\n\t\t\tdom.empty(this.body);\n\t\t\tthis.body.appendChild(component);\n\t\t\t// component.removeEventListener('save', this._onSave);\n\t\t\t// component.addEventListener('save', this._onSave);\n\t\t\tcomponent.addEventListener('close', this._onClose, {once: true});\n\t\t\tcomponent.focus();\n\t\t\tthis.hideLoader();\n\t\t}\n\t}\n\n\tclose() {\n\t\tthis.bucket.sidebars.closeModalSidebar();\n\t}\n\n\trender = () => html`\n\t\t<div class=\"header\">\n\t\t\t<div class=\"title\">${this.caption}</div>\n\t\t\t${this.closable ? html`<div class=\"close\" @click=\"${() => this.close()}\">×</div>` : ``}\n\t\t</div>\n\t\t<div class=\"body\"></div>\n\t\t<og-overlay defaultLoader></og-overlay>\n\t`;\n\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modalSidebar.style.d.ts","sourceRoot":"","sources":["../../src/ui/modalSidebar.style.ts"],"names":[],"mappings":";AAGA,wBAsDE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
import constants from '../constants';
|
|
3
|
+
export default css `
|
|
4
|
+
:host {
|
|
5
|
+
display: flex;
|
|
6
|
+
position: relative;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
background-color: var(--og-bucket-sidebar-background-color);
|
|
9
|
+
box-shadow: 8px 8px 4px -3px var(--og-dialog-shadow);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
:host(.right) {
|
|
13
|
+
box-shadow: -8px 8px 4px -3px var(--og-dialog-shadow);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
* {
|
|
17
|
+
box-sizing: border-box;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.header {
|
|
21
|
+
display: flex;
|
|
22
|
+
min-height: ${constants.SIDEBAR_HEADER_HEIGHT}px;
|
|
23
|
+
line-height: ${constants.SIDEBAR_HEADER_HEIGHT}px;
|
|
24
|
+
padding: 0 10px;
|
|
25
|
+
flex: 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.title {
|
|
29
|
+
font-size: var(--og-font-size);
|
|
30
|
+
overflow: hidden;
|
|
31
|
+
white-space: nowrap;
|
|
32
|
+
text-overflow: ellipsis;
|
|
33
|
+
flex: 1;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.close {
|
|
37
|
+
flex: 0;
|
|
38
|
+
margin-top: ${constants.SIDEBAR_HEADER_HEIGHT / 4}px;
|
|
39
|
+
min-width: ${constants.SIDEBAR_HEADER_HEIGHT / 2}px;
|
|
40
|
+
height: ${constants.SIDEBAR_HEADER_HEIGHT / 2}px;
|
|
41
|
+
line-height: ${constants.SIDEBAR_HEADER_HEIGHT / 2}px;
|
|
42
|
+
border-radius: var(--og-base-radius);
|
|
43
|
+
cursor: pointer;
|
|
44
|
+
text-align: center;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.close:hover {
|
|
48
|
+
background-color: var(--og-accent-color);
|
|
49
|
+
color: var(--og-text-color-2);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.body {
|
|
53
|
+
flex: 1;
|
|
54
|
+
overflow: hidden;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
`;
|
|
58
|
+
//# sourceMappingURL=modalSidebar.style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modalSidebar.style.js","sourceRoot":"","sources":["../../src/ui/modalSidebar.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;gBAmBF,SAAS,CAAC,qBAAqB;iBAC9B,SAAS,CAAC,qBAAqB;;;;;;;;;;;;;;;gBAehC,SAAS,CAAC,qBAAqB,GAAG,CAAC;eACpC,SAAS,CAAC,qBAAqB,GAAG,CAAC;YACtC,SAAS,CAAC,qBAAqB,GAAG,CAAC;iBAC9B,SAAS,CAAC,qBAAqB,GAAG,CAAC;;;;;;;;;;;;;;;;CAgBnD,CAAC","sourcesContent":["import { css } from 'lit';\nimport constants from '../constants';\n\nexport default css`\n\t:host {\n\t\tdisplay: flex;\n\t\tposition: relative;\n\t\tflex-direction: column;\n\t\tbackground-color: var(--og-bucket-sidebar-background-color);\n\t\tbox-shadow: 8px 8px 4px -3px var(--og-dialog-shadow);\n\t}\n\n\t:host(.right) {\n\t\tbox-shadow: -8px 8px 4px -3px var(--og-dialog-shadow);\n\t}\n\n\t* {\n\t\tbox-sizing: border-box;\n\t}\n\n\t.header {\n\t\tdisplay: flex;\n\t\tmin-height: ${constants.SIDEBAR_HEADER_HEIGHT}px;\n\t\tline-height: ${constants.SIDEBAR_HEADER_HEIGHT}px;\n\t\tpadding: 0 10px;\n\t\tflex: 0;\n\t}\n\n\t.title {\n\t\tfont-size: var(--og-font-size);\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tflex: 1;\n\t}\n\n\t.close {\n\t\tflex: 0;\n\t\tmargin-top: ${constants.SIDEBAR_HEADER_HEIGHT / 4}px;\n\t\tmin-width: ${constants.SIDEBAR_HEADER_HEIGHT / 2}px;\n\t\theight: ${constants.SIDEBAR_HEADER_HEIGHT / 2}px;\n\t\tline-height: ${constants.SIDEBAR_HEADER_HEIGHT / 2}px;\n\t\tborder-radius: var(--og-base-radius);\n\t\tcursor: pointer;\n\t\ttext-align: center;\n\t}\n\t\n\t.close:hover {\n\t\tbackground-color: var(--og-accent-color);\n\t\tcolor: var(--og-text-color-2);\n\t}\n\n\t.body {\n\t\tflex: 1;\n\t\toverflow: hidden;\n\t}\n\t\n`;"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { OmegaComponent } from '@omegagrid/core';
|
|
2
|
+
import { PathSegment, PathSegments } from '../types';
|
|
3
|
+
export declare class BucketPathEvent extends Event {
|
|
4
|
+
readonly path: PathSegment[];
|
|
5
|
+
readonly index: number;
|
|
6
|
+
get segment(): PathSegment;
|
|
7
|
+
constructor(type: string, args?: Partial<BucketPathEvent>);
|
|
8
|
+
}
|
|
9
|
+
export declare class BucketPath extends OmegaComponent {
|
|
10
|
+
static styles: import("lit").CSSResultGroup[];
|
|
11
|
+
path: PathSegments;
|
|
12
|
+
clickable: boolean;
|
|
13
|
+
willUpdate(): void;
|
|
14
|
+
_onClick: (e: PointerEvent) => void;
|
|
15
|
+
render: () => Iterable<unknown>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/ui/path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAS,MAAM,iBAAiB,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAIrD,qBAAa,eAAgB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,IAAI,OAAO,gBAAmC;gBAElC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;CAIzD;AAED,qBACa,UAAW,SAAQ,cAAc;IAE7C,MAAM,CAAC,MAAM,iCAyBV;IAGH,IAAI,EAAE,YAAY,CAAC;IAGnB,SAAS,UAAS;IAElB,UAAU;IAcV,QAAQ,GAAI,GAAG,YAAY,UAS1B;IAED,MAAM,0BAUsC;CAE5C"}
|
package/dist/ui/path.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { OmegaComponent, utils } from '@omegagrid/core';
|
|
8
|
+
import { css, html } from 'lit';
|
|
9
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
10
|
+
import { join } from 'lit/directives/join.js';
|
|
11
|
+
import { map } from 'lit/directives/map.js';
|
|
12
|
+
export class BucketPathEvent extends Event {
|
|
13
|
+
get segment() { return this.path[this.index]; }
|
|
14
|
+
constructor(type, args) {
|
|
15
|
+
super(`path.${type}`, { bubbles: true, composed: true });
|
|
16
|
+
if (args)
|
|
17
|
+
Object.assign(this, args);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
let BucketPath = class BucketPath extends OmegaComponent {
|
|
21
|
+
constructor() {
|
|
22
|
+
super(...arguments);
|
|
23
|
+
this.clickable = false;
|
|
24
|
+
this._onClick = (e) => {
|
|
25
|
+
const target = e.currentTarget;
|
|
26
|
+
const id = target.dataset.id;
|
|
27
|
+
if (id) {
|
|
28
|
+
this.dispatchEvent(new BucketPathEvent('click', {
|
|
29
|
+
path: this.path,
|
|
30
|
+
index: this.path.findIndex(seg => seg.id === id)
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
this.render = () => join(map(this.path, segment => segment.clickable ? html `
|
|
35
|
+
<a @click="${this._onClick}" data-id="${segment.id}">
|
|
36
|
+
${segment.icon ? html `<og-icon .icon="${segment.icon}"></og-icon>` : ''}
|
|
37
|
+
${segment.label}
|
|
38
|
+
</a>
|
|
39
|
+
` : html `
|
|
40
|
+
<span data-id="${segment.id}">
|
|
41
|
+
${segment.icon ? html `<og-icon .icon="${segment.icon}"></og-icon>` : ''}
|
|
42
|
+
${segment.label}
|
|
43
|
+
</span>
|
|
44
|
+
`), html `<span class="separator">/</span>`);
|
|
45
|
+
}
|
|
46
|
+
willUpdate() {
|
|
47
|
+
this.path = this.path?.map(segment => {
|
|
48
|
+
let seg;
|
|
49
|
+
if (utils.isObject(segment)) {
|
|
50
|
+
seg = segment;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
seg = { id: segment };
|
|
54
|
+
}
|
|
55
|
+
seg.label ?? (seg.label = seg.id);
|
|
56
|
+
seg.clickable ?? (seg.clickable = this.clickable);
|
|
57
|
+
return seg;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
BucketPath.styles = [OmegaComponent.styles, css `
|
|
62
|
+
:host {
|
|
63
|
+
font-size: 10px;
|
|
64
|
+
white-space: nowrap;
|
|
65
|
+
display: flex;
|
|
66
|
+
flex-direction: row;
|
|
67
|
+
align-items: center;
|
|
68
|
+
gap: 2px;
|
|
69
|
+
padding: 0 2px;
|
|
70
|
+
background-color: var(--og-background-color);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
a {
|
|
74
|
+
color: var(--og-accent-color);
|
|
75
|
+
cursor: pointer;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
a:hover {
|
|
79
|
+
text-decoration: underline;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
og-icon {
|
|
83
|
+
margin-right: -4px;
|
|
84
|
+
display: inline;
|
|
85
|
+
}
|
|
86
|
+
`];
|
|
87
|
+
__decorate([
|
|
88
|
+
property({ type: Array })
|
|
89
|
+
], BucketPath.prototype, "path", void 0);
|
|
90
|
+
__decorate([
|
|
91
|
+
property({ type: Boolean })
|
|
92
|
+
], BucketPath.prototype, "clickable", void 0);
|
|
93
|
+
BucketPath = __decorate([
|
|
94
|
+
customElement('og-bucket-path')
|
|
95
|
+
], BucketPath);
|
|
96
|
+
export { BucketPath };
|
|
97
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/ui/path.ts"],"names":[],"mappings":"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","sourcesContent":["import { OmegaComponent, utils } from '@omegagrid/core';\nimport { css, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { PathSegment, PathSegments } from '../types';\nimport { join } from 'lit/directives/join.js';\nimport { map } from 'lit/directives/map.js';\n\nexport class BucketPathEvent extends Event {\n\treadonly path: PathSegment[];\n\treadonly index: number;\n\tget segment() { return this.path[this.index] }\n\n\tconstructor(type: string, args?: Partial<BucketPathEvent>) {\n\t\tsuper(`path.${type}`, {bubbles: true, composed: true});\n\t\tif (args) Object.assign(this, args);\n\t}\n}\n\n@customElement('og-bucket-path')\nexport class BucketPath extends OmegaComponent {\n\n\tstatic styles = [OmegaComponent.styles, css`\n\t\t:host {\n\t\t\tfont-size: 10px;\n\t\t\twhite-space: nowrap;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tgap: 2px;\n\t\t\tpadding: 0 2px;\n\t\t\tbackground-color: var(--og-background-color);\n\t\t}\n\n\t\ta {\n\t\t\tcolor: var(--og-accent-color);\n\t\t\tcursor: pointer;\n\t\t}\n\n\t\ta:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\n\t\tog-icon {\n\t\t\tmargin-right: -4px;\n\t\t\tdisplay: inline;\n\t\t}\n\t`];\n\n\t@property({type: Array})\n\tpath: PathSegments;\n\n\t@property({type: Boolean})\n\tclickable = false;\n\n\twillUpdate() {\n\t\tthis.path = this.path?.map(segment => {\n\t\t\tlet seg: PathSegment;\n\t\t\tif (utils.isObject(segment)) {\n\t\t\t\tseg = segment as PathSegment;\n\t\t\t} else {\n\t\t\t\tseg = {id: segment as string};\n\t\t\t}\n\t\t\tseg.label ??= seg.id;\n\t\t\tseg.clickable ??= this.clickable;\n\t\t\treturn seg;\n\t\t}) as PathSegment[];\n\t}\n\n\t_onClick = (e: PointerEvent) => {\n\t\tconst target = e.currentTarget as HTMLElement;\n\t\tconst id = target.dataset.id;\n\t\tif (id) {\n\t\t\tthis.dispatchEvent(new BucketPathEvent('click', {\n\t\t\t\tpath: this.path as PathSegment[],\n\t\t\t\tindex: this.path.findIndex(seg => (seg as PathSegment).id === id)\n\t\t\t}));\n\t\t}\n\t}\n\n\trender = () => join(map(this.path as PathSegment[], segment => segment.clickable ? html`\n\t\t<a @click=\"${this._onClick}\" data-id=\"${segment.id}\">\n\t\t\t${segment.icon ? html`<og-icon .icon=\"${segment.icon}\"></og-icon>` : ''}\n\t\t\t${segment.label}\n\t\t</a>\n\t` : html`\n\t\t<span data-id=\"${segment.id}\">\n\t\t\t${segment.icon ? html`<og-icon .icon=\"${segment.icon}\"></og-icon>` : ''}\n\t\t\t${segment.label}\n\t\t</span>\n\t`), html`<span class=\"separator\">/</span>`);\n\n}"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Layout } from '@omegagrid/core';
|
|
2
|
+
import { LitElement } from 'lit';
|
|
3
|
+
import { Bucket } from './bucket';
|
|
4
|
+
export declare class Sidebar extends LitElement implements Layout {
|
|
5
|
+
static styles: import("lit").CSSResult;
|
|
6
|
+
bucket: Bucket;
|
|
7
|
+
componentId: string;
|
|
8
|
+
container: HTMLDivElement;
|
|
9
|
+
private _component;
|
|
10
|
+
loadComponent(id?: string): Promise<void>;
|
|
11
|
+
updated(props: Map<PropertyKey, unknown>): Promise<void>;
|
|
12
|
+
layout(): void;
|
|
13
|
+
render: () => import("lit-html").TemplateResult<1>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=sidebar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/ui/sidebar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBACa,OAAQ,SAAQ,UAAW,YAAW,MAAM;IAExD,MAAM,CAAC,MAAM,0BAcX;IAGF,MAAM,EAAE,MAAM,CAAC;IAGf,WAAW,EAAE,MAAM,CAAC;IAGpB,SAAS,EAAE,cAAc,CAAC;IAE1B,OAAO,CAAC,UAAU,CAAc;IAE1B,aAAa,CAAC,EAAE,CAAC,EAAE,MAAM;IAMzB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;IAQ9C,MAAM;IAMN,MAAM,6CAA2B;CAEjC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { dom } from '@omegagrid/core';
|
|
8
|
+
import { LitElement, html, css } from 'lit';
|
|
9
|
+
import { customElement, property, query } from 'lit/decorators.js';
|
|
10
|
+
let Sidebar = class Sidebar extends LitElement {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.render = () => html `<div></div>`;
|
|
14
|
+
}
|
|
15
|
+
async loadComponent(id) {
|
|
16
|
+
dom.empty(this.container);
|
|
17
|
+
this._component = await this.bucket.components.get(id);
|
|
18
|
+
if (this._component)
|
|
19
|
+
this.container.appendChild(this._component);
|
|
20
|
+
}
|
|
21
|
+
async updated(props) {
|
|
22
|
+
if (!this.bucket)
|
|
23
|
+
return;
|
|
24
|
+
if (props.has('componentId')) {
|
|
25
|
+
this.loadComponent(this.componentId);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
layout() {
|
|
29
|
+
if (this._component?.layout) {
|
|
30
|
+
this._component.layout();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
Sidebar.styles = css `
|
|
35
|
+
:host {
|
|
36
|
+
display: block;
|
|
37
|
+
color: var(--og-text-color);
|
|
38
|
+
background-color: var(--og-background-color);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
* {
|
|
42
|
+
box-sizing: border-box;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
div {
|
|
46
|
+
height: 100%;
|
|
47
|
+
}
|
|
48
|
+
`;
|
|
49
|
+
__decorate([
|
|
50
|
+
property({ type: Object })
|
|
51
|
+
], Sidebar.prototype, "bucket", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
property({ type: String })
|
|
54
|
+
], Sidebar.prototype, "componentId", void 0);
|
|
55
|
+
__decorate([
|
|
56
|
+
query('div')
|
|
57
|
+
], Sidebar.prototype, "container", void 0);
|
|
58
|
+
Sidebar = __decorate([
|
|
59
|
+
customElement('og-bucket-sidebar')
|
|
60
|
+
], Sidebar);
|
|
61
|
+
export { Sidebar };
|
|
62
|
+
//# sourceMappingURL=sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../src/ui/sidebar.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,GAAG,EAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAI5D,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,UAAU;IAAhC;;QAiDN,WAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAA,aAAa,CAAC;IAElC,CAAC;IAtBA,KAAK,CAAC,aAAa,CAAC,EAAW;QAC9B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAgC;QAC7C,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,IAAI,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;IACF,CAAC;IAED,MAAM;QACL,IAAK,IAAI,CAAC,UAAqB,EAAE,MAAM,EAAE,CAAC;YACxC,IAAI,CAAC,UAAqB,CAAC,MAAM,EAAE,CAAC;QACtC,CAAC;IACF,CAAC;;AA7CM,cAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;EAclB,AAdY,CAcX;AAGF;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;uCACV;AAGf;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;4CACL;AAGpB;IADC,KAAK,CAAC,KAAK,CAAC;0CACa;AAzBd,OAAO;IADnB,aAAa,CAAC,mBAAmB,CAAC;GACtB,OAAO,CAmDnB","sourcesContent":["import { dom, Layout } from '@omegagrid/core';\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { Bucket } from './bucket';\n\n@customElement('og-bucket-sidebar')\nexport class Sidebar extends LitElement implements Layout {\n\n\tstatic styles = css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tcolor: var(--og-text-color);\n\t\t\tbackground-color: var(--og-background-color);\n\t\t}\n\t\t\n\t\t* {\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\tdiv {\n\t\t\theight: 100%;\n\t\t}\n\t`;\n\n\t@property({type: Object})\n\tbucket: Bucket;\n\n\t@property({type: String})\n\tcomponentId: string;\n\n\t@query('div')\n\tcontainer: HTMLDivElement;\n\t\n\tprivate _component: HTMLElement;\n\t\n\tasync loadComponent(id?: string) {\n\t\tdom.empty(this.container);\n\t\tthis._component = await this.bucket.components.get(id);\n\t\tif (this._component) this.container.appendChild(this._component);\n\t}\n\n\tasync updated(props: Map<PropertyKey, unknown>) {\n\t\tif (!this.bucket) return;\n\n\t\tif (props.has('componentId')) {\n\t\t\tthis.loadComponent(this.componentId);\n\t\t}\n\t}\n\n\tlayout() {\n\t\tif ((this._component as Layout)?.layout) {\n\t\t\t(this._component as Layout).layout();\n\t\t}\n\t}\n\t\n\trender = () => html`<div></div>`;\n\n}"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { List, ListItemElement, Tooltip } from '@omegagrid/core';
|
|
2
|
+
import { LitElement } from 'lit';
|
|
3
|
+
import { SidemenuSettings } from '../types';
|
|
4
|
+
export declare class Sidemenu extends LitElement {
|
|
5
|
+
settings: SidemenuSettings;
|
|
6
|
+
list: List;
|
|
7
|
+
static styles: import("lit").CSSResult;
|
|
8
|
+
private tooltipRef;
|
|
9
|
+
get tooltip(): Tooltip;
|
|
10
|
+
get count(): number;
|
|
11
|
+
private _hideTimer;
|
|
12
|
+
private items;
|
|
13
|
+
selectItem(id: string): void;
|
|
14
|
+
constructor();
|
|
15
|
+
requestHide(): void;
|
|
16
|
+
_onMouseMove: (_e: MouseEvent, elm: ListItemElement) => void;
|
|
17
|
+
updated(): Promise<void>;
|
|
18
|
+
updateActiveIndex(): void;
|
|
19
|
+
firstUpdated(): void;
|
|
20
|
+
_itemRenderer: (div: HTMLDivElement, index: number) => Promise<void>;
|
|
21
|
+
render: () => import("lit-html").TemplateResult<1>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=sidemenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidemenu.d.ts","sourceRoot":"","sources":["../../src/ui/sidemenu.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAqB5C,qBACa,QAAS,SAAQ,UAAU;IAGvC,QAAQ,EAAE,gBAAgB,CAAC;IAG3B,IAAI,EAAE,IAAI,CAAC;IAEX,MAAM,CAAC,MAAM,0BAYX;IAEF,OAAO,CAAC,UAAU,CAAwB;IAC1C,IAAI,OAAO,YAAqC;IAEhD,IAAI,KAAK,WAA+C;IAExD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CASV;IAEH,UAAU,CAAC,EAAE,EAAE,MAAM;;IAkBrB,WAAW;IASX,YAAY,GAAI,IAAI,UAAU,EAAE,KAAK,eAAe,UAQnD;IAEK,OAAO;IAOb,iBAAiB;IAOjB,YAAY;IAIZ,aAAa,GAAU,KAAK,cAAc,EAAE,OAAO,MAAM,mBAIxD;IAED,MAAM,6CAcJ;CAEF"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import constants from '../constants';
|
|
8
|
+
import { ComponentStore, dom } from '@omegagrid/core';
|
|
9
|
+
import { LitElement, html, css } from 'lit';
|
|
10
|
+
import { customElement, property, query } from 'lit/decorators.js';
|
|
11
|
+
import { createRef, ref } from 'lit/directives/ref.js';
|
|
12
|
+
const itemStyle = css `
|
|
13
|
+
.item {
|
|
14
|
+
vertical-align: middle;
|
|
15
|
+
text-align: center;
|
|
16
|
+
border-bottom: 1px solid var(--og-border-color);
|
|
17
|
+
color: var(--og-text-color);
|
|
18
|
+
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.item, .item.selected {
|
|
22
|
+
background-color: var(--og-background-color) !important;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.item.selected og-bucket-button, .item:hover og-bucket-button {
|
|
26
|
+
color: var(--og-text-color-3);
|
|
27
|
+
}
|
|
28
|
+
`;
|
|
29
|
+
let Sidemenu = class Sidemenu extends LitElement {
|
|
30
|
+
get tooltip() { return this.tooltipRef?.value; }
|
|
31
|
+
get count() { return this.settings?.items?.length ?? 0; }
|
|
32
|
+
selectItem(id) {
|
|
33
|
+
const index = this.settings?.items.findIndex(item => item.id === id);
|
|
34
|
+
if (index >= 0) {
|
|
35
|
+
this.list.select(index);
|
|
36
|
+
this.updateActiveIndex();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
constructor() {
|
|
40
|
+
super();
|
|
41
|
+
this.tooltipRef = createRef();
|
|
42
|
+
this.items = new ComponentStore((index) => {
|
|
43
|
+
const item = this.settings?.items[index];
|
|
44
|
+
const b = dom.createElement('og-bucket-button', {
|
|
45
|
+
active: this.settings?.activeIndex === index,
|
|
46
|
+
text: item.text,
|
|
47
|
+
icon: item.icon,
|
|
48
|
+
statusIcon: ['fas', item.statusIcon]
|
|
49
|
+
});
|
|
50
|
+
return b;
|
|
51
|
+
});
|
|
52
|
+
this._onMouseMove = (_e, elm) => {
|
|
53
|
+
const tooltip = this.settings.items[elm.index].tooltip;
|
|
54
|
+
if (tooltip) {
|
|
55
|
+
this.tooltip.querySelector('[slot="body"]').innerText = tooltip;
|
|
56
|
+
this.tooltip.attachTo(elm, 'right');
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
this.tooltip.deatach();
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
this._itemRenderer = async (div, index) => {
|
|
63
|
+
const item = await this.items.get(index);
|
|
64
|
+
dom.empty(div);
|
|
65
|
+
div.appendChild(item);
|
|
66
|
+
};
|
|
67
|
+
this.render = () => html `
|
|
68
|
+
<og-list
|
|
69
|
+
.size="${this.count}"
|
|
70
|
+
?nativeHeight="${true}"
|
|
71
|
+
.customStyle="${itemStyle}"
|
|
72
|
+
sliderSize="6"
|
|
73
|
+
itemHeight="${constants.SIDEMENU_WIDTH}"
|
|
74
|
+
.itemRenderer="${this._itemRenderer}"
|
|
75
|
+
@select="${() => this.updateActiveIndex()}">
|
|
76
|
+
</og-list>
|
|
77
|
+
|
|
78
|
+
<og-tooltip ${ref(this.tooltipRef)} style="max-width: 300px; display: none">
|
|
79
|
+
<div style="padding: 5px" slot="body"></div>
|
|
80
|
+
</og-tooltip>
|
|
81
|
+
`;
|
|
82
|
+
dom.debounceOn(this, 'mousemove', '.item', this._onMouseMove, { wait: 10, noMatchCallback: () => {
|
|
83
|
+
this.tooltip.deatach();
|
|
84
|
+
} });
|
|
85
|
+
dom.on(this, 'mouseout', '.item', () => this.requestHide());
|
|
86
|
+
dom.on(this, 'mouseleave', '.item', () => this.requestHide());
|
|
87
|
+
}
|
|
88
|
+
requestHide() {
|
|
89
|
+
if (this._hideTimer == null) {
|
|
90
|
+
this._hideTimer = window.setTimeout(() => {
|
|
91
|
+
this.tooltip.deatach();
|
|
92
|
+
this._hideTimer = null;
|
|
93
|
+
}, 100);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async updated() {
|
|
97
|
+
if (this.settings?.activeIndex >= 0) {
|
|
98
|
+
this.list.select(this.settings?.activeIndex);
|
|
99
|
+
this.updateActiveIndex();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
updateActiveIndex() {
|
|
103
|
+
this.settings.activeIndex = this.list.selectedIndex;
|
|
104
|
+
this.items.forEach((item, index) => {
|
|
105
|
+
item.active = index === this.settings.activeIndex;
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
firstUpdated() {
|
|
109
|
+
document.body.appendChild(this.tooltip);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
Sidemenu.styles = css `
|
|
113
|
+
:host {
|
|
114
|
+
display: block;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
* {
|
|
118
|
+
box-sizing: border-box;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
og-list {
|
|
122
|
+
height: 100%;
|
|
123
|
+
}
|
|
124
|
+
`;
|
|
125
|
+
__decorate([
|
|
126
|
+
property({ type: Object })
|
|
127
|
+
], Sidemenu.prototype, "settings", void 0);
|
|
128
|
+
__decorate([
|
|
129
|
+
query('og-list')
|
|
130
|
+
], Sidemenu.prototype, "list", void 0);
|
|
131
|
+
Sidemenu = __decorate([
|
|
132
|
+
customElement('og-bucket-sidemenu')
|
|
133
|
+
], Sidemenu);
|
|
134
|
+
export { Sidemenu };
|
|
135
|
+
//# sourceMappingURL=sidemenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidemenu.js","sourceRoot":"","sources":["../../src/ui/sidemenu.ts"],"names":[],"mappings":"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","sourcesContent":["import constants from '../constants';\nimport { ComponentStore, dom, List, ListItemElement, Tooltip } from '@omegagrid/core';\nimport { LitElement, html, css } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { SidemenuSettings } from '../types';\nimport { BucketButton } from './bucketButton';\n\nconst itemStyle = css`\n\t.item {\n\t\tvertical-align: middle;\n\t\ttext-align: center;\n\t\tborder-bottom: 1px solid var(--og-border-color);\n\t\tcolor: var(--og-text-color);\n\t\t\n\t}\n\n\t.item, .item.selected {\n\t\tbackground-color: var(--og-background-color) !important;\n\t}\n\n\t.item.selected og-bucket-button, .item:hover og-bucket-button {\n\t\tcolor: var(--og-text-color-3);\n\t}\n`;\n\n@customElement('og-bucket-sidemenu')\nexport class Sidemenu extends LitElement {\n\n\t@property({type: Object})\n\tsettings: SidemenuSettings;\n\n\t@query('og-list')\n\tlist: List;\n\n\tstatic styles = css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t* {\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\tog-list {\n\t\t\theight: 100%;\n\t\t}\n\t`;\n\n\tprivate tooltipRef = createRef<Tooltip>();\n\tget tooltip() { return this.tooltipRef?.value; }\n\n\tget count() { return this.settings?.items?.length ?? 0 }\n\n\tprivate _hideTimer: number;\n\tprivate items = new ComponentStore<BucketButton>((index: number) => {\n\t\tconst item = this.settings?.items[index];\n\t\tconst b = dom.createElement<BucketButton>('og-bucket-button', {\n\t\t\tactive: this.settings?.activeIndex === index,\n\t\t\ttext: item.text,\n\t\t\ticon: item.icon,\n\t\t\tstatusIcon: ['fas', item.statusIcon]\n\t\t});\n\t\treturn b\n\t});\n\n\tselectItem(id: string) {\n\t\tconst index = this.settings?.items.findIndex(item => item.id === id);\n\t\tif (index >= 0) {\n\t\t\tthis.list.select(index);\n\t\t\tthis.updateActiveIndex();\n\t\t}\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\t\tdom.debounceOn(this, 'mousemove', '.item', this._onMouseMove, {wait: 10, noMatchCallback: () => {\n\t\t\tthis.tooltip.deatach();\n\t\t}});\n\n\t\tdom.on(this, 'mouseout', '.item', () => this.requestHide());\n\t\tdom.on(this, 'mouseleave', '.item', () => this.requestHide());\n\t}\n\n\trequestHide() {\n\t\tif (this._hideTimer == null) {\n\t\t\tthis._hideTimer = window.setTimeout(() => {\n\t\t\t\tthis.tooltip.deatach();\n\t\t\t\tthis._hideTimer = null;\n\t\t\t}, 100)\n\t\t}\n\t}\n\t\n\t_onMouseMove = (_e: MouseEvent, elm: ListItemElement) => {\n\t\tconst tooltip = this.settings.items[elm.index].tooltip;\n\t\tif (tooltip) {\n\t\t\t(this.tooltip.querySelector('[slot=\"body\"]') as HTMLDivElement).innerText = tooltip;\n\t\t\tthis.tooltip.attachTo(elm, 'right');\n\t\t} else {\n\t\t\tthis.tooltip.deatach();\n\t\t}\n\t}\n\n\tasync updated() {\n\t\tif (this.settings?.activeIndex >= 0) {\n\t\t\tthis.list.select(this.settings?.activeIndex);\n\t\t\tthis.updateActiveIndex();\n\t\t}\n\t}\n\n\tupdateActiveIndex() {\n\t\tthis.settings.activeIndex = this.list.selectedIndex;\n\t\tthis.items.forEach((item, index) => {\n\t\t\titem.active = index === this.settings.activeIndex;\n\t\t});\n\t}\n\n\tfirstUpdated() {\n\t\tdocument.body.appendChild(this.tooltip);\n\t}\n\n\t_itemRenderer = async (div: HTMLDivElement, index: number) => {\n\t\tconst item = await this.items.get(index);\n\t\tdom.empty(div);\n\t\tdiv.appendChild(item);\n\t}\n\n\trender = () => html`\n\t\t<og-list\n\t\t\t.size=\"${this.count}\"\n\t\t\t?nativeHeight=\"${true}\"\n\t\t\t.customStyle=\"${itemStyle}\"\n\t\t\tsliderSize=\"6\"\n\t\t\titemHeight=\"${constants.SIDEMENU_WIDTH}\"\n\t\t\t.itemRenderer=\"${this._itemRenderer}\"\n\t\t\t@select=\"${() => this.updateActiveIndex()}\">\n\t\t</og-list>\n\n\t\t<og-tooltip ${ref(this.tooltipRef)} style=\"max-width: 300px; display: none\">\n\t\t\t<div style=\"padding: 5px\" slot=\"body\"></div>\n\t\t</og-tooltip>\n\t`;\n\n}"]}
|
package/dist/ui/top.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Bucket } from './bucket';
|
|
2
|
+
import { Layout, OmegaComponent } from '@omegagrid/core';
|
|
3
|
+
export declare class BucketTop extends OmegaComponent implements Layout {
|
|
4
|
+
static styles: import("lit").CSSResult[];
|
|
5
|
+
get bucket(): Bucket;
|
|
6
|
+
items: NodeListOf<HTMLDivElement>;
|
|
7
|
+
leftItem: HTMLDivElement;
|
|
8
|
+
leftItemWidth: number;
|
|
9
|
+
updated(): Promise<void>;
|
|
10
|
+
firstUpdated(): void;
|
|
11
|
+
render: () => import("lit-html").TemplateResult<1>;
|
|
12
|
+
layout(): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=top.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"top.d.ts","sourceRoot":"","sources":["../../src/ui/top.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAO,MAAM,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE9D,qBACa,SAAU,SAAQ,cAAe,YAAW,MAAM;IAE9D,MAAM,CAAC,MAAM,4BAAW;IAExB,IAAI,MAAM,IAAoC,MAAM,CAAE;IAGtD,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IAGlC,QAAQ,EAAE,cAAc,CAAC;IAEzB,aAAa,SAAO;IAEd,OAAO;IAgBb,YAAY;IAIZ,MAAM,6CAOJ;IAEF,MAAM;CAQN"}
|
package/dist/ui/top.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html } from 'lit';
|
|
8
|
+
import { customElement, query, queryAll } from 'lit/decorators.js';
|
|
9
|
+
import style from './top.style';
|
|
10
|
+
import { dom, OmegaComponent } from '@omegagrid/core';
|
|
11
|
+
let BucketTop = class BucketTop extends OmegaComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.leftItemWidth = 250;
|
|
15
|
+
this.render = () => html `
|
|
16
|
+
<div class="item" id="logo" data-component="bucket-logo"></div>
|
|
17
|
+
${this.bucket?.compact ? '' : html `
|
|
18
|
+
<div class="item" id="left" data-component="bucket-topLeft"></div>
|
|
19
|
+
`}
|
|
20
|
+
<div class="item" id="center" data-component="bucket-topCenter"></div>
|
|
21
|
+
<div class="item" id="right" data-component="bucket-topRight"></div>
|
|
22
|
+
`;
|
|
23
|
+
}
|
|
24
|
+
get bucket() { return this.parentComponent; }
|
|
25
|
+
async updated() {
|
|
26
|
+
if (!this.bucket)
|
|
27
|
+
return;
|
|
28
|
+
let visible = false;
|
|
29
|
+
for (const item of this.items) {
|
|
30
|
+
const component = await this.bucket.components.get(item.dataset.component);
|
|
31
|
+
dom.empty(item);
|
|
32
|
+
if (component) {
|
|
33
|
+
item.appendChild(component);
|
|
34
|
+
visible = true;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (!visible)
|
|
38
|
+
dom.hideElement(this);
|
|
39
|
+
}
|
|
40
|
+
firstUpdated() {
|
|
41
|
+
this.layout();
|
|
42
|
+
}
|
|
43
|
+
layout() {
|
|
44
|
+
if (this.bucket?.compact)
|
|
45
|
+
return;
|
|
46
|
+
if (!this.bucket?.container?.containers[0])
|
|
47
|
+
return;
|
|
48
|
+
if (!this.bucket.container.items[0].collapsed && this.leftItem) {
|
|
49
|
+
dom.setMinSize(this.leftItem, { w: this.bucket.container.containers[0].offsetWidth });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
BucketTop.styles = [style];
|
|
54
|
+
__decorate([
|
|
55
|
+
queryAll('.item')
|
|
56
|
+
], BucketTop.prototype, "items", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
query('#left')
|
|
59
|
+
], BucketTop.prototype, "leftItem", void 0);
|
|
60
|
+
BucketTop = __decorate([
|
|
61
|
+
customElement('og-bucket-top')
|
|
62
|
+
], BucketTop);
|
|
63
|
+
export { BucketTop };
|
|
64
|
+
//# sourceMappingURL=top.js.map
|