@highloop/feedback-internal
Version:
47 lines (40 loc) • 1.31 kB
text/typescript
import { HighloopFeedbackCore } from '../core';
import type { IData, ITheme } from '../interfaces/data';
import type { IText } from '../interfaces/text';
import { resetOnSubmit } from '../lib/resetOnSubmit';
export type InlineWidget = ReturnType<typeof createInlineWidget>;
export type InlineWidgetOpts = Parameters<typeof createInlineWidget>[2];
export let createInlineWidget = (
id: string,
root: HTMLElement,
opts: {
meta?: any;
apiEndpoint?: string;
theme?: ITheme;
demo?: IData;
text?: IText;
expanded?: boolean;
resetOnSubmit?: boolean | number;
} = {}
) => {
if (typeof window == 'undefined') return;
let instance = new HighloopFeedbackCore(id, {
...opts,
closable: false,
root
});
if (opts.resetOnSubmit) {
resetOnSubmit(instance, opts.resetOnSubmit == true ? 7000 : opts.resetOnSubmit);
}
instance.render();
return {
destroy: () => {
instance.destroy();
},
instance: instance,
setMeta: (meta: any) => instance.setMeta(meta),
setTheme: (theme: ITheme) => instance.setTheme(theme),
on: <T>(type: string, handler: (d: T) => unknown) => instance.on(type, handler),
once: <T>(type: string, handler: (d: T) => unknown) => instance.once(type, handler)
};
};