@fluentui/web-components 3.0.0-rc.1 → 3.0.0-rc.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.
package/CHANGELOG.md CHANGED
@@ -1,12 +1,21 @@
1
1
  # Change Log - @fluentui/web-components
2
2
 
3
- This log was last generated on Wed, 26 Nov 2025 04:06:47 GMT and should not be manually modified.
3
+ This log was last generated on Mon, 12 Jan 2026 04:07:35 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [3.0.0-rc.2](https://github.com/microsoft/fluentui/tree/@fluentui/web-components_v3.0.0-rc.2)
8
+
9
+ Mon, 12 Jan 2026 04:07:35 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/web-components_v3.0.0-rc.1..@fluentui/web-components_v3.0.0-rc.2)
11
+
12
+ ### Changes
13
+
14
+ - fix: remove empty text nodes from avatar ([PR #33963](https://github.com/microsoft/fluentui/pull/33963) by 863023+radium-v@users.noreply.github.com)
15
+
7
16
  ## [3.0.0-rc.1](https://github.com/microsoft/fluentui/tree/@fluentui/web-components_v3.0.0-rc.1)
8
17
 
9
- Wed, 26 Nov 2025 04:06:47 GMT
18
+ Wed, 26 Nov 2025 04:06:59 GMT
10
19
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/web-components_v3.0.0-beta.133..@fluentui/web-components_v3.0.0-rc.1)
11
20
 
12
21
  ### Changes
@@ -4,6 +4,17 @@ import { FASTElement } from '@microsoft/fast-element';
4
4
  * @public
5
5
  */
6
6
  export declare class BaseAvatar extends FASTElement {
7
+ /**
8
+ * Signal to remove event listeners when the component is disconnected.
9
+ *
10
+ * @internal
11
+ */
12
+ private abortSignal?;
13
+ /**
14
+ * Reference to the default slot element.
15
+ * @internal
16
+ */
17
+ defaultSlot: HTMLSlotElement;
7
18
  /**
8
19
  * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
9
20
  *
@@ -26,5 +37,14 @@ export declare class BaseAvatar extends FASTElement {
26
37
  * HTML Attribute: name
27
38
  */
28
39
  initials?: string | undefined;
40
+ connectedCallback(): void;
29
41
  constructor();
42
+ disconnectedCallback(): void;
43
+ /**
44
+ * Removes any empty text nodes from the default slot when the slotted content changes.
45
+ *
46
+ * @param e - The event object
47
+ * @internal
48
+ */
49
+ slotchangeHandler(): void;
30
50
  }
@@ -1,10 +1,14 @@
1
1
  import { __decorate } from "tslib";
2
- import { attr, FASTElement } from '@microsoft/fast-element';
2
+ import { attr, FASTElement, Updates } from '@microsoft/fast-element';
3
3
  /**
4
4
  * The base class used for constructing a fluent-avatar custom element
5
5
  * @public
6
6
  */
7
7
  export class BaseAvatar extends FASTElement {
8
+ connectedCallback() {
9
+ super.connectedCallback();
10
+ this.slotchangeHandler();
11
+ }
8
12
  constructor() {
9
13
  super();
10
14
  /**
@@ -15,6 +19,38 @@ export class BaseAvatar extends FASTElement {
15
19
  this.elementInternals = this.attachInternals();
16
20
  this.elementInternals.role = 'img';
17
21
  }
22
+ disconnectedCallback() {
23
+ this.abortSignal?.abort();
24
+ this.abortSignal = undefined;
25
+ super.disconnectedCallback();
26
+ }
27
+ /**
28
+ * Removes any empty text nodes from the default slot when the slotted content changes.
29
+ *
30
+ * @param e - The event object
31
+ * @internal
32
+ */
33
+ slotchangeHandler() {
34
+ this.normalize();
35
+ const elements = this.defaultSlot.assignedElements();
36
+ if (!elements.length && !this.innerText.trim()) {
37
+ const nodes = this.defaultSlot.assignedNodes();
38
+ nodes
39
+ .filter(node => node.nodeType === Node.TEXT_NODE)
40
+ .forEach(node => {
41
+ this.removeChild(node);
42
+ });
43
+ }
44
+ Updates.enqueue(() => {
45
+ if (!this.abortSignal || this.abortSignal.signal.aborted) {
46
+ this.abortSignal = new AbortController();
47
+ }
48
+ this.defaultSlot.addEventListener('slotchange', () => this.slotchangeHandler(), {
49
+ once: true,
50
+ signal: this.abortSignal.signal,
51
+ });
52
+ });
53
+ }
18
54
  }
19
55
  __decorate([
20
56
  attr
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.base.js","sourceRoot":"","sources":["../../../src/avatar/avatar.base.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;;GAGG;AACH,MAAM,OAAO,UAAW,SAAQ,WAAW;IA4BzC;QACE,KAAK,EAAE,CAAC;QA5BV;;;;WAIG;QACI,qBAAgB,GAAqB,IAAI,CAAC,eAAe,EAAE,CAAC;QAyBjE,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,KAAK,CAAC;IACrC,CAAC;CACF;AAjBQ;IADN,IAAI;wCAC4B;AAU1B;IADN,IAAI;4CACgC"}
1
+ {"version":3,"file":"avatar.base.js","sourceRoot":"","sources":["../../../src/avatar/avatar.base.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAErE;;;GAGG;AACH,MAAM,OAAO,UAAW,SAAQ,WAAW;IAyCzC,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED;QACE,KAAK,EAAE,CAAC;QAjCV;;;;WAIG;QACI,qBAAgB,GAAqB,IAAI,CAAC,eAAe,EAAE,CAAC;QA8BjE,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,KAAK,CAAC;IACrC,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAE7B,KAAK,CAAC,oBAAoB,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACI,iBAAiB;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAErD,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAe,CAAC;YAE5D,KAAK;iBACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC;iBAChD,OAAO,CAAC,IAAI,CAAC,EAAE;gBACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACzD,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;YAC3C,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;gBAC9E,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;aAChC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA9DQ;IADN,IAAI;wCAC4B;AAU1B;IADN,IAAI;4CACgC"}
@@ -38,7 +38,7 @@ export class Avatar extends BaseAvatar {
38
38
  }
39
39
  // size can be undefined since we default it in CSS only
40
40
  const size = this.size ?? 32;
41
- return (this.initials ??
41
+ return (this.initials ||
42
42
  getInitials(this.name, window.getComputedStyle(this).direction === 'rtl', {
43
43
  firstInitialOnly: size <= 16,
44
44
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../src/avatar/avatar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../src/avatar/avatar.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { html } from '@microsoft/fast-element';
1
+ import { html, ref } from '@microsoft/fast-element';
2
2
  const defaultIconTemplate = html `<svg
3
3
  width="1em"
4
4
  height="1em"
@@ -18,7 +18,7 @@ const defaultIconTemplate = html `<svg
18
18
  */
19
19
  export function avatarTemplate() {
20
20
  return html `
21
- <slot>${x => (x.name || x.initials ? x.generateInitials() : defaultIconTemplate)}</slot>
21
+ <slot ${ref('defaultSlot')}>${x => (x.name || x.initials ? x.generateInitials() : defaultIconTemplate)}</slot>
22
22
  <slot name="badge"></slot>
23
23
  `;
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.template.js","sourceRoot":"","sources":["../../../src/avatar/avatar.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGzE,MAAM,mBAAmB,GAAG,IAAI,CAAA;;;;;;;;;;;;OAYzB,CAAC;AAER;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,CAAG;YACJ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC;;GAEjF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAgC,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"avatar.template.js","sourceRoot":"","sources":["../../../src/avatar/avatar.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,IAAI,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAG9E,MAAM,mBAAmB,GAAG,IAAI,CAAA;;;;;;;;;;;;OAYzB,CAAC;AAER;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,CAAG;YACJ,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC;;GAEvG,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAgC,cAAc,EAAE,CAAC"}
@@ -979,6 +979,17 @@ export declare class BaseAnchor extends FASTElement {
979
979
  * @public
980
980
  */
981
981
  export declare class BaseAvatar extends FASTElement {
982
+ /**
983
+ * Signal to remove event listeners when the component is disconnected.
984
+ *
985
+ * @internal
986
+ */
987
+ private abortSignal?;
988
+ /**
989
+ * Reference to the default slot element.
990
+ * @internal
991
+ */
992
+ defaultSlot: HTMLSlotElement;
982
993
  /**
983
994
  * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
984
995
  *
@@ -1001,7 +1012,16 @@ export declare class BaseAvatar extends FASTElement {
1001
1012
  * HTML Attribute: name
1002
1013
  */
1003
1014
  initials?: string | undefined;
1015
+ connectedCallback(): void;
1004
1016
  constructor();
1017
+ disconnectedCallback(): void;
1018
+ /**
1019
+ * Removes any empty text nodes from the default slot when the slotted content changes.
1020
+ *
1021
+ * @param e - The event object
1022
+ * @internal
1023
+ */
1024
+ slotchangeHandler(): void;
1005
1025
  }
1006
1026
 
1007
1027
  /**
@@ -5139,6 +5139,40 @@ class BaseAvatar extends FASTElement {
5139
5139
  this.elementInternals = this.attachInternals();
5140
5140
  this.elementInternals.role = "img";
5141
5141
  }
5142
+ connectedCallback() {
5143
+ super.connectedCallback();
5144
+ this.slotchangeHandler();
5145
+ }
5146
+ disconnectedCallback() {
5147
+ this.abortSignal?.abort();
5148
+ this.abortSignal = void 0;
5149
+ super.disconnectedCallback();
5150
+ }
5151
+ /**
5152
+ * Removes any empty text nodes from the default slot when the slotted content changes.
5153
+ *
5154
+ * @param e - The event object
5155
+ * @internal
5156
+ */
5157
+ slotchangeHandler() {
5158
+ this.normalize();
5159
+ const elements = this.defaultSlot.assignedElements();
5160
+ if (!elements.length && !this.innerText.trim()) {
5161
+ const nodes = this.defaultSlot.assignedNodes();
5162
+ nodes.filter(node => node.nodeType === Node.TEXT_NODE).forEach(node => {
5163
+ this.removeChild(node);
5164
+ });
5165
+ }
5166
+ Updates.enqueue(() => {
5167
+ if (!this.abortSignal || this.abortSignal.signal.aborted) {
5168
+ this.abortSignal = new AbortController();
5169
+ }
5170
+ this.defaultSlot.addEventListener("slotchange", () => this.slotchangeHandler(), {
5171
+ once: true,
5172
+ signal: this.abortSignal.signal
5173
+ });
5174
+ });
5175
+ }
5142
5176
  }
5143
5177
  __decorateClass$L([attr], BaseAvatar.prototype, "name", 2);
5144
5178
  __decorateClass$L([attr], BaseAvatar.prototype, "initials", 2);
@@ -5214,7 +5248,7 @@ const _Avatar = class _Avatar extends BaseAvatar {
5214
5248
  return;
5215
5249
  }
5216
5250
  const size = this.size ?? 32;
5217
- return this.initials ?? getInitials(this.name, window.getComputedStyle(this).direction === "rtl", {
5251
+ return this.initials || getInitials(this.name, window.getComputedStyle(this).direction === "rtl", {
5218
5252
  firstInitialOnly: size <= 16
5219
5253
  });
5220
5254
  }
@@ -5279,7 +5313,7 @@ const styles$C = css`
5279
5313
 
5280
5314
  const defaultIconTemplate = html`<svg width="1em" height="1em" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" class="default-icon" fill="currentcolor" aria-hidden="true"><path d="M10 2a4 4 0 100 8 4 4 0 000-8zM7 6a3 3 0 116 0 3 3 0 01-6 0zm-2 5a2 2 0 00-2 2c0 1.7.83 2.97 2.13 3.8A9.14 9.14 0 0010 18c1.85 0 3.58-.39 4.87-1.2A4.35 4.35 0 0017 13a2 2 0 00-2-2H5zm-1 2a1 1 0 011-1h10a1 1 0 011 1c0 1.3-.62 2.28-1.67 2.95A8.16 8.16 0 0110 17a8.16 8.16 0 01-4.33-1.05A3.36 3.36 0 014 13z"></path></svg>`;
5281
5315
  function avatarTemplate() {
5282
- return html`<slot>${x => x.name || x.initials ? x.generateInitials() : defaultIconTemplate}</slot><slot name="badge"></slot>`;
5316
+ return html`<slot ${ref("defaultSlot")}>${x => x.name || x.initials ? x.generateInitials() : defaultIconTemplate}</slot><slot name="badge"></slot>`;
5283
5317
  }
5284
5318
  const template$E = avatarTemplate();
5285
5319