@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.
@@ -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
- _focused: boolean;
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,QAAQ,UAAS;IAEjB,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"}
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._focused = false;
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._focused = true;
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._focused = false;
81
+ this.focused = false;
82
82
  this.elementRef.dispatchEvent(new CustomEvent('ml:blur', {
83
83
  bubbles: true,
84
84
  composed: true
@@ -8,7 +8,7 @@ export function inputTemplate(c) {
8
8
  'ml-input--disabled': c.disabled,
9
9
  'ml-input--readonly': c.readonly,
10
10
  'ml-input--error': !!c.error,
11
- 'ml-input--focused': c._focused
11
+ 'ml-input--focused': c.focused
12
12
  })}
13
13
  >
14
14
  ${when(!!c.label, () => html `
@@ -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
- _focused: boolean;
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,QAAQ,UAAS;IAEjB,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"}
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._focused = false;
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._focused = true;
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._focused = false;
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._focused,
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, expandedItems: Set<string>) => void;
65
+ handleConfigToggle: (item: SidebarNavItem) => void;
66
66
  /** Keyboard navigation */
67
67
  handleKeyDown: (event: KeyboardEvent) => void;
68
68
  /** Track expanded config items */
69
- _expandedItems: Set<string>;
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,EAAE,eAAe,GAAG,CAAC,MAAM,CAAC,KAAG,IAAI,CAQ3E;IAEF,0BAA0B;IAC1B,aAAa,GAAI,OAAO,aAAa,KAAG,IAAI,CAmC1C;IAEF,kCAAkC;IAClC,cAAc,cAAqB;IAEnC,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"}
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, expandedItems) => {
70
- if (expandedItems.has(item.value)) {
71
- expandedItems.delete(item.value);
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
- expandedItems.add(item.value);
75
+ next.add(item.value);
75
76
  }
76
- // Trigger re-render
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._expandedItems = new Set();
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._expandedItems.has(item.value);
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, c._expandedItems);
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>(dialogComponentOrID: UniqueID | DialogComponentLoader, config?: IDialogConfig<TData>): DialogRef<TResult, TData>;
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,mBAAmB,EAAE,QAAQ,GAAG,qBAAqB,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;IA0BzJ,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"}
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
- /** Internal: tracks if mobile drawer is open */
30
- _mobileOpen: boolean;
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,WAAW,UAAS;IAEpB,0CAA0C;IAC1C,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiC;IAEpE,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,QAAQ,IAAI,IAAI;IAUhB,SAAS,IAAI,IAAI;IAIjB,mCAAmC;IACnC,mBAAmB,QAAO,IAAI,CAE5B;IAEF,2BAA2B;IAC3B,kBAAkB,QAAO,IAAI,CAE3B;IAEF,OAAO,CAAC,aAAa;CAMrB"}
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
- /** Internal: tracks if mobile drawer is open */
37
- this._mobileOpen = false;
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._mobileOpen = !this._mobileOpen;
45
+ this.mobileOpen = !this.mobileOpen;
44
46
  };
45
47
  /** Close mobile sidebar */
46
48
  this.closeMobileSidebar = () => {
47
- this._mobileOpen = false;
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
- // Close mobile drawer on initial desktop
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._mobileOpen = false;
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._mobileOpen;
7
- const isMobile = c.isMobile;
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.4",
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
  },