@highloop/feedback
Version:
86 lines (82 loc) • 1.89 kB
text/typescript
import type {
IText,
ITheme,
IData,
PopoverPosition,
DialogWidget,
PopoverWidget,
InlineWidget
} from '@highloop/feedback-internal';
import { prefetch } from './prefetch';
import { scriptManager } from './scriptManager';
export let createDialogWidget = (
id: string,
opts: {
meta?: any;
apiEndpoint?: string;
theme?: ITheme;
demo?: IData;
text?: IText;
expanded?: boolean;
closeOnOutsideClick?: boolean;
} & (
| {
position?: 'center';
blanket?: boolean;
}
| {
position?: 'top' | 'bottom';
}
) = {}
) =>
new Promise<DialogWidget>((resolve, reject) => {
prefetch(id);
scriptManager()
.then(() => {
resolve(window.highloopFeedback.createDialogWidget(id, opts));
})
.catch(reject);
});
export let createInlineWidget = (
id: string,
root: HTMLElement,
opts: {
meta?: any;
apiEndpoint?: string;
theme?: ITheme;
demo?: IData;
text?: IText;
expanded?: boolean;
resetOnSubmit?: boolean | number;
} = {}
) =>
new Promise<InlineWidget>((resolve, reject) => {
prefetch(id);
scriptManager()
.then(() => {
resolve(window.highloopFeedback.createInlineWidget(id, root, opts));
})
.catch(reject);
});
export let createPopoverWidget = (
id: string,
button: HTMLElement,
opts: {
meta?: any;
apiEndpoint?: string;
theme?: ITheme;
demo?: IData;
text?: IText;
expanded?: boolean;
position?: PopoverPosition;
closeOnOutsideClick?: boolean;
} = {}
) =>
new Promise<PopoverWidget>((resolve, reject) => {
prefetch(id);
scriptManager()
.then(() => {
resolve(window.highloopFeedback.createPopoverWidget(id, button, opts));
})
.catch(reject);
});