@govbr-ds/webcomponents 2.1.1 → 2.1.2

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.
Files changed (191) hide show
  1. package/README.md +0 -11
  2. package/cem/custom-elements.json +209 -8
  3. package/dist/cjs/br-cookiebar-link.cjs.entry.js +2 -1
  4. package/dist/cjs/br-date-picker_3.cjs.entry.js +2 -1
  5. package/dist/cjs/br-datetime-picker.cjs.entry.js +1 -2
  6. package/dist/cjs/br-dropdown_2.cjs.entry.js +252 -108
  7. package/dist/cjs/br-header-logo.cjs.entry.js +2 -1
  8. package/dist/cjs/br-icon.cjs.entry.js +1 -1
  9. package/dist/cjs/br-item.cjs.entry.js +25 -14
  10. package/dist/cjs/br-link.cjs.entry.js +2 -1
  11. package/dist/cjs/br-magic-button.cjs.entry.js +2 -1
  12. package/dist/cjs/br-menu-link.cjs.entry.js +2 -1
  13. package/dist/cjs/br-select-input_3.cjs.entry.js +45 -11
  14. package/dist/cjs/br-sign-in.cjs.entry.js +2 -1
  15. package/dist/cjs/br-slider.cjs.entry.js +1 -2
  16. package/dist/cjs/br-tag.cjs.entry.js +2 -3
  17. package/dist/cjs/br-upload.cjs.entry.js +2 -3
  18. package/dist/cjs/index-CRdcutym.js +4 -4
  19. package/dist/cjs/loader.cjs.js +1 -1
  20. package/dist/cjs/webcomponents.cjs.js +1 -1
  21. package/dist/collection/components/cookiebar/cookiebar-link/cookiebar-link.js +2 -1
  22. package/dist/collection/components/datetime-picker/datetime-input/datetime-input.js +2 -1
  23. package/dist/collection/components/datetime-picker/datetime-picker.js +1 -2
  24. package/dist/collection/components/header/header-logo/header-logo.js +2 -1
  25. package/dist/collection/components/icon/icon.js +1 -1
  26. package/dist/collection/components/item/item.js +25 -14
  27. package/dist/collection/components/link/link.js +2 -1
  28. package/dist/collection/components/magic-button/magic-button.js +2 -1
  29. package/dist/collection/components/menu/menu-link/menu-link.js +2 -1
  30. package/dist/collection/components/select/select-input/select-input.js +2 -1
  31. package/dist/collection/components/select/select-list/select-list.js +17 -5
  32. package/dist/collection/components/select/select-option/select-option.js +28 -7
  33. package/dist/collection/components/select/select.js +226 -109
  34. package/dist/collection/components/select/select.utils.js +34 -0
  35. package/dist/collection/components/sign-in/sign-in.js +2 -1
  36. package/dist/collection/components/slider/slider.js +1 -2
  37. package/dist/collection/components/tag/tag.js +2 -3
  38. package/dist/collection/components/upload/upload.js +2 -3
  39. package/dist/collection/pages/scripts/component-controls.js +13 -4
  40. package/dist/collection/pages/scripts/menu.js +11 -2
  41. package/dist/collection/pages/scripts/pageLoader.js +3 -1
  42. package/dist/components/br-avatar.js +1 -1
  43. package/dist/components/br-breadcrumb.js +1 -1
  44. package/dist/components/br-carousel.js +1 -1
  45. package/dist/components/br-checkbox-group.js +1 -1
  46. package/dist/components/br-checkbox.js +1 -1
  47. package/dist/components/br-checkgroup.js +1 -1
  48. package/dist/components/br-collapse.js +1 -1
  49. package/dist/components/br-cookiebar-cookie.js +1 -1
  50. package/dist/components/br-cookiebar-group.js +1 -1
  51. package/dist/components/br-cookiebar-link.js +1 -1
  52. package/dist/components/br-cookiebar-note-group.js +1 -1
  53. package/dist/components/br-cookiebar.js +1 -1
  54. package/dist/components/br-date-picker.js +1 -1
  55. package/dist/components/br-datetime-input.js +1 -1
  56. package/dist/components/br-datetime-picker.js +1 -1
  57. package/dist/components/br-dropdown.js +1 -1
  58. package/dist/components/br-footer-category.js +1 -1
  59. package/dist/components/br-footer-item.js +1 -1
  60. package/dist/components/br-footer-social.js +1 -1
  61. package/dist/components/br-header-function.js +1 -1
  62. package/dist/components/br-header-link.js +1 -1
  63. package/dist/components/br-header-list.js +1 -1
  64. package/dist/components/br-header-logo.js +1 -1
  65. package/dist/components/br-header.js +1 -1
  66. package/dist/components/br-icon.js +1 -1
  67. package/dist/components/br-input.js +1 -1
  68. package/dist/components/br-item.js +1 -1
  69. package/dist/components/br-link.js +1 -1
  70. package/dist/components/br-list.js +1 -1
  71. package/dist/components/br-magic-button.js +1 -1
  72. package/dist/components/br-menu-header.js +1 -1
  73. package/dist/components/br-menu-item.js +1 -1
  74. package/dist/components/br-menu-link.js +1 -1
  75. package/dist/components/br-menu-list.js +1 -1
  76. package/dist/components/br-menu-social.js +1 -1
  77. package/dist/components/br-menu.js +1 -1
  78. package/dist/components/br-message.js +1 -1
  79. package/dist/components/br-modal.js +1 -1
  80. package/dist/components/br-notification-header.js +1 -1
  81. package/dist/components/br-notification-item.js +1 -1
  82. package/dist/components/br-pagination.js +1 -1
  83. package/dist/components/br-radio-group.js +1 -1
  84. package/dist/components/br-radio.js +1 -1
  85. package/dist/components/br-select-input.js +1 -1
  86. package/dist/components/br-select-list.js +1 -1
  87. package/dist/components/br-select-option.js +1 -1
  88. package/dist/components/br-select.js +1 -1
  89. package/dist/components/br-sign-in.js +1 -1
  90. package/dist/components/br-skip-link-item.js +1 -1
  91. package/dist/components/br-skip-link.js +1 -1
  92. package/dist/components/br-skiplink-item.js +1 -1
  93. package/dist/components/br-slider.js +1 -1
  94. package/dist/components/br-step-item.js +1 -1
  95. package/dist/components/br-switch.js +1 -1
  96. package/dist/components/br-tab.js +1 -1
  97. package/dist/components/br-table-cell.js +1 -1
  98. package/dist/components/br-table-header-cell.js +1 -1
  99. package/dist/components/br-tag.js +1 -1
  100. package/dist/components/br-textarea.js +1 -1
  101. package/dist/components/br-time-picker.js +1 -1
  102. package/dist/components/br-tooltip.js +1 -1
  103. package/dist/components/br-upload.js +1 -1
  104. package/dist/components/br-wizard.js +1 -1
  105. package/dist/components/index.js +1 -1
  106. package/dist/components/{p-0IYmyaTi.js → p-34Jfn-U-.js} +1 -1
  107. package/dist/components/{p-41XwlWiS.js → p-B7Amgxkp.js} +1 -1
  108. package/dist/components/p-BKuMQJrQ.js +5 -0
  109. package/dist/components/{p-LmeJrLxH.js → p-BeE7R9nu.js} +1 -1
  110. package/dist/components/{p-C98-mHmV.js → p-Bo0QYHJO.js} +1 -1
  111. package/dist/components/{p-DYnkGWii.js → p-C2i2c_io.js} +1 -1
  112. package/dist/components/p-C7v0lVlX.js +5 -0
  113. package/dist/components/{p-D_CSvOY9.js → p-CMBsvswx.js} +1 -1
  114. package/dist/components/{p-Dkg2scYZ.js → p-CRrimdz6.js} +1 -1
  115. package/dist/components/{p-Bm0ECvfB.js → p-CWORw84-.js} +1 -1
  116. package/dist/components/p-CvUMXJCl.js +5 -0
  117. package/dist/components/{p-nJOJGpyl.js → p-DFUKDNck.js} +1 -1
  118. package/dist/components/p-DHicj0By.js +5 -0
  119. package/dist/components/{p-B-sbd1_h.js → p-DXjQyH6s.js} +1 -1
  120. package/dist/components/p-DmCxdB9P.js +5 -0
  121. package/dist/components/{p-DoXNfcTT.js → p-Dp0xy_3n.js} +1 -1
  122. package/dist/components/{p-DaeGwqw0.js → p-JAkkThgf.js} +1 -1
  123. package/dist/components/{p-aF8bGN3t.js → p-Ud-WB0hx.js} +1 -1
  124. package/dist/components/p-fpMNttbg.js +5 -0
  125. package/dist/components/{p-D9SpD3Ay.js → p-qYONSNcf.js} +1 -1
  126. package/dist/components/{p-CDZFuUlU.js → p-qhhHGJY1.js} +1 -1
  127. package/dist/components/p-ukNmfGNP.js +5 -0
  128. package/dist/components/p-xa8e1kSW.js +5 -0
  129. package/dist/esm/br-cookiebar-link.entry.js +2 -1
  130. package/dist/esm/br-date-picker_3.entry.js +2 -1
  131. package/dist/esm/br-datetime-picker.entry.js +1 -2
  132. package/dist/esm/br-dropdown_2.entry.js +252 -108
  133. package/dist/esm/br-header-logo.entry.js +2 -1
  134. package/dist/esm/br-icon.entry.js +1 -1
  135. package/dist/esm/br-item.entry.js +25 -14
  136. package/dist/esm/br-link.entry.js +2 -1
  137. package/dist/esm/br-magic-button.entry.js +2 -1
  138. package/dist/esm/br-menu-link.entry.js +2 -1
  139. package/dist/esm/br-select-input_3.entry.js +45 -11
  140. package/dist/esm/br-sign-in.entry.js +2 -1
  141. package/dist/esm/br-slider.entry.js +1 -2
  142. package/dist/esm/br-tag.entry.js +2 -3
  143. package/dist/esm/br-upload.entry.js +2 -3
  144. package/dist/esm/index-C2RBydfd.js +4 -4
  145. package/dist/esm/loader.js +1 -1
  146. package/dist/esm/webcomponents.js +1 -1
  147. package/dist/hydrate/index.js +356 -163
  148. package/dist/hydrate/index.mjs +356 -163
  149. package/dist/types/components/item/item.d.ts +1 -0
  150. package/dist/types/components/select/select-list/select-list.d.ts +1 -0
  151. package/dist/types/components/select/select-option/select-option.d.ts +1 -0
  152. package/dist/types/components/select/select.d.ts +14 -0
  153. package/dist/types/components/select/select.types.d.ts +2 -0
  154. package/dist/types/components/select/select.utils.d.ts +13 -0
  155. package/dist/webcomponents/p-0777c7b1.entry.js +5 -0
  156. package/dist/webcomponents/p-18ee6175.entry.js +5 -0
  157. package/dist/webcomponents/p-1c303a4e.entry.js +5 -0
  158. package/dist/webcomponents/{p-60cc820c.entry.js → p-4c13221a.entry.js} +1 -1
  159. package/dist/webcomponents/p-51ce2c31.entry.js +5 -0
  160. package/dist/webcomponents/p-83ff4579.entry.js +5 -0
  161. package/dist/webcomponents/p-8e819355.entry.js +5 -0
  162. package/dist/webcomponents/p-92a9b9c4.entry.js +5 -0
  163. package/dist/webcomponents/p-a4ae72e3.entry.js +5 -0
  164. package/dist/webcomponents/p-a994c190.entry.js +5 -0
  165. package/dist/webcomponents/p-c949d993.entry.js +5 -0
  166. package/dist/webcomponents/p-f26038e2.entry.js +5 -0
  167. package/dist/webcomponents/{p-4fe12a72.entry.js → p-f303f6b3.entry.js} +1 -1
  168. package/dist/webcomponents/p-f85ee01c.entry.js +5 -0
  169. package/dist/webcomponents/{p-5b257a4b.entry.js → p-ffe0241e.entry.js} +1 -1
  170. package/dist/webcomponents/webcomponents.esm.js +1 -1
  171. package/package.json +3 -7
  172. package/dist/components/p-BW0_ORNA.js +0 -5
  173. package/dist/components/p-C3LQSQpc.js +0 -5
  174. package/dist/components/p-CRfi23Rd.js +0 -5
  175. package/dist/components/p-CUI5zWGf.js +0 -5
  176. package/dist/components/p-CxviDiCr.js +0 -5
  177. package/dist/components/p-DvrdmqoQ.js +0 -5
  178. package/dist/components/p-TFWd_UBV.js +0 -5
  179. package/dist/components/p-cfPt-vKA.js +0 -5
  180. package/dist/webcomponents/p-059c3d6c.entry.js +0 -5
  181. package/dist/webcomponents/p-0b8f39bc.entry.js +0 -5
  182. package/dist/webcomponents/p-1b138f1c.entry.js +0 -5
  183. package/dist/webcomponents/p-22443c08.entry.js +0 -5
  184. package/dist/webcomponents/p-6c5f6cb6.entry.js +0 -5
  185. package/dist/webcomponents/p-6f1c4425.entry.js +0 -5
  186. package/dist/webcomponents/p-7cf9f4e5.entry.js +0 -5
  187. package/dist/webcomponents/p-7e1856e4.entry.js +0 -5
  188. package/dist/webcomponents/p-bba9fc09.entry.js +0 -5
  189. package/dist/webcomponents/p-cedb8eea.entry.js +0 -5
  190. package/dist/webcomponents/p-dba376cb.entry.js +0 -5
  191. package/dist/webcomponents/p-e80a1eb0.entry.js +0 -5
@@ -116,6 +116,8 @@ export class SelectList {
116
116
  this.options = this.syncSelectAllOption(this.options);
117
117
  }
118
118
  handleOptionStateChange(event) {
119
+ if (this.isControlledBySelect)
120
+ return;
119
121
  const detail = event.detail;
120
122
  if (!detail?.value)
121
123
  return;
@@ -216,9 +218,15 @@ export class SelectList {
216
218
  */
217
219
  async setMultiple(isMultiple) {
218
220
  this.isMultiple = isMultiple;
219
- this.options = this.normalizeOptionsForMode(this.options, isMultiple);
221
+ if (!this.isControlledBySelect)
222
+ this.options = this.normalizeOptionsForMode(this.options, isMultiple);
220
223
  this.scheduleMeasureItemHeight();
221
224
  }
225
+ get isControlledBySelect() {
226
+ const root = this.el.getRootNode();
227
+ const host = root.host;
228
+ return host?.tagName?.toLowerCase() === 'br-select';
229
+ }
222
230
  /**
223
231
  * Retorna uma cópia das opções atualmente controladas pela lista.
224
232
  *
@@ -539,14 +547,18 @@ export class SelectList {
539
547
  renderOption(option, index) {
540
548
  const rowHeight = this.getRowHeight();
541
549
  const optionPart = this.isSelectAllOption(option) ? 'option select-all' : 'option';
542
- return (h("br-select-option", { part: optionPart, active: index === this.activeOptionIndex, "data-option-index": index, disabled: option.disabled, id: `${this.el.id || 'br-select-list'}-option-${index}`, indeterminate: option.indeterminate, key: option.value, label: option.label, selected: option.selected, "show-checkbox": this.isMultiple, style: {
550
+ return (h("br-select-option", { part: optionPart, active: index === this.activeOptionIndex, "data-option-index": index, disabled: option.disabled, id: `${this.el.id || 'br-select-list'}-option-${index}`, indeterminate: option.indeterminate,
551
+ // A seleção faz parte da identidade visual renderizada. Incluir o estado
552
+ // na chave evita que uma opção virtual reutilizada retenha o snapshot
553
+ // interno anterior do br-select-option/br-item.
554
+ key: `${option.value}:${option.selected ? 'selected' : 'unselected'}`, label: option.label, selected: option.selected, "show-checkbox": this.isMultiple, style: {
543
555
  boxSizing: 'border-box',
544
556
  height: `${rowHeight}px`,
545
557
  position: 'absolute',
546
558
  top: `${index * rowHeight}px`,
547
559
  left: '0',
548
560
  right: '0',
549
- }, value: option.value }, option.label ?? option.value));
561
+ }, value: option.value }, option.content ? h("span", { innerHTML: option.content }) : (option.label ?? option.value)));
550
562
  }
551
563
  getVirtualScrollStyle() {
552
564
  return {
@@ -580,7 +592,7 @@ export class SelectList {
580
592
  return (h("div", { part: "loading", role: "status", "aria-live": "polite" }, h("slot", { name: "loading" }, h("br-loading", { size: "small", label: "Buscando op\u00E7\u00F5es" }))));
581
593
  }
582
594
  render() {
583
- return (h(Host, { key: '5dc8eb2363f8deae198dade6003ded206eb959a4' }, h("div", { key: '6cc0273ab1143d29114090ea7edde1b49d217fe8', class: this.getCssClassMap(), part: "list", ref: (el) => (this.listElement = el), onScroll: this.handleScroll, style: this.getVirtualScrollStyle() }, this.loading ? this.renderLoading() : this.renderVirtualOptions())));
595
+ return (h(Host, { key: '537c7f312573570953b24e27fed7188a052c4bd5' }, h("div", { key: 'aac978e5664c9dee21ba7a6763125fe7daf915d3', class: this.getCssClassMap(), part: "list", ref: (el) => (this.listElement = el), onScroll: this.handleScroll, style: this.getVirtualScrollStyle() }, this.loading ? this.renderLoading() : this.renderVirtualOptions())));
584
596
  }
585
597
  static get is() { return "br-select-list"; }
586
598
  static get encapsulation() { return "shadow"; }
@@ -904,7 +916,7 @@ export class SelectList {
904
916
  "signature": "(option: SelectOptionData) => Promise<void>",
905
917
  "parameters": [{
906
918
  "name": "option",
907
- "type": "{ disabled?: boolean; indeterminate?: boolean; label?: string; selected?: boolean; value: string; }",
919
+ "type": "{ content?: string; disabled?: boolean; indeterminate?: boolean; label?: string; selected?: boolean; value: string; }",
908
920
  "docs": "Op\u00E7\u00E3o que deve ser persistida na lista."
909
921
  }],
910
922
  "references": {
@@ -79,7 +79,10 @@ export class SelectOption {
79
79
  if (this.isRedundantCheckboxReflection(event, current)) {
80
80
  return;
81
81
  }
82
- this.applySelection(current);
82
+ if (this.isControlledBySelect)
83
+ this.emitStateChange(current);
84
+ else
85
+ this.applySelection(current);
83
86
  };
84
87
  }
85
88
  componentDidLoad() {
@@ -117,7 +120,11 @@ export class SelectOption {
117
120
  async setSelectedState(selected) {
118
121
  if (this.disabled)
119
122
  return;
120
- this.applySelection(typeof selected === 'boolean' ? selected : !this.selected);
123
+ const nextSelected = typeof selected === 'boolean' ? selected : !this.selected;
124
+ if (this.isControlledBySelect)
125
+ this.emitStateChange(nextSelected);
126
+ else
127
+ this.applySelection(nextSelected);
121
128
  }
122
129
  isRedundantCheckboxReflection(event, nextSelected) {
123
130
  if (!event)
@@ -129,11 +136,11 @@ export class SelectOption {
129
136
  return false;
130
137
  return Boolean(nextSelected) === Boolean(this.selected);
131
138
  }
132
- emitStateChange() {
139
+ emitStateChange(selected = this.selected) {
133
140
  const detail = {
134
141
  disabled: this.disabled,
135
142
  indeterminate: this.indeterminate,
136
- selected: this.selected,
143
+ selected,
137
144
  value: this.getResolvedValue(),
138
145
  label: this.getResolvedLabel(),
139
146
  };
@@ -143,6 +150,20 @@ export class SelectOption {
143
150
  this.lastStateChangeKey = nextKey;
144
151
  this.brSelectOptionStateChange.emit(detail);
145
152
  }
153
+ get isControlledBySelect() {
154
+ if (this.el.closest('br-select'))
155
+ return true;
156
+ let node = this.el;
157
+ for (;;) {
158
+ const root = node.getRootNode();
159
+ const host = root.host;
160
+ if (!host)
161
+ return false;
162
+ if (host.tagName.toLowerCase() === 'br-select')
163
+ return true;
164
+ node = host;
165
+ }
166
+ }
146
167
  /**
147
168
  * Centraliza a transição de seleção para manter emissão e limpeza de estado consistentes.
148
169
  *
@@ -209,7 +230,7 @@ export class SelectOption {
209
230
  return this.normalizeText(this.el.textContent || '');
210
231
  }
211
232
  render() {
212
- return (h(Host, { key: 'a7699275905c23dc2dccd444dfccf4f7a8684afe', part: "option", exportparts: "checkbox:checkbox, checkbox:option-checkbox", "aria-disabled": this.disabled ? 'true' : 'false', "aria-selected": this.selected ? 'true' : 'false', role: "option", onMouseEnter: () => {
233
+ return (h(Host, { key: '3b20b8766d73d6a862765fb890028e6ff7374d96', part: "option", exportparts: "checkbox:checkbox, checkbox:option-checkbox", "aria-disabled": this.disabled ? 'true' : 'false', "aria-selected": this.selected ? 'true' : 'false', role: "option", onMouseEnter: () => {
213
234
  this.el.dispatchEvent(new CustomEvent('brInternalSelectOptionHover', {
214
235
  bubbles: true,
215
236
  composed: true,
@@ -221,7 +242,7 @@ export class SelectOption {
221
242
  composed: true,
222
243
  detail: { label: this.getResolvedLabel(), value: this.getResolvedValue() },
223
244
  }));
224
- } }, h("br-item", { key: '72c058725e6b39ef51203f3820676b445b041076', class: this.getCssClassMap(), disabled: this.disabled, "is-selected": this.selected, "is-interactive": true, ref: (el) => (this.itemElement = el), onBrDidSelect: this.handleSelect }, this.showCheckbox && (h("br-checkbox", { key: '43e1b61dd4f9ef8f8f55c0aa2e574e0369388ac7', exportparts: "input:checkbox, input:option-checkbox", slot: "start", checked: this.selected, disabled: this.disabled, indeterminate: this.indeterminate, name: this.getResolvedValue(), onCheckedChange: this.handleSelect })), h("span", { key: '102cd7d571fe2d17347e1b04bc6cb58237dfb39c', class: "br-select-option-label" }, h("slot", { key: '523687250477527205355f980d495ada9cd24de6' }, this.getResolvedLabel())))));
245
+ } }, h("br-item", { key: '7b32b68bbc5541090e24d81e55602045bdbbba47', class: this.getCssClassMap(), disabled: this.disabled, active: this.active, selected: this.selected, "is-interactive": true, ref: (el) => (this.itemElement = el), onBrItemSelect: this.handleSelect }, this.showCheckbox && (h("br-checkbox", { key: 'fd5426e02e229eaaa8b22d457329cce6acf59e51', exportparts: "input:checkbox, input:option-checkbox", slot: "start", checked: this.selected, disabled: this.disabled, indeterminate: this.indeterminate, name: this.getResolvedValue(), onCheckedChange: this.handleSelect })), h("span", { key: '6185b2e6b60bf65059c321d4118d675859f9940e', class: "br-select-option-label" }, h("slot", { key: 'c78020a423fe1ed34ef39f46301f71baf5b0cbd8' }, this.getResolvedLabel())))));
225
246
  }
226
247
  static get is() { return "br-select-option"; }
227
248
  static get encapsulation() { return "shadow"; }
@@ -422,7 +443,7 @@ export class SelectOption {
422
443
  },
423
444
  "complexType": {
424
445
  "original": "SelectOptionData",
425
- "resolved": "{ disabled?: boolean; indeterminate?: boolean; label?: string; selected?: boolean; value: string; }",
446
+ "resolved": "{ content?: string; disabled?: boolean; indeterminate?: boolean; label?: string; selected?: boolean; value: string; }",
426
447
  "references": {
427
448
  "SelectOptionData": {
428
449
  "location": "import",