Sha256: 205c84b8331df08a2e316429418ff72651144cc733998fdad190d97b64b346dd

Contents?: true

Size: 1.94 KB

Versions: 400

Compression:

Stored size: 1.94 KB

Contents

import React, { ReactElement } from "react";
import DropdownTrigger from "../subcomponents/DropdownTrigger";
import DropdownContainer from "../subcomponents/DropdownContainer";

type PrepareComponentsProps = {
  children: React.ReactChild[] | React.ReactChild;
  container: React.ReactChild;
  dark?: boolean;
  hasContainerSubcomponent: boolean;
  hasTriggerSubcomponent: boolean;
  otherChildren: React.ReactChild[];
  trigger: React.ReactChild;
};

export const separateChildComponents = (children: React.ReactChild[] | React.ReactChild | ReactElement[]) => {
  let trigger: React.ReactChild = null;
  let container: React.ReactChild = null;
  const otherChildren: React.ReactChild[] = [];

  React.Children.forEach(children, (child) => {
    if (child && (child as ReactElement).type === DropdownTrigger) {
      trigger = child;
    } else if (child && (child as ReactElement).type === DropdownContainer) {
      container = child;
    } else {
      otherChildren.push(child);
    }
  });

  return { trigger, container, otherChildren };
};

export const prepareSubcomponents = ({
  children,
  hasTriggerSubcomponent,
  hasContainerSubcomponent,
  trigger,
  container,
  otherChildren,
  dark
}: PrepareComponentsProps) => {
  const componentsToRender = [];

  if (!hasTriggerSubcomponent && !hasContainerSubcomponent) {
    componentsToRender.push(<DropdownTrigger dark={dark}/>);
    componentsToRender.push(<DropdownContainer dark={dark}>{children}</DropdownContainer>);
  } else if (!hasTriggerSubcomponent && hasContainerSubcomponent) {
    componentsToRender.push(<DropdownTrigger dark={dark}/>);
    componentsToRender.push(children);
  } else if (hasTriggerSubcomponent && !hasContainerSubcomponent) {
    componentsToRender.push(trigger);
    componentsToRender.push(
      <DropdownContainer dark={dark}>{otherChildren}</DropdownContainer>
    );
  } else {
    componentsToRender.push(trigger);
    componentsToRender.push(container);
  }

  return componentsToRender;
};

Version data entries

400 entries across 400 versions & 1 rubygems

Version Path
playbook_ui-14.9.0.pre.rc.10 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.9.0.pre.rc.9 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.8.0.pre.alpha.PLAY1680newwidthprop4661 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.8.0.pre.alpha.PLAY1658tanstackbump4657 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.8.0.pre.alpha.PLAY1649rolloutheightglobalprops4635 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.9.0.pre.rc.8 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.8.0.pre.alpha.PLAY1598floatinguiupgrade4617 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.9.0.pre.rc.7 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.9.0.pre.rc.6 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.9.0.pre.rc.5 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.8.0.pre.alpha.pbntr661createstickyleftprop4612 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.8.0.pre.alpha.play1648heightglobalprops4606 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.9.0.pre.rc.4 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.9.0.pre.rc.3 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.9.0.pre.rc.2 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.8.0.pre.alpha.revert3916revert3893PBNTR667railstypeaheadformintegration4567 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.8.0.pre.alpha.revert3916revert3893PBNTR667railstypeaheadformintegration4565 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.8.0.pre.alpha.PLAY1598floatinguiupgrade4563 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.8.0.pre.alpha.play1648heightglobalprops4559 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx
playbook_ui-14.9.0.pre.rc.1 app/pb_kits/playbook/pb_dropdown/utilities/subComponentHelper.tsx