@knime/kds-components 0.22.0 → 0.22.2

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.css CHANGED
@@ -846,12 +846,13 @@ html.kds-legacy {
846
846
  }
847
847
 
848
848
  .kds-list-item {
849
- &[data-v-0df9684f] {
849
+ &[data-v-822789ec] {
850
850
  position: relative;
851
851
  display: flex;
852
852
  gap: var(--kds-spacing-container-0-5x);
853
853
  align-items: center;
854
854
  width: 100%;
855
+ min-height: var(--kds-dimension-component-height-1-5x);
855
856
  padding: var(--kds-spacing-container-0-25x) var(--kds-spacing-container-0-5x);
856
857
  color: var(--kds-color-text-and-icon-neutral);
857
858
  cursor: pointer;
@@ -861,36 +862,36 @@ html.kds-legacy {
861
862
  border-radius: var(--kds-border-radius-container-0-31x);
862
863
  }
863
864
  &.small {
864
- &[data-v-0df9684f] {
865
+ &[data-v-822789ec] {
865
866
  gap: var(--kds-spacing-container-0-25x);
866
867
  align-items: flex-start;
867
868
  padding: var(--kds-spacing-container-0-25x)
868
869
  var(--kds-spacing-container-0-5x);
869
870
  font: var(--kds-font-base-interactive-small);
870
871
  }
871
- .accessory[data-v-0df9684f] {
872
+ .accessory[data-v-822789ec] {
872
873
  display: flex;
873
874
  padding: var(--kds-spacing-container-0-12x) 0;
874
875
  }
875
876
  }
876
877
  &.large {
877
- &[data-v-0df9684f] {
878
+ &[data-v-822789ec] {
878
879
  font: var(--kds-font-base-interactive-small-strong);
879
880
  }
880
- .accessory[data-v-0df9684f] {
881
+ .accessory[data-v-822789ec] {
881
882
  display: flex;
882
883
  align-items: center;
883
884
  }
884
885
  }
885
886
  .content {
886
- &[data-v-0df9684f] {
887
+ &[data-v-822789ec] {
887
888
  display: flex;
888
889
  flex: 1 1 auto;
889
890
  flex-direction: column;
890
891
  gap: var(--kds-spacing-container-0-12x);
891
892
  min-width: 0;
892
893
  }
893
- .large &[data-v-0df9684f] {
894
+ .large &[data-v-822789ec] {
894
895
  justify-content: center;
895
896
  min-height: calc(
896
897
  var(--kds-dimension-component-height-2-5x) - 2 *
@@ -898,19 +899,19 @@ html.kds-legacy {
898
899
  );
899
900
  }
900
901
  .label {
901
- &[data-v-0df9684f] {
902
+ &[data-v-822789ec] {
902
903
  overflow: hidden;
903
904
  text-overflow: ellipsis;
904
905
  white-space: nowrap;
905
906
  }
906
- .prefix[data-v-0df9684f] {
907
+ .prefix[data-v-822789ec] {
907
908
  flex-shrink: 0;
908
909
  }
909
- .special[data-v-0df9684f] {
910
+ .special[data-v-822789ec] {
910
911
  font: var(--kds-font-base-interactive-small-italic);
911
912
  }
912
913
  }
913
- .subtext[data-v-0df9684f] {
914
+ .subtext[data-v-822789ec] {
914
915
  display: -webkit-box;
915
916
  overflow: hidden;
916
917
  -webkit-line-clamp: 2;
@@ -921,7 +922,7 @@ html.kds-legacy {
921
922
  }
922
923
  }
923
924
  .trailing-item {
924
- &[data-v-0df9684f] {
925
+ &[data-v-822789ec] {
925
926
  display: flex;
926
927
  flex-shrink: 0;
927
928
  gap: var(--kds-spacing-container-0-12x);
@@ -929,69 +930,69 @@ html.kds-legacy {
929
930
  align-self: center;
930
931
  justify-content: flex-end;
931
932
  }
932
- .shortcut[data-v-0df9684f] {
933
+ .shortcut[data-v-822789ec] {
933
934
  flex-shrink: 0;
934
935
  font: var(--kds-font-base-interactive-xsmall-strong);
935
936
  color: var(--kds-color-text-and-icon-muted);
936
937
  text-align: right;
937
938
  white-space: nowrap;
938
939
  }
939
- .trailing-item-reserve-space[data-v-0df9684f] {
940
+ .trailing-item-reserve-space[data-v-822789ec] {
940
941
  width: var(--kds-dimension-icon-0-75x);
941
942
  }
942
943
  }
943
- &[data-v-0df9684f]:hover:not(.disabled),
944
- &.active[data-v-0df9684f]:not(.disabled) {
944
+ &[data-v-822789ec]:hover:not(.disabled),
945
+ &.active[data-v-822789ec]:not(.disabled) {
945
946
  background: var(--kds-color-background-neutral-hover);
946
947
  }
947
- &[data-v-0df9684f]:active:not(.disabled) {
948
+ &[data-v-822789ec]:active:not(.disabled) {
948
949
  background: var(--kds-color-background-neutral-active);
949
950
  }
950
951
  &.selected {
951
- &[data-v-0df9684f] {
952
+ &[data-v-822789ec] {
952
953
  color: var(--kds-color-text-and-icon-selected);
953
954
  background: var(--kds-color-background-selected-initial);
954
955
  }
955
- .subtext[data-v-0df9684f] {
956
+ .subtext[data-v-822789ec] {
956
957
  color: var(--kds-color-text-and-icon-selected);
957
958
  }
958
- &[data-v-0df9684f]:hover,
959
- &.active[data-v-0df9684f] {
959
+ &[data-v-822789ec]:hover,
960
+ &.active[data-v-822789ec] {
960
961
  background: var(--kds-color-background-selected-hover);
961
962
  }
962
- &[data-v-0df9684f]:active {
963
+ &[data-v-822789ec]:active {
963
964
  background: var(--kds-color-background-selected-active);
964
965
  }
965
- &.disabled[data-v-0df9684f] {
966
+ &.disabled[data-v-822789ec] {
966
967
  background: var(--kds-color-background-selected-initial);
967
968
  }
968
969
  }
969
970
  &.missing {
970
- &[data-v-0df9684f] {
971
+ &[data-v-822789ec] {
971
972
  color: var(--kds-color-text-and-icon-danger);
972
973
  background: var(--kds-color-background-danger-initial);
973
974
  }
974
- .subtext[data-v-0df9684f] {
975
+ .subtext[data-v-822789ec] {
975
976
  color: var(--kds-color-text-and-icon-danger);
976
977
  }
977
- &[data-v-0df9684f]:hover,
978
- &.active[data-v-0df9684f] {
978
+ &[data-v-822789ec]:hover,
979
+ &.active[data-v-822789ec] {
979
980
  background: var(--kds-color-background-danger-hover);
980
981
  }
981
- &[data-v-0df9684f]:active {
982
+ &[data-v-822789ec]:active {
982
983
  background: var(--kds-color-background-danger-active);
983
984
  }
984
- &.disabled[data-v-0df9684f] {
985
+ &.disabled[data-v-822789ec] {
985
986
  background: var(--kds-color-background-danger-initial);
986
987
  }
987
988
  }
988
989
  &.disabled {
989
- &[data-v-0df9684f] {
990
+ &[data-v-822789ec] {
990
991
  color: var(--kds-color-text-and-icon-disabled);
991
992
  cursor: default;
992
993
  }
993
- .shortcut[data-v-0df9684f],
994
- .subtext[data-v-0df9684f] {
994
+ .shortcut[data-v-822789ec],
995
+ .subtext[data-v-822789ec] {
995
996
  color: var(--kds-color-text-and-icon-disabled);
996
997
  }
997
998
  }
@@ -1031,7 +1032,7 @@ html.kds-legacy {
1031
1032
  }
1032
1033
 
1033
1034
  .kds-list-container {
1034
- &[data-v-446a5ba1] {
1035
+ &[data-v-d8750fc1] {
1035
1036
  position: relative;
1036
1037
  display: flex;
1037
1038
  flex-direction: column;
@@ -1040,20 +1041,20 @@ html.kds-legacy {
1040
1041
  padding: var(--kds-spacing-container-0-25x);
1041
1042
  overflow-y: auto;
1042
1043
  }
1043
- &.standalone[data-v-446a5ba1] {
1044
+ &.standalone[data-v-d8750fc1] {
1044
1045
  border: var(--kds-border-base-subtle);
1045
1046
  border-radius: var(--kds-border-radius-container-0-31x);
1046
1047
  }
1047
- &.menu[data-v-446a5ba1] {
1048
+ &.menu[data-v-d8750fc1] {
1048
1049
  border: none;
1049
1050
  }
1050
- &[data-v-446a5ba1]:focus-visible {
1051
+ &[data-v-d8750fc1]:focus-visible {
1051
1052
  outline: var(--kds-border-action-focused);
1052
1053
  outline-offset: var(--kds-spacing-offset-focus);
1053
1054
  border-radius: var(--kds-border-radius-container-0-31x);
1054
1055
  }
1055
1056
  }
1056
- .kds-list-container-empty[data-v-446a5ba1] {
1057
+ .kds-list-container-empty[data-v-d8750fc1] {
1057
1058
  display: flex;
1058
1059
  flex: 1;
1059
1060
  align-items: center;
@@ -1729,7 +1730,7 @@ html.kds-legacy {
1729
1730
  box-shadow: var(--kds-elevation-level-3);
1730
1731
  }
1731
1732
 
1732
- .kds-color-picker[data-v-74392b20] {
1733
+ .kds-color-picker[data-v-d2bb72e0] {
1733
1734
  display: flex;
1734
1735
  flex-direction: column;
1735
1736
  gap: var(--kds-spacing-container-1x);
@@ -1740,7 +1741,7 @@ html.kds-legacy {
1740
1741
  border-radius: var(--kds-border-radius-container-0-50x);
1741
1742
  box-shadow: var(--kds-elevation-level-3);
1742
1743
  }
1743
- .colorspace[data-v-74392b20] {
1744
+ .colorspace[data-v-d2bb72e0] {
1744
1745
  position: relative;
1745
1746
  width: 100%;
1746
1747
  height: 200px;
@@ -1748,7 +1749,7 @@ html.kds-legacy {
1748
1749
  outline: none;
1749
1750
  border-radius: var(--kds-border-radius-container-0-37x);
1750
1751
  }
1751
- .handle[data-v-74392b20] {
1752
+ .handle[data-v-d2bb72e0] {
1752
1753
  position: absolute;
1753
1754
  width: var(--kds-dimension-icon-0-75x);
1754
1755
  height: var(--kds-dimension-icon-0-75x);
@@ -1759,7 +1760,7 @@ html.kds-legacy {
1759
1760
  transform: translate(-50%, -50%);
1760
1761
  }
1761
1762
  .hue {
1762
- &[data-v-74392b20] {
1763
+ &[data-v-d2bb72e0] {
1763
1764
  position: relative;
1764
1765
  width: 100%;
1765
1766
  height: var(--kds-dimension-component-height-0-75x);
@@ -1777,18 +1778,18 @@ html.kds-legacy {
1777
1778
  );
1778
1779
  border-radius: var(--kds-border-radius-container-pill);
1779
1780
  }
1780
- & .handle[data-v-74392b20] {
1781
+ & .handle[data-v-d2bb72e0] {
1781
1782
  top: 50%;
1782
1783
  }
1783
1784
  }
1784
- .colorspace[data-v-74392b20]:focus,
1785
- .hue[data-v-74392b20]:focus {
1785
+ .colorspace[data-v-d2bb72e0]:focus,
1786
+ .hue[data-v-d2bb72e0]:focus {
1786
1787
  outline: none;
1787
1788
  }
1788
- .colorspace:focus .handle[data-v-74392b20],
1789
- .colorspace:focus-visible .handle[data-v-74392b20],
1790
- .hue:focus .handle[data-v-74392b20],
1791
- .hue:focus-visible .handle[data-v-74392b20] {
1789
+ .colorspace:focus .handle[data-v-d2bb72e0],
1790
+ .colorspace:focus-visible .handle[data-v-d2bb72e0],
1791
+ .hue:focus .handle[data-v-d2bb72e0],
1792
+ .hue:focus-visible .handle[data-v-d2bb72e0] {
1792
1793
  outline: var(--kds-border-action-focused);
1793
1794
  outline-offset: calc(-1 * var(--kds-spacing-offset-focus));
1794
1795
  }
@@ -3362,23 +3363,23 @@ textarea[data-v-bdf12ef9]::-webkit-scrollbar {
3362
3363
  );
3363
3364
  }
3364
3365
 
3365
- .kds-dropdown-container[data-v-9f49ff8b] {
3366
+ .kds-dropdown-container[data-v-db105594] {
3366
3367
  display: flex;
3367
3368
  flex-direction: column;
3368
3369
  background-color: var(--kds-color-surface-default);
3369
3370
  border-radius: var(--kds-border-radius-container-0-50x);
3370
3371
  box-shadow: var(--kds-elevation-level-3);
3371
3372
  }
3372
- .kds-dropdown-container-sticky-top[data-v-9f49ff8b] {
3373
+ .kds-dropdown-container-sticky-top[data-v-db105594] {
3373
3374
  padding: var(--kds-spacing-container-0-25x);
3374
3375
  background-color: var(--kds-color-surface-default);
3375
3376
  border-bottom: var(--kds-border-base-subtle);
3376
3377
  }
3377
3378
  .kds-dropdown-container-list {
3378
- &[data-v-9f49ff8b] {
3379
+ &[data-v-db105594] {
3379
3380
  max-height: var(--kds-dimension-component-height-12x);
3380
3381
  }
3381
- &.multiline[data-v-9f49ff8b] {
3382
+ &.multiline[data-v-db105594] {
3382
3383
  max-height: var(--kds-dimension-component-height-20x);
3383
3384
  }
3384
3385
  }
@@ -3495,16 +3496,16 @@ textarea[data-v-bdf12ef9]::-webkit-scrollbar {
3495
3496
  }
3496
3497
 
3497
3498
  .kds-resize-container {
3498
- &[data-v-403e065b] {
3499
+ &[data-v-46b33b01] {
3499
3500
  display: flex;
3500
3501
  flex-direction: column;
3501
3502
  gap: var(--kds-spacing-container-0-37x);
3502
3503
  }
3503
- &.dragging[data-v-403e065b] {
3504
+ &.dragging[data-v-46b33b01] {
3504
3505
  user-select: none;
3505
3506
  }
3506
3507
  }
3507
- .kds-resize-container-content[data-v-403e065b] {
3508
+ .kds-resize-container-content[data-v-46b33b01] {
3508
3509
  inline-size: 100%;
3509
3510
  }
3510
3511
 
package/dist/index.js CHANGED
@@ -1729,7 +1729,7 @@ const _sfc_main$U = /* @__PURE__ */ defineComponent({
1729
1729
  }
1730
1730
  });
1731
1731
 
1732
- const KdsListItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$U, [["__scopeId", "data-v-0df9684f"]]);
1732
+ const KdsListItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$U, [["__scopeId", "data-v-822789ec"]]);
1733
1733
 
1734
1734
  const _sfc_main$T = { };
1735
1735
 
@@ -1804,8 +1804,37 @@ const _sfc_main$R = /* @__PURE__ */ defineComponent({
1804
1804
  }
1805
1805
  return elementId?.slice(idPrefix.length + 1);
1806
1806
  }
1807
+ const warnedDuplicateIds = /* @__PURE__ */ new Set();
1808
+ const deduplicationResult = computed(() => {
1809
+ const seen = /* @__PURE__ */ new Set();
1810
+ const duplicateIds = [];
1811
+ const items = props.possibleValues.filter((o) => {
1812
+ if (seen.has(o.id)) {
1813
+ duplicateIds.push(o.id);
1814
+ return false;
1815
+ }
1816
+ seen.add(o.id);
1817
+ return true;
1818
+ });
1819
+ return { items, duplicateIds };
1820
+ });
1821
+ const sanitizedValues = computed(() => deduplicationResult.value.items);
1822
+ watch(
1823
+ () => deduplicationResult.value.duplicateIds,
1824
+ (duplicateIds) => {
1825
+ for (const id of duplicateIds) {
1826
+ if (!warnedDuplicateIds.has(id)) {
1827
+ console.warn(
1828
+ `[KdsListContainer] Duplicate option id "${id}" detected. Only the first occurrence will be used.`
1829
+ );
1830
+ warnedDuplicateIds.add(id);
1831
+ }
1832
+ }
1833
+ },
1834
+ { immediate: true }
1835
+ );
1807
1836
  const prefixedValues = computed(
1808
- () => (__props.loading ? [] : props.possibleValues).map((o) => ({
1837
+ () => (__props.loading ? [] : sanitizedValues.value).map((o) => ({
1809
1838
  ...o,
1810
1839
  id: `${idPrefix}-${o.id}`
1811
1840
  }))
@@ -2027,7 +2056,7 @@ const _sfc_main$R = /* @__PURE__ */ defineComponent({
2027
2056
  }
2028
2057
  });
2029
2058
 
2030
- const KdsListContainer = /* @__PURE__ */ _export_sfc$1(_sfc_main$R, [["__scopeId", "data-v-446a5ba1"]]);
2059
+ const KdsListContainer = /* @__PURE__ */ _export_sfc$1(_sfc_main$R, [["__scopeId", "data-v-d8750fc1"]]);
2031
2060
 
2032
2061
  const KdsListContainer$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
2033
2062
  __proto__: null,
@@ -3957,6 +3986,8 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
3957
3986
  )),
3958
3987
  onLostpointercapture: _cache[2] || (_cache[2] = //@ts-ignore
3959
3988
  (...args) => unref(onColorspacePointerUp) && unref(onColorspacePointerUp)(...args)),
3989
+ onPointerup: _cache[3] || (_cache[3] = //@ts-ignore
3990
+ (...args) => unref(onColorspacePointerUp) && unref(onColorspacePointerUp)(...args)),
3960
3991
  onKeydown: onColorspaceKeyDown
3961
3992
  }, [
3962
3993
  createElementVNode("div", {
@@ -3975,17 +4006,19 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
3975
4006
  "aria-valuemax": HUE_MAX_DEG,
3976
4007
  "aria-valuetext": hueValueText.value,
3977
4008
  tabindex: "0",
3978
- onPointerdown: _cache[3] || (_cache[3] = withModifiers(
4009
+ onPointerdown: _cache[4] || (_cache[4] = withModifiers(
3979
4010
  //@ts-ignore
3980
4011
  (...args) => unref(onHuePointerDown) && unref(onHuePointerDown)(...args),
3981
4012
  ["prevent"]
3982
4013
  )),
3983
- onPointermove: _cache[4] || (_cache[4] = withModifiers(
4014
+ onPointermove: _cache[5] || (_cache[5] = withModifiers(
3984
4015
  //@ts-ignore
3985
4016
  (...args) => unref(onHuePointerMove) && unref(onHuePointerMove)(...args),
3986
4017
  ["prevent"]
3987
4018
  )),
3988
- onLostpointercapture: _cache[5] || (_cache[5] = //@ts-ignore
4019
+ onLostpointercapture: _cache[6] || (_cache[6] = //@ts-ignore
4020
+ (...args) => unref(onHuePointerUp) && unref(onHuePointerUp)(...args)),
4021
+ onPointerup: _cache[7] || (_cache[7] = //@ts-ignore
3989
4022
  (...args) => unref(onHuePointerUp) && unref(onHuePointerUp)(...args)),
3990
4023
  onKeydown: onHueKeyDown
3991
4024
  }, [
@@ -4005,7 +4038,7 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
4005
4038
  }
4006
4039
  });
4007
4040
 
4008
- const ColorPicker = /* @__PURE__ */ _export_sfc$1(_sfc_main$z, [["__scopeId", "data-v-74392b20"]]);
4041
+ const ColorPicker = /* @__PURE__ */ _export_sfc$1(_sfc_main$z, [["__scopeId", "data-v-d2bb72e0"]]);
4009
4042
 
4010
4043
  const HEX_LENGTH_1 = 1;
4011
4044
  const HEX_LENGTH_2 = 2;
@@ -15629,8 +15662,13 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
15629
15662
 
15630
15663
  const BaseDropdown = /* @__PURE__ */ _export_sfc$1(_sfc_main$n, [["__scopeId", "data-v-cf3becf9"]]);
15631
15664
 
15665
+ const DROPDOWN_SEARCH_THRESHOLD = 12;
15666
+
15632
15667
  const _hoisted_1$h = { class: "kds-dropdown-container" };
15633
- const _hoisted_2$9 = { class: "kds-dropdown-container-sticky-top" };
15668
+ const _hoisted_2$9 = {
15669
+ key: 0,
15670
+ class: "kds-dropdown-container-sticky-top"
15671
+ };
15634
15672
  const _sfc_main$m = /* @__PURE__ */ defineComponent({
15635
15673
  __name: "DropdownContainer",
15636
15674
  props: /* @__PURE__ */ mergeModels({
@@ -15641,10 +15679,14 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
15641
15679
  "modelValue": { default: "" },
15642
15680
  "modelModifiers": {}
15643
15681
  }),
15644
- emits: ["update:modelValue"],
15645
- setup(__props, { expose: __expose }) {
15682
+ emits: /* @__PURE__ */ mergeModels(["select"], ["update:modelValue"]),
15683
+ setup(__props, { expose: __expose, emit: __emit }) {
15646
15684
  const props = __props;
15685
+ const emit = __emit;
15647
15686
  const modelValue = useModel(__props, "modelValue");
15687
+ const searchable = computed(
15688
+ () => props.possibleValues.length >= DROPDOWN_SEARCH_THRESHOLD
15689
+ );
15648
15690
  const searchValue = ref("");
15649
15691
  const searchEl = useTemplateRef("searchEl");
15650
15692
  const listContainerRef = useTemplateRef("listContainer");
@@ -15694,12 +15736,24 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
15694
15736
  const hasMultiline = computed(
15695
15737
  () => props.possibleValues.some((o) => o.subText !== void 0)
15696
15738
  );
15739
+ const onItemClick = (id) => {
15740
+ if (id !== void 0) {
15741
+ modelValue.value = id;
15742
+ emit("select", id);
15743
+ }
15744
+ };
15697
15745
  __expose({
15698
- focus: () => searchEl.value?.focus()
15746
+ focus: () => {
15747
+ if (searchable.value) {
15748
+ searchEl.value?.focus();
15749
+ } else {
15750
+ listContainerRef.value?.focus();
15751
+ }
15752
+ }
15699
15753
  });
15700
15754
  return (_ctx, _cache) => {
15701
15755
  return openBlock(), createElementBlock("div", _hoisted_1$h, [
15702
- createElementVNode("div", _hoisted_2$9, [
15756
+ searchable.value ? (openBlock(), createElementBlock("div", _hoisted_2$9, [
15703
15757
  createVNode(BaseInput, {
15704
15758
  ref_key: "searchEl",
15705
15759
  ref: searchEl,
@@ -15715,23 +15769,23 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
15715
15769
  onFocus: _cache[2] || (_cache[2] = ($event) => listContainerRef.value?.handleFocus()),
15716
15770
  onBlur: _cache[3] || (_cache[3] = ($event) => listContainerRef.value?.handleBlur())
15717
15771
  }, null, 8, ["modelValue", "aria-activedescendant"])
15718
- ]),
15772
+ ])) : createCommentVNode("", true),
15719
15773
  createVNode(unref(KdsListContainer), {
15720
15774
  ref: "listContainer",
15721
15775
  class: normalizeClass(["kds-dropdown-container-list", { multiline: hasMultiline.value }]),
15722
15776
  "possible-values": props.loading ? [] : listOptions.value,
15723
15777
  loading: props.loading,
15724
15778
  "empty-text": props.emptyText,
15725
- "controlled-externally": "",
15779
+ "controlled-externally": searchable.value,
15726
15780
  "aria-label": "Dropdown options",
15727
- onItemClick: _cache[4] || (_cache[4] = ($event) => $event !== void 0 && (modelValue.value = $event))
15728
- }, null, 8, ["class", "possible-values", "loading", "empty-text"])
15781
+ onItemClick
15782
+ }, null, 8, ["class", "possible-values", "loading", "empty-text", "controlled-externally"])
15729
15783
  ]);
15730
15784
  };
15731
15785
  }
15732
15786
  });
15733
15787
 
15734
- const DropdownContainer = /* @__PURE__ */ _export_sfc$1(_sfc_main$m, [["__scopeId", "data-v-9f49ff8b"]]);
15788
+ const DropdownContainer = /* @__PURE__ */ _export_sfc$1(_sfc_main$m, [["__scopeId", "data-v-db105594"]]);
15735
15789
 
15736
15790
  const _sfc_main$l = /* @__PURE__ */ defineComponent({
15737
15791
  __name: "KdsDropdown",
@@ -15767,11 +15821,9 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
15767
15821
  nextTick(() => dropdownContainerEl.value?.focus());
15768
15822
  }
15769
15823
  });
15770
- watch(modelValue, () => {
15771
- if (open.value) {
15772
- open.value = false;
15773
- }
15774
- });
15824
+ const closeDropdown = () => {
15825
+ open.value = false;
15826
+ };
15775
15827
  return (_ctx, _cache) => {
15776
15828
  return openBlock(), createBlock(BaseFormFieldWrapper, {
15777
15829
  id: props.id,
@@ -15805,7 +15857,7 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
15805
15857
  placement: "bottom-left",
15806
15858
  role: "dialog",
15807
15859
  "full-width": "",
15808
- "aria-label": "Searchable dropdown options"
15860
+ "aria-label": "Dropdown menu"
15809
15861
  }, {
15810
15862
  default: withCtx(() => [
15811
15863
  createVNode(DropdownContainer, {
@@ -15815,7 +15867,8 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
15815
15867
  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => modelValue.value = $event),
15816
15868
  "possible-values": props.possibleValues,
15817
15869
  loading: __props.loading,
15818
- "empty-text": "No entries found"
15870
+ "empty-text": "No entries found",
15871
+ onSelect: closeDropdown
15819
15872
  }, null, 8, ["modelValue", "possible-values", "loading"])
15820
15873
  ]),
15821
15874
  _: 1
@@ -16281,15 +16334,16 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
16281
16334
  onPointerdown: unref(onPointerDown),
16282
16335
  onPointermove: withModifiers(unref(onPointerMove), ["prevent"]),
16283
16336
  onLostpointercapture: unref(onPointerUp),
16337
+ onPointerup: unref(onPointerUp),
16284
16338
  onKeydown,
16285
16339
  onDblclick: toggleMaximized
16286
- }, null, 8, ["number-of-handles", "handle-gap", "onPointerdown", "onPointermove", "onLostpointercapture"])
16340
+ }, null, 8, ["number-of-handles", "handle-gap", "onPointerdown", "onPointermove", "onLostpointercapture", "onPointerup"])
16287
16341
  ], 2);
16288
16342
  };
16289
16343
  }
16290
16344
  });
16291
16345
 
16292
- const KdsResizeContainer = /* @__PURE__ */ _export_sfc$1(_sfc_main$g, [["__scopeId", "data-v-403e065b"]]);
16346
+ const KdsResizeContainer = /* @__PURE__ */ _export_sfc$1(_sfc_main$g, [["__scopeId", "data-v-46b33b01"]]);
16293
16347
 
16294
16348
  const CLICK_META_KEY_TIMEOUT = 250;
16295
16349
  const useMultiSelectListBoxSelection = ({
@@ -16539,7 +16593,9 @@ const useMultiSelectListBoxSelection = ({
16539
16593
  if (currentKeyNavIndex.value < 0) {
16540
16594
  currentKeyNavIndex.value = 0;
16541
16595
  }
16542
- setSelected([allValues.value[currentKeyNavIndex.value].id]);
16596
+ if (modelValue.value.length === 0) {
16597
+ setSelected([allValues.value[currentKeyNavIndex.value].id]);
16598
+ }
16543
16599
  }
16544
16600
  };
16545
16601
  const onBlur = () => {