Skip to content

Commit c207e14

Browse files
authored
chore: add base class for menu-list and radio-group (microsoft#35965)
1 parent f1902b4 commit c207e14

9 files changed

Lines changed: 1034 additions & 998 deletions

File tree

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"type": "prerelease",
3+
"comment": "add base classes for menu-list and radio-group",
4+
"packageName": "@fluentui/web-components",
5+
"email": "machi@microsoft.com",
6+
"dependentChangeType": "patch"
7+
}

packages/web-components/docs/web-components.api.md

Lines changed: 91 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -731,6 +731,34 @@ export class BaseField extends FASTElement {
731731
slottedInputsChanged(prev: SlottableInput[] | undefined, next: SlottableInput[] | undefined): void;
732732
}
733733

734+
// @public
735+
export class BaseMenuList extends FASTElement {
736+
constructor();
737+
// @internal (undocumented)
738+
connectedCallback(): void;
739+
// @internal (undocumented)
740+
disconnectedCallback(): void;
741+
// @internal
742+
elementInternals: ElementInternals;
743+
focus(): void;
744+
handleChange(source: any, propertyName: string): void;
745+
// @internal
746+
handleFocusOut: (e: FocusEvent) => void;
747+
// @internal (undocumented)
748+
handleMenuKeyDown(e: KeyboardEvent): void | boolean;
749+
protected isMenuItemElement: (el: Element) => el is HTMLElement;
750+
// @internal (undocumented)
751+
readonly isNestedMenu: () => boolean;
752+
// @internal (undocumented)
753+
items: HTMLElement[];
754+
// (undocumented)
755+
protected itemsChanged(oldValue: HTMLElement[], newValue: HTMLElement[]): void;
756+
// (undocumented)
757+
protected menuItems: Element[] | undefined;
758+
// (undocumented)
759+
protected setItems(): void;
760+
}
761+
734762
// @public
735763
export class BaseProgressBar extends FASTElement {
736764
constructor();
@@ -757,6 +785,67 @@ export class BaseProgressBar extends FASTElement {
757785
protected valueChanged(prev: number | undefined, next: number | undefined): void;
758786
}
759787

788+
// @public
789+
export class BaseRadioGroup extends FASTElement {
790+
constructor();
791+
changeHandler(e: Event): boolean | void;
792+
// @internal
793+
protected checkedIndex: number;
794+
// @internal
795+
protected checkedIndexChanged(prev: number | undefined, next: number): void;
796+
// @internal
797+
checkRadio(index?: number, shouldEmit?: boolean): void;
798+
checkValidity(): boolean;
799+
// @internal
800+
clickHandler(e: MouseEvent): boolean | void;
801+
disabled: boolean;
802+
// @internal
803+
protected disabledChanged(prev?: boolean, next?: boolean): void;
804+
// (undocumented)
805+
disabledRadioHandler(e: CustomEvent): void;
806+
// @internal
807+
elementInternals: ElementInternals;
808+
// @internal
809+
get enabledRadios(): Radio[];
810+
// @internal
811+
focus(): void;
812+
// @internal
813+
focusinHandler(e: FocusEvent): boolean | void;
814+
// @internal
815+
focusoutHandler(e: FocusEvent): boolean | void;
816+
static formAssociated: boolean;
817+
// (undocumented)
818+
formResetCallback(): void;
819+
initialValue?: string;
820+
initialValueChanged(prev: string | undefined, next: string | undefined): void;
821+
// @internal
822+
keydownHandler(e: KeyboardEvent): boolean | void;
823+
name: string;
824+
// @internal
825+
protected nameChanged(prev: string | undefined, next: string | undefined): void;
826+
orientation?: RadioGroupOrientation;
827+
// @internal
828+
orientationChanged(prev: RadioGroupOrientation | undefined, next: RadioGroupOrientation | undefined): void;
829+
radios: Radio[];
830+
radiosChanged(prev: Radio[] | undefined, next: Radio[] | undefined): void;
831+
reportValidity(): boolean;
832+
required: boolean;
833+
// (undocumented)
834+
requiredChanged(prev: boolean, next: boolean): void;
835+
// @internal
836+
setFormValue(value: File | string | FormData | null, state?: File | string | FormData | null): void;
837+
// @internal
838+
setValidity(flags?: Partial<ValidityState>, message?: string, anchor?: HTMLElement): void;
839+
// @internal
840+
slottedRadios: Radio[];
841+
slottedRadiosChanged(prev: Radio[] | undefined, next: Radio[]): void;
842+
// @internal
843+
get validationMessage(): string;
844+
get validity(): ValidityState;
845+
get value(): string | null;
846+
set value(next: string | null);
847+
}
848+
760849
// @public
761850
export class BaseRatingDisplay extends FASTElement {
762851
constructor();
@@ -3282,31 +3371,7 @@ export const MenuItemStyles: ElementStyles;
32823371
export const MenuItemTemplate: ElementViewTemplate<MenuItem>;
32833372

32843373
// @public
3285-
export class MenuList extends FASTElement {
3286-
constructor();
3287-
// @internal (undocumented)
3288-
connectedCallback(): void;
3289-
// @internal (undocumented)
3290-
disconnectedCallback(): void;
3291-
// @internal
3292-
elementInternals: ElementInternals;
3293-
focus(): void;
3294-
handleChange(source: any, propertyName: string): void;
3295-
// @internal
3296-
handleFocusOut: (e: FocusEvent) => void;
3297-
// @internal (undocumented)
3298-
handleMenuKeyDown(e: KeyboardEvent): void | boolean;
3299-
protected isMenuItemElement: (el: Element) => el is HTMLElement;
3300-
// @internal (undocumented)
3301-
readonly isNestedMenu: () => boolean;
3302-
// @internal (undocumented)
3303-
items: HTMLElement[];
3304-
// (undocumented)
3305-
protected itemsChanged(oldValue: HTMLElement[], newValue: HTMLElement[]): void;
3306-
// (undocumented)
3307-
protected menuItems: Element[] | undefined;
3308-
// (undocumented)
3309-
protected setItems(): void;
3374+
export class MenuList extends BaseMenuList {
33103375
}
33113376

33123377
// @public (undocumented)
@@ -3452,64 +3517,7 @@ export type RadioControl = Pick<HTMLInputElement, 'checked' | 'disabled' | 'focu
34523517
export const RadioDefinition: FASTElementDefinition<typeof Radio>;
34533518

34543519
// @public
3455-
export class RadioGroup extends FASTElement {
3456-
constructor();
3457-
changeHandler(e: Event): boolean | void;
3458-
// @internal
3459-
protected checkedIndex: number;
3460-
// @internal
3461-
protected checkedIndexChanged(prev: number | undefined, next: number): void;
3462-
// @internal
3463-
checkRadio(index?: number, shouldEmit?: boolean): void;
3464-
checkValidity(): boolean;
3465-
// @internal
3466-
clickHandler(e: MouseEvent): boolean | void;
3467-
disabled: boolean;
3468-
// @internal
3469-
protected disabledChanged(prev?: boolean, next?: boolean): void;
3470-
// (undocumented)
3471-
disabledRadioHandler(e: CustomEvent): void;
3472-
// @internal
3473-
elementInternals: ElementInternals;
3474-
// @internal
3475-
get enabledRadios(): Radio[];
3476-
// @internal
3477-
focus(): void;
3478-
// @internal
3479-
focusinHandler(e: FocusEvent): boolean | void;
3480-
// @internal
3481-
focusoutHandler(e: FocusEvent): boolean | void;
3482-
static formAssociated: boolean;
3483-
// (undocumented)
3484-
formResetCallback(): void;
3485-
initialValue?: string;
3486-
initialValueChanged(prev: string | undefined, next: string | undefined): void;
3487-
// @internal
3488-
keydownHandler(e: KeyboardEvent): boolean | void;
3489-
name: string;
3490-
// @internal
3491-
protected nameChanged(prev: string | undefined, next: string | undefined): void;
3492-
orientation?: RadioGroupOrientation;
3493-
// @internal
3494-
orientationChanged(prev: RadioGroupOrientation | undefined, next: RadioGroupOrientation | undefined): void;
3495-
radios: Radio[];
3496-
radiosChanged(prev: Radio[] | undefined, next: Radio[] | undefined): void;
3497-
reportValidity(): boolean;
3498-
required: boolean;
3499-
// (undocumented)
3500-
requiredChanged(prev: boolean, next: boolean): void;
3501-
// @internal
3502-
setFormValue(value: File | string | FormData | null, state?: File | string | FormData | null): void;
3503-
// @internal
3504-
setValidity(flags?: Partial<ValidityState>, message?: string, anchor?: HTMLElement): void;
3505-
// @internal
3506-
slottedRadios: Radio[];
3507-
slottedRadiosChanged(prev: Radio[] | undefined, next: Radio[]): void;
3508-
// @internal
3509-
get validationMessage(): string;
3510-
get validity(): ValidityState;
3511-
get value(): string | null;
3512-
set value(next: string | null);
3520+
export class RadioGroup extends BaseRadioGroup {
35133521
}
35143522

35153523
// @public

packages/web-components/src/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ export {
178178
roleForMenuItem,
179179
} from './menu-item/index.js';
180180
export type { MenuItemColumnCount, MenuItemOptions } from './menu-item/index.js';
181-
export { MenuList, MenuListDefinition, MenuListStyles, MenuListTemplate } from './menu-list/index.js';
181+
export { BaseMenuList, MenuList, MenuListDefinition, MenuListStyles, MenuListTemplate } from './menu-list/index.js';
182182
export { Menu, MenuDefinition, MenuStyles, MenuTemplate } from './menu/index.js';
183183
export {
184184
DropdownOption,
@@ -201,6 +201,7 @@ export {
201201
ProgressBarValidationState,
202202
} from './progress-bar/index.js';
203203
export {
204+
BaseRadioGroup,
204205
RadioGroup,
205206
RadioGroupDefinition,
206207
RadioGroupOrientation,

packages/web-components/src/menu-list/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
export { BaseMenuList } from './menu-list.base.js';
12
export { MenuList } from './menu-list.js';
23
export { template as MenuListTemplate } from './menu-list.template.js';
34
export { styles as MenuListStyles } from './menu-list.styles.js';

0 commit comments

Comments
 (0)