@eka-care/medassist-widget-embed 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -12,11 +12,14 @@ declare let widgetCssTextPromise: Promise<string> | null;
12
12
  declare class MedAssistWidgetLoader extends HTMLElement {
13
13
  private defaultIconUrl;
14
14
  private widgetLoaded;
15
+ private displayMode;
16
+ private onClose?;
15
17
  constructor();
16
18
  static get observedAttributes(): string[];
17
19
  connectedCallback(): void;
18
20
  attributeChangedCallback(name: string): void;
19
21
  renderButton(): void;
22
+ initializeFullMode(): void;
20
23
  loadAndRender(): Promise<void>;
21
24
  loadWidgetCss(): Promise<void>;
22
25
  loadWidgetScript(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,gBAAgB,QAAO,iBAAiB,GAAG,IAahD,CAAC;AAEF,KAAK,iBAAiB,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC;AAElE,QAAA,MAAM,cAAc,GAClB,OAAO,MAAM,GAAG,IAAI,KACnB,iBAAiB,GAAG,SAStB,CAAC;AAEF,QAAA,MAAM,yBAAyB,8DAC8B,CAAC;AAE9D,QAAA,MAAM,QAAQ,0BAAqB,CAAC;AACpC,QAAA,MAAM,aAAa,QASf,CAAC;AAEL,QAAA,MAAM,kBAAkB,QAmBpB,CAAC;AAEL,QAAA,MAAM,aAAa,QAA6C,CAAC;AACjE,QAAA,MAAM,cAAc,QAA8C,CAAC;AAEnE,QAAA,IAAI,mBAAmB,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAW,CAAC;AACrD,QAAA,IAAI,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAW,CAAC;AAExD,cAAM,qBAAsB,SAAQ,WAAW;IAC7C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAU;;IAS9B,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAExC;IAED,iBAAiB,IAAI,IAAI;IAIzB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM5C,YAAY,IAAI,IAAI;IAiEd,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAiE9B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BpC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CA0ClC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,gBAAgB,QAAO,iBAAiB,GAAG,IAahD,CAAC;AAEF,KAAK,iBAAiB,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC;AAElE,QAAA,MAAM,cAAc,GAClB,OAAO,MAAM,GAAG,IAAI,KACnB,iBAAiB,GAAG,SAStB,CAAC;AAEF,QAAA,MAAM,yBAAyB,8DAC8B,CAAC;AAE9D,QAAA,MAAM,QAAQ,0BAAqB,CAAC;AACpC,QAAA,MAAM,aAAa,QASf,CAAC;AAEL,QAAA,MAAM,kBAAkB,QAmBpB,CAAC;AAEL,QAAA,MAAM,aAAa,QAA6C,CAAC;AACjE,QAAA,MAAM,cAAc,QAA8C,CAAC;AAEnE,QAAA,IAAI,mBAAmB,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAW,CAAC;AACrD,QAAA,IAAI,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAW,CAAC;AAExD,cAAM,qBAAsB,SAAQ,WAAW;IAC7C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,OAAO,CAAC,CAAa;;IAU7B,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAExC;IAED,iBAAiB,IAAI,IAAI;IAazB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAmB5C,YAAY,IAAI,IAAI;IAiEpB,kBAAkB,IAAI,IAAI;IA6BpB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAmF9B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BpC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CA0ClC"}
package/dist/index.js CHANGED
@@ -60,16 +60,41 @@ class MedAssistWidgetLoader extends HTMLElement {
60
60
  this.attachShadow({ mode: "open" });
61
61
  this.defaultIconUrl = "./assets/bot-icon.svg";
62
62
  this.widgetLoaded = false;
63
+ this.displayMode = this.getAttribute("display-mode") === "full" ? "full" : "widget";
63
64
  }
64
65
  static get observedAttributes() {
65
- return ["icon-url"];
66
+ return ["icon-url", "display-mode"];
66
67
  }
67
68
  connectedCallback() {
68
- this.renderButton();
69
+ if (this.displayMode === "full") {
70
+ this.initializeFullMode();
71
+ this.loadWidgetCss().then(() => {
72
+ this.loadWidgetScript().then(() => {
73
+ this.loadAndRender();
74
+ });
75
+ });
76
+ }
77
+ else {
78
+ this.renderButton();
79
+ }
69
80
  }
70
81
  attributeChangedCallback(name) {
71
82
  if (name === "icon-url") {
72
- this.renderButton();
83
+ if (this.displayMode === "widget") {
84
+ this.renderButton();
85
+ }
86
+ }
87
+ if (name === "display-mode") {
88
+ const newMode = this.getAttribute("display-mode") === "full" ? "full" : "widget";
89
+ if (newMode !== this.displayMode) {
90
+ this.displayMode = newMode;
91
+ if (newMode === "full") {
92
+ this.initializeFullMode();
93
+ }
94
+ else {
95
+ this.renderButton();
96
+ }
97
+ }
73
98
  }
74
99
  }
75
100
  renderButton() {
@@ -132,9 +157,35 @@ class MedAssistWidgetLoader extends HTMLElement {
132
157
  }
133
158
  }
134
159
  }
160
+ initializeFullMode() {
161
+ const shadowRoot = this.shadowRoot;
162
+ if (!shadowRoot) {
163
+ console.error("Shadow root is not available");
164
+ return;
165
+ }
166
+ if (!shadowRoot.getElementById("medassist-widget-root")) {
167
+ shadowRoot.innerHTML = `
168
+ <style>
169
+ :host {
170
+ display: block;
171
+ width: 100%;
172
+ height: 100%;
173
+ position: fixed;
174
+ top: 0;
175
+ left: 0;
176
+ z-index: 200000;
177
+ }
178
+ #medassist-widget-root {
179
+ width: 100%;
180
+ height: 100%;
181
+ }
182
+ </style>
183
+ <div id="medassist-widget-root"></div>
184
+ `;
185
+ }
186
+ }
135
187
  async loadAndRender() {
136
188
  var _a, _b;
137
- console.log("MedAssistWidgetLoader loadAndRender");
138
189
  const shadowRoot = this.shadowRoot;
139
190
  if (!shadowRoot) {
140
191
  console.error("Shadow root is not available");
@@ -150,22 +201,36 @@ class MedAssistWidgetLoader extends HTMLElement {
150
201
  const displayModeAttribute = this.getAttribute("display-mode");
151
202
  const displayMode = displayModeAttribute === "full" ? "full" : "widget";
152
203
  const context = this.getAttribute("context") ? JSON.parse(this.getAttribute("context") || "{}") : undefined;
204
+ const customOnClose = this.onClose || (() => {
205
+ const onCloseAttr = this.getAttribute("data-on-close");
206
+ if (onCloseAttr && typeof window[onCloseAttr] === "function") {
207
+ return window[onCloseAttr];
208
+ }
209
+ return undefined;
210
+ })();
153
211
  if (!agentId) {
154
212
  console.error("Agent ID is required");
155
213
  return;
156
214
  }
157
- if (!button || !rootElement) {
158
- console.error("Widget button or root element is missing");
215
+ if (!rootElement) {
216
+ console.error("Widget root element is missing");
159
217
  return;
160
218
  }
161
- button.classList.add("hidden");
219
+ if (button) {
220
+ button.classList.add("hidden");
221
+ }
162
222
  rootElement.classList.remove("hidden");
163
223
  const widgetConfig = {
164
224
  title,
165
225
  iconUrl,
166
226
  environment,
167
227
  onClose: () => {
168
- button.classList.remove("hidden");
228
+ if (customOnClose && typeof customOnClose === "function") {
229
+ customOnClose();
230
+ }
231
+ if (button) {
232
+ button.classList.remove("hidden");
233
+ }
169
234
  rootElement.classList.add("hidden");
170
235
  },
171
236
  baseUrl,
@@ -186,7 +251,9 @@ class MedAssistWidgetLoader extends HTMLElement {
186
251
  }
187
252
  catch (error) {
188
253
  console.error("Failed to load MedAssist widget", error);
189
- button.classList.remove("hidden");
254
+ if (button) {
255
+ button.classList.remove("hidden");
256
+ }
190
257
  rootElement.classList.add("hidden");
191
258
  }
192
259
  }