zs3-ui-components 1.2.2 → 1.2.3

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.

Potentially problematic release.


This version of zs3-ui-components might be problematic. Click here for more details.

package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ZS3 UI Components
2
2
 
3
- **v1.2.2** · Modern Web Components library with built-in theming, i18n, reactive state, HTTP client, and more.
3
+ **v1.2.3** · Modern Web Components library with built-in theming, i18n, reactive state, HTTP client, and more.
4
4
 
5
5
  ZS3 UI Components is a zero-dependency UI library based on native **Web Components** (Custom Elements + Shadow DOM). It provides a complete set of UI components and utilities that work in any framework or in plain HTML.
6
6
 
@@ -1984,7 +1984,7 @@ Logger avançat amb nivells i formatació a la consola del navegador.
1984
1984
  ```ts
1985
1985
  import { log } from 'zs3-ui-components'
1986
1986
 
1987
- log.info('Aplicació iniciada', { version: '1.2.2' })
1987
+ log.info('Aplicació iniciada', { version: '1.2.3' })
1988
1988
  log.warn('Configuració incompleta', { missing: 'api-key' })
1989
1989
  log.error('Error en la petició', { code: 500, url: '/api/users' })
1990
1990
  log.success('Operació completada!')
@@ -2096,6 +2096,30 @@ class MyComponent extends $BaseComponent {
2096
2096
  > **Nota:** `this.$` és equivalent a `$(selector, this.shadowRoot)`. Usar `$` global des de dins
2097
2097
  > d'un component amb shadow DOM **no funcionaria**, ja que el shadow DOM no és accessible des del `document`.
2098
2098
 
2099
+ #### `this.$$` — Selecció múltiple scope-aware dins de components
2100
+
2101
+ Tots els components que extenen `$BaseComponent` també disposen de `this.$$`, que retorna un array
2102
+ de tots els elements que coincideixen amb el selector, limitat al **shadow DOM del component**.
2103
+
2104
+ ```ts
2105
+ class MyComponent extends $BaseComponent {
2106
+ render(): void {
2107
+ this.setHTML(`
2108
+ <button class="item">A</button>
2109
+ <button class="item">B</button>
2110
+ `)
2111
+ }
2112
+
2113
+ protected afterMount(): void {
2114
+ // Selecciona tots els elements .item dins del shadow DOM
2115
+ this.$$('.item')?.forEach(el => el.classList.add('active'))
2116
+ this.$$('input')?.forEach(input => (input as HTMLInputElement).disabled = true)
2117
+ }
2118
+ }
2119
+ ```
2120
+
2121
+ > **Nota:** `this.$$` és equivalent a `$(selector, this.shadowRoot).$$`.
2122
+
2099
2123
  #### HTML inline (index2.html)
2100
2124
 
2101
2125
  ```html
@@ -2174,7 +2198,6 @@ class MyComponent extends $BaseComponent {
2174
2198
  }
2175
2199
 
2176
2200
  // Es crida automàticament quan canvia l'idioma
2177
- // render() s'invoca automàticament després
2178
2201
  protected onLocaleChange(): void {
2179
2202
  // lògica addicional si cal
2180
2203
  }
@@ -123,6 +123,24 @@ export declare abstract class $BaseComponent extends HTMLElement {
123
123
  * this.$('.title')?.text(this.t('my.title.key'))
124
124
  */
125
125
  $: (selector: string) => ZS3 | null;
126
+ /**
127
+ * Helper DOM scope-aware que retorna múltiples elements dins del shadow DOM del component.
128
+ *
129
+ * Equivalent a `$(selector, root).$$` però limitat al shadow DOM del component (o al `_container`
130
+ * si el component s'usa com a pàgina via Router sense shadow DOM).
131
+ *
132
+ * Permet seleccionar tots els elements interns que coincideixen amb el selector, de forma segura
133
+ * sense accedir al `document` global.
134
+ *
135
+ * @param selector - Selector CSS per cercar dins del shadow DOM del component.
136
+ * @returns Array d'elements `HTMLElement` que coincideixen, o `null` si no en troba cap.
137
+ *
138
+ * @example
139
+ * // Dins d'un mètode del component:
140
+ * this.$$('.item')?.forEach(el => el.classList.add('active'))
141
+ * this.$$('input')?.forEach(input => (input as HTMLInputElement).disabled = true)
142
+ */
143
+ $$: (selector: string) => Array<HTMLElement> | null;
126
144
  /**
127
145
  * Initializes the base component
128
146
  * @param options - Configuration options for the component
@@ -137,18 +155,6 @@ export declare abstract class $BaseComponent extends HTMLElement {
137
155
  * Get the root element (shadow root or element itself)
138
156
  */
139
157
  protected get root(): ShadowRoot | HTMLElement;
140
- /**
141
- * Query selector within the component's root
142
- * @param selector - CSS selector to query
143
- * @returns Found element or null
144
- */
145
- protected qs<T extends HTMLElement = HTMLElement>(selector: string): T | null;
146
- /**
147
- * Query all matching elements within the component's root
148
- * @param selector - CSS selector to query
149
- * @returns NodeList of found elements
150
- */
151
- protected qsAll<T extends HTMLElement = HTMLElement>(selector: string): NodeListOf<T>;
152
158
  /**
153
159
  * Register an attribute change handler
154
160
  * @param attributeName - Name of the attribute to observe