@saasquatch/squatch-js 2.8.0-4 → 2.8.0-6

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/CHANGELOG.md CHANGED
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.8.0] - 2025-10-22
11
+
12
+ ### Added
13
+
14
+ - Added support for branding configuration to control widget sizing
15
+ - Embedded widgets now support configurable `minWidth` and `maxWidth` through `brandingConfig.widgetSize.embeddedWidgets`
16
+ - Popup widgets now support configurable `minWidth` and `maxWidth` through `brandingConfig.widgetSize.popupWidgets`
17
+ - Added new `WidgetValueConfig` interface to pass branding configuration to widgets
18
+ - Added `widgetConfig` parameter to `UpsertWidgetContext` and `BaseWidgetContext` types
19
+ - Created `formatWidth` utility function to handle width formatting with px and % units
20
+
21
+ ### Changed
22
+
23
+ - Updated widget rendering flow to include branding configuration from API responses
24
+ - Modified `EmbedWidget` and `PopupWidget` to apply dynamic sizing based on branding configuration
25
+ - Enhanced declarative widgets to support branding configuration through the widget API
26
+
10
27
  ## [2.7.0] - 2025-05-14
11
28
 
12
29
  ### Changed
@@ -370,7 +387,8 @@ No release notes.
370
387
 
371
388
  No release notes.
372
389
 
373
- [unreleased]: https://github.com/saasquatch/squatch-js/compare/@saasquatch%2Fsquatch-js@2.7.0...HEAD
390
+ [unreleased]: https://github.com/saasquatch/squatch-js/compare/@saasquatch%2Fsquatch-js@2.8.0...HEAD
391
+ [2.8.0]: https://github.com/saasquatch/squatch-js/compare/@saasquatch%2Fsquatch-js@2.7.0...@saasquatch%2Fsquatch-js@2.8.0
374
392
  [2.7.0]: https://github.com/saasquatch/squatch-js/compare/@saasquatch%2Fsquatch-js@2.6.3...@saasquatch%2Fsquatch-js@2.7.0
375
393
  [2.6.3]: https://github.com/saasquatch/squatch-js/compare/@saasquatch%2Fsquatch-js@2.6.2...@saasquatch%2Fsquatch-js@2.6.3
376
394
  [2.6.2]: https://github.com/saasquatch/squatch-js/compare/@saasquatch%2Fsquatch-js@2.6.1...@saasquatch%2Fsquatch-js@2.6.2
@@ -874,7 +874,7 @@ class Widget {
874
874
  );
875
875
  return element;
876
876
  }
877
- _createFrame() {
877
+ _createFrame(options) {
878
878
  const frame = document.createElement("iframe");
879
879
  frame["squatchJsApi"] = this;
880
880
  frame.id = "squatchFrame";
@@ -885,6 +885,11 @@ class Widget {
885
885
  "style",
886
886
  "border: 0; background-color: none; width: 1px; min-width: 100%;"
887
887
  );
888
+ if (options == null ? void 0 : options.minWidth) frame.style.minWidth = options.minWidth;
889
+ if (options == null ? void 0 : options.maxWidth) frame.style.maxWidth = options.maxWidth;
890
+ if ((options == null ? void 0 : options.maxWidth) || (options == null ? void 0 : options.minWidth)) {
891
+ frame.style.width = "100%";
892
+ }
888
893
  return frame;
889
894
  }
890
895
  _findFrame() {
@@ -1109,19 +1114,18 @@ class EmbedWidget extends Widget {
1109
1114
  }
1110
1115
  async load() {
1111
1116
  var _a2, _b, _c, _d, _e;
1112
- const frame = this._createFrame();
1117
+ const brandingConfig = (_b = (_a2 = this.context.widgetConfig) == null ? void 0 : _a2.values) == null ? void 0 : _b.brandingConfig;
1118
+ console.log({ brandingConfig });
1119
+ const sizes = (_c = brandingConfig == null ? void 0 : brandingConfig.widgetSize) == null ? void 0 : _c.embeddedWidgets;
1120
+ const maxWidth = (sizes == null ? void 0 : sizes.maxWidth) ? formatWidth(sizes.maxWidth) : "";
1121
+ const minWidth = (sizes == null ? void 0 : sizes.minWidth) ? formatWidth(sizes.minWidth) : "";
1122
+ const frame = this._createFrame({ minWidth, maxWidth });
1113
1123
  const element = this._findElement();
1114
- if ((_a2 = this.context) == null ? void 0 : _a2.container) {
1124
+ if ((_d = this.context) == null ? void 0 : _d.container) {
1115
1125
  element.style.visibility = "hidden";
1116
1126
  element.style.height = "0";
1117
1127
  element.style["overflow-y"] = "hidden";
1118
1128
  }
1119
- const brandingConfig = (_c = (_b = this.context.widgetConfig) == null ? void 0 : _b.values) == null ? void 0 : _c.brandingConfig;
1120
- const sizes = (_d = brandingConfig == null ? void 0 : brandingConfig.widgetSize) == null ? void 0 : _d.embeddedWidgets;
1121
- const maxWidth = (sizes == null ? void 0 : sizes.maxWidth) ? formatWidth(sizes.maxWidth) : "100%";
1122
- const minWidth = (sizes == null ? void 0 : sizes.minWidth) ? formatWidth(sizes.minWidth) : "100%";
1123
- element.style.maxWidth = maxWidth;
1124
- element.style.minWidth = minWidth;
1125
1129
  if (this.container) {
1126
1130
  if (element.shadowRoot) {
1127
1131
  if (((_e = element.shadowRoot.lastChild) == null ? void 0 : _e.nodeName) === "IFRAME") {
@@ -1251,7 +1255,7 @@ class PopupWidget extends Widget {
1251
1255
  const dialog = document.createElement("dialog");
1252
1256
  const brandingConfig = (_b = (_a2 = this.context.widgetConfig) == null ? void 0 : _a2.values) == null ? void 0 : _b.brandingConfig;
1253
1257
  const sizes = (_c = brandingConfig == null ? void 0 : brandingConfig.widgetSize) == null ? void 0 : _c.popupWidgets;
1254
- const minWidth = (sizes == null ? void 0 : sizes.minWidth) ? formatWidth(sizes.minWidth) : "100%";
1258
+ const minWidth = (sizes == null ? void 0 : sizes.minWidth) ? formatWidth(sizes.minWidth) : "auto";
1255
1259
  const maxWidth = (sizes == null ? void 0 : sizes.maxWidth) ? formatWidth(sizes.maxWidth) : "500px";
1256
1260
  dialog.id = this.id;
1257
1261
  dialog.setAttribute(