diff --git a/.changeset/fuzzy-beans-push.md b/.changeset/fuzzy-beans-push.md new file mode 100644 index 00000000000..252e723cea6 --- /dev/null +++ b/.changeset/fuzzy-beans-push.md @@ -0,0 +1,5 @@ +--- +"@primer/react": patch +--- + +chore(SelectPanel): put fullscreen functionality behind FF diff --git a/.playwright/snapshots/components/SelectPanel.test.ts-snapshots/SelectPanel-Default-responsive-width-light-modern-action-list--true-full-screen-on-narrow--true-linux.png b/.playwright/snapshots/components/SelectPanel.test.ts-snapshots/SelectPanel-Default-responsive-width-light-modern-action-list--true-full-screen-on-narrow--true-linux.png new file mode 100644 index 00000000000..95d51676103 Binary files /dev/null and b/.playwright/snapshots/components/SelectPanel.test.ts-snapshots/SelectPanel-Default-responsive-width-light-modern-action-list--true-full-screen-on-narrow--true-linux.png differ diff --git a/.playwright/snapshots/components/SelectPanel.test.ts-snapshots/SelectPanel-Default-responsive-width-light-modern-action-list--true-linux.png b/.playwright/snapshots/components/SelectPanel.test.ts-snapshots/SelectPanel-Default-responsive-width-light-modern-action-list--true-linux.png index 95d51676103..1b994c3baf1 100644 Binary files a/.playwright/snapshots/components/SelectPanel.test.ts-snapshots/SelectPanel-Default-responsive-width-light-modern-action-list--true-linux.png and b/.playwright/snapshots/components/SelectPanel.test.ts-snapshots/SelectPanel-Default-responsive-width-light-modern-action-list--true-linux.png differ diff --git a/e2e/components/SelectPanel.test.ts b/e2e/components/SelectPanel.test.ts index 49198328841..900b337496c 100644 --- a/e2e/components/SelectPanel.test.ts +++ b/e2e/components/SelectPanel.test.ts @@ -109,10 +109,15 @@ test.describe('SelectPanel', () => { ) }) - test(`Default @vrt responsive width .modern-action-list--true`, async ({page}) => { + test(`Default @vrt responsive width .modern-action-list--true .fullscreen-on-narrow--true`, async ({page}) => { await visit(page, { id: 'components-selectpanel--default', - globals: {featureFlags: {primer_react_select_panel_with_modern_action_list: true}}, + globals: { + featureFlags: { + primer_react_select_panel_with_modern_action_list: true, + primer_react_select_panel_fullscreen_on_narrow: true, + }, + }, }) await page.setViewportSize({width: 767, height: 767}) @@ -125,7 +130,7 @@ test.describe('SelectPanel', () => { } expect(await page.screenshot({animations: 'disabled'})).toMatchSnapshot( - `SelectPanel-Default-responsive-width-light-modern-action-list--true.png`, + `SelectPanel-Default-responsive-width-light-modern-action-list--true-full-screen-on-narrow--true.png`, ) }) }) diff --git a/packages/react/src/FeatureFlags/DefaultFeatureFlags.ts b/packages/react/src/FeatureFlags/DefaultFeatureFlags.ts index 4c3bb6db9d8..835e8be2a5a 100644 --- a/packages/react/src/FeatureFlags/DefaultFeatureFlags.ts +++ b/packages/react/src/FeatureFlags/DefaultFeatureFlags.ts @@ -7,4 +7,5 @@ export const DefaultFeatureFlags = FeatureFlagScope.create({ primer_react_select_panel_with_modern_action_list: false, primer_react_overlay_overflow: false, primer_react_segmented_control_tooltip: false, + primer_react_select_panel_fullscreen_on_narrow: false, }) diff --git a/packages/react/src/SelectPanel/SelectPanel.tsx b/packages/react/src/SelectPanel/SelectPanel.tsx index 87755a2b0e3..5145d4a0f48 100644 --- a/packages/react/src/SelectPanel/SelectPanel.tsx +++ b/packages/react/src/SelectPanel/SelectPanel.tsx @@ -440,6 +440,7 @@ export function SelectPanel({ } } const usingModernActionList = useFeatureFlag('primer_react_select_panel_with_modern_action_list') + const usingFullScreenOnNarrow = useFeatureFlag('primer_react_select_panel_fullscreen_on_narrow') const iconForNoticeVariant = { info: , @@ -466,7 +467,7 @@ export function SelectPanel({ height={height} width={width} anchorId={id} - variant={{regular: 'anchored', narrow: 'fullscreen'}} + variant={usingFullScreenOnNarrow ? {regular: 'anchored', narrow: 'fullscreen'} : undefined} pinPosition={!height} > @@ -519,7 +520,7 @@ export function SelectPanel({ ) : null} - {onCancel && ( + {onCancel && usingFullScreenOnNarrow && ( {footer} - ) : isMultiSelectVariant(selected) ? ( + ) : isMultiSelectVariant(selected) && usingFullScreenOnNarrow ? ( /* Save and Cancel buttons are only useful for multiple selection, single selection instantly closes the panel */
{/* we add a save and cancel button on narrow screens when SelectPanel is full-screen */}