@saasquatch/squatch-js 2.8.0-4 → 2.8.0-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/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,11 +874,13 @@ 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";
881
881
  frame.width = "100%";
882
+ if (options == null ? void 0 : options.minWidth) frame.style.minWidth = options.minWidth;
883
+ if (options == null ? void 0 : options.maxWidth) frame.style.maxWidth = options.maxWidth;
882
884
  frame.src = "about:blank";
883
885
  frame.scrolling = "no";
884
886
  frame.setAttribute(
@@ -1109,19 +1111,17 @@ class EmbedWidget extends Widget {
1109
1111
  }
1110
1112
  async load() {
1111
1113
  var _a2, _b, _c, _d, _e;
1112
- const frame = this._createFrame();
1114
+ const brandingConfig = (_b = (_a2 = this.context.widgetConfig) == null ? void 0 : _a2.values) == null ? void 0 : _b.brandingConfig;
1115
+ const sizes = (_c = brandingConfig == null ? void 0 : brandingConfig.widgetSize) == null ? void 0 : _c.embeddedWidgets;
1116
+ const maxWidth = (sizes == null ? void 0 : sizes.maxWidth) ? formatWidth(sizes.maxWidth) : "";
1117
+ const minWidth = (sizes == null ? void 0 : sizes.minWidth) ? formatWidth(sizes.minWidth) : "";
1118
+ const frame = this._createFrame({ minWidth, maxWidth });
1113
1119
  const element = this._findElement();
1114
- if ((_a2 = this.context) == null ? void 0 : _a2.container) {
1120
+ if ((_d = this.context) == null ? void 0 : _d.container) {
1115
1121
  element.style.visibility = "hidden";
1116
1122
  element.style.height = "0";
1117
1123
  element.style["overflow-y"] = "hidden";
1118
1124
  }
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
1125
  if (this.container) {
1126
1126
  if (element.shadowRoot) {
1127
1127
  if (((_e = element.shadowRoot.lastChild) == null ? void 0 : _e.nodeName) === "IFRAME") {
@@ -1251,7 +1251,7 @@ class PopupWidget extends Widget {
1251
1251
  const dialog = document.createElement("dialog");
1252
1252
  const brandingConfig = (_b = (_a2 = this.context.widgetConfig) == null ? void 0 : _a2.values) == null ? void 0 : _b.brandingConfig;
1253
1253
  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%";
1254
+ const minWidth = (sizes == null ? void 0 : sizes.minWidth) ? formatWidth(sizes.minWidth) : "auto";
1255
1255
  const maxWidth = (sizes == null ? void 0 : sizes.maxWidth) ? formatWidth(sizes.maxWidth) : "500px";
1256
1256
  dialog.id = this.id;
1257
1257
  dialog.setAttribute(