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

[Storybook] Add stories for more components (letter P) - Part 1 #7648

Merged
merged 20 commits into from
Apr 11, 2024

Conversation

mgadewoll
Copy link
Contributor

@mgadewoll mgadewoll commented Apr 3, 2024

Summary

relates to #7481

This PR adds or updates additional component stories for the following components:

  • EuiPageHeader
  • EuiPageHeaderContent
  • EuiPageTemplate
  • EuiPagination
  • EuiPaginationButton
  • EuiPaginationButtonArrow
  • EuiPanel

Additionally it adds a new storybook util function enableFunctionToggleControls to setup function props as toggle controls that trigger storybook actions.

QA

  • review the added/updated component stories and confirm that the prop table provides relevant controls and that those controls work as expected:

- updates internal helper _updateArgTypes to handle multiple control config entries at once

+ adds additional util enableToggleFunctionControls
- updates PageHeader story

+ adds PageHeaderContent and PageTempalte stories

- adds type for page directions prop to be reused
@mgadewoll mgadewoll added documentation Issues or PRs that only affect documentation - will not need changelog entries skip-changelog labels Apr 3, 2024
@mgadewoll mgadewoll changed the title [Storybook] add stories for components with letter P [part 1] [Storybook] Add stories for more components (letter P) - Part 1 Apr 3, 2024
@mgadewoll mgadewoll marked this pull request as ready for review April 3, 2024 16:19
@mgadewoll mgadewoll requested a review from a team as a code owner April 3, 2024 16:19
- updates enableFunctionToggleControls to overwrite global actions behaviour and set a default for function props

+ add unit tests for enableFunctionToggleControls
- updates restrictWidth control to select

= adds additional stories for EuiPageTemplate
- removes skeleton in favor of string to ensure valid HTML

+ adds parent= on bottom bar to ensure last position on DOM updates
@mgadewoll mgadewoll requested a review from cee-chen April 10, 2024 12:15
Turns out the context needed a parent `{}` reference that updates on prop update, which the `useContext()`+setting child properties directly was messing up. Instantiating a new object value via `useMemo` solves the issue

+ opinionated syntax cleanup while here (use fewer functions - not sure why they needed to be functions??) and destructure more
…cloneElement`

- cleaner and matches existing behavior for other subcomponents

- consumers who render `<EuiPageTemplate><EuiPageSidebar>` will see broken-ish behavior, but they shouldn't be doing this in any case
- not sure how useful this is since `children` is very difficult to memoize on
i'm a senior developer errybody
Copy link
Contributor

@cee-chen cee-chen left a comment

Choose a reason for hiding this comment

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

I think I have EuiPageTemplate working now (and hopefully much cleaner in terms of code 💦) - let me know if anything looks off to you or if you're not a fan of any of any particular code style/syntax!

@cee-chen
Copy link
Contributor

Not quite test-driven development, but QA-driven development nonetheless 😄 Feel free to merge this in whenever @mgadewoll!

@mgadewoll mgadewoll enabled auto-merge (squash) April 11, 2024 16:50
@kibanamachine
Copy link

Preview staging links for this PR:

@mgadewoll mgadewoll merged commit 5cc91b2 into elastic:main Apr 11, 2024
7 checks passed
@elasticmachine
Copy link
Collaborator

💚 Build Succeeded

History

cee-chen added a commit to elastic/kibana that referenced this pull request May 3, 2024
`v94.1.0-backport.0` ⏩ `v94.2.1-backport.0`

_[Questions? Please see our Kibana upgrade
FAQ.](https://github.com/elastic/eui/blob/main/wiki/eui-team-processes/upgrading-kibana.md#faq-for-kibana-teams)_

---

##
[`v94.2.1-backport.0`](https://github.com/elastic/eui/releases/v94.2.1-backport.0)

**This is a backport release only intended for use by Kibana.**

- Reverted the `EuiFlexGroup`/`EuiFlexItem` `component` prop feature due
to Kibana typing issues

## [`v94.2.1`](https://github.com/elastic/eui/releases/v94.2.1)

**Bug fixes**

- Fixed an `EuiTabbedContent` edge case bug that occurred when updated
with a completely different set of `tabs`
([#7713](elastic/eui#7713))
- Fixed the `@storybook/test` dependency to be listed in
`devDependencies` and not `dependencies`
([#7719](elastic/eui#7719))

## [`v94.2.0`](https://github.com/elastic/eui/releases/v94.2.0)

- Updated `getDefaultEuiMarkdownPlugins()` to allow excluding the
following plugins in addition to `tooltip`:
([#7676](elastic/eui#7676))
  - `checkbox`
  - `linkValidator`
  - `lineBreaks`
  - `emoji`
- Updated `EuiSelectable`'s `isPreFiltered` prop to allow passing a
configuration object, which allows disabling search highlighting in
addition to search filtering
([#7683](elastic/eui#7683))
- Updated `EuiFlexGroup` and `EuiFlexItem` prop types to support passing
any valid React component type to the `component` prop and ensure proper
type checking of the extra props forwarded to the `component`.
([#7688](elastic/eui#7688))
- Updated `EuiSearchBar` to allow the `@` special character in query
string searches ([#7702](elastic/eui#7702))
- Added a new, optional `optionMatcher` prop to `EuiSelectable` and
`EuiComboBox` allowing passing a custom option matcher function to these
components and controlling option filtering for given search string
([#7709](elastic/eui#7709))

**Bug fixes**

- Fixed an `EuiPageTemplate` bug where prop updates would not cascade
down to child sections
([#7648](elastic/eui#7648))
- To cascade props down to the sidebar, `EuiPageTemplate` now explicitly
requires using the `EuiPageTemplate.Sidebar` rather than
`EuiPageSidebar`
- Fixed `EuiFieldNumber`'s typing to accept an icon configuration shape
([#7666](elastic/eui#7666))
- Fixed `EuiFieldText` and `EuiFieldNumber` to render the correct
paddings for icon shapes set to `side: 'right'`
([#7666](elastic/eui#7666))
- Fixed `EuiFieldText` and `EuiFieldNumber` to fully ignore
`icon`/`prepend`/`append` when `controlOnly` is set to true
([#7666](elastic/eui#7666))
- Fixed `EuiColorPicker`'s input not setting the correct right padding
for the number of icons displayed
([#7666](elastic/eui#7666))
- Visual fixes for `EuiRange`s with `showInput`:
([#7678](elastic/eui#7678))
  - Longer `append`/`prepend` labels no longer cause a background bug
  - Inputs can no longer overwhelm the actual range in width
- Fixed a visual text alignment regression in `EuiTableRowCell`s with
the `row` header scope
([#7681](elastic/eui#7681))
- Fixed `toolTipProps` type on `EuiSuperUpdateButton` to use
`Partial<EuiToolTipProps>`
([#7692](elastic/eui#7692))
- Fixes missing prop type for `popperProps` on `EuiDatePicker`
([#7694](elastic/eui#7694))
- Fixed a focus bug with `EuiDataGrid`s with `leadingControlColumns`
when moving columns to the left/right
([#7701](elastic/eui#7701))
([#7698](elastic/eui#7698))
- Fixed `EuiSuperDatePicker` to validate date string with respect of
locale on `EuiAbsoluteTab`.
([#7705](elastic/eui#7705))
- Fixed a visual bug with `EuiSuperDatePicker`'s absolute tab on small
mobile screens ([#7708](elastic/eui#7708))
- Fixed i18n of empty and loading state messages for the
`FieldValueSelectionFilter` component
([#7718](elastic/eui#7718))

**Dependency updates**

- Updated `@hello-pangea/dnd` to v16.6.0
([#7599](elastic/eui#7599))
- Updated `remark-rehype` to v8.1.0
([#7601](elastic/eui#7601))

**Accessibility**

- Improved `EuiBasicTable` and `EuiInMemoryTable`'s selection checkboxes
to have unique aria-labels per row
([#7672](elastic/eui#7672))
- Added `aria-valuetext` attributes to `EuiRange`s with tick labels for
improved screen reader UX
([#7675](elastic/eui#7675))
- Updated `EuiAccordion` to keep focus on accordion trigger instead of
moving to content on click/keypress
([#7696](elastic/eui#7696))
- Added `aria-disabled` attribute to `EuiHorizontalSteps` when status is
"disabled" ([#7699](elastic/eui#7699))

---------

Co-authored-by: Tomasz Kajtoch <tomasz.kajtoch@elastic.co>
cee-chen added a commit to elastic/kibana that referenced this pull request May 9, 2024
👋 Hey y'all ent search folks! I missed this fix/update update in our
latest EUI upgrade (#182023). It's directly related to this change in
EUI v94.2.0:

> - Fixed an `EuiPageTemplate` bug where prop updates would not cascade
down to child sections
([#7648](elastic/eui#7648))
> - To cascade props down to the sidebar, `EuiPageTemplate` now
explicitly requires using the `EuiPageTemplate.Sidebar` rather than
`EuiPageSidebar`

In general, it's also a best practice to use EuiPageTemplate's
namespaced children instead of the direct `EuiPage*` components (which
are meant for direct usage within a`EuiPage` component instead), so I've
made similar changes to your code as well. I would suggest pulling down
this PR to QA that your page still looks as expected/as before.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Issues or PRs that only affect documentation - will not need changelog entries skip-changelog
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants