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

Maintenance: Move filtering of sidebar into the state #23911

Merged
merged 4 commits into from
Aug 23, 2023

Conversation

ndelangen
Copy link
Member

@ndelangen ndelangen commented Aug 22, 2023

What I did

When implementing filtering I forgot about the effect this would have on keyboard navigation.

I had left the index in state untouched, which would cause navigating via keyboard shortcuts to be incorrect.

I've moved the logic for filtering into the state manager (manager-api).
The index kept in state is now filtered before reaching the sidebar.

The interface for FilterFunctions changed slightly.

Checklist for Contributors

Testing

The changes in this PR are covered in the following automated tests:

  • stories
  • unit tests
  • integration tests
  • end-to-end tests

Manual testing

Set the ui/.storybook/manager.tsx code to this:

import React from 'react';
import { addons, types } from '@storybook/manager-api';
import startCase from 'lodash/startCase.js';

addons.register('XYYYZZ', (api) => {
  addons.add('XYYYZZ/panel', {
    type: types.TOOL,
    title: 'TEST',
    match: ({ viewMode }) => true,

    render: () => (
      <div>
        <button type="button" onClick={() => api.experimental_setFilter('manager', () => true)}>
          TEST
        </button>
      </div>
    ),
  });
});
addons.setConfig({
  sidebar: {
    renderLabel: ({ name, type }) => (type === 'story' ? name : startCase(name)),
    filters: {
      manager: ({ title }) => title.includes('core'),
    },
  },
});

And start the UI storybook.

Expect the sidebar to be filtered when storybook opens.
Only stories that have the word core in them (anywhere in the path) should be visisble.

Use the keyboard shurtcuts to navigate between stories & components.

Now click the "TEST" button in the toolbar.

Expect the sidebar to now display all items (though collepsed)

Use the keyboard shurtcuts to navigate between stories & components.

Documentation

  • Add or update documentation reflecting your changes
  • If you are deprecating/removing a feature, make sure to update
    MIGRATION.MD

Checklist for Maintainers

  • When this PR is ready for testing, make sure to add ci:normal, ci:merged or ci:daily GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found in code/lib/cli/src/sandbox-templates.ts

  • Make sure this PR contains one of the labels below:

    Available labels
    • bug: Internal changes that fixes incorrect behavior.
    • maintenance: User-facing maintenance tasks.
    • dependencies: Upgrading (sometimes downgrading) dependencies.
    • build: Internal-facing build tooling & test updates. Will not show up in release changelog.
    • cleanup: Minor cleanup style change. Will not show up in release changelog.
    • documentation: Documentation only changes. Will not show up in release changelog.
    • feature request: Introducing a new feature.
    • BREAKING CHANGE: Changes that break compatibility in some way with current major version.
    • other: Changes that don't fit in the above categories.

🦋 Canary release

This PR does not have a canary release associated. You can request a canary release of this pull request by mentioning the @storybookjs/core team here.

core team members can create a canary release here or locally with gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=<PR_NUMBER>

Copy link
Member

@tmeasday tmeasday left a comment

Choose a reason for hiding this comment

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

Looks good! Can we add a couple of tests that check the filtering updates when you change filters or statuses or when a new index arrives?

Copy link
Member

@tmeasday tmeasday left a comment

Choose a reason for hiding this comment

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

👏

@ndelangen ndelangen merged commit 0f41c77 into next Aug 23, 2023
15 checks passed
@ndelangen ndelangen deleted the norbert/filter-at-api branch August 23, 2023 07:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants