react-native-copilot icon indicating copy to clipboard operation
react-native-copilot copied to clipboard

Enhancement request: allow passing of custom props to currentStep from CopilotStep.

Open dnlsandiego opened this issue 7 years ago • 2 comments

Hey ya'll

I'd like to suggest an enhancement to the currentStep object/prop that gets passed to custom components like tooltipComponent and stepNumberComponent.

It would be great if we could allow passing in custom props from CopilotStep. A situation where this would be useful is when you have a customizable custom tooltip component like so:

const CustomToolTipComponent = ({
  isFirstStep,
  isLastStep,
  handleNext,
  handlePrev,
  handleStop,
  currentStep,
}) => (
  // ...
  <Button>{currentStep.toolTipButtonText}</Button>
);
// ...
copilot({
  tooltipComponent: TooltipComponent
})(RootComponent)
<CopilotStep
  order={1}
  name="hello"
  text="Custom button text"
  toolTipButtonText="Cool btn txt right"
>
...
</CopilotStep>

Looking at the source, I think a simple update to ConnectedCopilotStep when registering steps could allow a enhancement like this. Perphaps passing along the rest of the props like this would be a bad idea:

this.props._copilot.registerStep({
  name: this.props.name,
  text: this.props.text,
  order: this.props.order,
  target: this,
  wrapper: this.wrapper,
  ...this.props,
});

We could add a dedicated prop to CopilotStep named something like options woul d do the trick:

<CopilotStep
  order={1}
  name="hello"
  text="Custom button text"
  options={{ toolTipButtonText: "Cool btn txt" }}
>
this.props._copilot.registerStep({
  name: this.props.name,
  text: this.props.text,
  order: this.props.order,
  target: this,
  wrapper: this.wrapper,
  options: this.props.options,
});

Let me know what ya'll think and if ya'll are 👍 on this I'd be glad to put a PR together.

dnlsandiego avatar Sep 25 '18 22:09 dnlsandiego

@dnlsandiego I think that is an intriguing idea. Will be happy to accept a PR on that.

mohebifar avatar Nov 16 '18 16:11 mohebifar

You can get it by this way:

    tooltipComponent: ({
      isFirstStep,
      isLastStep,
      handleNext,
      handlePrev,
      handleStop,
      currentStep: {
        target: {
          props: { nextButtonText, title, text },
        },
      },
    }) 

nextButtonText, title - my props i passed in CopilotStep

St1ggy avatar Jan 24 '19 04:01 St1ggy