Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(core): new decorators @listen and @observes #2807

Merged
merged 15 commits into from
Jul 18, 2024

Conversation

bennypowers
Copy link
Member

What I did

  1. added @listen decorator for element event listeners
  2. added @observes decorator for change callbacks

Testing Instructions

  1. unit tests, manual testing for refactored elements

Notes to Reviewers

  1. this will be useful in rhds as well

Copy link

changeset-bot bot commented Jul 9, 2024

🦋 Changeset detected

Latest commit: d763686

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
@patternfly/pfe-core Major
@patternfly/elements Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions github-actions bot added the functionality Functionality, typically pertaining to the JavaScript. label Jul 9, 2024
@github-actions github-actions bot added the AT passed Automated testing has passed label Jul 9, 2024
Copy link
Contributor

github-actions bot commented Jul 9, 2024

Deploy Preview for patternfly-elements ready!

Name Link
🔨 Latest commit 8464c2c
😎 Deploy Preview https://deploy-preview-2807--patternfly-elements.netlify.app/

To edit notification comments on pull requests, go to your Netlify site settings.

Copy link
Contributor

github-actions bot commented Jul 9, 2024

SSR Test Run for 88b059e: Report

@github-actions github-actions bot added the tests Related to testing label Jul 10, 2024
Copy link
Contributor

SSR Test Run for f6a2a85: Report

Copy link
Contributor

SSR Test Run for fb311b1: Report

Copy link
Contributor

SSR Test Run for 5238dd2: Report

Copy link
Contributor

SSR Test Run for 74b5961: Report

Copy link
Contributor

SSR Test Run for ac4ec86: Report

@bennypowers bennypowers added this to the PatternFly Elements 4 milestone Jul 11, 2024
@bennypowers bennypowers self-assigned this Jul 11, 2024
Copy link
Contributor

SSR Test Run for f03a05d: Report

Copy link
Contributor

SSR Test Run for 85c6729: Report

Copy link
Contributor

SSR Test Run for 8464c2c: Report

@bennypowers bennypowers merged commit aca9130 into staging/4.0 Jul 18, 2024
12 of 13 checks passed
@bennypowers bennypowers deleted the feat/core/decorators/listen-observes branch July 18, 2024 10:27
bennypowers added a commit that referenced this pull request Aug 16, 2024
* fix(avatar)!: remove BaseAvatar (#2630)

* fix(avatar)!: remove BaseAvatar

Closes #2617
Closes #2575
Closes #2349

* fix(avatar): update css

* fix(avatar)!: rename AvatarLoadEvent => PfAvatarLoadEvent

* fix(clipboard-copy)!: remove BaseClipboardCopy (#2635)

* fix(clipboard-copy)!: remove BaseClipboardCopy

Closes #2611

* fix(clipboard-copy): use pfv4 styles

* fix(clipboard-copy)!: rename ClipboardCopyCopiedEvent to PfClipboardCopyCopiedEvent

* fix(switch)!: remove BaseSwitch (#2634)

* fix(switch)!: remove BaseSwitch

Closes #2618

* fix(switch): remove extra semicolon

* Merge branch 'staging/4.0' into fix/switch/remove-base

* fix(switch): svg namespace

---------

Co-authored-by: Steven Spriggs <[email protected]>

* fix(code-block)!: remove BaseCodeBlock (#2633)

Closes #2613

Co-authored-by: Steven Spriggs <[email protected]>

* fix(label)!: remove BaseLabel (#2632)

* fix(label)!: remove BaseLabel

Closes #2620

* feat(label): self-remove on close

* test(label): update tests

* fix(label): correct font-size unit, include missing pf global var

* docs(label): fix accesibility demo

* fix(label): removes the removal of element and only triggers close event

* fix(label): undo last commit, see the example in the changeset

---------

Co-authored-by: Steven Spriggs <[email protected]>

* fix(badge)!: remove BaseBadge (#2629)

Closes #2619

* fix(spinner)!: remove BaseSpinner (#2627)

Closes #2614

Co-authored-by: Steven Spriggs <[email protected]>

* fix(tile)!: remove BaseTile (#2625)

Co-authored-by: Steven Spriggs <[email protected]>

* fix(tooltip)!: remove BaseTooltip (#2628)

Closes #2615

Co-authored-by: Steven Spriggs <[email protected]>

* feat(card)!: remove BaseCard (#2586)

* fix(card): moving styles and code from baseclass

* chore: changset

* feat(card): removing basecard class, styles

* fix(card): remove unused basecard import

* Update .changeset/sharp-spiders-float.md

Co-authored-by: Benny Powers <[email protected]>

* docs: make changeset major

* fix(card): make slot controller private

* feat(card): title slot, header actions

---------

Co-authored-by: Benny Powers <[email protected]>
Co-authored-by: Benny Powers <[email protected]>

* fix(button)!: remove BaseButton (#2631)

* fix(tabs)!: remove BaseTabs (#2745)

closes #2624

* fix(button): keyboard focus

* fix(switch): revert bad merge from BaseSwitch

* fix(icon)!: remove svg files (#2763)

* fix(icon)!: remove BaseIcon (#2636)

* fix(icon)!: remove BaseIcon

Closes #2621

* docs: jsdoc

* fix(icon): base styles

* docs: addIconSet jsdoc

Co-authored-by: Steven Spriggs <[email protected]>

* docs: jsdoc for getIconUrl

Co-authored-by: Steven Spriggs <[email protected]>

* style: lint

* fix: remove baseicon from bad merge

---------

Co-authored-by: Steven Spriggs <[email protected]>

* fix(accordion)!: remove BaseAccordion (#2764)

* fix(accordion)!: remove BaseAccordion

Closes #2612

fix(accordion): expand logic

refactor(accordion): prevent circular imports

* feat(tools): querySnapshot test helper

* test(accordion): fix some tests

* fix(accordion): single attribute

* feat(tools): ts transform to add static version to elements (#2768)

* fix(icon)!: remove getIconUrl for webpack's sake (#2766)

* fix(icon)!: remove getIconUrl for webpack's sake

* test(icon): refactor tests

* chore: update icons

* docs(icon): fix custom sets demo

* chore: update rhds dep

* feat!: ssr (#2762)

* fix(core)!: remove side effects from core import

Removes `window.PfeConfig` and auto-reveal features
Adds server checks to `createContextWithRoot`

* feat(tools): ssr test page

* test(accordion): ssr tests

* test(avatar): ssr tests

* test(back-to-top): ssr

* test(background-image): ssr

* test(badge): ssr

* test(banner): ssr

* test(button): ssr

* test(card): ssr

* test(chip): ssr

* test(clipboard-copy): ssr

* test(code-block): ssr

* test(dropdown): ssr

* test(icon): ssr

* test(jump-links): ssr

* test(label): ssr

* test(modal): ssr

* test(panel): ssr

* test(popover): ssr

* test(progress): ssr

* test(progress-stepper): ssr

* test(select): ssr

* test(spinner): ssr

* test(switch): ssr

* test(table): ssr

* test(tabs): ssr

* test(text-area): ssr

* test(text-area): ssr

* test(tile): ssr

* test(timestamp): ssr

* test(tooltip): ssr

* feat(create-element): ssr tests

* feat(tools): automatic ssr demos

* fix(tools): shim module

* docs: changesets

* test: remove cruft

* fix(tools): ssr error reports

* test: playwright config for ssr

* chore: ssr test workflow

* fix(tools): ssr error status message

* chore: ssr test workflow

* chore: ssr test workflow

* chore: ignore reports

* fix(accordion): ssrability

* fix(back-to-top): ssrability

* docs: jsdoc for ssr tests

* chore: test workflow in ci

* fix(core): fix Logger for ssr

* style: whitespace

* chore: better elements build

* fix(core): more ssr-able controllers

* test(back-to-top): ssrable demos

* fix(tools): redirects for demos in dev server

* fix(tools): ssr files

* test(background-image): ssrable demos

* fix(tools): 11ty demo images

* fix(core): floating dom controller more ssrable

* feat(tools): export ssr helpers

* fix(code-block): ssrable

* fix(jump-links): ssrable

* fix(core): ssrable ScrollSpyController

* fix(progress-stepper): ssrable

* fix(popover): ssrable

* fix(core): ssrable lbc

* fix(icon): ssr

* fix(select): ssrable

* fix(table): ssrable

* fix(text-area): ssrable

* fix(text-input): ssrable

* fix(tooltip): ssrable

* chore: pr reports

* fix(tools): update playwright

* chore: ssr workflow

* chore: ssr workflow

* chore: actions versions

* chore: ssr workflow

* chore: ssr workflow

* chore: ssr workflow

* chore: ssr workflow

* chore: ssr workflow

* chore: ssr workflow

* chore: ssr workflow

* fix: remove BaseAccordion from bad merge

* chore: remove references to Base*

* fix(core): ariaDescribedByElements, etc types

* chore: lint

massive lint. no more warnings

* chore: update typescript

enable `isolatedDeclarations`, which makes our dx a bit worse but
improves downstream performance

* chore: appease cupertino

* chore: pkg lock

* refactor(core): clarify the guts of InternalsController

* docs(button): demo of custom roles

* docs(button): a wee bit of style

* chore: typescript 5.5 (#2801)

* chore: lint

massive lint. no more warnings

* chore: update typescript

enable `isolatedDeclarations`, which makes our dx a bit worse but
improves downstream performance

* chore: appease cupertino

* chore: pkg lock

* fix(tools): less chatty tests

* chore: deps

* chore: lint

* test: lint

* chore: update playwright in ci

* fix(tools): dev server config watcher regexp

* perf(tools): dev server uses mtime for etag

* feat(core): new decorators `@listen` and  `@observes` (#2807)

* feat(core): add `@listen` decorator

* feat(core): add `@observes` decorator

* refactor: use new listen and observes decorators

* fix(core): listen decorator call lifecycle correctly

* test(core): observes decorator test

* feat(core): observes decorator options

waitFor option lets caller wait for connected, firstUpdated, or updated
until calling the method

* fix: observes calls

* fix(core): improved types

* fix(core): even better types

* test(core): listen decorator

* feat(select): typeahead (#2809)

* fix(select): display value from attribute

* feat(select): typeahead

adds `ActivedescendantController` to core

* fix: wip activedescendantcontroller clone nodes

* fix(select): slightly less janky clonenode path

* refactor: iterative improvements

* fix(core)!: a11y controller options

* fix: elements usage of a11y controllers

* fix!: abstract ATFocusController

* fix!: inching towards correctness

* fix: give listbox controller access to control element

* fix: inching closer

* fix(core): index at focus item by number

* fix(select): typeahead, focus, filter

* fix(select): roles

* fix(select): combobox controller

* fix(select): combobox controller

works with orca ff, apparently

* fix(core): combobox

* fix(select): better vo support

* fix(select): activedescentant

* fix(select): dropdown orientation

* fix(core): listbox select

* fix: select, core jsdoc, cleanup

* fix(core): a more general combobox interface

* fix(core): more nitpicks

* fix(core): oopsies

forgot to commit these yesterday

* refactor(select): polish

* fix(tabs): update to use new rtic stuff

* fix(core): initial focus for rti

* fix(accordion): wip rtic migration

* test(accordion): update tests

* refactor(accordion): whitespace

* docs(accordion): focusable content in panel

* docs(accordion): demo formatting

* test(accordion): fix and refactor tests

* fix(core): off-by-one error in RTIC controller

* fix(core): nested rtic

* feat(tools): chai a11y snapshot assertions

* fix(core): more ssr-able controllers

* fix(core): more ssr-able controllers

* fix(core): more ssr-able controllers

* fix(icon): more ssr-able icon

* fix(core): remove unused ax controller apis

* test(core): observes decorator

* fix(chip): rtic apis, tests

* feat(tools): a11yShapshot queries can match regex

* chore: import maps in tests

* refactor(select): type assertion

* feat(tools): more ax assertions

* fix(core): listbox/combobox selection state

* fix(select): no placeholder label

* fix(select): checkboxes

* fix(core): listbox select behaviour

* feat(tools): more ax chai helpers

* docs(select): checkbox demo padding

* test(select): all green

* test: reporter in ci

* fix(tools): always junit reporter in ci

* chore: test runner config

* fix(tools): test runner config

* fix(tools): flatten assertions in ci

* test(select): summaries

* chore: update deps

* test: refactor ax helpers

* test(select): reformat test file

* test(select): taborder when bluring listbox

* test(select): format test file

* test(select): home/end should expand listbox

* test(select): show+home after selecting

* test(select): no scroll on space

* docs(select): demo containers

* fix(core): aria-multiselectable

* test(select): format test file

* fix(select): redundant button role

* fix: visually-hidden styles

* test(select): provisional home/end typeahead

* test(select): aria-posinset

* fix(core): listbox aria-posinset

* test(select): format file

* test(select): dont expand listbox on type space

* test(select): space on button no scroll

* fix(core): combobox prevent scroll

Also prevent listbox from showing on typing space in combobox input

* test(select): tabbing away does not focus button

* fix(core): combobox dont focus button on blur

* refactor(core): combobox listeners

* fix(core): home/end for combobox

* test(select): format file

* fix(select): ghost placeholder

* test(select): refactor

* test(select): cases involving labels and placeholders

* fix(core): placeholder/label/carat

* fix(select): focus styles

* fix(select): fallback label to placeholder

* fix(select): workaround for safari

* test(select): cases

* fix(select): inert instead of aria-hidden

* fix(core): safari workaround for activedescendant

* fix(core): wip single-vs-multiselect on click

* fix(core): multiselect click

* fix(select): checkbox label

* test(select): refactor tests

* feat(tools): test utils: allow clicking out of element bounds

* test(select): clicking items

* fix(core): clicking shadow ad items

* test(select): more better selected tests

* fix(core): clicking shadow items

* fix(core): more x-root aria shenanigans

* test(select): add lightdom options slotted test

* refactor(core): unused var

* test(core): test shadow-root-only combobox-controller

* test(core): combobox works even with no user-set ids

* fix(core): propertly detect rotten apples

* refactor(core): rename support boolean

* fix(core): ad controller works without preset ids

* fix(core): default isItemDisabled predicate

* test: try to deflake

* test(select): greg's issues when an item is selected

* refactor(core): controller field privacy

* fix(core): correct order of operations in combobox listeners

* refactor(core): override onKeydown

* fix(core): ensure compatibility in combobox controller

* test(core): combobox tests

* refactor(core): don't bind this in controller options

---------

Co-authored-by: Steven Spriggs <[email protected]>

* feat(tools): getAllManifests

* fix(tools): correct import (#2824)

* docs: more changesets

* chore: decruft

* docs: pdate a11y-controller-opts.md

* docs: update dirty-bears-win.md

* docs: update a11y-controller-opts.md

---------

Co-authored-by: Steven Spriggs <[email protected]>
Co-authored-by: Brian Ferry <[email protected]>
Co-authored-by: Kelsey S <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
AT passed Automated testing has passed functionality Functionality, typically pertaining to the JavaScript. tests Related to testing
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

1 participant