Skip to content

Commit

Permalink
add size attribute to listbox element (microsoft#5392)
Browse files Browse the repository at this point in the history
* replace key values with consts in listbox

* sort listbox class properties for better readability

* make listbox abstract

* add deprecated typeaheadExpired property fallback

* update api-report.md

* update tsdoc blocks for listbox

* add size tests and fixtures for listbox

* fix option styles for size attribute

* update spec

* Change files

* move internal listbox stylesheet to components

* update size description in listbox schema and definition
  • Loading branch information
radium-v authored Nov 23, 2021
1 parent 208eb38 commit caa9565
Show file tree
Hide file tree
Showing 22 changed files with 763 additions and 371 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "add `size` attribute to listbox element",
"packageName": "@microsoft/fast-components",
"email": "john.kreitlow@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "add `size` attribute to listbox element",
"packageName": "@microsoft/fast-foundation",
"email": "john.kreitlow@microsoft.com",
"dependentChangeType": "patch"
}
7 changes: 6 additions & 1 deletion packages/web-components/fast-components/__test__/harness.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,12 @@ export const mochaHooks = {
},

async beforeEach() {
this.page = await this.browser.newPage();
this.page = await this.browser.newPage({
viewport: {
width: 1920,
height: 1080,
},
});
const fixtureUrl = FixtureURL || `http://localhost:${expressPort}/${fixture}`;
await this.page.goto(fixtureUrl);
},
Expand Down
51 changes: 36 additions & 15 deletions packages/web-components/fast-components/docs/api-report.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,10 @@ import { Flipper } from '@microsoft/fast-foundation';
import { FlipperOptions } from '@microsoft/fast-foundation';
import { FoundationElement } from '@microsoft/fast-foundation';
import { FoundationElementDefinition } from '@microsoft/fast-foundation';
import { FoundationElementTemplate } from '@microsoft/fast-foundation';
import { HorizontalScroll as HorizontalScroll_2 } from '@microsoft/fast-foundation';
import { HorizontalScrollOptions } from '@microsoft/fast-foundation';
import { Listbox } from '@microsoft/fast-foundation';
import { ListboxElement } from '@microsoft/fast-foundation';
import { ListboxOption } from '@microsoft/fast-foundation';
import { ListboxOptionOptions } from '@microsoft/fast-foundation';
import { Menu } from '@microsoft/fast-foundation';
Expand Down Expand Up @@ -190,7 +191,15 @@ export const allComponents: {
fastDivider: (overrideDefinition?: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").FoundationElementDefinition> | undefined) => import("@microsoft/fast-foundation").FoundationElementRegistry<import("@microsoft/fast-foundation").FoundationElementDefinition, typeof import("@microsoft/fast-foundation").Divider>;
fastFlipper: (overrideDefinition?: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").FlipperOptions> | undefined) => import("@microsoft/fast-foundation").FoundationElementRegistry<import("@microsoft/fast-foundation").FlipperOptions, import("@microsoft/fast-element").Constructable<import("@microsoft/fast-foundation").FoundationElement>>;
fastHorizontalScroll: (overrideDefinition?: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").HorizontalScrollOptions> | undefined) => import("@microsoft/fast-foundation").FoundationElementRegistry<import("@microsoft/fast-foundation").HorizontalScrollOptions, import("@microsoft/fast-element").Constructable<import("@microsoft/fast-foundation").FoundationElement>>;
fastListbox: (overrideDefinition?: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").FoundationElementDefinition> | undefined) => import("@microsoft/fast-foundation").FoundationElementRegistry<import("@microsoft/fast-foundation").FoundationElementDefinition, typeof import("@microsoft/fast-foundation").Listbox>;
fastListbox: (overrideDefinition?: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<{
baseName: string;
template: (context: import("@microsoft/fast-foundation").ElementDefinitionContext, definition: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").FoundationElementDefinition>) => import("@microsoft/fast-element").ViewTemplate<import("@microsoft/fast-foundation").ListboxElement, any>;
styles: (context: import("@microsoft/fast-foundation").ElementDefinitionContext, definition: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").FoundationElementDefinition>) => import("@microsoft/fast-element").ElementStyles;
}> | undefined) => import("@microsoft/fast-foundation").FoundationElementRegistry<{
baseName: string;
template: (context: import("@microsoft/fast-foundation").ElementDefinitionContext, definition: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").FoundationElementDefinition>) => import("@microsoft/fast-element").ViewTemplate<import("@microsoft/fast-foundation").ListboxElement, any>;
styles: (context: import("@microsoft/fast-foundation").ElementDefinitionContext, definition: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").FoundationElementDefinition>) => import("@microsoft/fast-element").ElementStyles;
}, typeof Listbox>;
fastOption: (overrideDefinition?: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").FoundationElementDefinition> | undefined) => import("@microsoft/fast-foundation").FoundationElementRegistry<import("@microsoft/fast-foundation").FoundationElementDefinition, typeof import("@microsoft/fast-foundation").ListboxOption>;
fastMenu: (overrideDefinition?: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").FoundationElementDefinition> | undefined) => import("@microsoft/fast-foundation").FoundationElementRegistry<import("@microsoft/fast-foundation").FoundationElementDefinition, typeof import("@microsoft/fast-foundation").Menu>;
fastMenuItem: (overrideDefinition?: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").MenuItemOptions> | undefined) => import("@microsoft/fast-foundation").FoundationElementRegistry<import("@microsoft/fast-foundation").MenuItemOptions, import("@microsoft/fast-element").Constructable<import("@microsoft/fast-foundation").FoundationElement>>;
Expand Down Expand Up @@ -561,7 +570,15 @@ export const fastFlipper: (overrideDefinition?: import("@microsoft/fast-foundati
export const fastHorizontalScroll: (overrideDefinition?: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<HorizontalScrollOptions> | undefined) => import("@microsoft/fast-foundation").FoundationElementRegistry<HorizontalScrollOptions, import("@microsoft/fast-element").Constructable<import("@microsoft/fast-foundation").FoundationElement>>;

// @public
export const fastListbox: (overrideDefinition?: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").FoundationElementDefinition> | undefined) => import("@microsoft/fast-foundation").FoundationElementRegistry<import("@microsoft/fast-foundation").FoundationElementDefinition, typeof Listbox>;
export const fastListbox: (overrideDefinition?: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<{
baseName: string;
template: (context: import("@microsoft/fast-foundation").ElementDefinitionContext, definition: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").FoundationElementDefinition>) => import("@microsoft/fast-element").ViewTemplate<ListboxElement, any>;
styles: (context: import("@microsoft/fast-foundation").ElementDefinitionContext, definition: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").FoundationElementDefinition>) => ElementStyles;
}> | undefined) => import("@microsoft/fast-foundation").FoundationElementRegistry<{
baseName: string;
template: (context: import("@microsoft/fast-foundation").ElementDefinitionContext, definition: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").FoundationElementDefinition>) => import("@microsoft/fast-element").ViewTemplate<ListboxElement, any>;
styles: (context: import("@microsoft/fast-foundation").ElementDefinitionContext, definition: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").FoundationElementDefinition>) => ElementStyles;
}, typeof Listbox>;

// @public
export const fastMenu: (overrideDefinition?: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<import("@microsoft/fast-foundation").FoundationElementDefinition> | undefined) => import("@microsoft/fast-foundation").FoundationElementRegistry<import("@microsoft/fast-foundation").FoundationElementDefinition, typeof Menu>;
Expand Down Expand Up @@ -741,12 +758,16 @@ export interface InteractiveSwatchSet {
// @public
export function isDark(color: Swatch): boolean;

export { Listbox }
// @public
export class Listbox extends ListboxElement {
// @internal
protected sizeChanged(prev: number | unknown, next: number): void;
}

export { ListboxOption }

// @public
export const listboxStyles: (context: ElementDefinitionContext, definition: FoundationElementDefinition) => ElementStyles;
export const listboxStyles: FoundationElementTemplate<ElementStyles>;

export { Menu }

Expand Down Expand Up @@ -979,7 +1000,7 @@ export type NumberFieldAppearance = "filled" | "outline";
export const numberFieldStyles: (context: ElementDefinitionContext, definition: NumberFieldOptions) => ElementStyles;

// @public
export const optionStyles: (context: ElementDefinitionContext, definition: ListboxOptionOptions) => ElementStyles;
export const optionStyles: FoundationElementTemplate<ElementStyles, ListboxOptionOptions>;

// @public
export interface Palette<T extends Swatch = Swatch> {
Expand Down Expand Up @@ -1260,15 +1281,15 @@ export const verticalSliderLabelStyles: ElementStyles;
//
// dist/dts/color/palette.d.ts:48:5 - (ae-forgotten-export) The symbol "create" needs to be exported by the entry point index.d.ts
// dist/dts/color/palette.d.ts:49:5 - (ae-forgotten-export) The symbol "from" needs to be exported by the entry point index.d.ts
// dist/dts/custom-elements.d.ts:74:5 - (ae-incompatible-release-tags) The symbol "fastButton" is marked as @public, but its signature references "Button" which is marked as @internal
// dist/dts/custom-elements.d.ts:86:5 - (ae-incompatible-release-tags) The symbol "fastCard" is marked as @public, but its signature references "Card" which is marked as @internal
// dist/dts/custom-elements.d.ts:92:5 - (ae-incompatible-release-tags) The symbol "fastDesignSystemProvider" is marked as @public, but its signature references "DesignSystemProvider" which is marked as @internal
// dist/dts/custom-elements.d.ts:94:5 - (ae-incompatible-release-tags) The symbol "fastDisclosure" is marked as @public, but its signature references "Disclosure" which is marked as @internal
// dist/dts/custom-elements.d.ts:112:5 - (ae-incompatible-release-tags) The symbol "fastSearch" is marked as @public, but its signature references "Search" which is marked as @internal
// dist/dts/custom-elements.d.ts:116:5 - (ae-incompatible-release-tags) The symbol "fastSliderLabel" is marked as @public, but its signature references "SliderLabel" which is marked as @internal
// dist/dts/custom-elements.d.ts:121:5 - (ae-incompatible-release-tags) The symbol "fastTextArea" is marked as @public, but its signature references "TextArea" which is marked as @internal
// dist/dts/custom-elements.d.ts:122:5 - (ae-incompatible-release-tags) The symbol "fastTextField" is marked as @public, but its signature references "TextField" which is marked as @internal
// dist/dts/custom-elements.d.ts:124:5 - (ae-incompatible-release-tags) The symbol "fastToolbar" is marked as @public, but its signature references "Toolbar" which is marked as @internal
// dist/dts/custom-elements.d.ts:75:5 - (ae-incompatible-release-tags) The symbol "fastButton" is marked as @public, but its signature references "Button" which is marked as @internal
// dist/dts/custom-elements.d.ts:87:5 - (ae-incompatible-release-tags) The symbol "fastCard" is marked as @public, but its signature references "Card" which is marked as @internal
// dist/dts/custom-elements.d.ts:93:5 - (ae-incompatible-release-tags) The symbol "fastDesignSystemProvider" is marked as @public, but its signature references "DesignSystemProvider" which is marked as @internal
// dist/dts/custom-elements.d.ts:95:5 - (ae-incompatible-release-tags) The symbol "fastDisclosure" is marked as @public, but its signature references "Disclosure" which is marked as @internal
// dist/dts/custom-elements.d.ts:121:5 - (ae-incompatible-release-tags) The symbol "fastSearch" is marked as @public, but its signature references "Search" which is marked as @internal
// dist/dts/custom-elements.d.ts:125:5 - (ae-incompatible-release-tags) The symbol "fastSliderLabel" is marked as @public, but its signature references "SliderLabel" which is marked as @internal
// dist/dts/custom-elements.d.ts:130:5 - (ae-incompatible-release-tags) The symbol "fastTextArea" is marked as @public, but its signature references "TextArea" which is marked as @internal
// dist/dts/custom-elements.d.ts:131:5 - (ae-incompatible-release-tags) The symbol "fastTextField" is marked as @public, but its signature references "TextField" which is marked as @internal
// dist/dts/custom-elements.d.ts:133:5 - (ae-incompatible-release-tags) The symbol "fastToolbar" is marked as @public, but its signature references "Toolbar" which is marked as @internal

// (No @packageDocumentation comment for this package)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ import type { Card } from "./card/index";
import type { DesignSystemProvider } from "./design-system-provider/index";
import type { Disclosure } from "./disclosure/index";
import type { HorizontalScroll } from "./horizontal-scroll/index";
import type { Listbox } from "./listbox/index";
import type { Search } from "./search/index";
import type { SliderLabel } from "./slider-label/index";
import type { TextArea } from "./text-area/index";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import { css, ElementStyles } from "@microsoft/fast-element";
import { css } from "@microsoft/fast-element";
import type { ElementStyles } from "@microsoft/fast-element";
import {
disabledCursor,
display,
ElementDefinitionContext,
focusVisible,
forcedColorsStylesheetBehavior,
} from "@microsoft/fast-foundation";
import type {
FoundationElementTemplate,
ListboxOptionOptions,
} from "@microsoft/fast-foundation";
import { SystemColors } from "@microsoft/fast-web-utilities";
Expand Down Expand Up @@ -35,13 +38,10 @@ import { heightNumber } from "../styles/size";
* Styles for Option
* @public
*/
export const optionStyles: (
context: ElementDefinitionContext,
definition: ListboxOptionOptions
) => ElementStyles = (
context: ElementDefinitionContext,
definition: ListboxOptionOptions
) =>
export const optionStyles: FoundationElementTemplate<
ElementStyles,
ListboxOptionOptions
> = (context, definition) =>
css`
${display("inline-flex")} :host {
align-items: center;
Expand All @@ -51,6 +51,7 @@ export const optionStyles: (
box-sizing: border-box;
color: ${neutralForegroundRest};
cursor: pointer;
flex: 0 0 auto;
fill: currentcolor;
font-size: ${typeRampBaseFontSize};
height: calc(${heightNumber} * 1px);
Expand Down Expand Up @@ -85,11 +86,7 @@ export const optionStyles: (
color: ${foregroundOnAccentActive};
}
:host(:not([aria-selected="true"]):hover) {
background: ${neutralFillHover};
color: ${neutralForegroundRest};
}
:host(:not([aria-selected="true"]):hover),
:host(:not([aria-selected="true"]):active) {
background: ${neutralFillHover};
color: ${neutralForegroundRest};
Expand Down Expand Up @@ -130,7 +127,6 @@ export const optionStyles: (
::slotted([slot="start"]) {
margin-inline-end: 1ch;
}
`.withBehaviors(
forcedColorsStylesheetBehavior(
css`
Expand Down
Loading

0 comments on commit caa9565

Please sign in to comment.