@emuanalytics/flow-rdf-ui 4.0.2 → 4.0.4

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.mjs CHANGED
@@ -1776,6 +1776,32 @@ function waitForEvent(el, eventName) {
1776
1776
  });
1777
1777
  }
1778
1778
 
1779
+ function watch(propertyName, options) {
1780
+ const resolvedOptions = {
1781
+ waitUntilFirstUpdate: false,
1782
+ ...options
1783
+ };
1784
+ return (proto, decoratedFnName) => {
1785
+ const { update } = proto;
1786
+ const watchedProperties = Array.isArray(propertyName) ? propertyName : [propertyName];
1787
+ proto.update = function(changedProps) {
1788
+ watchedProperties.forEach((property) => {
1789
+ const key = property;
1790
+ if (changedProps.has(key)) {
1791
+ const oldValue = changedProps.get(key);
1792
+ const newValue = this[key];
1793
+ if (oldValue !== newValue) {
1794
+ if (!resolvedOptions.waitUntilFirstUpdate || this.hasUpdated) {
1795
+ this[decoratedFnName](oldValue, newValue);
1796
+ }
1797
+ }
1798
+ }
1799
+ });
1800
+ update.call(this, changedProps);
1801
+ };
1802
+ };
1803
+ }
1804
+
1779
1805
  var __defProp$Z = Object.defineProperty;
1780
1806
  var __getOwnPropDesc$Z = Object.getOwnPropertyDescriptor;
1781
1807
  var __decorateClass$Z = (decorators, target, key, kind) => {
@@ -1814,6 +1840,23 @@ __decorateClass$Z([
1814
1840
  __decorateClass$Z([
1815
1841
  property()
1816
1842
  ], FlowRdfElement.prototype, "lang", 2);
1843
+ const _FlowRdfFormControl = class _FlowRdfFormControl extends FlowRdfElement {
1844
+ handleClassChange() {
1845
+ this.classList.add(_FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
1846
+ }
1847
+ connectedCallback() {
1848
+ super.connectedCallback();
1849
+ this.classList.add(_FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
1850
+ }
1851
+ };
1852
+ _FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS = "flow-ui-form-control";
1853
+ __decorateClass$Z([
1854
+ property({ reflect: true })
1855
+ ], _FlowRdfFormControl.prototype, "class", 2);
1856
+ __decorateClass$Z([
1857
+ watch("class")
1858
+ ], _FlowRdfFormControl.prototype, "handleClassChange", 1);
1859
+ let FlowRdfFormControl = _FlowRdfFormControl;
1817
1860
 
1818
1861
  class HasSlotController {
1819
1862
  constructor(host, ...slotNames) {
@@ -1873,32 +1916,6 @@ function getTextContent(slot) {
1873
1916
  return text;
1874
1917
  }
1875
1918
 
1876
- function watch(propertyName, options) {
1877
- const resolvedOptions = {
1878
- waitUntilFirstUpdate: false,
1879
- ...options
1880
- };
1881
- return (proto, decoratedFnName) => {
1882
- const { update } = proto;
1883
- const watchedProperties = Array.isArray(propertyName) ? propertyName : [propertyName];
1884
- proto.update = function(changedProps) {
1885
- watchedProperties.forEach((property) => {
1886
- const key = property;
1887
- if (changedProps.has(key)) {
1888
- const oldValue = changedProps.get(key);
1889
- const newValue = this[key];
1890
- if (oldValue !== newValue) {
1891
- if (!resolvedOptions.waitUntilFirstUpdate || this.hasUpdated) {
1892
- this[decoratedFnName](oldValue, newValue);
1893
- }
1894
- }
1895
- }
1896
- });
1897
- update.call(this, changedProps);
1898
- };
1899
- };
1900
- }
1901
-
1902
1919
  const defaultAnimationRegistry = /* @__PURE__ */ new Map();
1903
1920
  const customAnimationRegistry = /* @__PURE__ */ new WeakMap();
1904
1921
  function ensureAnimation(animation) {
@@ -3016,6 +3033,8 @@ const styles$Y = css`
3016
3033
  display: inline-block;
3017
3034
  color: var(--flow-ui-color-neutral-600);
3018
3035
 
3036
+ --hover-color: var(--flow-ui-color-primary-500);
3037
+ --active-color: var(--flow-ui-color-primary-400);
3019
3038
  --icon-size: inherit;
3020
3039
  }
3021
3040
 
@@ -3042,11 +3061,11 @@ const styles$Y = css`
3042
3061
 
3043
3062
  .icon-button:hover:not(.icon-button--disabled),
3044
3063
  .icon-button:focus-visible:not(.icon-button--disabled) {
3045
- color: var(--flow-ui-color-primary-500);
3064
+ color: var(--hover-color);
3046
3065
  }
3047
3066
 
3048
3067
  .icon-button:active:not(.icon-button--disabled) {
3049
- color: var(--flow-ui-color-primary-600);
3068
+ color: var(--active-color);
3050
3069
  }
3051
3070
 
3052
3071
  .icon-button:focus {
@@ -3082,7 +3101,6 @@ const styles$Y = css`
3082
3101
  .icon-button__tooltip--confirm .confirm__label {
3083
3102
  margin-inline: var(--flow-ui-spacing-x-small);
3084
3103
  }
3085
-
3086
3104
  `;
3087
3105
 
3088
3106
  var __defProp$V = Object.defineProperty;
@@ -3360,6 +3378,14 @@ const styles$X = css`
3360
3378
  color: var(--flow-ui-color-primary-500);
3361
3379
  }
3362
3380
 
3381
+ .alert--secondary {
3382
+ border-top-color: var(--flow-ui-color-secondary-500);
3383
+ }
3384
+
3385
+ .alert--secondary .alert__icon {
3386
+ color: var(--flow-ui-color-secondary-500);
3387
+ }
3388
+
3363
3389
  .alert--success {
3364
3390
  border-top-color: var(--flow-ui-color-success-600);
3365
3391
  }
@@ -3530,6 +3556,7 @@ class FlowUiAlert extends FlowRdfElement {
3530
3556
  "alert--closable": this.closable,
3531
3557
  "alert--has-icon": this.hasSlotController.test("icon"),
3532
3558
  "alert--primary": this.variant === "primary",
3559
+ "alert--secondary": this.variant === "secondary",
3533
3560
  "alert--success": this.variant === "success",
3534
3561
  "alert--neutral": this.variant === "neutral",
3535
3562
  "alert--warning": this.variant === "warning",
@@ -5495,7 +5522,7 @@ var __decorateClass$N = (decorators, target, key, kind) => {
5495
5522
  __defProp$N(target, key, result);
5496
5523
  return result;
5497
5524
  };
5498
- let FlowUiButton = class extends FlowRdfElement {
5525
+ let FlowUiButton = class extends FlowRdfFormControl {
5499
5526
  constructor() {
5500
5527
  super(...arguments);
5501
5528
  this.formControlController = new FormControlController(this, {
@@ -7330,6 +7357,7 @@ const styles$K = css`
7330
7357
  cursor: pointer;
7331
7358
  }
7332
7359
 
7360
+ /* Sizes */
7333
7361
  .checkbox--small {
7334
7362
  --toggle-size: var(--flow-ui-toggle-size-small);
7335
7363
  font-size: var(--flow-ui-input-font-size-small);
@@ -7345,6 +7373,7 @@ const styles$K = css`
7345
7373
  font-size: var(--flow-ui-input-font-size-large);
7346
7374
  }
7347
7375
 
7376
+ /* Color variants */
7348
7377
  .checkbox--primary {
7349
7378
  --checkbox-color: var(--flow-ui-color-primary-500);
7350
7379
  --checkbox-hover-color: var(--flow-ui-color-primary-400);
@@ -7375,6 +7404,23 @@ const styles$K = css`
7375
7404
  --checkbox-hover-color: var(--flow-ui-color-neutral-400);
7376
7405
  }
7377
7406
 
7407
+ /* Alternative 'full-width' style */
7408
+ :host([full-width]) {
7409
+ display: block;
7410
+ margin-top: var(--flow-ui-spacing-small);
7411
+ }
7412
+
7413
+ .checkbox--full-width {
7414
+ display: flex;
7415
+ flex-direction: row-reverse;
7416
+ align-items: center;
7417
+ }
7418
+
7419
+ .checkbox--full-width .checkbox__label {
7420
+ flex: 1;
7421
+ margin: 0;
7422
+ }
7423
+
7378
7424
  .checkbox__control {
7379
7425
  flex: 0 0 auto;
7380
7426
  position: relative;
@@ -7473,7 +7519,7 @@ var __decorateClass$I = (decorators, target, key, kind) => {
7473
7519
  __defProp$I(target, key, result);
7474
7520
  return result;
7475
7521
  };
7476
- let FlowUiCheckbox = class extends FlowRdfElement {
7522
+ let FlowUiCheckbox = class extends FlowRdfFormControl {
7477
7523
  constructor() {
7478
7524
  super(...arguments);
7479
7525
  this.hasSlotController = new HasSlotController(this, "[default]");
@@ -7492,6 +7538,7 @@ let FlowUiCheckbox = class extends FlowRdfElement {
7492
7538
  this.defaultChecked = false;
7493
7539
  this.form = "";
7494
7540
  this.required = false;
7541
+ this.fullWidth = false;
7495
7542
  }
7496
7543
  connectedCallback() {
7497
7544
  super.connectedCallback();
@@ -7499,6 +7546,7 @@ let FlowUiCheckbox = class extends FlowRdfElement {
7499
7546
  this.indeterminate = boolean(this.indeterminate, true);
7500
7547
  this.disabled = boolean(this.disabled, true);
7501
7548
  this.required = boolean(this.required, true);
7549
+ this.fullWidth = boolean(this.fullWidth, true);
7502
7550
  }
7503
7551
  /** Gets the validity state object */
7504
7552
  get validity() {
@@ -7589,7 +7637,8 @@ let FlowUiCheckbox = class extends FlowRdfElement {
7589
7637
  "checkbox--success": this.variant === "success",
7590
7638
  "checkbox--warning": this.variant === "warning",
7591
7639
  "checkbox--danger": this.variant === "danger",
7592
- "checkbox--neutral": this.variant === "neutral"
7640
+ "checkbox--neutral": this.variant === "neutral",
7641
+ "checkbox--full-width": this.fullWidth
7593
7642
  })}
7594
7643
  >
7595
7644
  <input
@@ -7681,6 +7730,9 @@ __decorateClass$I([
7681
7730
  __decorateClass$I([
7682
7731
  property()
7683
7732
  ], FlowUiCheckbox.prototype, "variant", 2);
7733
+ __decorateClass$I([
7734
+ property({ type: Boolean, reflect: true, attribute: "full-width" })
7735
+ ], FlowUiCheckbox.prototype, "fullWidth", 2);
7684
7736
  __decorateClass$I([
7685
7737
  watch("disabled", { waitUntilFirstUpdate: true })
7686
7738
  ], FlowUiCheckbox.prototype, "handleDisabledChange", 1);
@@ -7844,8 +7896,12 @@ class FlowUiColorMapper extends FlowRdfElement {
7844
7896
  }
7845
7897
  connectedCallback() {
7846
7898
  super.connectedCallback();
7899
+ this.classList.add(FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
7847
7900
  this.defaultColorStop = boolean(this.defaultColorStop, true);
7848
7901
  }
7902
+ handleClassChange() {
7903
+ this.classList.add(FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
7904
+ }
7849
7905
  handleFixedPickerClick(event) {
7850
7906
  event.stopPropagation();
7851
7907
  }
@@ -8027,6 +8083,9 @@ __decorateClass$H([
8027
8083
  __decorateClass$H([
8028
8084
  query(".dialog-info")
8029
8085
  ], FlowUiColorMapper.prototype, "infoDialog", 2);
8086
+ __decorateClass$H([
8087
+ property({ reflect: true })
8088
+ ], FlowUiColorMapper.prototype, "class", 2);
8030
8089
  __decorateClass$H([
8031
8090
  property({ type: Object })
8032
8091
  ], FlowUiColorMapper.prototype, "options", 2);
@@ -8042,6 +8101,9 @@ __decorateClass$H([
8042
8101
  __decorateClass$H([
8043
8102
  property()
8044
8103
  ], FlowUiColorMapper.prototype, "swatches", 2);
8104
+ __decorateClass$H([
8105
+ watch("class")
8106
+ ], FlowUiColorMapper.prototype, "handleClassChange", 1);
8045
8107
  __decorateClass$H([
8046
8108
  throttle(100)
8047
8109
  ], FlowUiColorMapper.prototype, "emitChange", 1);
@@ -8923,7 +8985,7 @@ const d3Format = formatLocale({
8923
8985
  currency: ["\xA3", ""]
8924
8986
  }).format;
8925
8987
  const DEFAULT_FORMATTER$1 = (val) => isNil(val) ? "--" : val.toString();
8926
- class FlowUiInput extends FlowRdfElement {
8988
+ class FlowUiInput extends FlowRdfFormControl {
8927
8989
  constructor() {
8928
8990
  super(...arguments);
8929
8991
  this.formControlController = new FormControlController(this, {
@@ -9806,7 +9868,7 @@ var __decorateClass$E = (decorators, target, key, kind) => {
9806
9868
  return result;
9807
9869
  };
9808
9870
  const hasEyeDropper = typeof window !== "undefined" && "EyeDropper" in window;
9809
- class FlowUiColorPicker extends FlowRdfElement {
9871
+ class FlowUiColorPicker extends FlowRdfFormControl {
9810
9872
  constructor() {
9811
9873
  super(...arguments);
9812
9874
  this.formControlController = new FormControlController(this);
@@ -10806,7 +10868,7 @@ var __decorateClass$D = (decorators, target, key, kind) => {
10806
10868
  __defProp$D(target, key, result);
10807
10869
  return result;
10808
10870
  };
10809
- class FlowUiColorStop extends FlowRdfElement {
10871
+ class FlowUiColorStop extends FlowRdfFormControl {
10810
10872
  constructor() {
10811
10873
  super(...arguments);
10812
10874
  // private readonly localize = new LocalizeController(this);
@@ -11107,6 +11169,16 @@ const styles$E = css`
11107
11169
  color: var(--flow-ui-color-primary-500);
11108
11170
  }
11109
11171
 
11172
+ .tag--secondary {
11173
+ background-color: var(--flow-ui-color-secondary-50);
11174
+ border-color: var(--flow-ui-color-secondary-200);
11175
+ color: var(--flow-ui-color-primary-800);
11176
+ }
11177
+
11178
+ .tag--secondary:active > flow-ui-icon-button {
11179
+ color: var(--flow-ui-color-secondary-500);
11180
+ }
11181
+
11110
11182
  .tag--success {
11111
11183
  background-color: var(--flow-ui-color-success-50);
11112
11184
  border-color: var(--flow-ui-color-success-200);
@@ -11224,6 +11296,7 @@ class FlowUiTag extends FlowRdfElement {
11224
11296
  tag: true,
11225
11297
  // Types
11226
11298
  "tag--primary": this.variant === "primary",
11299
+ "tag--secondary": this.variant === "secondary",
11227
11300
  "tag--success": this.variant === "success",
11228
11301
  "tag--neutral": this.variant === "neutral",
11229
11302
  "tag--warning": this.variant === "warning",
@@ -11542,7 +11615,7 @@ const popupOptions = {
11542
11615
  medium: { distance: -3, skidding: -9 },
11543
11616
  large: { distance: -5, skidding: -15 }
11544
11617
  };
11545
- class FlowUiDateTimePicker extends FlowRdfElement {
11618
+ class FlowUiDateTimePicker extends FlowRdfFormControl {
11546
11619
  constructor() {
11547
11620
  super(...arguments);
11548
11621
  this.formControlController = new FormControlController(this, {
@@ -12765,8 +12838,8 @@ const styles$A = css`
12765
12838
  ${componentStyles}
12766
12839
 
12767
12840
  :host {
12768
- --color: var(--flow-ui-panel-border-color);
12769
- --width: var(--flow-ui-panel-border-width);
12841
+ --color: var(--flow-ui-divider-color);
12842
+ --width: var(--flow-ui-divider-width);
12770
12843
  --spacing: var(--flow-ui-spacing-medium);
12771
12844
 
12772
12845
  /* Maintain divider width when used in flexbox layouts */
@@ -14658,6 +14731,7 @@ const styles$r = css`
14658
14731
  }
14659
14732
 
14660
14733
  .panel-header__title {
14734
+ font-weight: var(--flow-ui-panel-header-font-weight);
14661
14735
  text-overflow: ellipsis;
14662
14736
  overflow: hidden;
14663
14737
  white-space: nowrap;
@@ -14701,6 +14775,7 @@ class FlowUiPanelHeader extends FlowRdfElement {
14701
14775
  connectedCallback() {
14702
14776
  super.connectedCallback();
14703
14777
  this.closed = boolean(this.closed, true);
14778
+ this.fixed = boolean(this.fixed, true);
14704
14779
  }
14705
14780
  disconnectedCallback() {
14706
14781
  super.disconnectedCallback();
@@ -14809,12 +14884,16 @@ const styles$q = css`
14809
14884
  min-height: 0;
14810
14885
 
14811
14886
  --padding: var(--flow-ui-spacing-small);
14887
+ --background-color: var(--flow-ui-panel-background-color);
14888
+ --color: var(--flow-ui-panel-color);
14812
14889
  }
14813
14890
 
14814
14891
  .panel {
14815
14892
  height: 100%;
14816
14893
  display: flex;
14817
14894
  flex-direction: column;
14895
+ background-color: var(--background-color);
14896
+ color: var(--color);
14818
14897
  }
14819
14898
 
14820
14899
  /* Body */
@@ -15589,7 +15668,7 @@ const styles$n = css`
15589
15668
  /* Footer */
15590
15669
  .query-builder__footer {
15591
15670
  text-align: right;
15592
- padding-block: var(--footer-spacing);
15671
+ padding-top: var(--footer-spacing);
15593
15672
  }
15594
15673
 
15595
15674
  .query-builder__footer ::slotted(flow-ui-button:not(:first-of-type)) {
@@ -15616,7 +15695,7 @@ const _FlowUiQueryBuilder = class _FlowUiQueryBuilder extends FlowRdfElement {
15616
15695
  constructor() {
15617
15696
  super(...arguments);
15618
15697
  this._value = { condition: "and", rules: [] };
15619
- this.hasSlotController = new HasSlotController(this, "help-text", "label");
15698
+ this.hasSlotController = new HasSlotController(this, "help-text", "label", "footer");
15620
15699
  this.value = { condition: "and", rules: [] };
15621
15700
  this.config = { fields: {} };
15622
15701
  this.size = "medium";
@@ -15643,8 +15722,12 @@ const _FlowUiQueryBuilder = class _FlowUiQueryBuilder extends FlowRdfElement {
15643
15722
  }
15644
15723
  connectedCallback() {
15645
15724
  super.connectedCallback();
15725
+ this.classList.add(FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
15646
15726
  this.disabled = boolean(this.disabled, true);
15647
15727
  }
15728
+ handleClassChange() {
15729
+ this.classList.add(FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
15730
+ }
15648
15731
  handleValueChange() {
15649
15732
  this._value = this.subQueryBuilder ? this.value : cloneDeep(this.value);
15650
15733
  if (isNil(this._value)) {
@@ -15974,9 +16057,11 @@ const _FlowUiQueryBuilder = class _FlowUiQueryBuilder extends FlowRdfElement {
15974
16057
  ${this.helpText}
15975
16058
  </slot>
15976
16059
 
15977
- <footer part="footer" class="query-builder__footer">
15978
- <slot name="footer"></slot>
15979
- </footer>
16060
+ ${this.hasSlotController.test("footer") ? html`
16061
+ <footer part="footer" class="query-builder__footer">
16062
+ <slot name="footer"></slot>
16063
+ </footer>
16064
+ ` : nothing}
15980
16065
  </div>
15981
16066
  </div>
15982
16067
  `;
@@ -15987,6 +16072,9 @@ _FlowUiQueryBuilder.fieldDefinitions = /* @__PURE__ */ new Map();
15987
16072
  __decorateClass$m([
15988
16073
  state()
15989
16074
  ], _FlowUiQueryBuilder.prototype, "_value", 2);
16075
+ __decorateClass$m([
16076
+ property({ reflect: true })
16077
+ ], _FlowUiQueryBuilder.prototype, "class", 2);
15990
16078
  __decorateClass$m([
15991
16079
  property({ attribute: false })
15992
16080
  ], _FlowUiQueryBuilder.prototype, "value", 2);
@@ -16011,6 +16099,9 @@ __decorateClass$m([
16011
16099
  __decorateClass$m([
16012
16100
  property({ type: Boolean, attribute: "sub-query-builder" })
16013
16101
  ], _FlowUiQueryBuilder.prototype, "subQueryBuilder", 2);
16102
+ __decorateClass$m([
16103
+ watch("class")
16104
+ ], _FlowUiQueryBuilder.prototype, "handleClassChange", 1);
16014
16105
  __decorateClass$m([
16015
16106
  watch("value")
16016
16107
  ], _FlowUiQueryBuilder.prototype, "handleValueChange", 1);
@@ -16048,6 +16139,14 @@ const styles$m = css`
16048
16139
  display: block;
16049
16140
  }
16050
16141
 
16142
+ .form-control-input {
16143
+ line-height: 1;
16144
+ }
16145
+
16146
+ ::slotted(flow-ui-radio:not(:first-child)) {
16147
+ margin-top: var(--flow-ui-form-spacing, var(--flow-ui-form-spacing-dense));
16148
+ }
16149
+
16051
16150
  .form-control {
16052
16151
  border: none;
16053
16152
  padding: 0;
@@ -16087,7 +16186,7 @@ var __decorateClass$l = (decorators, target, key, kind) => {
16087
16186
  __defProp$l(target, key, result);
16088
16187
  return result;
16089
16188
  };
16090
- class FlowUiRadioGroup extends FlowRdfElement {
16189
+ class FlowUiRadioGroup extends FlowRdfFormControl {
16091
16190
  constructor() {
16092
16191
  super(...arguments);
16093
16192
  this.formControlController = new FormControlController(this);
@@ -16103,7 +16202,7 @@ class FlowUiRadioGroup extends FlowRdfElement {
16103
16202
  this.variant = "secondary";
16104
16203
  this.form = "";
16105
16204
  this.required = false;
16106
- this.vertical = false;
16205
+ this.fullWidth = false;
16107
16206
  }
16108
16207
  /** Gets the validity state object */
16109
16208
  get validity() {
@@ -16130,7 +16229,7 @@ class FlowUiRadioGroup extends FlowRdfElement {
16130
16229
  connectedCallback() {
16131
16230
  super.connectedCallback();
16132
16231
  this.required = boolean(this.required, true);
16133
- this.vertical = boolean(this.vertical, true);
16232
+ this.fullWidth = boolean(this.fullWidth, true);
16134
16233
  this.defaultValue = this.value;
16135
16234
  }
16136
16235
  firstUpdated() {
@@ -16201,6 +16300,7 @@ class FlowUiRadioGroup extends FlowRdfElement {
16201
16300
  radio.checked = radio.value === this.value;
16202
16301
  radio.size = this.size;
16203
16302
  radio.variant = this.variant;
16303
+ radio.fullWidth = this.fullWidth;
16204
16304
  });
16205
16305
  if (!radios.some((radio) => radio.checked)) {
16206
16306
  radios[0].tabIndex = 0;
@@ -16214,10 +16314,7 @@ class FlowUiRadioGroup extends FlowRdfElement {
16214
16314
  radios.forEach((radio) => radio.checked = radio.value === this.value);
16215
16315
  this.formControlController.setValidity(this.validity.valid);
16216
16316
  }
16217
- handleSizeChange() {
16218
- this.syncRadios();
16219
- }
16220
- handleVariantChange() {
16317
+ handleStyleChange() {
16221
16318
  this.syncRadios();
16222
16319
  }
16223
16320
  handleValueChange() {
@@ -16368,14 +16465,11 @@ __decorateClass$l([
16368
16465
  property({ type: Boolean, reflect: true })
16369
16466
  ], FlowUiRadioGroup.prototype, "required", 2);
16370
16467
  __decorateClass$l([
16371
- property({ type: Boolean, reflect: true })
16372
- ], FlowUiRadioGroup.prototype, "vertical", 2);
16373
- __decorateClass$l([
16374
- watch("size", { waitUntilFirstUpdate: true })
16375
- ], FlowUiRadioGroup.prototype, "handleSizeChange", 1);
16468
+ property({ type: Boolean, reflect: true, attribute: "full-width" })
16469
+ ], FlowUiRadioGroup.prototype, "fullWidth", 2);
16376
16470
  __decorateClass$l([
16377
- watch("variant", { waitUntilFirstUpdate: true })
16378
- ], FlowUiRadioGroup.prototype, "handleVariantChange", 1);
16471
+ watch(["size", "variant", "fullWidth"], { waitUntilFirstUpdate: true })
16472
+ ], FlowUiRadioGroup.prototype, "handleStyleChange", 1);
16379
16473
  __decorateClass$l([
16380
16474
  watch("value")
16381
16475
  ], FlowUiRadioGroup.prototype, "handleValueChange", 1);
@@ -16404,6 +16498,19 @@ const styles$l = css`
16404
16498
  cursor: pointer;
16405
16499
  }
16406
16500
 
16501
+ /* Alternative 'full-width' style */
16502
+ .radio--full-width {
16503
+ display: flex;
16504
+ flex-direction: row-reverse;
16505
+ align-items: center;
16506
+ }
16507
+
16508
+ .radio--full-width .radio__label {
16509
+ flex: 1;
16510
+ margin: 0;
16511
+ }
16512
+
16513
+ /* Variants */
16407
16514
  .radio--primary {
16408
16515
  --radio-color: var(--flow-ui-color-primary-500);
16409
16516
  --radio-hover-color: var(--flow-ui-color-primary-400);
@@ -16546,10 +16653,12 @@ class FlowUiRadio extends FlowRdfElement {
16546
16653
  this.size = "medium";
16547
16654
  this.variant = "secondary";
16548
16655
  this.disabled = false;
16656
+ this.fullWidth = false;
16549
16657
  }
16550
16658
  connectedCallback() {
16551
16659
  super.connectedCallback();
16552
16660
  this.disabled = boolean(this.disabled, true);
16661
+ this.fullWidth = boolean(this.fullWidth, true);
16553
16662
  this.handleBlur = this.handleBlur.bind(this);
16554
16663
  this.handleClick = this.handleClick.bind(this);
16555
16664
  this.handleFocus = this.handleFocus.bind(this);
@@ -16611,7 +16720,8 @@ class FlowUiRadio extends FlowRdfElement {
16611
16720
  "radio--success": this.variant === "success",
16612
16721
  "radio--warning": this.variant === "warning",
16613
16722
  "radio--danger": this.variant === "danger",
16614
- "radio--neutral": this.variant === "neutral"
16723
+ "radio--neutral": this.variant === "neutral",
16724
+ "radio--full-width": this.fullWidth
16615
16725
  })}
16616
16726
  >
16617
16727
  <span part="${`control${this.checked ? " control--checked" : ""}`}" class="radio__control">
@@ -16649,6 +16759,9 @@ __decorateClass$k([
16649
16759
  __decorateClass$k([
16650
16760
  property({ type: Boolean, reflect: true })
16651
16761
  ], FlowUiRadio.prototype, "disabled", 2);
16762
+ __decorateClass$k([
16763
+ property({ type: Boolean, reflect: true, attribute: "full-width" })
16764
+ ], FlowUiRadio.prototype, "fullWidth", 2);
16652
16765
  __decorateClass$k([
16653
16766
  watch("checked")
16654
16767
  ], FlowUiRadio.prototype, "handleCheckedChange", 1);
@@ -16895,7 +17008,7 @@ var __decorateClass$j = (decorators, target, key, kind) => {
16895
17008
  __defProp$j(target, key, result);
16896
17009
  return result;
16897
17010
  };
16898
- class FlowUiRange extends FlowRdfElement {
17011
+ class FlowUiRange extends FlowRdfFormControl {
16899
17012
  constructor() {
16900
17013
  super(...arguments);
16901
17014
  this.formControlController = new FormControlController(this);
@@ -18472,7 +18585,7 @@ var __decorateClass$g = (decorators, target, key, kind) => {
18472
18585
  __defProp$g(target, key, result);
18473
18586
  return result;
18474
18587
  };
18475
- class FlowUiSelect extends FlowRdfElement {
18588
+ class FlowUiSelect extends FlowRdfFormControl {
18476
18589
  constructor() {
18477
18590
  super(...arguments);
18478
18591
  this.formControlController = new FormControlController(this, {
@@ -19228,6 +19341,7 @@ const styles$g = css`
19228
19341
  :host {
19229
19342
  --divider-width: 2px;
19230
19343
  --divider-hit-area: 12px;
19344
+ --color: var(--flow-ui-divider-color);
19231
19345
 
19232
19346
  display: block;
19233
19347
  }
@@ -19236,7 +19350,7 @@ const styles$g = css`
19236
19350
  height: 100%;
19237
19351
  display: flex;
19238
19352
  position: relative;
19239
- background-color: var(--flow-ui-color-neutral-200);
19353
+ background-color: var(--color);
19240
19354
  color: var(--flow-ui-color-neutral-900);
19241
19355
  }
19242
19356
 
@@ -19257,7 +19371,8 @@ const styles$g = css`
19257
19371
  transform: scale(0);
19258
19372
  }
19259
19373
 
19260
- :host([dragging]) .divider-highlight, .divider:hover .divider-highlight {
19374
+ :host([dragging]) .divider-highlight,
19375
+ .divider:hover .divider-highlight {
19261
19376
  transform: scale(1);
19262
19377
  }
19263
19378
 
@@ -19287,7 +19402,6 @@ const styles$g = css`
19287
19402
  cursor: col-resize;
19288
19403
  }
19289
19404
 
19290
-
19291
19405
  :host(:not([vertical])) .divider::after {
19292
19406
  display: flex;
19293
19407
  content: '';
@@ -20674,7 +20788,7 @@ var __decorateClass$9 = (decorators, target, key, kind) => {
20674
20788
  __defProp$9(target, key, result);
20675
20789
  return result;
20676
20790
  };
20677
- class FlowUiSwitch extends FlowRdfElement {
20791
+ class FlowUiSwitch extends FlowRdfFormControl {
20678
20792
  constructor() {
20679
20793
  super(...arguments);
20680
20794
  this.formControlController = new FormControlController(this, {
@@ -20866,9 +20980,12 @@ const styles$9 = css`
20866
20980
 
20867
20981
  :host {
20868
20982
  --indicator-color: var(--flow-ui-color-primary-500);
20869
- --track-color: var(--flow-ui-color-neutral-200);
20983
+ --track-color: var(--flow-ui-divider-color);
20870
20984
  --track-width: 2px;
20871
20985
 
20986
+ --background-color: var(--flow-ui-panel-background-color);
20987
+ --color: var(--flow-ui-panel-color);
20988
+
20872
20989
  display: block;
20873
20990
  }
20874
20991
 
@@ -20878,6 +20995,9 @@ const styles$9 = css`
20878
20995
  justify-content: start;
20879
20996
  border-radius: 0;
20880
20997
  overflow: hidden;
20998
+
20999
+ background-color: var(--background-color);
21000
+ color: var(--color);
20881
21001
  }
20882
21002
 
20883
21003
  /* Ensure nav is positioned when tab-group is placed in a split panel and the panel is closed */
@@ -20926,7 +21046,9 @@ const styles$9 = css`
20926
21046
 
20927
21047
  .tab-group__indicator {
20928
21048
  position: absolute;
20929
- transition: var(--flow-ui-transition-fast) translate ease, var(--flow-ui-transition-fast) width ease;
21049
+ transition:
21050
+ var(--flow-ui-transition-fast) translate ease,
21051
+ var(--flow-ui-transition-fast) width ease;
20930
21052
  }
20931
21053
 
20932
21054
  .tab-group__body-wrapper {
@@ -21633,6 +21755,8 @@ const styles$8 = css`
21633
21755
  min-height: 0;
21634
21756
 
21635
21757
  --padding: 0;
21758
+ --background-color: var(--flow-ui-panel-background-color);
21759
+ --color: var(--flow-ui-panel-color);
21636
21760
  }
21637
21761
 
21638
21762
  :host([active]) {
@@ -21643,6 +21767,8 @@ const styles$8 = css`
21643
21767
  height: 100%;
21644
21768
  display: flex;
21645
21769
  flex-direction: column;
21770
+ background-color: var(--background-color);
21771
+ color: var(--color);
21646
21772
  }
21647
21773
 
21648
21774
  /* Body */
@@ -21740,6 +21866,9 @@ const styles$7 = css`
21740
21866
 
21741
21867
  :host {
21742
21868
  display: inline-block;
21869
+ --color: var(--flow-ui-tab-color);
21870
+ --active-label-color: var(--flow-ui-tab-active-label-color);
21871
+ --active-icon-color: var(--flow-ui-tab-active-icon-color);
21743
21872
  }
21744
21873
 
21745
21874
  .tab {
@@ -21751,24 +21880,27 @@ const styles$7 = css`
21751
21880
  font-size: var(--flow-ui-tab-label-font-size);
21752
21881
  font-weight: var(--flow-ui-tab-label-font-weight);
21753
21882
  border-radius: var(--flow-ui-border-radius-medium);
21754
- color: var(--flow-ui-color-neutral-600);
21883
+ color: var(--flow-ui-tab-color);
21755
21884
  padding: var(--flow-ui-tab-padding);
21756
21885
  white-space: nowrap;
21757
21886
  user-select: none;
21758
21887
  cursor: pointer;
21759
- transition: var(--transition-speed) box-shadow, var(--transition-speed) color;
21888
+ transition:
21889
+ var(--transition-speed) box-shadow,
21890
+ var(--transition-speed) color;
21760
21891
  }
21761
21892
 
21762
- .tab:hover:not(.tab--disabled) {
21763
- color: var(--flow-ui-color-primary-500);
21893
+ /* Highlight icon only on hover */
21894
+ .tab:hover:not(.tab--disabled) .tab__icon {
21895
+ color: var(--flow-ui-tab-active-label-color);
21764
21896
  }
21765
21897
 
21766
21898
  .tab:focus {
21767
21899
  outline: none;
21768
21900
  }
21769
21901
 
21770
- .tab:focus-visible:not(.tab--disabled) {
21771
- color: var(--flow-ui-color-primary-500);
21902
+ .tab:focus-visible:not(.tab--disabled) .tab__icon {
21903
+ color: var(--flow-ui-tab-active-icon-color);
21772
21904
  }
21773
21905
 
21774
21906
  .tab:focus-visible {
@@ -21777,7 +21909,15 @@ const styles$7 = css`
21777
21909
  }
21778
21910
 
21779
21911
  .tab.tab--active:not(.tab--disabled) {
21780
- color: var(--flow-ui-color-primary-500);
21912
+ color: var(--flow-ui-active-label-color);
21913
+ }
21914
+
21915
+ .tab.tab--active:not(.tab--disabled) .tab__icon {
21916
+ color: var(--flow-ui-tab-active-icon-color);
21917
+ }
21918
+
21919
+ .tab.tab--active:not(.tab--disabled) .tab__label {
21920
+ color: var(--flow-ui-tab-active-label-color);
21781
21921
  }
21782
21922
 
21783
21923
  .tab.tab--closable {
@@ -22148,7 +22288,7 @@ var __decorateClass$5 = (decorators, target, key, kind) => {
22148
22288
  __defProp$5(target, key, result);
22149
22289
  return result;
22150
22290
  };
22151
- class FlowUiTextarea extends FlowRdfElement {
22291
+ class FlowUiTextarea extends FlowRdfFormControl {
22152
22292
  constructor() {
22153
22293
  super(...arguments);
22154
22294
  this.formControlController = new FormControlController(this, {
@@ -22634,6 +22774,8 @@ const styles$5 = css`
22634
22774
  }
22635
22775
 
22636
22776
  .timer {
22777
+ /* Balance top spacing with VCR button spacing */
22778
+ padding-top: var(--flow-ui-spacing-x-small);
22637
22779
  min-width: fit-content;
22638
22780
  }
22639
22781
 
@@ -23051,7 +23193,7 @@ var __decorateClass$3 = (decorators, target, key, kind) => {
23051
23193
  __defProp$3(target, key, result);
23052
23194
  return result;
23053
23195
  };
23054
- class FlowUiToolButtonGroup extends FlowRdfElement {
23196
+ class FlowUiToolButtonGroup extends FlowRdfFormControl {
23055
23197
  constructor() {
23056
23198
  super(...arguments);
23057
23199
  /** @internal */
@@ -24404,6 +24546,7 @@ class FlowUiTree extends FlowRdfElement {
24404
24546
  }
24405
24547
  async connectedCallback() {
24406
24548
  super.connectedCallback();
24549
+ this.classList.add(FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
24407
24550
  this.handleTreeChanged = this.handleTreeChanged.bind(this);
24408
24551
  this.handleFocusIn = this.handleFocusIn.bind(this);
24409
24552
  this.handleFocusOut = this.handleFocusOut.bind(this);
@@ -24423,6 +24566,9 @@ class FlowUiTree extends FlowRdfElement {
24423
24566
  this.removeEventListener("focusout", this.handleFocusOut);
24424
24567
  this.removeEventListener("flow-ui-lazy-change", this.handleSlotChange);
24425
24568
  }
24569
+ handleClassChange() {
24570
+ this.classList.add(FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
24571
+ }
24426
24572
  // Generates a clone of the expand icon element to use for each tree item
24427
24573
  getExpandButtonIcon(status) {
24428
24574
  const slot = status === "expand" ? this.expandedIconSlot : this.collapsedIconSlot;
@@ -24661,6 +24807,9 @@ __decorateClass([
24661
24807
  __decorateClass([
24662
24808
  query("slot[name=collapse-icon]")
24663
24809
  ], FlowUiTree.prototype, "collapsedIconSlot", 2);
24810
+ __decorateClass([
24811
+ property({ reflect: true })
24812
+ ], FlowUiTree.prototype, "class", 2);
24664
24813
  __decorateClass([
24665
24814
  property({
24666
24815
  converter: {
@@ -24675,6 +24824,9 @@ __decorateClass([
24675
24824
  __decorateClass([
24676
24825
  property({ reflect: true })
24677
24826
  ], FlowUiTree.prototype, "size", 2);
24827
+ __decorateClass([
24828
+ watch("class")
24829
+ ], FlowUiTree.prototype, "handleClassChange", 1);
24678
24830
  __decorateClass([
24679
24831
  watch("size", { waitUntilFirstUpdate: true })
24680
24832
  ], FlowUiTree.prototype, "handleSizeChange", 1);
@@ -24846,7 +24998,7 @@ async function registerComponents() {
24846
24998
  });
24847
24999
  }
24848
25000
 
24849
- const version = "4.0.2";
25001
+ const version = "4.0.4";
24850
25002
 
24851
25003
  const CONSOLE_HIGHLIGHT_STYLE = `
24852
25004
  padding: 2px 4px;