Security News
tea.xyz Spam Plagues npm and RubyGems Package Registries
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
@typeform/button
Advanced tools
Integrate Typeform Admin UI in your web app - as an iframe or a popup.
Readme
Integrate Typeform Admin UI in your web app - as an iframe or a popup.
[!WARNING] Please keep in mind this is an early version, and we provide limited support at the moment.
As HTML button:
<button data-tf-embed-admin-select data-tf-embed-admin-callback="handleSelect">select typeform</button>
<script src="//btn.typeform.com/button.js"></script>
<script>
// you still need to implement the callback in JavaScript
function handleSelect({ action, formId }) {
console.log(`you have selected form with id ${formId}`)
}
</script>
Or using JavaScript:
<button onclick="selectTypeform()">select form</button>
<script src="//btn.typeform.com/button.js"></script>
<script>
// you only need to configure settings once
window.tfEmbedAdmin.setDefaultConfiguration({ type: 'iframe' })
const callback = ({ action, formId }) => {
console.log(`you have selected form with id ${formId}`)
}
const selectTypeform = () => {
window.tfEmbedAdmin.selectForm({ callback })
}
</script>
Install the package as dependency via yarn
:
yarn add @typeform/button
Then you can use the SDK in your own application, e.g. in React:
import { selectForm } from '@typeform/button'
export const SelectFormButton = () => {
const handleSelect = () => {
selectForm({
callback: ({ action, formId }) => console.log(`you just selected form id: ${formId}`),
})
}
return <button onClick={handleSelect}>select form</button>
}
There are 3 available methods:
Configure the embed admin settings.
It accepts an object with the following props:
name | type | description | default value |
---|---|---|---|
type | "iframe" | "popup" | Open embed admin in popup (default) or iframe. Note: If you want to implement iframe, please contact us to get your domain allowed. | "popup" |
appName | string | Application name | window.location.hostname |
Example with JavaScript:
window.tfEmbedAdmin.setDefaultConfiguration({
type: 'iframe',
appName: 'my-app',
})
When using HTML API you don't need to call this method separately. You need to specify config options on the button itself.
Open embed admin to select form or create a new one.
It accepts an object with the following props:
name | type | description |
---|---|---|
callback | (payload: { action: string, formId: string, fetchFormDetails: () => Promise<{}> }) => void | Method to be called when a form is selected in Typeform Admin UI. |
type | "iframe" | "popup" | Optional. See setDefaultConfiguration above. |
appName | string | Optional. See setDefaultConfiguration above. |
Example with JavaScript:
window.tfEmbedAdmin.selectForm({
callback: ({ action, formId, fetchFormDetails }) => console.log(`you just selected form id: ${formId}`),
})
Or with HTML API:
<button
data-tf-embed-admin-select
data-tf-embed-admin-type="iframe"
data-tf-embed-admin-app-name="my-app"
data-tf-embed-admin-callback="embedAdminCallback"
>
select typeform
</button>
<script>
function embedAdminCallback({ action, formId, fetchFormDetails }) {
// callback function needs to be available on global scope (window)
}
</script>
Open embed admin to edit a specific form.
It accepts an object with the following props:
name | type | description |
---|---|---|
formId | string | ID of the typeform to edit |
callback | (payload: { action: string, formId: string, fetchFormDetails: () => Promise<{}> }) => void | Method to be called when a form is edited in Typeform Admin UI. |
type | "iframe" | "popup" | Optional. See setDefaultConfiguration above. |
appName | string | Optional. See setDefaultConfiguration above. |
Example with JavaScript:
window.tfEmbedAdmin.editForm({
formId: myTypeformId,
callback: ({ action, formId, fetchFormDetails }) => console.log(`you just edited form id: ${formId}`),
})
Or with HTML API:
<button
data-tf-embed-admin-edit="123456"
data-tf-embed-admin-type="iframe"
data-tf-embed-admin-app-name="my-app"
data-tf-embed-admin-callback="embedAdminCallback"
>
edit typeform
</button>
<script>
function embedAdminCallback({ action, formId, fetchFormDetails }) {
// callback function needs to be available on global scope (window)
}
</script>
The callback receives fetchFormDetails
async method in the payload. You can use this method to fetch details about currently selected / edited form. It returns title
, url
and imageUrl
of the meta image.
Usage:
window.tfEmbedAdmin.selectForm({
callback: async ({ action, formId, fetchFormDetails }) => {
const { title, url } = await fetchFormDetails()
console.log(`You selected form named ${title}. You can visit it at ${url}.`)
},
})
Run:
yarn start
Demo implementation of the library will be served at http://localhost:1337
Or open the demo in CodeSandbox, directly in your browser.
Note: Examples with iframe only work on localhost.
Requirements:
Install dependencies:
yarn
For local development run:
yarn watch
or with demo:
yarn start
Please keep in mind this is an early version, and we provide limited support at the moment.
However, feel free to open a Github Issue with your question, we are open to discussion.
FAQs
Integrate Typeform Admin UI in your web app - as an iframe or a popup.
The npm package @typeform/button receives a total of 0 weekly downloads. As such, @typeform/button popularity was classified as not popular.
We found that @typeform/button demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
Security News
As cyber threats become more autonomous, AI-powered defenses are crucial for businesses to stay ahead of attackers who can exploit software vulnerabilities at scale.
Security News
UnitedHealth Group disclosed that the ransomware attack on Change Healthcare compromised protected health information for millions in the U.S., with estimated costs to the company expected to reach $1 billion.