@melodicdev/components 1.0.3 → 1.0.5
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/README.md +4 -4
- package/assets/melodic-components.js +27 -25
- package/assets/melodic-components.js.map +1 -1
- package/assets/melodic-components.min.js +22 -22
- package/lib/components/data-display/data-grid/data-grid.styles.d.ts.map +1 -1
- package/lib/components/data-display/data-grid/data-grid.styles.js +2 -0
- 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/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
|
@@ -4571,7 +4571,7 @@ function oa(e) {
|
|
|
4571
4571
|
"ml-input--disabled": e.disabled,
|
|
4572
4572
|
"ml-input--readonly": e.readonly,
|
|
4573
4573
|
"ml-input--error": !!e.error,
|
|
4574
|
-
"ml-input--focused": e.
|
|
4574
|
+
"ml-input--focused": e.focused
|
|
4575
4575
|
})}
|
|
4576
4576
|
>
|
|
4577
4577
|
${d(!!e.label, () => i`
|
|
@@ -4739,7 +4739,7 @@ const ia = () => y`
|
|
|
4739
4739
|
`;
|
|
4740
4740
|
var it = class {
|
|
4741
4741
|
constructor() {
|
|
4742
|
-
this.type = "text", this.value = "", this.placeholder = "", this.label = "", this.hint = "", this.error = "", this.size = "md", this.disabled = !1, this.readonly = !1, this.required = !1, this.autocomplete = "off", this.
|
|
4742
|
+
this.type = "text", this.value = "", this.placeholder = "", this.label = "", this.hint = "", this.error = "", this.size = "md", this.disabled = !1, this.readonly = !1, this.required = !1, this.autocomplete = "off", this.focused = !1, this.handleInput = (t) => {
|
|
4743
4743
|
this.value = t.target.value, this.elementRef.dispatchEvent(new CustomEvent("ml:input", {
|
|
4744
4744
|
bubbles: !0,
|
|
4745
4745
|
composed: !0,
|
|
@@ -4752,12 +4752,12 @@ var it = class {
|
|
|
4752
4752
|
detail: { value: this.value }
|
|
4753
4753
|
}));
|
|
4754
4754
|
}, this.handleFocus = () => {
|
|
4755
|
-
this.
|
|
4755
|
+
this.focused = !0, this.elementRef.dispatchEvent(new CustomEvent("ml:focus", {
|
|
4756
4756
|
bubbles: !0,
|
|
4757
4757
|
composed: !0
|
|
4758
4758
|
}));
|
|
4759
4759
|
}, this.handleBlur = () => {
|
|
4760
|
-
this.
|
|
4760
|
+
this.focused = !1, this.elementRef.dispatchEvent(new CustomEvent("ml:blur", {
|
|
4761
4761
|
bubbles: !0,
|
|
4762
4762
|
composed: !0
|
|
4763
4763
|
}));
|
|
@@ -4794,7 +4794,7 @@ function sa(e) {
|
|
|
4794
4794
|
"ml-textarea--disabled": e.disabled,
|
|
4795
4795
|
"ml-textarea--readonly": e.readonly,
|
|
4796
4796
|
"ml-textarea--error": !!e.error,
|
|
4797
|
-
"ml-textarea--focused": e.
|
|
4797
|
+
"ml-textarea--focused": e.focused,
|
|
4798
4798
|
"ml-textarea--resize": e.resize
|
|
4799
4799
|
})}
|
|
4800
4800
|
>
|
|
@@ -4947,7 +4947,7 @@ const na = () => y`
|
|
|
4947
4947
|
`;
|
|
4948
4948
|
var st = class {
|
|
4949
4949
|
constructor() {
|
|
4950
|
-
this.value = "", this.placeholder = "", this.label = "", this.hint = "", this.error = "", this.size = "md", this.rows = 3, this.maxLength = 0, this.disabled = !1, this.readonly = !1, this.required = !1, this.resize = !1, this.
|
|
4950
|
+
this.value = "", this.placeholder = "", this.label = "", this.hint = "", this.error = "", this.size = "md", this.rows = 3, this.maxLength = 0, this.disabled = !1, this.readonly = !1, this.required = !1, this.resize = !1, this.focused = !1, this.handleInput = (t) => {
|
|
4951
4951
|
this.value = t.target.value, this.elementRef.dispatchEvent(new CustomEvent("ml:input", {
|
|
4952
4952
|
bubbles: !0,
|
|
4953
4953
|
composed: !0,
|
|
@@ -4960,12 +4960,12 @@ var st = class {
|
|
|
4960
4960
|
detail: { value: this.value }
|
|
4961
4961
|
}));
|
|
4962
4962
|
}, this.handleFocus = () => {
|
|
4963
|
-
this.
|
|
4963
|
+
this.focused = !0, this.elementRef.dispatchEvent(new CustomEvent("ml:focus", {
|
|
4964
4964
|
bubbles: !0,
|
|
4965
4965
|
composed: !0
|
|
4966
4966
|
}));
|
|
4967
4967
|
}, this.handleBlur = () => {
|
|
4968
|
-
this.
|
|
4968
|
+
this.focused = !1, this.elementRef.dispatchEvent(new CustomEvent("ml:blur", {
|
|
4969
4969
|
bubbles: !0,
|
|
4970
4970
|
composed: !0
|
|
4971
4971
|
}));
|
|
@@ -10956,6 +10956,7 @@ const Co = () => y`
|
|
|
10956
10956
|
display: flex;
|
|
10957
10957
|
flex-direction: column;
|
|
10958
10958
|
height: 100%;
|
|
10959
|
+
min-width: 0;
|
|
10959
10960
|
font-family: var(--ml-font-sans);
|
|
10960
10961
|
}
|
|
10961
10962
|
|
|
@@ -11008,6 +11009,7 @@ const Co = () => y`
|
|
|
11008
11009
|
overflow: auto;
|
|
11009
11010
|
position: relative;
|
|
11010
11011
|
min-height: 0;
|
|
11012
|
+
min-width: 0;
|
|
11011
11013
|
}
|
|
11012
11014
|
|
|
11013
11015
|
.ml-data-grid__viewport::-webkit-scrollbar {
|
|
@@ -14215,7 +14217,7 @@ function hi(e, t) {
|
|
|
14215
14217
|
`;
|
|
14216
14218
|
}
|
|
14217
14219
|
function Pe(e, t, r) {
|
|
14218
|
-
const l = e.active === t.value, a = !!t.children && t.children.length > 0, o = e.
|
|
14220
|
+
const l = e.active === t.value, a = !!t.children && t.children.length > 0, o = e.expandedItems.has(t.value), s = e.collapsed, n = v({
|
|
14219
14221
|
"ml-sidebar__item-link": !0,
|
|
14220
14222
|
"ml-sidebar__item-link--active": l,
|
|
14221
14223
|
"ml-sidebar__item-link--disabled": !!t.disabled,
|
|
@@ -14225,7 +14227,7 @@ function Pe(e, t, r) {
|
|
|
14225
14227
|
}), c = (u) => {
|
|
14226
14228
|
if (!t.disabled) {
|
|
14227
14229
|
if (a) {
|
|
14228
|
-
u.preventDefault(), e.handleConfigToggle(t
|
|
14230
|
+
u.preventDefault(), e.handleConfigToggle(t);
|
|
14229
14231
|
return;
|
|
14230
14232
|
}
|
|
14231
14233
|
e.handleConfigItemClick(t.value, t.href);
|
|
@@ -14577,8 +14579,9 @@ var Zt = class {
|
|
|
14577
14579
|
this._slottedItems = t.target.assignedElements({ flatten: !0 }), this.updateItemStates();
|
|
14578
14580
|
}, this.handleConfigItemClick = (t, r) => {
|
|
14579
14581
|
this.activateItem(t, r);
|
|
14580
|
-
}, this.handleConfigToggle = (t
|
|
14581
|
-
r
|
|
14582
|
+
}, this.handleConfigToggle = (t) => {
|
|
14583
|
+
const r = new Set(this.expandedItems);
|
|
14584
|
+
r.has(t.value) ? r.delete(t.value) : r.add(t.value), this.expandedItems = r;
|
|
14582
14585
|
}, this.handleKeyDown = (t) => {
|
|
14583
14586
|
const r = this.elementRef.shadowRoot?.querySelector(".ml-sidebar__main");
|
|
14584
14587
|
if (!r) return;
|
|
@@ -14601,7 +14604,7 @@ var Zt = class {
|
|
|
14601
14604
|
return;
|
|
14602
14605
|
}
|
|
14603
14606
|
o !== a && l[o] && l[o].focus();
|
|
14604
|
-
}, this.
|
|
14607
|
+
}, this.expandedItems = /* @__PURE__ */ new Set();
|
|
14605
14608
|
}
|
|
14606
14609
|
/** Check if search slot has content */
|
|
14607
14610
|
get hasSearch() {
|
|
@@ -17744,7 +17747,7 @@ hr = g([_({
|
|
|
17744
17747
|
]
|
|
17745
17748
|
})], hr);
|
|
17746
17749
|
function Zi(e) {
|
|
17747
|
-
const t = e["sidebar-position"] === "right", r = e["sidebar-collapsed"], l = e["header-fixed"], a = e.
|
|
17750
|
+
const t = e["sidebar-position"] === "right", r = e["sidebar-collapsed"], l = e["header-fixed"], a = e.mobileOpen, o = e.mobile;
|
|
17748
17751
|
return i`
|
|
17749
17752
|
<div
|
|
17750
17753
|
class=${v({
|
|
@@ -17988,23 +17991,20 @@ const es = () => y`
|
|
|
17988
17991
|
`;
|
|
17989
17992
|
var pr = class {
|
|
17990
17993
|
constructor() {
|
|
17991
|
-
this["sidebar-position"] = "left", this["sidebar-collapsed"] = !1, this["header-fixed"] = !1, this.
|
|
17992
|
-
this.
|
|
17994
|
+
this["sidebar-position"] = "left", this["sidebar-collapsed"] = !1, this["header-fixed"] = !1, this.mobile = !1, this.mobileOpen = !1, this._mediaQuery = null, this._handleMediaChange = this.onMediaChange.bind(this), this.toggleMobileSidebar = () => {
|
|
17995
|
+
this.mobileOpen = !this.mobileOpen;
|
|
17993
17996
|
}, this.closeMobileSidebar = () => {
|
|
17994
|
-
this.
|
|
17997
|
+
this.mobileOpen = !1;
|
|
17995
17998
|
};
|
|
17996
17999
|
}
|
|
17997
|
-
get isMobile() {
|
|
17998
|
-
return this._mediaQuery?.matches === !1;
|
|
17999
|
-
}
|
|
18000
18000
|
onCreate() {
|
|
18001
|
-
this._mediaQuery = window.matchMedia("(min-width: 768px)"), this._mediaQuery.addEventListener("change", this._handleMediaChange), this.
|
|
18001
|
+
this._mediaQuery = window.matchMedia("(min-width: 768px)"), this._mediaQuery.addEventListener("change", this._handleMediaChange), this.mobile = !this._mediaQuery.matches;
|
|
18002
18002
|
}
|
|
18003
18003
|
onDestroy() {
|
|
18004
18004
|
this._mediaQuery?.removeEventListener("change", this._handleMediaChange);
|
|
18005
18005
|
}
|
|
18006
18006
|
onMediaChange(t) {
|
|
18007
|
-
t.matches && (this.
|
|
18007
|
+
this.mobile = !t.matches, t.matches && (this.mobileOpen = !1);
|
|
18008
18008
|
}
|
|
18009
18009
|
};
|
|
18010
18010
|
pr = g([_({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-grid.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/data-display/data-grid/data-grid.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"data-grid.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/data-display/data-grid/data-grid.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,iDA0e1B,CAAC"}
|
|
@@ -4,6 +4,7 @@ export const dataGridStyles = () => css `
|
|
|
4
4
|
display: flex;
|
|
5
5
|
flex-direction: column;
|
|
6
6
|
height: 100%;
|
|
7
|
+
min-width: 0;
|
|
7
8
|
font-family: var(--ml-font-sans);
|
|
8
9
|
}
|
|
9
10
|
|
|
@@ -56,6 +57,7 @@ export const dataGridStyles = () => css `
|
|
|
56
57
|
overflow: auto;
|
|
57
58
|
position: relative;
|
|
58
59
|
min-height: 0;
|
|
60
|
+
min-width: 0;
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
.ml-data-grid__viewport::-webkit-scrollbar {
|
|
@@ -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);
|
|
@@ -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.5",
|
|
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
|
},
|