Releases: patternfly/patternfly-elements
@patternfly/pfe-core@4.0.0
Major Changes
-
c9bd577:
RovingTabindexController,ListboxController: constructor options were changed.
In particular, theinitItems(items: Item[])andsetActiveItem(item: Item)methods
were removed and replaced with thegetItems: () => Item[]constructor option, and
theatFocusedItemIndexaccessor.Before:
#tabindex = new RovingTabindexController(this); firstUpdated() { this.#tabindex.initItems(this.items); } updated(changed: PropertyValues<this>) { if (changed.has('activeItem')) { this.#tabindex.setActiveItem(this.activeItem); } }
After:
#tabindex = RovingTabindexController.of(this, { getItems: () => this.items, }); updated(changed: PropertyValues<this>) { if (changed.has('activeItem')) { this.#tabindex.atFocusedItemIndex = this.items.indexOf(this.activeItem); } }
For further migration guidance, please see the sources in
@patternfly/pfe-core,
especially:ATFocusController.ts,RovingTabindexController.ts, andListboxController.ts.
-
c9bd577: Removed global
pfeLogfeature -
c9bd577: Removed
window.PfeConfigglobal config object -
c9bd577: Removed global
auto-revealfeature -
c9bd577: Decorators: Added
@observes. Use it to add property change callback by
decorating them with the name of the property to observe@customElement("custom-button") class CustomButton extends LitElement { #internals = this.attachInternals(); @property({ type: Boolean }) disabled = false; @observes("disabled") protected disabledChanged() { this.#internals.ariaDisabled = this.disabled ? "true" : this.ariaDisabled ?? "false"; } }
Breaking change: This commit makes some changes to the internal APIs of the
pre-existing@observedobserver, most notably it changes the constructor
signature of thePropertyObserverControllerand associated functions. Most
users should not have to make any changes, but if you directly import and use
those functions, check the commit log to see how to update your call sites. -
c9bd577: Removed global
trackPerformancefeature
Minor Changes
-
c9bd577: ✨ Added
ActiveDescendantControllerThis controller implements the WAI-ARIA activedescendant pattern
for keyboard and screen-reader accessibility.#activedescendant = ActivedescendantController.of(this, { getItems: () => this.options, getItemsContainer: () => this.#listbox, getOrientation: () => "vertical", getActiveDescendantContainer: () => this.#input, getControlsElements: () => [this.#input, this.#button].filter((x) => !!x), setItemActive: (item, active) => void (item.active = active), });
-
c9bd577: ✨ Added
ComboboxControllerThis controller implements the WAI-ARIA combobox pattern for both
select-only and inline autocomplete comboboxes.#combobox = ComboboxController.of(this, { multi: this.multi, getItems: () => this.options, getFallbackLabel: () => this.accessibleLabel, getListboxElement: () => this._listbox ?? null, getToggleButton: () => this._toggleButton ?? null, getComboboxInput: () => this._toggleInput ?? null, isExpanded: () => this.expanded, requestShowListbox: () => void (this.expanded ||= true), requestHideListbox: () => void (this.expanded &&= false), setItemHidden: (item, hidden) => void (item.hidden = hidden), isItem: (item) => item instanceof PfOption, setItemActive: (item, active) => (item.active = active), setItemSelected: (item, selected) => (item.selected = selected), });
-
6d9045e:
InternalsController: added staticisSafariboolean flag -
c9bd577: Decorators: Added
@listen. Use it to attach element event listeners to
class methods.@customElement("custom-input") class CustomInput extends LitElement { @property({ type: Boolean }) dirty = false; @listen("keyup", { once: true }) protected onKeyup() { this.dirty = true; } }
Patch Changes
@patternfly/eslint-config-elements@4.0.0
@patternfly/elements@4.0.0
Major Changes
-
c9bd577:
<pf-icon>: removed thegetIconUrlstatic method, and replaced it with the
resolvestatic methodThe steps for overriding icon loading behaviour have changed. Before, you had to
return a string from thegetIconUrlmethod, or the second argument to
addIconSet. Now, both of those functions must return a Node, or any lit-html
renderable value, or a Promise thereof.Before:
PfIcon.addIconSet('local', (set, icon) => new URL(`/assets/icons/${set}-${icon}.js`)); // or PfIcon.getIconUrl = (set, icon) => new URL(`/assets/icons/${set}-${icon}.js`))
After:
PfIcon.addIconSet('local', (set, icon) => import(`/assets/icons/${set}-${icon}.js`)) .then(mod => mod.default); // or PfIcon.resolve = (set, icon) => import(`/assets/icons/${set}-${icon}.js`)) .then(mod => mod.default);
-
c9bd577:
<pf-icon>: removed thedefaultIconSetstatic field. -
c9bd577:
<pf-accordion>: RemovedBaseAccordion*classes, as well as staticisPanel,isHeader, andisAccordionmethods. Removed the optionalparentAccordionparameter toPfAccordion#expand(index). Renamed accordion event classes by adding thePfprefix:Before:
import { AccordionHeaderChangeEvent } from "@patternfly/elements/pf-accordion/pf-accordion.js"; addEventListener("change", function (event) { if (event instanceof AccordionHeaderChangeEvent) { // ... } });
After:
import { PfAccordionHeaderChangeEvent } from "@patternfly/elements/pf-accordion/pf-accordion.js"; addEventListener("change", function (event) { if (event instanceof PfAccordionHeaderChangeEvent) { // ... } });
-
c9bd577:
<pf-icon>: removed svg files, use@patternfly/iconsinstead -
c9bd577:
<pf-label>: when clicking close button,closeevent is fired.
Now, if that event is not cancelled, the label will remove itself from the document.To restore previous behaviour:
import { LabelCloseEvent } from "@patternfly/elements/pf-label/pf-label.js"; label.addEventListener("close", function (event) { if (event instanceof LabelCloseEvent) { event.preventDefault(); return false; } });
-
c9bd577:
<pf-clipboard-copy>: RemovedBaseClipboardCopyclass.
Reimplement (recommended) or extendPfClipboardCopy.
RenamesAvatarLoadEventtoPfAvatarLoadEventand moves it topf-avatar.js.Before:
import { ClipboardCopyCopiedEvent } from "@patternfly/elements/pf-clipboard-copy/BaseClipboardCopy.js"; addEventListener("copy", function (event) { if (event instanceof ClipboardCopyCopiedEvent) { // ... } });
After:
import { PfClipboardCopyCopiedEvent } from "@patternfly/elements/pf-clipboard-copy/pf-clipboard-copy.js"; addEventListener("copy", function (event) { if (event instanceof PfClipboardCopyCopiedEvent) { // ... } });
-
c9bd577:
<pf-icon>: RemovedBaseIconclass. Reimplement (recommended) or extendPfIcon. -
c9bd577:
<pf-label>: RemovedBaseLabelclass. Reimplement (recommended) or extendPfLabel. -
c9bd577:
<pf-switch>: RemovedBaseSwitchclass. Reimplement (recommended) or extendPfSwitch. -
c9bd577:
<pf-avatar>: RemovedBaseAvatarclass. Reimplement (recommended) or extendPfAvatar.
RenamesAvatarLoadEventtoPfAvatarLoadEventand moves it topf-avatar.js.Before:
import { AvatarLoadEvent } from "@patternfly/elements/pf-avatar/BaseAvatar.js"; addEventListener("load", function (event) { if (event instanceof AvatarLoadEvent) { // ... } });
After:
import { PfAvatarLoadEvent } from "@patternfly/elements/pf-avatar/pf-avatar.js"; addEventListener("load", function (event) { if (event instanceof PfAvatarLoadEvent) { // ... } });
-
c9bd577:
<pf-badge>: RemovedBaseBadgeclass. Reimplement (recommended) or extendPfBadge. -
c9bd577:
<pf-button>: RemovedBaseButtonclass. Reimplement (recommended) or extendPfButton. -
c9bd577:
<pf-code-block>: RemovedBaseCodeBlockclass. Reimplement (recommended) or extendPfCodeBlock. -
c9bd577:
<pf-spinner>: RemovedBaseSpinnerclass. Reimplement (recommended) or extendPfSpinner. -
c9bd577:
<pf-tabs>: RemoveBaseTabs. UseTabsAriaController, etc. to reimplement
your elements which extend it, or extend fromPfTabsinstead. -
c9bd577:
<pf-tile>: RemovedBaseTileclass. Reimplement (recommended) or extendPfTile. -
c9bd577:
<pf-tooltip>: RemovedBaseTooltipclass. Reimplement (recommended) or extendPfTooltip. -
c9bd577:
<pf-card>: RemovesBaseCardbase class. If your project extendsBaseCard, we recommend extendingLitElementinstead and re-implementing card's properties. Alternately, extend fromPfCard.
Minor Changes
-
c9bd577:
<pf-card>: addedtitleslot, for when the title is not inline with any slotted header actions -
c9bd577: ✨ Added
<pf-select variant="typeahead">A typeahead select is an inline-autocomplete combobox.
<label for="state">State</label> <pf-select id="state" variant="typeahead" placeholder="Select a state"> <pf-option value="Alabama" description="The heart of Dixie"></pf-option> <pf-option value="Florida" description="The sunshine state" disabled ></pf-option> <pf-option value="New Jersey"></pf-option> <pf-option value="New York"></pf-option> <pf-option value="New Mexico"></pf-option> <pf-option value="North Carolina"></pf-option> </pf-select>
-
587d957:
<pf-button>: Addedhrefattribute to<pf-button variant="link">
Patch Changes
- c9bd577: updated dependencies
- 3e9d785:
<pf-select>: prevent bug when select is in a deeply nested in shadow root - 4995067:
<pf-back-to-top>: fix hover color - Updated dependencies [c9bd577]
- Updated dependencies [c9bd577]
- Updated dependencies [c9bd577]
- Updated dependencies [c9bd577]
- Updated dependencies [6d9045e]
- Updated dependencies [c9bd577]
- Updated dependencies [c9bd577]
- Updated dependencies [c9bd577]
- Updated dependencies [c9bd577]
- Updated dependencies [c9bd577]
- Updated dependencies [c9bd577]
- Updated dependencies [c9bd577]
- Updated dependencies [c9bd577]
- @patternfly/pfe-core@4.0.0
@patternfly/create-element@1.0.3
@patternfly/pfe-tools@2.0.3
Patch Changes
- aca8409: React: ensure that only classes which are exported get wrapped
@patternfly/pfe-tools@2.0.2
@patternfly/elements@3.0.2
Patch Changes
- 9702278:
<pf-clipboard-copy>: corrected size of copy button
@patternfly/pfe-tools@2.0.1
@patternfly/eslint-plugin-elements@2.0.0
Major Changes
- 65079fb: Provide ESLint flat config. Upgrade to ESLint 9.0 to use.