@melodicdev/components 1.0.4 → 1.0.6
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/assets/melodic-components.js +57 -26
- package/assets/melodic-components.js.map +1 -1
- package/assets/melodic-components.min.js +808 -780
- package/lib/components/forms/input/input.component.d.ts +1 -1
- package/lib/components/forms/input/input.component.d.ts.map +1 -1
- package/lib/components/forms/input/input.component.js +3 -3
- package/lib/components/forms/input/input.template.js +1 -1
- package/lib/components/forms/textarea/textarea.component.d.ts +1 -1
- package/lib/components/forms/textarea/textarea.component.d.ts.map +1 -1
- package/lib/components/forms/textarea/textarea.component.js +3 -3
- package/lib/components/forms/textarea/textarea.template.js +1 -1
- package/lib/components/navigation/sidebar/sidebar.component.d.ts +2 -2
- package/lib/components/navigation/sidebar/sidebar.component.d.ts.map +1 -1
- package/lib/components/navigation/sidebar/sidebar.component.js +7 -7
- package/lib/components/navigation/sidebar/sidebar.template.js +2 -2
- package/lib/components/overlays/dialog/dialog.service.d.ts +2 -1
- package/lib/components/overlays/dialog/dialog.service.d.ts.map +1 -1
- package/lib/components/sections/app-shell/app-shell.component.d.ts +4 -3
- package/lib/components/sections/app-shell/app-shell.component.d.ts.map +1 -1
- package/lib/components/sections/app-shell/app-shell.component.js +9 -12
- package/lib/components/sections/app-shell/app-shell.template.js +2 -2
- package/package.json +3 -1
|
@@ -45,7 +45,7 @@ export declare class InputComponent implements IElementRef, OnInit {
|
|
|
45
45
|
/** Autocomplete attribute */
|
|
46
46
|
autocomplete: string;
|
|
47
47
|
/** Internal focus state */
|
|
48
|
-
|
|
48
|
+
focused: boolean;
|
|
49
49
|
onInit(): void;
|
|
50
50
|
handleInput: (event: Event) => void;
|
|
51
51
|
handleChange: (event: Event) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/input/input.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAMa,cAAe,YAAW,WAAW,EAAE,MAAM;IACzD,UAAU,EAAG,WAAW,CAAC;IAEzB,iBAAiB;IACjB,IAAI,EAAE,SAAS,CAAU;IAEzB,oBAAoB;IACpB,KAAK,SAAM;IAEX,uBAAuB;IACvB,WAAW,SAAM;IAEjB,iBAAiB;IACjB,KAAK,SAAM;IAEX,kCAAkC;IAClC,IAAI,SAAM;IAEV,iDAAiD;IACjD,KAAK,SAAM;IAEX,iBAAiB;IACjB,IAAI,EAAE,IAAI,CAAQ;IAElB,wBAAwB;IACxB,QAAQ,UAAS;IAEjB,0BAA0B;IAC1B,QAAQ,UAAS;IAEjB,uBAAuB;IACvB,QAAQ,UAAS;IAEjB,6BAA6B;IAC7B,YAAY,SAAS;IAErB,2BAA2B;IAC3B,
|
|
1
|
+
{"version":3,"file":"input.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/input/input.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAMa,cAAe,YAAW,WAAW,EAAE,MAAM;IACzD,UAAU,EAAG,WAAW,CAAC;IAEzB,iBAAiB;IACjB,IAAI,EAAE,SAAS,CAAU;IAEzB,oBAAoB;IACpB,KAAK,SAAM;IAEX,uBAAuB;IACvB,WAAW,SAAM;IAEjB,iBAAiB;IACjB,KAAK,SAAM;IAEX,kCAAkC;IAClC,IAAI,SAAM;IAEV,iDAAiD;IACjD,KAAK,SAAM;IAEX,iBAAiB;IACjB,IAAI,EAAE,IAAI,CAAQ;IAElB,wBAAwB;IACxB,QAAQ,UAAS;IAEjB,0BAA0B;IAC1B,QAAQ,UAAS;IAEjB,uBAAuB;IACvB,QAAQ,UAAS;IAEjB,6BAA6B;IAC7B,YAAY,SAAS;IAErB,2BAA2B;IAC3B,OAAO,UAAS;IAEhB,MAAM,IAAI,IAAI;IAOd,WAAW,GAAI,OAAO,KAAK,KAAG,IAAI,CAWhC;IAEF,YAAY,GAAI,OAAO,KAAK,KAAG,IAAI,CAWjC;IAEF,WAAW,QAAO,IAAI,CAQpB;IAEF,UAAU,QAAO,IAAI,CAQnB;CACF"}
|
|
@@ -51,7 +51,7 @@ let InputComponent = class InputComponent {
|
|
|
51
51
|
/** Autocomplete attribute */
|
|
52
52
|
this.autocomplete = 'off';
|
|
53
53
|
/** Internal focus state */
|
|
54
|
-
this.
|
|
54
|
+
this.focused = false;
|
|
55
55
|
this.handleInput = (event) => {
|
|
56
56
|
const target = event.target;
|
|
57
57
|
this.value = target.value;
|
|
@@ -71,14 +71,14 @@ let InputComponent = class InputComponent {
|
|
|
71
71
|
}));
|
|
72
72
|
};
|
|
73
73
|
this.handleFocus = () => {
|
|
74
|
-
this.
|
|
74
|
+
this.focused = true;
|
|
75
75
|
this.elementRef.dispatchEvent(new CustomEvent('ml:focus', {
|
|
76
76
|
bubbles: true,
|
|
77
77
|
composed: true
|
|
78
78
|
}));
|
|
79
79
|
};
|
|
80
80
|
this.handleBlur = () => {
|
|
81
|
-
this.
|
|
81
|
+
this.focused = false;
|
|
82
82
|
this.elementRef.dispatchEvent(new CustomEvent('ml:blur', {
|
|
83
83
|
bubbles: true,
|
|
84
84
|
composed: true
|
|
@@ -42,7 +42,7 @@ export declare class TextareaComponent implements IElementRef, OnInit {
|
|
|
42
42
|
/** Allow vertical resize */
|
|
43
43
|
resize: boolean;
|
|
44
44
|
/** Internal focus state */
|
|
45
|
-
|
|
45
|
+
focused: boolean;
|
|
46
46
|
onInit(): void;
|
|
47
47
|
handleInput: (event: Event) => void;
|
|
48
48
|
handleChange: (event: Event) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/textarea/textarea.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAIpD;;;;;;;;;;;;;;GAcG;AACH,qBAMa,iBAAkB,YAAW,WAAW,EAAE,MAAM;IAC5D,UAAU,EAAG,WAAW,CAAC;IAEzB,oBAAoB;IACpB,KAAK,SAAM;IAEX,uBAAuB;IACvB,WAAW,SAAM;IAEjB,iBAAiB;IACjB,KAAK,SAAM;IAEX,qCAAqC;IACrC,IAAI,SAAM;IAEV,iDAAiD;IACjD,KAAK,SAAM;IAEX,iBAAiB;IACjB,IAAI,EAAE,IAAI,CAAQ;IAElB,mCAAmC;IACnC,IAAI,SAAK;IAET,+BAA+B;IAC/B,SAAS,SAAK;IAEd,2BAA2B;IAC3B,QAAQ,UAAS;IAEjB,6BAA6B;IAC7B,QAAQ,UAAS;IAEjB,uBAAuB;IACvB,QAAQ,UAAS;IAEjB,4BAA4B;IAC5B,MAAM,UAAS;IAEf,2BAA2B;IAC3B,
|
|
1
|
+
{"version":3,"file":"textarea.component.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/textarea/textarea.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAIpD;;;;;;;;;;;;;;GAcG;AACH,qBAMa,iBAAkB,YAAW,WAAW,EAAE,MAAM;IAC5D,UAAU,EAAG,WAAW,CAAC;IAEzB,oBAAoB;IACpB,KAAK,SAAM;IAEX,uBAAuB;IACvB,WAAW,SAAM;IAEjB,iBAAiB;IACjB,KAAK,SAAM;IAEX,qCAAqC;IACrC,IAAI,SAAM;IAEV,iDAAiD;IACjD,KAAK,SAAM;IAEX,iBAAiB;IACjB,IAAI,EAAE,IAAI,CAAQ;IAElB,mCAAmC;IACnC,IAAI,SAAK;IAET,+BAA+B;IAC/B,SAAS,SAAK;IAEd,2BAA2B;IAC3B,QAAQ,UAAS;IAEjB,6BAA6B;IAC7B,QAAQ,UAAS;IAEjB,uBAAuB;IACvB,QAAQ,UAAS;IAEjB,4BAA4B;IAC5B,MAAM,UAAS;IAEf,2BAA2B;IAC3B,OAAO,UAAS;IAEhB,MAAM,IAAI,IAAI;IAMd,WAAW,GAAI,OAAO,KAAK,KAAG,IAAI,CAWhC;IAEF,YAAY,GAAI,OAAO,KAAK,KAAG,IAAI,CAWjC;IAEF,WAAW,QAAO,IAAI,CAQpB;IAEF,UAAU,QAAO,IAAI,CAQnB;CACF"}
|
|
@@ -49,7 +49,7 @@ let TextareaComponent = class TextareaComponent {
|
|
|
49
49
|
/** Allow vertical resize */
|
|
50
50
|
this.resize = false;
|
|
51
51
|
/** Internal focus state */
|
|
52
|
-
this.
|
|
52
|
+
this.focused = false;
|
|
53
53
|
this.handleInput = (event) => {
|
|
54
54
|
const target = event.target;
|
|
55
55
|
this.value = target.value;
|
|
@@ -69,14 +69,14 @@ let TextareaComponent = class TextareaComponent {
|
|
|
69
69
|
}));
|
|
70
70
|
};
|
|
71
71
|
this.handleFocus = () => {
|
|
72
|
-
this.
|
|
72
|
+
this.focused = true;
|
|
73
73
|
this.elementRef.dispatchEvent(new CustomEvent('ml:focus', {
|
|
74
74
|
bubbles: true,
|
|
75
75
|
composed: true
|
|
76
76
|
}));
|
|
77
77
|
};
|
|
78
78
|
this.handleBlur = () => {
|
|
79
|
-
this.
|
|
79
|
+
this.focused = false;
|
|
80
80
|
this.elementRef.dispatchEvent(new CustomEvent('ml:blur', {
|
|
81
81
|
bubbles: true,
|
|
82
82
|
composed: true
|
|
@@ -8,7 +8,7 @@ export function textareaTemplate(c) {
|
|
|
8
8
|
'ml-textarea--disabled': c.disabled,
|
|
9
9
|
'ml-textarea--readonly': c.readonly,
|
|
10
10
|
'ml-textarea--error': !!c.error,
|
|
11
|
-
'ml-textarea--focused': c.
|
|
11
|
+
'ml-textarea--focused': c.focused,
|
|
12
12
|
'ml-textarea--resize': c.resize
|
|
13
13
|
})}
|
|
14
14
|
>
|
|
@@ -62,11 +62,11 @@ export declare class SidebarComponent implements IElementRef, OnCreate, OnDestro
|
|
|
62
62
|
/** Handle config item click */
|
|
63
63
|
handleConfigItemClick: (value: string, href?: string) => void;
|
|
64
64
|
/** Handle config submenu toggle */
|
|
65
|
-
handleConfigToggle: (item: SidebarNavItem
|
|
65
|
+
handleConfigToggle: (item: SidebarNavItem) => void;
|
|
66
66
|
/** Keyboard navigation */
|
|
67
67
|
handleKeyDown: (event: KeyboardEvent) => void;
|
|
68
68
|
/** Track expanded config items */
|
|
69
|
-
|
|
69
|
+
expandedItems: Set<string>;
|
|
70
70
|
/** Activate an item */
|
|
71
71
|
private activateItem;
|
|
72
72
|
/** Handle item click from slotted children */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.component.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/sidebar/sidebar.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAI1F;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAMa,gBAAiB,YAAW,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;IAClF,UAAU,EAAG,WAAW,CAAC;IAEzB,qBAAqB;IACrB,OAAO,EAAE,cAAc,CAAa;IAEpC,kCAAkC;IAClC,MAAM,SAAM;IAEZ,yDAAyD;IACzD,SAAS,UAAS;IAElB,yDAAyD;IACzD,UAAU,EAAE,eAAe,EAAE,CAAM;IAEnC,+BAA+B;IAC/B,gBAAgB,EAAE,cAAc,EAAE,CAAM;IAExC,yCAAyC;IACzC,aAAa,EAAE,WAAW,EAAE,CAAM;IAElC,+BAA+B;IAC/B,OAAO,CAAC,WAAW,CAA8C;IAEjE,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAElE,uCAAuC;IACvC,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,wCAAwC;IACxC,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,qCAAqC;IACrC,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,QAAQ,IAAI,IAAI;IAgBhB,QAAQ,IAAI,IAAI;IAIhB,SAAS,IAAI,IAAI;IAUjB,kCAAkC;IAClC,uBAAuB,GAAI,OAAO,KAAK,KAAG,IAAI,CAI5C;IAEF,+BAA+B;IAC/B,qBAAqB,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,IAAI,CAE1D;IAEF,mCAAmC;IACnC,kBAAkB,GAAI,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"sidebar.component.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/sidebar/sidebar.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAI1F;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAMa,gBAAiB,YAAW,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;IAClF,UAAU,EAAG,WAAW,CAAC;IAEzB,qBAAqB;IACrB,OAAO,EAAE,cAAc,CAAa;IAEpC,kCAAkC;IAClC,MAAM,SAAM;IAEZ,yDAAyD;IACzD,SAAS,UAAS;IAElB,yDAAyD;IACzD,UAAU,EAAE,eAAe,EAAE,CAAM;IAEnC,+BAA+B;IAC/B,gBAAgB,EAAE,cAAc,EAAE,CAAM;IAExC,yCAAyC;IACzC,aAAa,EAAE,WAAW,EAAE,CAAM;IAElC,+BAA+B;IAC/B,OAAO,CAAC,WAAW,CAA8C;IAEjE,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAElE,uCAAuC;IACvC,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,wCAAwC;IACxC,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,qCAAqC;IACrC,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,QAAQ,IAAI,IAAI;IAgBhB,QAAQ,IAAI,IAAI;IAIhB,SAAS,IAAI,IAAI;IAUjB,kCAAkC;IAClC,uBAAuB,GAAI,OAAO,KAAK,KAAG,IAAI,CAI5C;IAEF,+BAA+B;IAC/B,qBAAqB,GAAI,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,IAAI,CAE1D;IAEF,mCAAmC;IACnC,kBAAkB,GAAI,MAAM,cAAc,KAAG,IAAI,CAQ/C;IAEF,0BAA0B;IAC1B,aAAa,GAAI,OAAO,aAAa,KAAG,IAAI,CAmC1C;IAEF,kCAAkC;IAClC,aAAa,cAAqB;IAElC,uBAAuB;IACvB,OAAO,CAAC,YAAY;IAqBpB,8CAA8C;IAC9C,OAAO,CAAC,WAAW;IAKnB,0CAA0C;IAC1C,OAAO,CAAC,YAAY;IASpB,0CAA0C;IAC1C,OAAO,CAAC,YAAY;IASpB,2DAA2D;IAC3D,OAAO,CAAC,gBAAgB;CAexB"}
|
|
@@ -66,15 +66,15 @@ let SidebarComponent = class SidebarComponent {
|
|
|
66
66
|
this.activateItem(value, href);
|
|
67
67
|
};
|
|
68
68
|
/** Handle config submenu toggle */
|
|
69
|
-
this.handleConfigToggle = (item
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
this.handleConfigToggle = (item) => {
|
|
70
|
+
const next = new Set(this.expandedItems);
|
|
71
|
+
if (next.has(item.value)) {
|
|
72
|
+
next.delete(item.value);
|
|
72
73
|
}
|
|
73
74
|
else {
|
|
74
|
-
|
|
75
|
+
next.add(item.value);
|
|
75
76
|
}
|
|
76
|
-
|
|
77
|
-
this.elementRef.dispatchEvent(new Event('ml:internal-update'));
|
|
77
|
+
this.expandedItems = next;
|
|
78
78
|
};
|
|
79
79
|
/** Keyboard navigation */
|
|
80
80
|
this.handleKeyDown = (event) => {
|
|
@@ -109,7 +109,7 @@ let SidebarComponent = class SidebarComponent {
|
|
|
109
109
|
}
|
|
110
110
|
};
|
|
111
111
|
/** Track expanded config items */
|
|
112
|
-
this.
|
|
112
|
+
this.expandedItems = new Set();
|
|
113
113
|
}
|
|
114
114
|
/** Check if search slot has content */
|
|
115
115
|
get hasSearch() {
|
|
@@ -73,7 +73,7 @@ function renderNavGroup(c, group) {
|
|
|
73
73
|
function renderNavItem(c, item, level) {
|
|
74
74
|
const isActive = c.active === item.value;
|
|
75
75
|
const hasChildren = !!item.children && item.children.length > 0;
|
|
76
|
-
const isExpanded = c.
|
|
76
|
+
const isExpanded = c.expandedItems.has(item.value);
|
|
77
77
|
const isCollapsed = c.collapsed;
|
|
78
78
|
const linkClasses = classMap({
|
|
79
79
|
'ml-sidebar__item-link': true,
|
|
@@ -88,7 +88,7 @@ function renderNavItem(c, item, level) {
|
|
|
88
88
|
return;
|
|
89
89
|
if (hasChildren) {
|
|
90
90
|
event.preventDefault();
|
|
91
|
-
c.handleConfigToggle(item
|
|
91
|
+
c.handleConfigToggle(item);
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
94
|
c.handleConfigItemClick(item.value, item.href);
|
|
@@ -6,7 +6,8 @@ export declare class DialogService {
|
|
|
6
6
|
private readonly _dialogs;
|
|
7
7
|
addDialog(dialogID: UniqueID, dialogEl: HTMLDialogElement): DialogRef;
|
|
8
8
|
removeDialog(dialogID: UniqueID): void;
|
|
9
|
-
open<TResult = unknown, TData = unknown>(
|
|
9
|
+
open<TResult = unknown, TData = unknown>(dialogComponent: DialogComponentLoader, config?: IDialogConfig<TData>): DialogRef<TResult, TData>;
|
|
10
|
+
open<TResult = unknown, TData = unknown>(dialogID: UniqueID): DialogRef<TResult, TData>;
|
|
10
11
|
close<T = unknown>(dialogID: UniqueID, result?: T): void;
|
|
11
12
|
private cleanUpDialog;
|
|
12
13
|
private mountDialog;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.service.d.ts","sourceRoot":"","sources":["../../../../src/components/overlays/dialog/dialog.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGlE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAW/D,qBACa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IAEjE,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,GAAG,SAAS;IAerE,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAItC,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dialog.service.d.ts","sourceRoot":"","sources":["../../../../src/components/overlays/dialog/dialog.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGlE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAW/D,qBACa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IAEjE,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,GAAG,SAAS;IAerE,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAItC,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;IAC1I,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;IA2BvF,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI;IAOxD,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,aAAa;CAGrB"}
|
|
@@ -26,12 +26,13 @@ export declare class AppShellComponent implements IElementRef, OnCreate, OnDestr
|
|
|
26
26
|
'sidebar-collapsed': boolean;
|
|
27
27
|
/** Whether the header is fixed/sticky */
|
|
28
28
|
'header-fixed': boolean;
|
|
29
|
-
/**
|
|
30
|
-
|
|
29
|
+
/** Whether the viewport is mobile-sized (<768px) */
|
|
30
|
+
mobile: boolean;
|
|
31
|
+
/** Whether the mobile sidebar drawer is open */
|
|
32
|
+
mobileOpen: boolean;
|
|
31
33
|
/** Media query for responsive behavior */
|
|
32
34
|
private _mediaQuery;
|
|
33
35
|
private readonly _handleMediaChange;
|
|
34
|
-
get isMobile(): boolean;
|
|
35
36
|
onCreate(): void;
|
|
36
37
|
onDestroy(): void;
|
|
37
38
|
/** Toggle mobile sidebar drawer */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-shell.component.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/app-shell/app-shell.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIzE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/C;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAMa,iBAAkB,YAAW,WAAW,EAAE,QAAQ,EAAE,SAAS;IACzE,UAAU,EAAG,WAAW,CAAC;IAEzB,iDAAiD;IACjD,kBAAkB,EAAE,eAAe,CAAU;IAE7C,uCAAuC;IACvC,mBAAmB,UAAS;IAE5B,yCAAyC;IACzC,cAAc,UAAS;IAEvB,gDAAgD;IAChD,
|
|
1
|
+
{"version":3,"file":"app-shell.component.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/app-shell/app-shell.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIzE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/C;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAMa,iBAAkB,YAAW,WAAW,EAAE,QAAQ,EAAE,SAAS;IACzE,UAAU,EAAG,WAAW,CAAC;IAEzB,iDAAiD;IACjD,kBAAkB,EAAE,eAAe,CAAU;IAE7C,uCAAuC;IACvC,mBAAmB,UAAS;IAE5B,yCAAyC;IACzC,cAAc,UAAS;IAEvB,oDAAoD;IACpD,MAAM,UAAS;IAEf,gDAAgD;IAChD,UAAU,UAAS;IAEnB,0CAA0C;IAC1C,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiC;IAEpE,QAAQ,IAAI,IAAI;IAMhB,SAAS,IAAI,IAAI;IAIjB,mCAAmC;IACnC,mBAAmB,QAAO,IAAI,CAE5B;IAEF,2BAA2B;IAC3B,kBAAkB,QAAO,IAAI,CAE3B;IAEF,OAAO,CAAC,aAAa;CAOrB"}
|
|
@@ -33,38 +33,35 @@ let AppShellComponent = class AppShellComponent {
|
|
|
33
33
|
this['sidebar-collapsed'] = false;
|
|
34
34
|
/** Whether the header is fixed/sticky */
|
|
35
35
|
this['header-fixed'] = false;
|
|
36
|
-
/**
|
|
37
|
-
this.
|
|
36
|
+
/** Whether the viewport is mobile-sized (<768px) */
|
|
37
|
+
this.mobile = false;
|
|
38
|
+
/** Whether the mobile sidebar drawer is open */
|
|
39
|
+
this.mobileOpen = false;
|
|
38
40
|
/** Media query for responsive behavior */
|
|
39
41
|
this._mediaQuery = null;
|
|
40
42
|
this._handleMediaChange = this.onMediaChange.bind(this);
|
|
41
43
|
/** Toggle mobile sidebar drawer */
|
|
42
44
|
this.toggleMobileSidebar = () => {
|
|
43
|
-
this.
|
|
45
|
+
this.mobileOpen = !this.mobileOpen;
|
|
44
46
|
};
|
|
45
47
|
/** Close mobile sidebar */
|
|
46
48
|
this.closeMobileSidebar = () => {
|
|
47
|
-
this.
|
|
49
|
+
this.mobileOpen = false;
|
|
48
50
|
};
|
|
49
51
|
}
|
|
50
|
-
get isMobile() {
|
|
51
|
-
return this._mediaQuery?.matches === false;
|
|
52
|
-
}
|
|
53
52
|
onCreate() {
|
|
54
53
|
this._mediaQuery = window.matchMedia('(min-width: 768px)');
|
|
55
54
|
this._mediaQuery.addEventListener('change', this._handleMediaChange);
|
|
56
|
-
|
|
57
|
-
if (!this.isMobile) {
|
|
58
|
-
this._mobileOpen = false;
|
|
59
|
-
}
|
|
55
|
+
this.mobile = !this._mediaQuery.matches;
|
|
60
56
|
}
|
|
61
57
|
onDestroy() {
|
|
62
58
|
this._mediaQuery?.removeEventListener('change', this._handleMediaChange);
|
|
63
59
|
}
|
|
64
60
|
onMediaChange(event) {
|
|
61
|
+
this.mobile = !event.matches;
|
|
65
62
|
if (event.matches) {
|
|
66
63
|
// Switched to desktop: close mobile drawer
|
|
67
|
-
this.
|
|
64
|
+
this.mobileOpen = false;
|
|
68
65
|
}
|
|
69
66
|
}
|
|
70
67
|
};
|
|
@@ -3,8 +3,8 @@ export function appShellTemplate(c) {
|
|
|
3
3
|
const sidebarRight = c['sidebar-position'] === 'right';
|
|
4
4
|
const collapsed = c['sidebar-collapsed'];
|
|
5
5
|
const headerFixed = c['header-fixed'];
|
|
6
|
-
const mobileOpen = c.
|
|
7
|
-
const isMobile = c.
|
|
6
|
+
const mobileOpen = c.mobileOpen;
|
|
7
|
+
const isMobile = c.mobile;
|
|
8
8
|
return html `
|
|
9
9
|
<div
|
|
10
10
|
class=${classMap({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@melodicdev/components",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "Themeable UI component library built on the Melodic Framework",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Melodic Development",
|
|
@@ -242,6 +242,8 @@
|
|
|
242
242
|
"build": "tsc -p tsconfig.build.json && node scripts/generate-css.mjs && vite build --config vite.config.bundle.ts --mode development && vite build --config vite.config.bundle.ts --mode production",
|
|
243
243
|
"build:watch": "tsc -p tsconfig.build.json --watch",
|
|
244
244
|
"prepublishOnly": "npm run build",
|
|
245
|
+
"test": "vitest run",
|
|
246
|
+
"test:watch": "vitest",
|
|
245
247
|
"docs": "vite --config vite.config.docs.ts",
|
|
246
248
|
"docs:build": "vite build --config vite.config.docs.ts"
|
|
247
249
|
},
|