@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.cjs CHANGED
@@ -1782,6 +1782,32 @@ function waitForEvent(el, eventName) {
1782
1782
  });
1783
1783
  }
1784
1784
 
1785
+ function watch(propertyName, options) {
1786
+ const resolvedOptions = {
1787
+ waitUntilFirstUpdate: false,
1788
+ ...options
1789
+ };
1790
+ return (proto, decoratedFnName) => {
1791
+ const { update } = proto;
1792
+ const watchedProperties = Array.isArray(propertyName) ? propertyName : [propertyName];
1793
+ proto.update = function(changedProps) {
1794
+ watchedProperties.forEach((property) => {
1795
+ const key = property;
1796
+ if (changedProps.has(key)) {
1797
+ const oldValue = changedProps.get(key);
1798
+ const newValue = this[key];
1799
+ if (oldValue !== newValue) {
1800
+ if (!resolvedOptions.waitUntilFirstUpdate || this.hasUpdated) {
1801
+ this[decoratedFnName](oldValue, newValue);
1802
+ }
1803
+ }
1804
+ }
1805
+ });
1806
+ update.call(this, changedProps);
1807
+ };
1808
+ };
1809
+ }
1810
+
1785
1811
  var __defProp$Z = Object.defineProperty;
1786
1812
  var __getOwnPropDesc$Z = Object.getOwnPropertyDescriptor;
1787
1813
  var __decorateClass$Z = (decorators, target, key, kind) => {
@@ -1820,6 +1846,23 @@ __decorateClass$Z([
1820
1846
  __decorateClass$Z([
1821
1847
  decorators_js.property()
1822
1848
  ], FlowRdfElement.prototype, "lang", 2);
1849
+ const _FlowRdfFormControl = class _FlowRdfFormControl extends FlowRdfElement {
1850
+ handleClassChange() {
1851
+ this.classList.add(_FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
1852
+ }
1853
+ connectedCallback() {
1854
+ super.connectedCallback();
1855
+ this.classList.add(_FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
1856
+ }
1857
+ };
1858
+ _FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS = "flow-ui-form-control";
1859
+ __decorateClass$Z([
1860
+ decorators_js.property({ reflect: true })
1861
+ ], _FlowRdfFormControl.prototype, "class", 2);
1862
+ __decorateClass$Z([
1863
+ watch("class")
1864
+ ], _FlowRdfFormControl.prototype, "handleClassChange", 1);
1865
+ let FlowRdfFormControl = _FlowRdfFormControl;
1823
1866
 
1824
1867
  class HasSlotController {
1825
1868
  constructor(host, ...slotNames) {
@@ -1879,32 +1922,6 @@ function getTextContent(slot) {
1879
1922
  return text;
1880
1923
  }
1881
1924
 
1882
- function watch(propertyName, options) {
1883
- const resolvedOptions = {
1884
- waitUntilFirstUpdate: false,
1885
- ...options
1886
- };
1887
- return (proto, decoratedFnName) => {
1888
- const { update } = proto;
1889
- const watchedProperties = Array.isArray(propertyName) ? propertyName : [propertyName];
1890
- proto.update = function(changedProps) {
1891
- watchedProperties.forEach((property) => {
1892
- const key = property;
1893
- if (changedProps.has(key)) {
1894
- const oldValue = changedProps.get(key);
1895
- const newValue = this[key];
1896
- if (oldValue !== newValue) {
1897
- if (!resolvedOptions.waitUntilFirstUpdate || this.hasUpdated) {
1898
- this[decoratedFnName](oldValue, newValue);
1899
- }
1900
- }
1901
- }
1902
- });
1903
- update.call(this, changedProps);
1904
- };
1905
- };
1906
- }
1907
-
1908
1925
  const defaultAnimationRegistry = /* @__PURE__ */ new Map();
1909
1926
  const customAnimationRegistry = /* @__PURE__ */ new WeakMap();
1910
1927
  function ensureAnimation(animation) {
@@ -3022,6 +3039,8 @@ const styles$Y = lit.css`
3022
3039
  display: inline-block;
3023
3040
  color: var(--flow-ui-color-neutral-600);
3024
3041
 
3042
+ --hover-color: var(--flow-ui-color-primary-500);
3043
+ --active-color: var(--flow-ui-color-primary-400);
3025
3044
  --icon-size: inherit;
3026
3045
  }
3027
3046
 
@@ -3048,11 +3067,11 @@ const styles$Y = lit.css`
3048
3067
 
3049
3068
  .icon-button:hover:not(.icon-button--disabled),
3050
3069
  .icon-button:focus-visible:not(.icon-button--disabled) {
3051
- color: var(--flow-ui-color-primary-500);
3070
+ color: var(--hover-color);
3052
3071
  }
3053
3072
 
3054
3073
  .icon-button:active:not(.icon-button--disabled) {
3055
- color: var(--flow-ui-color-primary-600);
3074
+ color: var(--active-color);
3056
3075
  }
3057
3076
 
3058
3077
  .icon-button:focus {
@@ -3088,7 +3107,6 @@ const styles$Y = lit.css`
3088
3107
  .icon-button__tooltip--confirm .confirm__label {
3089
3108
  margin-inline: var(--flow-ui-spacing-x-small);
3090
3109
  }
3091
-
3092
3110
  `;
3093
3111
 
3094
3112
  var __defProp$V = Object.defineProperty;
@@ -3366,6 +3384,14 @@ const styles$X = lit.css`
3366
3384
  color: var(--flow-ui-color-primary-500);
3367
3385
  }
3368
3386
 
3387
+ .alert--secondary {
3388
+ border-top-color: var(--flow-ui-color-secondary-500);
3389
+ }
3390
+
3391
+ .alert--secondary .alert__icon {
3392
+ color: var(--flow-ui-color-secondary-500);
3393
+ }
3394
+
3369
3395
  .alert--success {
3370
3396
  border-top-color: var(--flow-ui-color-success-600);
3371
3397
  }
@@ -3536,6 +3562,7 @@ class FlowUiAlert extends FlowRdfElement {
3536
3562
  "alert--closable": this.closable,
3537
3563
  "alert--has-icon": this.hasSlotController.test("icon"),
3538
3564
  "alert--primary": this.variant === "primary",
3565
+ "alert--secondary": this.variant === "secondary",
3539
3566
  "alert--success": this.variant === "success",
3540
3567
  "alert--neutral": this.variant === "neutral",
3541
3568
  "alert--warning": this.variant === "warning",
@@ -5501,7 +5528,7 @@ var __decorateClass$N = (decorators, target, key, kind) => {
5501
5528
  __defProp$N(target, key, result);
5502
5529
  return result;
5503
5530
  };
5504
- let FlowUiButton = class extends FlowRdfElement {
5531
+ let FlowUiButton = class extends FlowRdfFormControl {
5505
5532
  constructor() {
5506
5533
  super(...arguments);
5507
5534
  this.formControlController = new FormControlController(this, {
@@ -7336,6 +7363,7 @@ const styles$K = lit.css`
7336
7363
  cursor: pointer;
7337
7364
  }
7338
7365
 
7366
+ /* Sizes */
7339
7367
  .checkbox--small {
7340
7368
  --toggle-size: var(--flow-ui-toggle-size-small);
7341
7369
  font-size: var(--flow-ui-input-font-size-small);
@@ -7351,6 +7379,7 @@ const styles$K = lit.css`
7351
7379
  font-size: var(--flow-ui-input-font-size-large);
7352
7380
  }
7353
7381
 
7382
+ /* Color variants */
7354
7383
  .checkbox--primary {
7355
7384
  --checkbox-color: var(--flow-ui-color-primary-500);
7356
7385
  --checkbox-hover-color: var(--flow-ui-color-primary-400);
@@ -7381,6 +7410,23 @@ const styles$K = lit.css`
7381
7410
  --checkbox-hover-color: var(--flow-ui-color-neutral-400);
7382
7411
  }
7383
7412
 
7413
+ /* Alternative 'full-width' style */
7414
+ :host([full-width]) {
7415
+ display: block;
7416
+ margin-top: var(--flow-ui-spacing-small);
7417
+ }
7418
+
7419
+ .checkbox--full-width {
7420
+ display: flex;
7421
+ flex-direction: row-reverse;
7422
+ align-items: center;
7423
+ }
7424
+
7425
+ .checkbox--full-width .checkbox__label {
7426
+ flex: 1;
7427
+ margin: 0;
7428
+ }
7429
+
7384
7430
  .checkbox__control {
7385
7431
  flex: 0 0 auto;
7386
7432
  position: relative;
@@ -7479,7 +7525,7 @@ var __decorateClass$I = (decorators, target, key, kind) => {
7479
7525
  __defProp$I(target, key, result);
7480
7526
  return result;
7481
7527
  };
7482
- let FlowUiCheckbox = class extends FlowRdfElement {
7528
+ let FlowUiCheckbox = class extends FlowRdfFormControl {
7483
7529
  constructor() {
7484
7530
  super(...arguments);
7485
7531
  this.hasSlotController = new HasSlotController(this, "[default]");
@@ -7498,6 +7544,7 @@ let FlowUiCheckbox = class extends FlowRdfElement {
7498
7544
  this.defaultChecked = false;
7499
7545
  this.form = "";
7500
7546
  this.required = false;
7547
+ this.fullWidth = false;
7501
7548
  }
7502
7549
  connectedCallback() {
7503
7550
  super.connectedCallback();
@@ -7505,6 +7552,7 @@ let FlowUiCheckbox = class extends FlowRdfElement {
7505
7552
  this.indeterminate = boolean(this.indeterminate, true);
7506
7553
  this.disabled = boolean(this.disabled, true);
7507
7554
  this.required = boolean(this.required, true);
7555
+ this.fullWidth = boolean(this.fullWidth, true);
7508
7556
  }
7509
7557
  /** Gets the validity state object */
7510
7558
  get validity() {
@@ -7595,7 +7643,8 @@ let FlowUiCheckbox = class extends FlowRdfElement {
7595
7643
  "checkbox--success": this.variant === "success",
7596
7644
  "checkbox--warning": this.variant === "warning",
7597
7645
  "checkbox--danger": this.variant === "danger",
7598
- "checkbox--neutral": this.variant === "neutral"
7646
+ "checkbox--neutral": this.variant === "neutral",
7647
+ "checkbox--full-width": this.fullWidth
7599
7648
  })}
7600
7649
  >
7601
7650
  <input
@@ -7687,6 +7736,9 @@ __decorateClass$I([
7687
7736
  __decorateClass$I([
7688
7737
  decorators_js.property()
7689
7738
  ], FlowUiCheckbox.prototype, "variant", 2);
7739
+ __decorateClass$I([
7740
+ decorators_js.property({ type: Boolean, reflect: true, attribute: "full-width" })
7741
+ ], FlowUiCheckbox.prototype, "fullWidth", 2);
7690
7742
  __decorateClass$I([
7691
7743
  watch("disabled", { waitUntilFirstUpdate: true })
7692
7744
  ], FlowUiCheckbox.prototype, "handleDisabledChange", 1);
@@ -7850,8 +7902,12 @@ class FlowUiColorMapper extends FlowRdfElement {
7850
7902
  }
7851
7903
  connectedCallback() {
7852
7904
  super.connectedCallback();
7905
+ this.classList.add(FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
7853
7906
  this.defaultColorStop = boolean(this.defaultColorStop, true);
7854
7907
  }
7908
+ handleClassChange() {
7909
+ this.classList.add(FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
7910
+ }
7855
7911
  handleFixedPickerClick(event) {
7856
7912
  event.stopPropagation();
7857
7913
  }
@@ -8033,6 +8089,9 @@ __decorateClass$H([
8033
8089
  __decorateClass$H([
8034
8090
  decorators_js.query(".dialog-info")
8035
8091
  ], FlowUiColorMapper.prototype, "infoDialog", 2);
8092
+ __decorateClass$H([
8093
+ decorators_js.property({ reflect: true })
8094
+ ], FlowUiColorMapper.prototype, "class", 2);
8036
8095
  __decorateClass$H([
8037
8096
  decorators_js.property({ type: Object })
8038
8097
  ], FlowUiColorMapper.prototype, "options", 2);
@@ -8048,6 +8107,9 @@ __decorateClass$H([
8048
8107
  __decorateClass$H([
8049
8108
  decorators_js.property()
8050
8109
  ], FlowUiColorMapper.prototype, "swatches", 2);
8110
+ __decorateClass$H([
8111
+ watch("class")
8112
+ ], FlowUiColorMapper.prototype, "handleClassChange", 1);
8051
8113
  __decorateClass$H([
8052
8114
  throttle(100)
8053
8115
  ], FlowUiColorMapper.prototype, "emitChange", 1);
@@ -8929,7 +8991,7 @@ const d3Format = d3Format$1.formatLocale({
8929
8991
  currency: ["\xA3", ""]
8930
8992
  }).format;
8931
8993
  const DEFAULT_FORMATTER$1 = (val) => isNil(val) ? "--" : val.toString();
8932
- class FlowUiInput extends FlowRdfElement {
8994
+ class FlowUiInput extends FlowRdfFormControl {
8933
8995
  constructor() {
8934
8996
  super(...arguments);
8935
8997
  this.formControlController = new FormControlController(this, {
@@ -9812,7 +9874,7 @@ var __decorateClass$E = (decorators, target, key, kind) => {
9812
9874
  return result;
9813
9875
  };
9814
9876
  const hasEyeDropper = typeof window !== "undefined" && "EyeDropper" in window;
9815
- class FlowUiColorPicker extends FlowRdfElement {
9877
+ class FlowUiColorPicker extends FlowRdfFormControl {
9816
9878
  constructor() {
9817
9879
  super(...arguments);
9818
9880
  this.formControlController = new FormControlController(this);
@@ -10812,7 +10874,7 @@ var __decorateClass$D = (decorators, target, key, kind) => {
10812
10874
  __defProp$D(target, key, result);
10813
10875
  return result;
10814
10876
  };
10815
- class FlowUiColorStop extends FlowRdfElement {
10877
+ class FlowUiColorStop extends FlowRdfFormControl {
10816
10878
  constructor() {
10817
10879
  super(...arguments);
10818
10880
  // private readonly localize = new LocalizeController(this);
@@ -11113,6 +11175,16 @@ const styles$E = lit.css`
11113
11175
  color: var(--flow-ui-color-primary-500);
11114
11176
  }
11115
11177
 
11178
+ .tag--secondary {
11179
+ background-color: var(--flow-ui-color-secondary-50);
11180
+ border-color: var(--flow-ui-color-secondary-200);
11181
+ color: var(--flow-ui-color-primary-800);
11182
+ }
11183
+
11184
+ .tag--secondary:active > flow-ui-icon-button {
11185
+ color: var(--flow-ui-color-secondary-500);
11186
+ }
11187
+
11116
11188
  .tag--success {
11117
11189
  background-color: var(--flow-ui-color-success-50);
11118
11190
  border-color: var(--flow-ui-color-success-200);
@@ -11230,6 +11302,7 @@ class FlowUiTag extends FlowRdfElement {
11230
11302
  tag: true,
11231
11303
  // Types
11232
11304
  "tag--primary": this.variant === "primary",
11305
+ "tag--secondary": this.variant === "secondary",
11233
11306
  "tag--success": this.variant === "success",
11234
11307
  "tag--neutral": this.variant === "neutral",
11235
11308
  "tag--warning": this.variant === "warning",
@@ -11548,7 +11621,7 @@ const popupOptions = {
11548
11621
  medium: { distance: -3, skidding: -9 },
11549
11622
  large: { distance: -5, skidding: -15 }
11550
11623
  };
11551
- class FlowUiDateTimePicker extends FlowRdfElement {
11624
+ class FlowUiDateTimePicker extends FlowRdfFormControl {
11552
11625
  constructor() {
11553
11626
  super(...arguments);
11554
11627
  this.formControlController = new FormControlController(this, {
@@ -12771,8 +12844,8 @@ const styles$A = lit.css`
12771
12844
  ${componentStyles}
12772
12845
 
12773
12846
  :host {
12774
- --color: var(--flow-ui-panel-border-color);
12775
- --width: var(--flow-ui-panel-border-width);
12847
+ --color: var(--flow-ui-divider-color);
12848
+ --width: var(--flow-ui-divider-width);
12776
12849
  --spacing: var(--flow-ui-spacing-medium);
12777
12850
 
12778
12851
  /* Maintain divider width when used in flexbox layouts */
@@ -14664,6 +14737,7 @@ const styles$r = lit.css`
14664
14737
  }
14665
14738
 
14666
14739
  .panel-header__title {
14740
+ font-weight: var(--flow-ui-panel-header-font-weight);
14667
14741
  text-overflow: ellipsis;
14668
14742
  overflow: hidden;
14669
14743
  white-space: nowrap;
@@ -14707,6 +14781,7 @@ class FlowUiPanelHeader extends FlowRdfElement {
14707
14781
  connectedCallback() {
14708
14782
  super.connectedCallback();
14709
14783
  this.closed = boolean(this.closed, true);
14784
+ this.fixed = boolean(this.fixed, true);
14710
14785
  }
14711
14786
  disconnectedCallback() {
14712
14787
  super.disconnectedCallback();
@@ -14815,12 +14890,16 @@ const styles$q = lit.css`
14815
14890
  min-height: 0;
14816
14891
 
14817
14892
  --padding: var(--flow-ui-spacing-small);
14893
+ --background-color: var(--flow-ui-panel-background-color);
14894
+ --color: var(--flow-ui-panel-color);
14818
14895
  }
14819
14896
 
14820
14897
  .panel {
14821
14898
  height: 100%;
14822
14899
  display: flex;
14823
14900
  flex-direction: column;
14901
+ background-color: var(--background-color);
14902
+ color: var(--color);
14824
14903
  }
14825
14904
 
14826
14905
  /* Body */
@@ -15595,7 +15674,7 @@ const styles$n = lit.css`
15595
15674
  /* Footer */
15596
15675
  .query-builder__footer {
15597
15676
  text-align: right;
15598
- padding-block: var(--footer-spacing);
15677
+ padding-top: var(--footer-spacing);
15599
15678
  }
15600
15679
 
15601
15680
  .query-builder__footer ::slotted(flow-ui-button:not(:first-of-type)) {
@@ -15622,7 +15701,7 @@ const _FlowUiQueryBuilder = class _FlowUiQueryBuilder extends FlowRdfElement {
15622
15701
  constructor() {
15623
15702
  super(...arguments);
15624
15703
  this._value = { condition: "and", rules: [] };
15625
- this.hasSlotController = new HasSlotController(this, "help-text", "label");
15704
+ this.hasSlotController = new HasSlotController(this, "help-text", "label", "footer");
15626
15705
  this.value = { condition: "and", rules: [] };
15627
15706
  this.config = { fields: {} };
15628
15707
  this.size = "medium";
@@ -15649,8 +15728,12 @@ const _FlowUiQueryBuilder = class _FlowUiQueryBuilder extends FlowRdfElement {
15649
15728
  }
15650
15729
  connectedCallback() {
15651
15730
  super.connectedCallback();
15731
+ this.classList.add(FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
15652
15732
  this.disabled = boolean(this.disabled, true);
15653
15733
  }
15734
+ handleClassChange() {
15735
+ this.classList.add(FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
15736
+ }
15654
15737
  handleValueChange() {
15655
15738
  this._value = this.subQueryBuilder ? this.value : cloneDeep__default(this.value);
15656
15739
  if (isNil(this._value)) {
@@ -15980,9 +16063,11 @@ const _FlowUiQueryBuilder = class _FlowUiQueryBuilder extends FlowRdfElement {
15980
16063
  ${this.helpText}
15981
16064
  </slot>
15982
16065
 
15983
- <footer part="footer" class="query-builder__footer">
15984
- <slot name="footer"></slot>
15985
- </footer>
16066
+ ${this.hasSlotController.test("footer") ? lit.html`
16067
+ <footer part="footer" class="query-builder__footer">
16068
+ <slot name="footer"></slot>
16069
+ </footer>
16070
+ ` : lit.nothing}
15986
16071
  </div>
15987
16072
  </div>
15988
16073
  `;
@@ -15993,6 +16078,9 @@ _FlowUiQueryBuilder.fieldDefinitions = /* @__PURE__ */ new Map();
15993
16078
  __decorateClass$m([
15994
16079
  decorators_js.state()
15995
16080
  ], _FlowUiQueryBuilder.prototype, "_value", 2);
16081
+ __decorateClass$m([
16082
+ decorators_js.property({ reflect: true })
16083
+ ], _FlowUiQueryBuilder.prototype, "class", 2);
15996
16084
  __decorateClass$m([
15997
16085
  decorators_js.property({ attribute: false })
15998
16086
  ], _FlowUiQueryBuilder.prototype, "value", 2);
@@ -16017,6 +16105,9 @@ __decorateClass$m([
16017
16105
  __decorateClass$m([
16018
16106
  decorators_js.property({ type: Boolean, attribute: "sub-query-builder" })
16019
16107
  ], _FlowUiQueryBuilder.prototype, "subQueryBuilder", 2);
16108
+ __decorateClass$m([
16109
+ watch("class")
16110
+ ], _FlowUiQueryBuilder.prototype, "handleClassChange", 1);
16020
16111
  __decorateClass$m([
16021
16112
  watch("value")
16022
16113
  ], _FlowUiQueryBuilder.prototype, "handleValueChange", 1);
@@ -16054,6 +16145,14 @@ const styles$m = lit.css`
16054
16145
  display: block;
16055
16146
  }
16056
16147
 
16148
+ .form-control-input {
16149
+ line-height: 1;
16150
+ }
16151
+
16152
+ ::slotted(flow-ui-radio:not(:first-child)) {
16153
+ margin-top: var(--flow-ui-form-spacing, var(--flow-ui-form-spacing-dense));
16154
+ }
16155
+
16057
16156
  .form-control {
16058
16157
  border: none;
16059
16158
  padding: 0;
@@ -16093,7 +16192,7 @@ var __decorateClass$l = (decorators, target, key, kind) => {
16093
16192
  __defProp$l(target, key, result);
16094
16193
  return result;
16095
16194
  };
16096
- class FlowUiRadioGroup extends FlowRdfElement {
16195
+ class FlowUiRadioGroup extends FlowRdfFormControl {
16097
16196
  constructor() {
16098
16197
  super(...arguments);
16099
16198
  this.formControlController = new FormControlController(this);
@@ -16109,7 +16208,7 @@ class FlowUiRadioGroup extends FlowRdfElement {
16109
16208
  this.variant = "secondary";
16110
16209
  this.form = "";
16111
16210
  this.required = false;
16112
- this.vertical = false;
16211
+ this.fullWidth = false;
16113
16212
  }
16114
16213
  /** Gets the validity state object */
16115
16214
  get validity() {
@@ -16136,7 +16235,7 @@ class FlowUiRadioGroup extends FlowRdfElement {
16136
16235
  connectedCallback() {
16137
16236
  super.connectedCallback();
16138
16237
  this.required = boolean(this.required, true);
16139
- this.vertical = boolean(this.vertical, true);
16238
+ this.fullWidth = boolean(this.fullWidth, true);
16140
16239
  this.defaultValue = this.value;
16141
16240
  }
16142
16241
  firstUpdated() {
@@ -16207,6 +16306,7 @@ class FlowUiRadioGroup extends FlowRdfElement {
16207
16306
  radio.checked = radio.value === this.value;
16208
16307
  radio.size = this.size;
16209
16308
  radio.variant = this.variant;
16309
+ radio.fullWidth = this.fullWidth;
16210
16310
  });
16211
16311
  if (!radios.some((radio) => radio.checked)) {
16212
16312
  radios[0].tabIndex = 0;
@@ -16220,10 +16320,7 @@ class FlowUiRadioGroup extends FlowRdfElement {
16220
16320
  radios.forEach((radio) => radio.checked = radio.value === this.value);
16221
16321
  this.formControlController.setValidity(this.validity.valid);
16222
16322
  }
16223
- handleSizeChange() {
16224
- this.syncRadios();
16225
- }
16226
- handleVariantChange() {
16323
+ handleStyleChange() {
16227
16324
  this.syncRadios();
16228
16325
  }
16229
16326
  handleValueChange() {
@@ -16374,14 +16471,11 @@ __decorateClass$l([
16374
16471
  decorators_js.property({ type: Boolean, reflect: true })
16375
16472
  ], FlowUiRadioGroup.prototype, "required", 2);
16376
16473
  __decorateClass$l([
16377
- decorators_js.property({ type: Boolean, reflect: true })
16378
- ], FlowUiRadioGroup.prototype, "vertical", 2);
16379
- __decorateClass$l([
16380
- watch("size", { waitUntilFirstUpdate: true })
16381
- ], FlowUiRadioGroup.prototype, "handleSizeChange", 1);
16474
+ decorators_js.property({ type: Boolean, reflect: true, attribute: "full-width" })
16475
+ ], FlowUiRadioGroup.prototype, "fullWidth", 2);
16382
16476
  __decorateClass$l([
16383
- watch("variant", { waitUntilFirstUpdate: true })
16384
- ], FlowUiRadioGroup.prototype, "handleVariantChange", 1);
16477
+ watch(["size", "variant", "fullWidth"], { waitUntilFirstUpdate: true })
16478
+ ], FlowUiRadioGroup.prototype, "handleStyleChange", 1);
16385
16479
  __decorateClass$l([
16386
16480
  watch("value")
16387
16481
  ], FlowUiRadioGroup.prototype, "handleValueChange", 1);
@@ -16410,6 +16504,19 @@ const styles$l = lit.css`
16410
16504
  cursor: pointer;
16411
16505
  }
16412
16506
 
16507
+ /* Alternative 'full-width' style */
16508
+ .radio--full-width {
16509
+ display: flex;
16510
+ flex-direction: row-reverse;
16511
+ align-items: center;
16512
+ }
16513
+
16514
+ .radio--full-width .radio__label {
16515
+ flex: 1;
16516
+ margin: 0;
16517
+ }
16518
+
16519
+ /* Variants */
16413
16520
  .radio--primary {
16414
16521
  --radio-color: var(--flow-ui-color-primary-500);
16415
16522
  --radio-hover-color: var(--flow-ui-color-primary-400);
@@ -16552,10 +16659,12 @@ class FlowUiRadio extends FlowRdfElement {
16552
16659
  this.size = "medium";
16553
16660
  this.variant = "secondary";
16554
16661
  this.disabled = false;
16662
+ this.fullWidth = false;
16555
16663
  }
16556
16664
  connectedCallback() {
16557
16665
  super.connectedCallback();
16558
16666
  this.disabled = boolean(this.disabled, true);
16667
+ this.fullWidth = boolean(this.fullWidth, true);
16559
16668
  this.handleBlur = this.handleBlur.bind(this);
16560
16669
  this.handleClick = this.handleClick.bind(this);
16561
16670
  this.handleFocus = this.handleFocus.bind(this);
@@ -16617,7 +16726,8 @@ class FlowUiRadio extends FlowRdfElement {
16617
16726
  "radio--success": this.variant === "success",
16618
16727
  "radio--warning": this.variant === "warning",
16619
16728
  "radio--danger": this.variant === "danger",
16620
- "radio--neutral": this.variant === "neutral"
16729
+ "radio--neutral": this.variant === "neutral",
16730
+ "radio--full-width": this.fullWidth
16621
16731
  })}
16622
16732
  >
16623
16733
  <span part="${`control${this.checked ? " control--checked" : ""}`}" class="radio__control">
@@ -16655,6 +16765,9 @@ __decorateClass$k([
16655
16765
  __decorateClass$k([
16656
16766
  decorators_js.property({ type: Boolean, reflect: true })
16657
16767
  ], FlowUiRadio.prototype, "disabled", 2);
16768
+ __decorateClass$k([
16769
+ decorators_js.property({ type: Boolean, reflect: true, attribute: "full-width" })
16770
+ ], FlowUiRadio.prototype, "fullWidth", 2);
16658
16771
  __decorateClass$k([
16659
16772
  watch("checked")
16660
16773
  ], FlowUiRadio.prototype, "handleCheckedChange", 1);
@@ -16901,7 +17014,7 @@ var __decorateClass$j = (decorators, target, key, kind) => {
16901
17014
  __defProp$j(target, key, result);
16902
17015
  return result;
16903
17016
  };
16904
- class FlowUiRange extends FlowRdfElement {
17017
+ class FlowUiRange extends FlowRdfFormControl {
16905
17018
  constructor() {
16906
17019
  super(...arguments);
16907
17020
  this.formControlController = new FormControlController(this);
@@ -18478,7 +18591,7 @@ var __decorateClass$g = (decorators, target, key, kind) => {
18478
18591
  __defProp$g(target, key, result);
18479
18592
  return result;
18480
18593
  };
18481
- class FlowUiSelect extends FlowRdfElement {
18594
+ class FlowUiSelect extends FlowRdfFormControl {
18482
18595
  constructor() {
18483
18596
  super(...arguments);
18484
18597
  this.formControlController = new FormControlController(this, {
@@ -19234,6 +19347,7 @@ const styles$g = lit.css`
19234
19347
  :host {
19235
19348
  --divider-width: 2px;
19236
19349
  --divider-hit-area: 12px;
19350
+ --color: var(--flow-ui-divider-color);
19237
19351
 
19238
19352
  display: block;
19239
19353
  }
@@ -19242,7 +19356,7 @@ const styles$g = lit.css`
19242
19356
  height: 100%;
19243
19357
  display: flex;
19244
19358
  position: relative;
19245
- background-color: var(--flow-ui-color-neutral-200);
19359
+ background-color: var(--color);
19246
19360
  color: var(--flow-ui-color-neutral-900);
19247
19361
  }
19248
19362
 
@@ -19263,7 +19377,8 @@ const styles$g = lit.css`
19263
19377
  transform: scale(0);
19264
19378
  }
19265
19379
 
19266
- :host([dragging]) .divider-highlight, .divider:hover .divider-highlight {
19380
+ :host([dragging]) .divider-highlight,
19381
+ .divider:hover .divider-highlight {
19267
19382
  transform: scale(1);
19268
19383
  }
19269
19384
 
@@ -19293,7 +19408,6 @@ const styles$g = lit.css`
19293
19408
  cursor: col-resize;
19294
19409
  }
19295
19410
 
19296
-
19297
19411
  :host(:not([vertical])) .divider::after {
19298
19412
  display: flex;
19299
19413
  content: '';
@@ -20680,7 +20794,7 @@ var __decorateClass$9 = (decorators, target, key, kind) => {
20680
20794
  __defProp$9(target, key, result);
20681
20795
  return result;
20682
20796
  };
20683
- class FlowUiSwitch extends FlowRdfElement {
20797
+ class FlowUiSwitch extends FlowRdfFormControl {
20684
20798
  constructor() {
20685
20799
  super(...arguments);
20686
20800
  this.formControlController = new FormControlController(this, {
@@ -20872,9 +20986,12 @@ const styles$9 = lit.css`
20872
20986
 
20873
20987
  :host {
20874
20988
  --indicator-color: var(--flow-ui-color-primary-500);
20875
- --track-color: var(--flow-ui-color-neutral-200);
20989
+ --track-color: var(--flow-ui-divider-color);
20876
20990
  --track-width: 2px;
20877
20991
 
20992
+ --background-color: var(--flow-ui-panel-background-color);
20993
+ --color: var(--flow-ui-panel-color);
20994
+
20878
20995
  display: block;
20879
20996
  }
20880
20997
 
@@ -20884,6 +21001,9 @@ const styles$9 = lit.css`
20884
21001
  justify-content: start;
20885
21002
  border-radius: 0;
20886
21003
  overflow: hidden;
21004
+
21005
+ background-color: var(--background-color);
21006
+ color: var(--color);
20887
21007
  }
20888
21008
 
20889
21009
  /* Ensure nav is positioned when tab-group is placed in a split panel and the panel is closed */
@@ -20932,7 +21052,9 @@ const styles$9 = lit.css`
20932
21052
 
20933
21053
  .tab-group__indicator {
20934
21054
  position: absolute;
20935
- transition: var(--flow-ui-transition-fast) translate ease, var(--flow-ui-transition-fast) width ease;
21055
+ transition:
21056
+ var(--flow-ui-transition-fast) translate ease,
21057
+ var(--flow-ui-transition-fast) width ease;
20936
21058
  }
20937
21059
 
20938
21060
  .tab-group__body-wrapper {
@@ -21639,6 +21761,8 @@ const styles$8 = lit.css`
21639
21761
  min-height: 0;
21640
21762
 
21641
21763
  --padding: 0;
21764
+ --background-color: var(--flow-ui-panel-background-color);
21765
+ --color: var(--flow-ui-panel-color);
21642
21766
  }
21643
21767
 
21644
21768
  :host([active]) {
@@ -21649,6 +21773,8 @@ const styles$8 = lit.css`
21649
21773
  height: 100%;
21650
21774
  display: flex;
21651
21775
  flex-direction: column;
21776
+ background-color: var(--background-color);
21777
+ color: var(--color);
21652
21778
  }
21653
21779
 
21654
21780
  /* Body */
@@ -21746,6 +21872,9 @@ const styles$7 = lit.css`
21746
21872
 
21747
21873
  :host {
21748
21874
  display: inline-block;
21875
+ --color: var(--flow-ui-tab-color);
21876
+ --active-label-color: var(--flow-ui-tab-active-label-color);
21877
+ --active-icon-color: var(--flow-ui-tab-active-icon-color);
21749
21878
  }
21750
21879
 
21751
21880
  .tab {
@@ -21757,24 +21886,27 @@ const styles$7 = lit.css`
21757
21886
  font-size: var(--flow-ui-tab-label-font-size);
21758
21887
  font-weight: var(--flow-ui-tab-label-font-weight);
21759
21888
  border-radius: var(--flow-ui-border-radius-medium);
21760
- color: var(--flow-ui-color-neutral-600);
21889
+ color: var(--flow-ui-tab-color);
21761
21890
  padding: var(--flow-ui-tab-padding);
21762
21891
  white-space: nowrap;
21763
21892
  user-select: none;
21764
21893
  cursor: pointer;
21765
- transition: var(--transition-speed) box-shadow, var(--transition-speed) color;
21894
+ transition:
21895
+ var(--transition-speed) box-shadow,
21896
+ var(--transition-speed) color;
21766
21897
  }
21767
21898
 
21768
- .tab:hover:not(.tab--disabled) {
21769
- color: var(--flow-ui-color-primary-500);
21899
+ /* Highlight icon only on hover */
21900
+ .tab:hover:not(.tab--disabled) .tab__icon {
21901
+ color: var(--flow-ui-tab-active-label-color);
21770
21902
  }
21771
21903
 
21772
21904
  .tab:focus {
21773
21905
  outline: none;
21774
21906
  }
21775
21907
 
21776
- .tab:focus-visible:not(.tab--disabled) {
21777
- color: var(--flow-ui-color-primary-500);
21908
+ .tab:focus-visible:not(.tab--disabled) .tab__icon {
21909
+ color: var(--flow-ui-tab-active-icon-color);
21778
21910
  }
21779
21911
 
21780
21912
  .tab:focus-visible {
@@ -21783,7 +21915,15 @@ const styles$7 = lit.css`
21783
21915
  }
21784
21916
 
21785
21917
  .tab.tab--active:not(.tab--disabled) {
21786
- color: var(--flow-ui-color-primary-500);
21918
+ color: var(--flow-ui-active-label-color);
21919
+ }
21920
+
21921
+ .tab.tab--active:not(.tab--disabled) .tab__icon {
21922
+ color: var(--flow-ui-tab-active-icon-color);
21923
+ }
21924
+
21925
+ .tab.tab--active:not(.tab--disabled) .tab__label {
21926
+ color: var(--flow-ui-tab-active-label-color);
21787
21927
  }
21788
21928
 
21789
21929
  .tab.tab--closable {
@@ -22154,7 +22294,7 @@ var __decorateClass$5 = (decorators, target, key, kind) => {
22154
22294
  __defProp$5(target, key, result);
22155
22295
  return result;
22156
22296
  };
22157
- class FlowUiTextarea extends FlowRdfElement {
22297
+ class FlowUiTextarea extends FlowRdfFormControl {
22158
22298
  constructor() {
22159
22299
  super(...arguments);
22160
22300
  this.formControlController = new FormControlController(this, {
@@ -22640,6 +22780,8 @@ const styles$5 = lit.css`
22640
22780
  }
22641
22781
 
22642
22782
  .timer {
22783
+ /* Balance top spacing with VCR button spacing */
22784
+ padding-top: var(--flow-ui-spacing-x-small);
22643
22785
  min-width: fit-content;
22644
22786
  }
22645
22787
 
@@ -23057,7 +23199,7 @@ var __decorateClass$3 = (decorators, target, key, kind) => {
23057
23199
  __defProp$3(target, key, result);
23058
23200
  return result;
23059
23201
  };
23060
- class FlowUiToolButtonGroup extends FlowRdfElement {
23202
+ class FlowUiToolButtonGroup extends FlowRdfFormControl {
23061
23203
  constructor() {
23062
23204
  super(...arguments);
23063
23205
  /** @internal */
@@ -24410,6 +24552,7 @@ class FlowUiTree extends FlowRdfElement {
24410
24552
  }
24411
24553
  async connectedCallback() {
24412
24554
  super.connectedCallback();
24555
+ this.classList.add(FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
24413
24556
  this.handleTreeChanged = this.handleTreeChanged.bind(this);
24414
24557
  this.handleFocusIn = this.handleFocusIn.bind(this);
24415
24558
  this.handleFocusOut = this.handleFocusOut.bind(this);
@@ -24429,6 +24572,9 @@ class FlowUiTree extends FlowRdfElement {
24429
24572
  this.removeEventListener("focusout", this.handleFocusOut);
24430
24573
  this.removeEventListener("flow-ui-lazy-change", this.handleSlotChange);
24431
24574
  }
24575
+ handleClassChange() {
24576
+ this.classList.add(FlowRdfFormControl.FLOW_UI_FORM_CONTROL_CLASS);
24577
+ }
24432
24578
  // Generates a clone of the expand icon element to use for each tree item
24433
24579
  getExpandButtonIcon(status) {
24434
24580
  const slot = status === "expand" ? this.expandedIconSlot : this.collapsedIconSlot;
@@ -24667,6 +24813,9 @@ __decorateClass([
24667
24813
  __decorateClass([
24668
24814
  decorators_js.query("slot[name=collapse-icon]")
24669
24815
  ], FlowUiTree.prototype, "collapsedIconSlot", 2);
24816
+ __decorateClass([
24817
+ decorators_js.property({ reflect: true })
24818
+ ], FlowUiTree.prototype, "class", 2);
24670
24819
  __decorateClass([
24671
24820
  decorators_js.property({
24672
24821
  converter: {
@@ -24681,6 +24830,9 @@ __decorateClass([
24681
24830
  __decorateClass([
24682
24831
  decorators_js.property({ reflect: true })
24683
24832
  ], FlowUiTree.prototype, "size", 2);
24833
+ __decorateClass([
24834
+ watch("class")
24835
+ ], FlowUiTree.prototype, "handleClassChange", 1);
24684
24836
  __decorateClass([
24685
24837
  watch("size", { waitUntilFirstUpdate: true })
24686
24838
  ], FlowUiTree.prototype, "handleSizeChange", 1);
@@ -24852,7 +25004,7 @@ async function registerComponents() {
24852
25004
  });
24853
25005
  }
24854
25006
 
24855
- const version = "4.0.2";
25007
+ const version = "4.0.4";
24856
25008
 
24857
25009
  const CONSOLE_HIGHLIGHT_STYLE = `
24858
25010
  padding: 2px 4px;