Skip to content

web/elements: P5 Drawer component with all capabilities#21545

Open
kensternberg-authentik wants to merge 17 commits intomainfrom
web/element/new-drawer
Open

web/elements: P5 Drawer component with all capabilities#21545
kensternberg-authentik wants to merge 17 commits intomainfrom
web/element/new-drawer

Conversation

@kensternberg-authentik
Copy link
Copy Markdown
Contributor

What

Extend ak-drawer to comply with the full specification; port ak-drawer to use Patternfly 5; vendor the Patternfly 5 subsystems directly responsible for the Drawer into the CSS.

Why

To meet the requirements of the Drawer, of the LightDOM project, and of the Patternfly 5 vendoring port.

Details

The Drawer’s internal CSS is now entirely within the Lit framework; the controlling CSS is namespaced to ak-v2-c--drawer and placed into the global CSS. Every bit of the drawer has a part name, so it can be customized to your heart’s content.

Added stylelint to make sure I’m doing this correctly.

  • [👽] The code has been formatted (make web)

kensternberg-authentik and others added 10 commits March 3, 2026 10:27
* main: (50 commits)
  web/flow/stages: permit the form handler to look in the light or shadowDOM for controls (#20832)
  web/style/flow: flow css barrel file (#20833)
  web/flow: provide labels for the stage import-and-invoke table (#20834)
  core: bump goauthentik/fips-python from `3636935` to `46b26b8` in /lifecycle/container (#20842)
  core: bump library/nginx from `0236ee0` to `d0913a1` in /website (#20843)
  core, web: update translations (#20835)
  core: bump goauthentik/fips-debian from `0975985` to `2517845` in /lifecycle/container (#20841)
  core: bump twilio from 9.10.2 to 9.10.3 (#20838)
  core: bump aws-cdk-lib from 2.241.0 to 2.242.0 (#20840)
  ci: bump astral-sh/setup-uv from 7.3.1 to 7.4.0 in /.github/actions/setup (#20844)
  providers/SCIM: Add discover support (#20658)
  core: allow interfaces to specify alternative stylesheets (#20774)
  website/docs: update agent docs (#20782)
  core, web: update translations (#20809)
  lifecycle/aws: bump aws-cdk from 2.1109.0 to 2.1110.0 in /lifecycle/aws (#20810)
  core: bump axllent/mailpit from v1.29.2 to v1.29.3 in /tests/e2e (#20811)
  core: bump cachetools from 7.0.4 to 7.0.5 (#20812)
  core: bump goauthentik/fips-python from `b481db2` to `3636935` in /lifecycle/container (#20814)
  core: bump goauthentik/fips-debian from `6c9197b` to `0975985` in /lifecycle/container (#20815)
  web: bump the storybook group across 1 directory with 5 updates (#20816)
  ...
* main: (455 commits)
  web/e2e: accept options in NavigatorFixture.waitForPathname (#21507)
  web/styles: switch to upstream RedHat variable fonts and brighten orange palette (#21509)
  web/styles: add ak-c-loading-skeleton CSS component (#21510)
  core, web: update translations (#21532)
  core: bump lxml from 6.0.2 to 6.0.3 (#21523)
  core: bump library/node from `45babd1` to `9707cd4` in /lifecycle/container (#21522)
  tasks: better error message for Retry exceptions (#18235)
  web/admin: fix user list avatar (#21531)
  core: bump django from v5.2.12 to 5.2.13 (#21520)
  core: add cooldown to dependabot (#21286)
  web/admin: include avatar in user list page (#21518)
  events: add index on Event.user.pk (#19576)
  ci: always run apt update (#21516)
  enterprise/search: move QL to open source] (#21484)
  core: add logging when session decode fails (#21514)
  website/docs: Refactor email configuration (#21130)
  core: bump types-ldap3 from 2.9.13.20260402 to 2.9.13.20260408 (#21493)
  packages/ak-common/db: init (#21357)
  packages/ak-axum/extract/host: init (#21323)
  web: bump knip from 6.3.0 to 6.3.1 in /web (#21505)
  ...
Extend ak-drawer to comply with the full specification; port ak-drawer to use Patternfly 5; vendor the Patternfly 5 subsystems directly responsible for the Drawer into the CSS.

## Why

To meet the requirements of the Drawer, of the LightDOM project, and of the Patternfly 5 vendoring port.

## Details

The Drawer’s internal CSS is now entirely within the Lit framework; the controlling CSS is namespaced to `ak-v2-c--drawer` and placed into the global CSS. Every bit of the drawer has a `part` name, so it can be customized to your heart’s content.

Added stylelint to make sure I’m doing this correctly.
@netlify
Copy link
Copy Markdown

netlify bot commented Apr 11, 2026

Deploy Preview for authentik-integrations ready!

Name Link
🔨 Latest commit 6c795c3
🔍 Latest deploy log https://app.netlify.com/projects/authentik-integrations/deploys/69de72c77866ed000714fcec
😎 Deploy Preview https://deploy-preview-21545--authentik-integrations.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link
Copy Markdown

netlify bot commented Apr 11, 2026

Deploy Preview for authentik-storybook ready!

Name Link
🔨 Latest commit a3d9b98
🔍 Latest deploy log https://app.netlify.com/projects/authentik-storybook/deploys/69de704f1239cb00085242c5
😎 Deploy Preview https://deploy-preview-21545--authentik-storybook.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link
Copy Markdown

netlify bot commented Apr 11, 2026

Deploy Preview for authentik-docs ready!

Name Link
🔨 Latest commit c96b78c
🔍 Latest deploy log https://app.netlify.com/projects/authentik-docs/deploys/69d9937a8066d10008eb0393
😎 Deploy Preview https://deploy-preview-21545--authentik-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@codecov
Copy link
Copy Markdown

codecov bot commented Apr 11, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 92.29%. Comparing base (26bfb6e) to head (6c795c3).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #21545      +/-   ##
==========================================
- Coverage   92.30%   92.29%   -0.01%     
==========================================
  Files        1032     1032              
  Lines       59767    59767              
  Branches     2537     2537              
==========================================
- Hits        55168    55163       -5     
- Misses       4536     4539       +3     
- Partials       63       65       +2     
Flag Coverage Δ
conformance 36.98% <ø> (+<0.01%) ⬆️
e2e 42.89% <ø> (-0.03%) ⬇️
integration 33.92% <ø> (+<0.01%) ⬆️
rust 60.50% <ø> (-0.08%) ⬇️
unit 91.92% <ø> (+<0.01%) ⬆️
unit-migrate 92.01% <ø> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 11, 2026

authentik PR Installation instructions

Instructions for docker-compose

Add the following block to your .env file:

AUTHENTIK_IMAGE=ghcr.io/goauthentik/dev-server
AUTHENTIK_TAG=gh-6c795c377343050e7544fdd8c59bcc0f83eb9f7d
AUTHENTIK_OUTPOSTS__CONTAINER_IMAGE_BASE=ghcr.io/goauthentik/dev-%(type)s:gh-%(build_hash)s

Afterwards, run the upgrade commands from the latest release notes.

Instructions for Kubernetes

Add the following block to your values.yml file:

authentik:
    outposts:
        container_image_base: ghcr.io/goauthentik/dev-%(type)s:gh-%(build_hash)s
global:
    image:
        repository: ghcr.io/goauthentik/dev-server
        tag: gh-6c795c377343050e7544fdd8c59bcc0f83eb9f7d

Afterwards, run the upgrade commands from the latest release notes.

* main:
  web: build system had some legacy stuff that I found confusing while working on the CSS ordering (#20698)
  core: bump ruff from 0.15.9 to 0.15.10 (#21559)
  core: bump types-jwcrypto from 1.5.0.20260408 to 1.5.7.20260409 (#21561)
  core: bump lxml from 6.0.3 to 6.0.4 (#21560)
  ci: bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (#21566)
  ci: bump docker/build-push-action from 7.0.0 to 7.1.0 (#21563)
  ci: bump actions/upload-artifact from 7.0.0 to 7.0.1 (#21565)
  core: bump library/golang from `da39430` to `c0074c7` in /lifecycle/container (#21567)
  ci: bump taiki-e/install-action from 2.75.1 to 2.75.5 in /.github/actions/setup (#21569)
  web: bump mermaid from 11.13.0 to 11.14.0 in /web (#21527)
  core, web: update translations (#21552)
  web: bump basic-ftp from 5.2.1 to 5.2.2 in /web (#21543)
  web: User Wizard, Modal Revisions Merge Branch (#21336)
  web/elements: default @listen target to host element and add split-button Dropdown (#21512)
  ci: parallel tests (#21515)
  website/docs: add another sentence to First Steps about restricting access to apps (#21517)
  web/elements: add scrollbar helpers and apply to Interface (#21511)
  web/elements: add viewport helpers and extend intersection observer (#21508)
@netlify
Copy link
Copy Markdown

netlify bot commented Apr 13, 2026

Deploy Preview for authentik-docs ready!

Name Link
🔨 Latest commit 6c795c3
🔍 Latest deploy log https://app.netlify.com/projects/authentik-docs/deploys/69de72c7f7e3f20007a77d09
😎 Deploy Preview https://deploy-preview-21545--authentik-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

…r to use Patternfly 5; vendor the Patternfly 5 subsystems directly responsible for the Drawer into the CSS.

This drawer is completely independent of Patternfly 4; it brings everything in-house, everything is under `ak-v2-c-drawer`, and we read our variables from `ak-v2-global` entries as part of the style folder.

The contents of the folder are slotted, so they’re part of the parent DOM and parent CSS context, and can be controlled from there without having to do any magic on the Drawer.

To comply with the standards of the HTML disclosure pattern, the drawer uses `expanded` instead of `open`; it listens for an event to trigger open/close; it emits a `toggle` event when completed. Shortcoming: to completely comply with the disclosure pattern, it should emit a `beforeToggle` to let other clients intercept the request and prevent it from happening, but we don’t do that yet.

Unlike the previous drawer, this one has `resizable`, `position`, `inline/static`, and responsive width breakpoints, all features of the Patternfly 5 React web-component. The resizable variant gives you a visible handle, and even responds to keyborad controls.

Along with the native control through CSS Custom Properties, every part of the component has a `part` declaration, so if you *really* want to customize the thing that’s now possible.

Unlike the Patternfly 5 React version, we impose **no** structure on the internals of the component; no padding, no margin, no header/main/footer segmentation. That pattern is universal, and doesn’t need to be specified for each and every component. If you need that, build it into whatever element you put into the unnamed “main” or `panel` slots.

There is a comprehensive Storybook story page for the component.

To meet the requirements of the Drawer, of the LightDOM project, and of the Patternfly 5 vendoring port.
Comment thread web/stylelint.config.mjs
export default {
extends: "stylelint-config-standard",
rules: {
"custom-property-pattern": [
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Patternfly's names are much more varied than the standard.

@kensternberg-authentik kensternberg-authentik marked this pull request as ready for review April 13, 2026 16:53
@kensternberg-authentik kensternberg-authentik requested a review from a team as a code owner April 13, 2026 16:53
kensternberg-authentik and others added 3 commits April 13, 2026 09:55
* main:
  providers/oauth2: allow cross provider token introspection for federated providers (#21513)
  lifecycle/container: fix OCI image labels (#21574)
  packages/django-dramatiq-postgres: reset db connections in raise_connection_error (#21577)
  core: refresh signed media URLs in flows (#21553)
  events: don't log cacheentry events (#21597)
  web: bump prettier from 3.8.1 to 3.8.2 in /web (#21568)
  providers/oauth2: fix time logic in refresh_token_threshold (#21537)
  web: bump chromedriver from 147.0.1 to 147.0.2 in /web (#21564)
  web: bump axios from 1.13.6 to 1.15.0 in /web (#21528)
  web: bump the bundler group across 1 directory with 3 updates (#21562)
  website/docs: clean up Kubernetes outpost integration page (#21587)
  web: bump follow-redirects from 1.15.11 to 1.16.0 in /web (#21596)
  web: bump lodash-es from 4.17.23 to 4.18.1 in /web (#21595)
  web/admin: fix log viewer layout for application access check (#21594)
  ci: bump softprops/action-gh-release from 2.6.1 to 2.6.2 (#21589)
  ci: bump calibreapp/image-actions from 03c976c29803442fc4040a9de5509669e7759b81 to 4f7260f5dbd809ec86d03721c1ad71b8a841d3e0 (#21590)
  ci: bump actions/create-github-app-token from 3.0.0 to 3.1.1 (#21591)
  website/integrations: fix Microsoft 365 federation guide (#21054)
  website/docs: Update unique email expression policy to exclude current user (#21555)
  lib/sync/outgoing: avoid expensive query to get number of sync pages (#21575)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant