fds-vue-core 8.2.3 → 8.3.0

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.
Files changed (36) hide show
  1. package/components.d.ts +2 -0
  2. package/dist/components/FdsSearchSelect/FdsSearchSelect.vue.d.ts +3 -5
  3. package/dist/components/FdsSearchSelectPro/FdsSearchSelectPro.vue.d.ts +3 -5
  4. package/dist/components/Form/FdsInput/FdsInput.vue.d.ts +2 -3
  5. package/dist/components/Form/FdsInput/types.d.ts +0 -2
  6. package/dist/components/Form/FdsPhonenumber/FdsPhonenumber.vue.d.ts +0 -3
  7. package/dist/components/Form/FdsPhonenumber/normalizePhoneInput.d.ts +7 -0
  8. package/dist/components/Form/FdsPhonenumber/phoneMask.d.ts +2 -0
  9. package/dist/components/Form/FdsPhonenumber/types.d.ts +1 -1
  10. package/dist/components/Form/FdsSsn/FdsSsn.vue.d.ts +33 -0
  11. package/dist/components/Form/FdsSsn/ssnMask.d.ts +19 -0
  12. package/dist/components/Form/FdsSsn/types.d.ts +24 -0
  13. package/dist/fds-vue-core.cjs.js +937 -448
  14. package/dist/fds-vue-core.cjs.js.map +1 -1
  15. package/dist/fds-vue-core.css +1 -1
  16. package/dist/fds-vue-core.es.js +938 -449
  17. package/dist/fds-vue-core.es.js.map +1 -1
  18. package/dist/helpers/validateSsn.d.ts +16 -0
  19. package/dist/index.d.ts +5 -1
  20. package/dist/tsconfig.build.tsbuildinfo +1 -1
  21. package/package.json +2 -1
  22. package/src/components/Form/FdsInput/FdsInput.stories.ts +1 -7
  23. package/src/components/Form/FdsInput/FdsInput.vue +41 -163
  24. package/src/components/Form/FdsInput/types.ts +0 -2
  25. package/src/components/Form/FdsPhonenumber/FdsPhonenumber.vue +30 -9
  26. package/src/components/Form/FdsPhonenumber/normalizePhoneInput.ts +88 -0
  27. package/src/components/Form/FdsPhonenumber/phoneMask.ts +28 -0
  28. package/src/components/Form/FdsPhonenumber/types.ts +0 -3
  29. package/src/components/Form/FdsSsn/FdsSsn.stories.ts +131 -0
  30. package/src/components/Form/FdsSsn/FdsSsn.vue +133 -0
  31. package/src/components/Form/FdsSsn/ssnMask.ts +20 -0
  32. package/src/components/Form/FdsSsn/types.ts +36 -0
  33. package/src/helpers/validateSsn.ts +63 -0
  34. package/src/index.ts +16 -0
  35. package/src/lang/en.json +2 -0
  36. package/src/lang/sv.json +2 -0
@@ -88,6 +88,8 @@ const en = {
88
88
  "FdsPhonenumber.invalidPhone": "Enter a valid phone number",
89
89
  "FdsPhonenumber.noCountryResults": "No country matches your search",
90
90
  "FdsPhonenumber.phoneNumber": "Phone number",
91
+ "FdsSsn.invalidSsn": "Enter a valid personal identity number",
92
+ "FdsSsn.label": "Personal identity number",
91
93
  "FdsSearchSelectPro.loadingMore": "Loading more...",
92
94
  "FdsSearchSelectPro.showMore": "Show more",
93
95
  "FdsSearchSelectPro.unspecified": "Unspecified",
@@ -161,6 +163,8 @@ const sv = {
161
163
  "FdsPhonenumber.invalidPhone": "Ange ett giltigt telefonnummer",
162
164
  "FdsPhonenumber.noCountryResults": "Inget land matchar sökningen",
163
165
  "FdsPhonenumber.phoneNumber": "Telefonnummer",
166
+ "FdsSsn.invalidSsn": "Ange ett giltigt personnummer",
167
+ "FdsSsn.label": "Personnummer",
164
168
  "FdsSearchSelectPro.loadingMore": "Hämtar fler...",
165
169
  "FdsSearchSelectPro.showMore": "Visa fler",
166
170
  "FdsSearchSelectPro.unspecified": "Ospecificerat",
@@ -750,8 +754,8 @@ const icons = {
750
754
  </defs>
751
755
  </svg>`
752
756
  };
753
- const _hoisted_1$A = ["innerHTML"];
754
- const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
757
+ const _hoisted_1$B = ["innerHTML"];
758
+ const _sfc_main$N = /* @__PURE__ */ vue.defineComponent({
755
759
  __name: "FdsIcon",
756
760
  props: {
757
761
  name: {},
@@ -784,11 +788,11 @@ const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
784
788
  return vue.openBlock(), vue.createElementBlock("span", vue.mergeProps({
785
789
  class: "flex items-center justify-center align-middle",
786
790
  style: { width: pixelSize.value, height: pixelSize.value }
787
- }, rootAttrs.value, { innerHTML: svgHtml.value }), null, 16, _hoisted_1$A);
791
+ }, rootAttrs.value, { innerHTML: svgHtml.value }), null, 16, _hoisted_1$B);
788
792
  };
789
793
  }
790
794
  });
791
- const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
795
+ const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
792
796
  __name: "FdsButtonIcon",
793
797
  props: {
794
798
  icon: {},
@@ -832,12 +836,12 @@ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
832
836
  class: buttonClasses.value,
833
837
  onClick
834
838
  }), [
835
- !__props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
839
+ !__props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$N, {
836
840
  key: 0,
837
841
  size: iconSize.value,
838
842
  name: __props.icon,
839
843
  "aria-hidden": "true"
840
- }, null, 8, ["size", "name"])) : (vue.openBlock(), vue.createBlock(_sfc_main$M, {
844
+ }, null, 8, ["size", "name"])) : (vue.openBlock(), vue.createBlock(_sfc_main$N, {
841
845
  key: 1,
842
846
  size: iconSize.value,
843
847
  name: "spinner",
@@ -848,7 +852,7 @@ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
848
852
  };
849
853
  }
850
854
  });
851
- const _hoisted_1$z = { class: "flex items-start gap-2" };
855
+ const _hoisted_1$A = { class: "flex items-start gap-2" };
852
856
  const _hoisted_2$q = { class: "h-7 flex items-center" };
853
857
  const _hoisted_3$l = { class: "leading-7" };
854
858
  const _hoisted_4$j = { class: "relative h-7" };
@@ -856,7 +860,7 @@ const _hoisted_5$h = {
856
860
  key: 1,
857
861
  class: "fds-block-alert-slot mb-0-last-child"
858
862
  };
859
- const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
863
+ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
860
864
  __name: "FdsBlockAlert",
861
865
  props: {
862
866
  visible: { type: Boolean, default: true },
@@ -912,9 +916,9 @@ const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
912
916
  key: 0,
913
917
  class: vue.normalizeClass(["font-bold w-full justify-between items-start flex gap-2", { "mb-2": (isExpanded.value || !__props.collapsable) && vue.unref(hasSlot) }])
914
918
  }, [
915
- vue.createElementVNode("div", _hoisted_1$z, [
919
+ vue.createElementVNode("div", _hoisted_1$A, [
916
920
  vue.createElementVNode("div", _hoisted_2$q, [
917
- vue.createVNode(_sfc_main$M, {
921
+ vue.createVNode(_sfc_main$N, {
918
922
  name: "alert",
919
923
  size: 24,
920
924
  class: "fill-yellow-700"
@@ -923,13 +927,13 @@ const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
923
927
  vue.createElementVNode("span", _hoisted_3$l, vue.toDisplayString(__props.heading), 1)
924
928
  ]),
925
929
  vue.createElementVNode("div", _hoisted_4$j, [
926
- __props.closeable ? (vue.openBlock(), vue.createBlock(_sfc_main$L, vue.mergeProps({
930
+ __props.closeable ? (vue.openBlock(), vue.createBlock(_sfc_main$M, vue.mergeProps({
927
931
  key: 0,
928
932
  icon: "cross",
929
933
  size: 28,
930
934
  onClick: handleClose
931
935
  }, { "aria-label": closeLabel.value }, { class: ["fill-gray-900! hover:bg-gray-100 active:bg-gray-200"] }), null, 16)) : vue.createCommentVNode("", true),
932
- __props.collapsable ? (vue.openBlock(), vue.createBlock(_sfc_main$L, vue.mergeProps({
936
+ __props.collapsable ? (vue.openBlock(), vue.createBlock(_sfc_main$M, vue.mergeProps({
933
937
  key: 1,
934
938
  icon: "arrowDown",
935
939
  size: 28,
@@ -952,7 +956,7 @@ const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
952
956
  };
953
957
  }
954
958
  });
955
- const _hoisted_1$y = ["id"];
959
+ const _hoisted_1$z = ["id"];
956
960
  const _hoisted_2$p = {
957
961
  key: 0,
958
962
  class: "flex items-start justify-between gap-4 mb-4"
@@ -960,7 +964,7 @@ const _hoisted_2$p = {
960
964
  const _hoisted_3$k = { class: "flex items-center gap-3" };
961
965
  const _hoisted_4$i = { class: "flex items-start gap-3 leading-8" };
962
966
  const _hoisted_5$g = { class: "mb-0-last-child" };
963
- const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
967
+ const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
964
968
  __name: "FdsBlockContent",
965
969
  props: {
966
970
  heading: { default: void 0 },
@@ -1017,11 +1021,11 @@ const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
1017
1021
  vue.createElementVNode("div", _hoisted_5$g, [
1018
1022
  vue.renderSlot(_ctx.$slots, "default")
1019
1023
  ])
1020
- ], 16, _hoisted_1$y);
1024
+ ], 16, _hoisted_1$z);
1021
1025
  };
1022
1026
  }
1023
1027
  });
1024
- const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
1028
+ const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
1025
1029
  __name: "FdsSticker",
1026
1030
  props: {
1027
1031
  variant: { default: "blue" },
@@ -1069,7 +1073,7 @@ const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
1069
1073
  };
1070
1074
  }
1071
1075
  });
1072
- const _hoisted_1$x = { class: "leading-6 w-full flex justify-between gap-4" };
1076
+ const _hoisted_1$y = { class: "leading-6 w-full flex justify-between gap-4" };
1073
1077
  const _hoisted_2$o = {
1074
1078
  key: 0,
1075
1079
  class: "flex items-center mr-4"
@@ -1081,7 +1085,7 @@ const _hoisted_5$f = {
1081
1085
  class: "w-full flex mt-2"
1082
1086
  };
1083
1087
  const _hoisted_6$b = ["aria-hidden"];
1084
- const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
1088
+ const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
1085
1089
  ...{
1086
1090
  inheritAttrs: false
1087
1091
  },
@@ -1153,12 +1157,12 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
1153
1157
  vue.createElementVNode("span", {
1154
1158
  class: vue.normalizeClass(buttonRowClasses.value)
1155
1159
  }, [
1156
- vue.createElementVNode("span", _hoisted_1$x, [
1160
+ vue.createElementVNode("span", _hoisted_1$y, [
1157
1161
  vue.createElementVNode("span", {
1158
1162
  class: vue.normalizeClass(["flex items-center", { "inline-flex items-start": __props.icon }])
1159
1163
  }, [
1160
1164
  __props.icon ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$o, [
1161
- vue.createVNode(_sfc_main$M, {
1165
+ vue.createVNode(_sfc_main$N, {
1162
1166
  name: __props.icon,
1163
1167
  size: 24,
1164
1168
  class: vue.normalizeClass(["fill-blue-500", [{ "fill-gray-500": __props.disabled }, __props.iconClass]])
@@ -1171,7 +1175,7 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
1171
1175
  ])
1172
1176
  ], 2),
1173
1177
  vue.createElementVNode("span", _hoisted_4$h, [
1174
- __props.stickerText && __props.stickerColor ? (vue.openBlock(), vue.createBlock(_sfc_main$I, {
1178
+ __props.stickerText && __props.stickerColor ? (vue.openBlock(), vue.createBlock(_sfc_main$J, {
1175
1179
  key: 0,
1176
1180
  variant: __props.stickerColor
1177
1181
  }, {
@@ -1180,7 +1184,7 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
1180
1184
  ]),
1181
1185
  _: 1
1182
1186
  }, 8, ["variant"])) : vue.createCommentVNode("", true),
1183
- vue.createVNode(_sfc_main$M, {
1187
+ vue.createVNode(_sfc_main$N, {
1184
1188
  name: "arrowDown",
1185
1189
  size: 24,
1186
1190
  class: vue.normalizeClass(["transition-transform duration-200 fill-blue-500 min-w-6 min-h-6", { "rotate-180": isOpen.value, "fill-gray-500": __props.disabled }])
@@ -1204,7 +1208,7 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
1204
1208
  };
1205
1209
  }
1206
1210
  });
1207
- const _hoisted_1$w = ["id"];
1211
+ const _hoisted_1$x = ["id"];
1208
1212
  const _hoisted_2$n = {
1209
1213
  key: 0,
1210
1214
  class: "flex items-start gap-4"
@@ -1229,7 +1233,7 @@ const _hoisted_13$2 = { class: "flex items-start gap-3" };
1229
1233
  const _hoisted_14$2 = { class: "mb-0-last-child" };
1230
1234
  const smallIconSize = 24;
1231
1235
  const largeIconSize = 48;
1232
- const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
1236
+ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
1233
1237
  __name: "FdsBlockInfo",
1234
1238
  props: {
1235
1239
  heading: { default: void 0 },
@@ -1262,7 +1266,7 @@ const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
1262
1266
  class: contentClasses.value
1263
1267
  }, rootAttrs.value), [
1264
1268
  __props.iconSize === "large" && __props.icon ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$n, [
1265
- vue.createVNode(_sfc_main$M, {
1269
+ vue.createVNode(_sfc_main$N, {
1266
1270
  name: __props.icon,
1267
1271
  size: largeIconSize,
1268
1272
  class: "fill-blue-500"
@@ -1287,7 +1291,7 @@ const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
1287
1291
  }, [
1288
1292
  vue.createElementVNode("header", _hoisted_10$4, [
1289
1293
  vue.createElementVNode("div", _hoisted_11$4, [
1290
- __props.icon && __props.iconSize === "small" ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
1294
+ __props.icon && __props.iconSize === "small" ? (vue.openBlock(), vue.createBlock(_sfc_main$N, {
1291
1295
  key: 0,
1292
1296
  name: __props.icon,
1293
1297
  size: smallIconSize,
@@ -1304,16 +1308,16 @@ const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
1304
1308
  vue.renderSlot(_ctx.$slots, "default")
1305
1309
  ])
1306
1310
  ]))
1307
- ], 16, _hoisted_1$w);
1311
+ ], 16, _hoisted_1$x);
1308
1312
  };
1309
1313
  }
1310
1314
  });
1311
- const _hoisted_1$v = { class: "mb-0-last-child" };
1315
+ const _hoisted_1$w = { class: "mb-0-last-child" };
1312
1316
  const _hoisted_2$m = {
1313
1317
  key: 0,
1314
1318
  class: "flex items-end"
1315
1319
  };
1316
- const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
1320
+ const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
1317
1321
  ...{
1318
1322
  inheritAttrs: false
1319
1323
  },
@@ -1426,7 +1430,7 @@ const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
1426
1430
  vue.createElementVNode("div", {
1427
1431
  class: vue.normalizeClass(["flex w-full flex-1", contentClasses.value])
1428
1432
  }, [
1429
- __props.icon ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
1433
+ __props.icon ? (vue.openBlock(), vue.createBlock(_sfc_main$N, {
1430
1434
  key: 0,
1431
1435
  name: __props.icon,
1432
1436
  size: 24,
@@ -1445,7 +1449,7 @@ const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
1445
1449
  vue.createElementVNode("div", {
1446
1450
  class: vue.normalizeClass(slotWrapperClasses.value)
1447
1451
  }, [
1448
- vue.createElementVNode("div", _hoisted_1$v, [
1452
+ vue.createElementVNode("div", _hoisted_1$w, [
1449
1453
  vue.renderSlot(_ctx.$slots, "default")
1450
1454
  ]),
1451
1455
  vue.unref(hasStickerSlot) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$m, [
@@ -1454,7 +1458,7 @@ const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
1454
1458
  ], 2)
1455
1459
  ], 2)
1456
1460
  ], 2),
1457
- __props.variant === "link" ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
1461
+ __props.variant === "link" ? (vue.openBlock(), vue.createBlock(_sfc_main$N, {
1458
1462
  key: 0,
1459
1463
  name: "arrowRight",
1460
1464
  size: 24,
@@ -1466,8 +1470,8 @@ const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
1466
1470
  };
1467
1471
  }
1468
1472
  });
1469
- const _hoisted_1$u = ["aria-label"];
1470
- const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
1473
+ const _hoisted_1$v = ["aria-label"];
1474
+ const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
1471
1475
  __name: "FdsSpinner",
1472
1476
  props: {
1473
1477
  size: { default: "48px" },
@@ -1547,13 +1551,13 @@ const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
1547
1551
  key: 0,
1548
1552
  class: vue.normalizeClass(__props.labelPosition === "bottom" ? "font-bold" : "")
1549
1553
  }, vue.toDisplayString(__props.label), 3)) : vue.createCommentVNode("", true)
1550
- ], 16, _hoisted_1$u);
1554
+ ], 16, _hoisted_1$v);
1551
1555
  };
1552
1556
  }
1553
1557
  });
1554
- const _hoisted_1$t = ["aria-disabled"];
1558
+ const _hoisted_1$u = ["aria-disabled"];
1555
1559
  const elBase$2 = "box-border appearance-none inline-flex items-center justify-center w-fit min-h-0 shadow-none p-0.5 text-base select-none m-0 rounded-md text-left align-middle no-underline transition-[box-shadow,border-color,background-color] duration-200 font-main font-bold text-base leading-5 tracking-normal focus-visible:outline-dashed focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-blue-500";
1556
- const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
1560
+ const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
1557
1561
  ...{
1558
1562
  inheritAttrs: false
1559
1563
  },
@@ -1638,7 +1642,7 @@ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
1638
1642
  onClick
1639
1643
  }), {
1640
1644
  default: vue.withCtx(() => [
1641
- __props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$E, {
1645
+ __props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$F, {
1642
1646
  key: 0,
1643
1647
  class: "mr-2",
1644
1648
  size: "24px",
@@ -1648,7 +1652,7 @@ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
1648
1652
  class: vue.normalizeClass(iconOrderClasses.value),
1649
1653
  "aria-hidden": "true"
1650
1654
  }, [
1651
- vue.createVNode(_sfc_main$M, {
1655
+ vue.createVNode(_sfc_main$N, {
1652
1656
  class: vue.normalizeClass(iconFillClass2.value),
1653
1657
  name: __props.icon,
1654
1658
  size: __props.iconSize
@@ -1658,15 +1662,15 @@ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
1658
1662
  ]),
1659
1663
  _: 1
1660
1664
  }, 16, ["type", "disabled", "data-testid", "class"]))
1661
- ], 10, _hoisted_1$t);
1665
+ ], 10, _hoisted_1$u);
1662
1666
  };
1663
1667
  }
1664
1668
  });
1665
- const _hoisted_1$s = {
1669
+ const _hoisted_1$t = {
1666
1670
  key: 0,
1667
1671
  class: "flex items-center gap-2 h-7"
1668
1672
  };
1669
- const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
1673
+ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
1670
1674
  __name: "FdsButtonCopy",
1671
1675
  props: {
1672
1676
  value: { default: "" },
@@ -1728,10 +1732,10 @@ const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
1728
1732
  }
1729
1733
  });
1730
1734
  return (_ctx, _cache) => {
1731
- return isCopied.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [
1732
- vue.createVNode(_sfc_main$M, { name: "bigSuccess" }),
1735
+ return isCopied.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$t, [
1736
+ vue.createVNode(_sfc_main$N, { name: "bigSuccess" }),
1733
1737
  vue.createElementVNode("span", null, vue.toDisplayString(props.copiedText), 1)
1734
- ])) : (vue.openBlock(), vue.createBlock(_sfc_main$D, {
1738
+ ])) : (vue.openBlock(), vue.createBlock(_sfc_main$E, {
1735
1739
  key: 1,
1736
1740
  type: "button",
1737
1741
  disabled: props.disabled,
@@ -5022,8 +5026,8 @@ function useDownload() {
5022
5026
  isDownloading
5023
5027
  };
5024
5028
  }
5025
- const _hoisted_1$r = ["disabled", "aria-disabled"];
5026
- const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
5029
+ const _hoisted_1$s = ["disabled", "aria-disabled"];
5030
+ const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
5027
5031
  __name: "FdsButtonDownload",
5028
5032
  props: {
5029
5033
  loading: { type: Boolean, default: false },
@@ -5124,23 +5128,23 @@ const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
5124
5128
  class: vue.normalizeClass(iconOrderClasses.value),
5125
5129
  "aria-hidden": "true"
5126
5130
  }, [
5127
- vue.createVNode(_sfc_main$M, {
5131
+ vue.createVNode(_sfc_main$N, {
5128
5132
  class: vue.normalizeClass(iconFillClass2.value),
5129
5133
  name: "download",
5130
5134
  size: 24
5131
5135
  }, null, 8, ["class"])
5132
5136
  ], 2),
5133
5137
  vue.createTextVNode(" " + vue.toDisplayString(__props.text), 1)
5134
- ], 16, _hoisted_1$r);
5138
+ ], 16, _hoisted_1$s);
5135
5139
  };
5136
5140
  }
5137
5141
  });
5138
- const _hoisted_1$q = ["aria-disabled"];
5142
+ const _hoisted_1$r = ["aria-disabled"];
5139
5143
  const _hoisted_2$l = { key: 2 };
5140
5144
  const elBase$1 = "fds-button-primary box-border appearance-none inline-flex items-center justify-center select-none w-full min-h-0 min-w-12 m-0 rounded-lg text-center align-middle whitespace-nowrap no-underline shadow-[0_2px_4px_rgba(12,72,153,0.12)] transition-[box-shadow,border-color,background-color] duration-200 font-main font-bold text-base leading-5 tracking-normal focus-visible:outline-dashed focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-blue-500";
5141
5145
  const variantClasses$1 = "bg-blue-600 border border-blue-600 text-white hover:bg-blue-700";
5142
5146
  const iconFillClass$1 = "fill-white";
5143
- const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
5147
+ const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
5144
5148
  ...{
5145
5149
  inheritAttrs: false
5146
5150
  },
@@ -5223,7 +5227,7 @@ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
5223
5227
  onClick
5224
5228
  }), {
5225
5229
  default: vue.withCtx(() => [
5226
- __props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$E, {
5230
+ __props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$F, {
5227
5231
  key: 0,
5228
5232
  size: __props.size === "sm" ? "18px" : "24px",
5229
5233
  color: "inherit"
@@ -5232,7 +5236,7 @@ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
5232
5236
  class: vue.normalizeClass(iconOrderClasses.value),
5233
5237
  "aria-hidden": "true"
5234
5238
  }, [
5235
- vue.createVNode(_sfc_main$M, {
5239
+ vue.createVNode(_sfc_main$N, {
5236
5240
  class: vue.normalizeClass(iconFillClass$1),
5237
5241
  name: __props.icon,
5238
5242
  size: __props.iconSize
@@ -5242,16 +5246,16 @@ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
5242
5246
  ]),
5243
5247
  _: 1
5244
5248
  }, 16, ["type", "disabled", "data-testid", "class"]))
5245
- ], 10, _hoisted_1$q);
5249
+ ], 10, _hoisted_1$r);
5246
5250
  };
5247
5251
  }
5248
5252
  });
5249
- const _hoisted_1$p = ["aria-disabled"];
5253
+ const _hoisted_1$q = ["aria-disabled"];
5250
5254
  const _hoisted_2$k = { key: 2 };
5251
5255
  const elBase = "fds-button-secondary box-border appearance-none inline-flex items-center justify-center select-none w-full min-h-0 min-w-12 m-0 rounded-lg text-center align-middle whitespace-nowrap no-underline shadow-[0_2px_4px_rgba(12,72,153,0.12)] transition-[box-shadow,border-color,background-color] duration-200 font-main font-bold text-base leading-5 tracking-normal focus-visible:outline-dashed focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-blue-500";
5252
5256
  const variantClasses = "bg-white border-2 border-blue-500 text-blue-600 hover:bg-blue_t-100 hover:border-blue-500 hover:text-blue-600 active:bg-blue_t-200 active:border-blue-500 active:text-blue-600";
5253
5257
  const iconFillClass = "fill-blue-500";
5254
- const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
5258
+ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
5255
5259
  ...{
5256
5260
  inheritAttrs: false
5257
5261
  },
@@ -5335,7 +5339,7 @@ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
5335
5339
  onClick
5336
5340
  }), {
5337
5341
  default: vue.withCtx(() => [
5338
- __props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$E, {
5342
+ __props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$F, {
5339
5343
  key: 0,
5340
5344
  size: __props.size === "sm" ? "18px" : "24px",
5341
5345
  color: "inherit"
@@ -5344,7 +5348,7 @@ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
5344
5348
  class: vue.normalizeClass(iconOrderClasses.value),
5345
5349
  "aria-hidden": "true"
5346
5350
  }, [
5347
- vue.createVNode(_sfc_main$M, {
5351
+ vue.createVNode(_sfc_main$N, {
5348
5352
  class: vue.normalizeClass(iconFillClass),
5349
5353
  name: __props.icon,
5350
5354
  size: __props.iconSize
@@ -5354,7 +5358,7 @@ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
5354
5358
  ]),
5355
5359
  _: 1
5356
5360
  }, 16, ["type", "disabled", "data-testid", "class"]))
5357
- ], 10, _hoisted_1$p);
5361
+ ], 10, _hoisted_1$q);
5358
5362
  };
5359
5363
  }
5360
5364
  });
@@ -5676,8 +5680,8 @@ function useViewportBreakpoint() {
5676
5680
  breakpoints
5677
5681
  };
5678
5682
  }
5679
- const _hoisted_1$o = ["title"];
5680
- const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
5683
+ const _hoisted_1$p = ["title"];
5684
+ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
5681
5685
  __name: "FdsBreakpointIndicator",
5682
5686
  props: {
5683
5687
  popoverClass: {}
@@ -5716,7 +5720,7 @@ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
5716
5720
  class: "px-2 py-1 rounded text-xs bg-white bg-opacity-20 text-black hover:bg-opacity-30 cursor-pointer",
5717
5721
  title: `${vue.unref(windowWidth)}px`,
5718
5722
  onClick: toggleBreakpointList
5719
- }, vue.toDisplayString(vue.unref(currentBreakpoint)), 9, _hoisted_1$o),
5723
+ }, vue.toDisplayString(vue.unref(currentBreakpoint)), 9, _hoisted_1$p),
5720
5724
  showBreakpointList.value ? (vue.openBlock(), vue.createElementBlock("div", {
5721
5725
  key: 0,
5722
5726
  class: vue.normalizeClass(["absolute bottom-full left-0 mb-2 rounded-lg shadow-lg p-2 text-xs font-mono whitespace-nowrap z-10", __props.popoverClass])
@@ -5796,9 +5800,9 @@ function useDevModePoEditor() {
5796
5800
  setI18nKeysVisibility
5797
5801
  };
5798
5802
  }
5799
- const _hoisted_1$n = ["for"];
5803
+ const _hoisted_1$o = ["for"];
5800
5804
  const _hoisted_2$j = ["value", "disabled", "required"];
5801
- const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
5805
+ const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
5802
5806
  ...{
5803
5807
  inheritAttrs: false
5804
5808
  },
@@ -5969,14 +5973,14 @@ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
5969
5973
  vue.createTextVNode(vue.toDisplayString(props.label), 1)
5970
5974
  ], 64)) : vue.createCommentVNode("", true)
5971
5975
  ], 2)) : vue.createCommentVNode("", true)
5972
- ], 16, _hoisted_1$n)
5976
+ ], 16, _hoisted_1$o)
5973
5977
  ], 2);
5974
5978
  };
5975
5979
  }
5976
5980
  });
5977
- const _hoisted_1$m = ["for"];
5981
+ const _hoisted_1$n = ["for"];
5978
5982
  const _hoisted_2$i = ["value", "checked", "disabled", "required"];
5979
- const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
5983
+ const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
5980
5984
  ...{
5981
5985
  inheritAttrs: false
5982
5986
  },
@@ -6107,7 +6111,7 @@ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
6107
6111
  vue.createTextVNode(vue.toDisplayString(props.label), 1)
6108
6112
  ], 64)) : vue.createCommentVNode("", true)
6109
6113
  ], 2)) : vue.createCommentVNode("", true)
6110
- ], 16, _hoisted_1$m)
6114
+ ], 16, _hoisted_1$n)
6111
6115
  ], 2);
6112
6116
  };
6113
6117
  }
@@ -6124,7 +6128,7 @@ function classValueToString(value) {
6124
6128
  }
6125
6129
  return String(value);
6126
6130
  }
6127
- const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
6131
+ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
6128
6132
  ...{
6129
6133
  inheritAttrs: false
6130
6134
  },
@@ -6155,7 +6159,7 @@ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
6155
6159
  };
6156
6160
  }
6157
6161
  });
6158
- const _hoisted_1$l = {
6162
+ const _hoisted_1$m = {
6159
6163
  key: 0,
6160
6164
  class: "absolute bottom-full right-0 mb-3 z-60 flex min-w-54 flex-col font-normal"
6161
6165
  };
@@ -6171,7 +6175,7 @@ const _hoisted_5$d = {
6171
6175
  };
6172
6176
  const _hoisted_6$9 = { key: 2 };
6173
6177
  const OVERLAY_OPEN_KEY = "devModeOverlayOpen";
6174
- const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
6178
+ const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
6175
6179
  __name: "FdsDevModeOverlay",
6176
6180
  props: {
6177
6181
  environment: { default: null },
@@ -6238,11 +6242,11 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
6238
6242
  () => checkToggles.value.length > 0 || radioToggles.value.length > 0 || buttonToggles.value.length > 0 || canToggleI18nKeys.value || showLocaleSwitcher.value
6239
6243
  );
6240
6244
  return (_ctx, _cache) => {
6241
- return hasContent.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [
6245
+ return hasContent.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
6242
6246
  isOpen.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$h, [
6243
6247
  vue.createElementVNode("div", _hoisted_3$h, [
6244
6248
  vue.createElementVNode("div", null, [
6245
- vue.unref(canToggleI18nKeys) ? (vue.openBlock(), vue.createBlock(_sfc_main$x, {
6249
+ vue.unref(canToggleI18nKeys) ? (vue.openBlock(), vue.createBlock(_sfc_main$y, {
6246
6250
  key: 0,
6247
6251
  checked: vue.unref(showingTranslationKeys),
6248
6252
  onChange: vue.unref(setI18nKeysVisibility),
@@ -6254,7 +6258,7 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
6254
6258
  _: 1
6255
6259
  }, 8, ["checked", "onChange"])) : vue.createCommentVNode("", true),
6256
6260
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(checkToggles.value, (toggle) => {
6257
- return vue.openBlock(), vue.createBlock(_sfc_main$x, {
6261
+ return vue.openBlock(), vue.createBlock(_sfc_main$y, {
6258
6262
  key: `${toggle.key}-${toggle.checked}`,
6259
6263
  checked: toggle.checked,
6260
6264
  class: "mb-0!",
@@ -6269,7 +6273,7 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
6269
6273
  ]),
6270
6274
  radioToggles.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$f, [
6271
6275
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(radioToggles.value, (toggle) => {
6272
- return vue.openBlock(), vue.createBlock(_sfc_main$w, {
6276
+ return vue.openBlock(), vue.createBlock(_sfc_main$x, {
6273
6277
  key: `${toggle.key}-${toggle.checked}`,
6274
6278
  name: toggle.group,
6275
6279
  value: toggle.value,
@@ -6286,7 +6290,7 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
6286
6290
  ])) : vue.createCommentVNode("", true),
6287
6291
  buttonToggles.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$d, [
6288
6292
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(buttonToggles.value, (toggle) => {
6289
- return vue.openBlock(), vue.createBlock(_sfc_main$D, {
6293
+ return vue.openBlock(), vue.createBlock(_sfc_main$E, {
6290
6294
  key: toggle.key,
6291
6295
  size: "sm",
6292
6296
  block: "",
@@ -6297,7 +6301,7 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
6297
6301
  ])) : vue.createCommentVNode("", true),
6298
6302
  showLocaleSwitcher.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$9, [
6299
6303
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(localeOptions.value, (localeCode) => {
6300
- return vue.openBlock(), vue.createBlock(_sfc_main$w, {
6304
+ return vue.openBlock(), vue.createBlock(_sfc_main$x, {
6301
6305
  key: localeCode,
6302
6306
  name: "fds-dev-mode-locale",
6303
6307
  value: localeCode,
@@ -6321,13 +6325,13 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
6321
6325
  onClick: _cache[0] || (_cache[0] = ($event) => isOpen.value = !isOpen.value),
6322
6326
  class: "flex w-full cursor-pointer justify-between gap-2 px-3 py-2 active:bg-gray-100"
6323
6327
  }, [
6324
- vue.createVNode(_sfc_main$v, { class: "mb-0!" }, {
6328
+ vue.createVNode(_sfc_main$w, { class: "mb-0!" }, {
6325
6329
  default: vue.withCtx(() => [
6326
6330
  vue.createTextVNode(vue.toDisplayString(vue.unref(t)("FdsDevMode.overlay.quickSettings")), 1)
6327
6331
  ]),
6328
6332
  _: 1
6329
6333
  }),
6330
- vue.createVNode(_sfc_main$M, {
6334
+ vue.createVNode(_sfc_main$N, {
6331
6335
  name: isOpen.value ? "arrowUp" : "arrowDown",
6332
6336
  size: 20,
6333
6337
  class: "fill-gray-700"
@@ -6338,10 +6342,10 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
6338
6342
  };
6339
6343
  }
6340
6344
  });
6341
- const _hoisted_1$k = { class: "flex justify-between mb-4" };
6345
+ const _hoisted_1$l = { class: "flex justify-between mb-4" };
6342
6346
  const _hoisted_2$g = { class: "flex items-center gap-2" };
6343
6347
  const _hoisted_3$g = { class: "mb-0-last-child" };
6344
- const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
6348
+ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
6345
6349
  __name: "FdsModal",
6346
6350
  props: {
6347
6351
  open: { type: Boolean, default: false },
@@ -6570,9 +6574,9 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
6570
6574
  vue.createElementVNode("div", {
6571
6575
  class: vue.normalizeClass(__props.resizable ? "overflow-auto flex-1 min-h-0" : "")
6572
6576
  }, [
6573
- vue.createElementVNode("div", _hoisted_1$k, [
6577
+ vue.createElementVNode("div", _hoisted_1$l, [
6574
6578
  vue.createElementVNode("div", _hoisted_2$g, [
6575
- iconName.value ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
6579
+ iconName.value ? (vue.openBlock(), vue.createBlock(_sfc_main$N, {
6576
6580
  key: 0,
6577
6581
  name: iconName.value,
6578
6582
  size: 24,
@@ -6583,7 +6587,7 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
6583
6587
  class: vue.normalizeClass(headerTitleClasses.value)
6584
6588
  }, vue.toDisplayString(__props.heading), 3)
6585
6589
  ]),
6586
- !__props.strict ? (vue.openBlock(), vue.createBlock(_sfc_main$L, vue.mergeProps({
6590
+ !__props.strict ? (vue.openBlock(), vue.createBlock(_sfc_main$M, vue.mergeProps({
6587
6591
  key: 0,
6588
6592
  icon: "cross",
6589
6593
  size: 28,
@@ -9845,7 +9849,7 @@ try {
9845
9849
  globalThis.IMask = IMask;
9846
9850
  } catch {
9847
9851
  }
9848
- const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
9852
+ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
9849
9853
  ...{
9850
9854
  inheritAttrs: false
9851
9855
  },
@@ -9876,15 +9880,15 @@ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
9876
9880
  };
9877
9881
  }
9878
9882
  });
9879
- const _hoisted_1$j = ["for", "id"];
9880
- const _hoisted_2$f = ["type", "required", "disabled", "tabindex", "aria-invalid", "aria-label", "aria-labelledby", "aria-describedby", "autocomplete", "placeholder", "pattern", "searchIcon"];
9881
- const _hoisted_3$f = { class: "whitespace-pre text-base leading-6 tabular-nums" };
9883
+ const _hoisted_1$k = ["for", "id"];
9884
+ const _hoisted_2$f = { class: "relative" };
9885
+ const _hoisted_3$f = ["type", "required", "disabled", "tabindex", "aria-invalid", "aria-label", "aria-labelledby", "aria-describedby", "autocomplete", "placeholder", "pattern", "searchIcon"];
9882
9886
  const _hoisted_4$e = {
9883
9887
  key: 0,
9884
9888
  class: "text-red-700 font-bold mt-1"
9885
9889
  };
9886
- const maskFieldPaddingClasses = "px-3 py-[calc(0.75rem-1px)]";
9887
- const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
9890
+ const inputPaddingClasses = "px-3 py-[calc(0.75rem-1px)]";
9891
+ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
9888
9892
  ...{
9889
9893
  inheritAttrs: false
9890
9894
  },
@@ -9900,7 +9904,6 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
9900
9904
  labelLeft: { type: Boolean, default: false },
9901
9905
  clearButton: { type: Boolean, default: false },
9902
9906
  mask: { default: void 0 },
9903
- displayChar: { default: void 0 },
9904
9907
  modelValue: {},
9905
9908
  value: { default: void 0 },
9906
9909
  type: {},
@@ -9935,7 +9938,7 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
9935
9938
  "modelValue": { default: void 0, required: false },
9936
9939
  "modelModifiers": {}
9937
9940
  }),
9938
- emits: /* @__PURE__ */ vue.mergeModels(["input", "change", "clearInput", "update:value", "keyup", "keyup.enter", "blur"], ["update:modelValue"]),
9941
+ emits: /* @__PURE__ */ vue.mergeModels(["input", "autocomplete", "clearInput", "update:value", "keyup", "keyup.enter", "blur"], ["update:modelValue"]),
9939
9942
  setup(__props, { emit: __emit }) {
9940
9943
  const modelValue = vue.useModel(__props, "modelValue");
9941
9944
  const props = __props;
@@ -10016,86 +10019,26 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
10016
10019
  return "pr-40";
10017
10020
  });
10018
10021
  const externalClass = vue.computed(() => props.class ?? attrs.class);
10019
- const maskDisplayValue = vue.ref("");
10020
- const maskPlaceholderChar = vue.ref("");
10021
- const resolvedPlaceholderChar = vue.computed(() => props.displayChar ?? props.maskOptions?.placeholderChar ?? null);
10022
- const useMaskPlaceholderStyle = vue.computed(() => {
10023
- if (!props.mask || !resolvedPlaceholderChar.value) return false;
10024
- const lazy = props.maskOptions?.lazy ?? (props.displayChar ? false : true);
10025
- return !lazy;
10026
- });
10027
- const maskFieldWrapperClasses = vue.computed(() => {
10028
- if (!useMaskPlaceholderStyle.value) return void 0;
10029
- return [
10030
- "rounded-md border border-gray-500 bg-white bg-clip-padding",
10031
- props.disabled && "outline-dashed outline-2 outline-gray-400 cursor-not-allowed border-transparent",
10032
- isInvalid.value ? "outline-2 -outline-offset-2 outline-red-600" : "focus-within:outline-2 focus-within:outline-blue-500 focus-within:outline-offset-0",
10033
- "focus-within:border-transparent"
10034
- ];
10035
- });
10036
- const maskOverlayClasses = vue.computed(() => [
10037
- "pointer-events-none absolute inset-0 z-[3] flex items-center",
10038
- maskFieldPaddingClasses,
10039
- inputPaddingRight.value
10022
+ const inputClasses = vue.computed(() => [
10023
+ "block rounded-md border border-gray-500",
10024
+ maxlength.value ? "" : "w-full",
10025
+ inputPaddingClasses,
10026
+ inputPaddingRight.value,
10027
+ "focus:outline-2 focus:outline-blue-500 -outline-offset-2 focus:border-transparent",
10028
+ showDateIcon.value && "[&::-webkit-calendar-picker-indicator]:opacity-0 [&::-webkit-calendar-picker-indicator]:pointer-events-none",
10029
+ props.disabled ? "text-gray-800 outline-dashed outline-2 outline-gray-400 cursor-not-allowed border-transparent" : "text-gray-900 bg-white",
10030
+ isInvalid.value && "outline-2 outline-red-600",
10031
+ props.inputClass
10040
10032
  ]);
10041
- const maskDisplayChars = vue.computed(() => {
10042
- const display = maskDisplayValue.value;
10043
- const placeholder = maskPlaceholderChar.value || resolvedPlaceholderChar.value;
10044
- if (!display || !placeholder) return [];
10045
- return [...display].map((char) => ({
10046
- char,
10047
- isPlaceholder: char === placeholder
10048
- }));
10049
- });
10050
- function maskCharStyle(isPlaceholder) {
10051
- if (isPlaceholder) {
10052
- return { color: props.disabled ? "var(--color-gray-500)" : "var(--color-gray-400)" };
10053
- }
10054
- return { color: props.disabled ? "var(--color-gray-800)" : "var(--color-gray-900)" };
10055
- }
10056
- const inputClasses = vue.computed(() => {
10057
- const shared = [
10058
- "block rounded-md",
10059
- maxlength.value ? "" : "w-full",
10060
- inputPaddingRight.value,
10061
- showDateIcon.value && "[&::-webkit-calendar-picker-indicator]:opacity-0 [&::-webkit-calendar-picker-indicator]:pointer-events-none",
10062
- props.inputClass
10063
- ];
10064
- if (useMaskPlaceholderStyle.value) {
10065
- return [
10066
- ...shared,
10067
- "relative z-[2] border-0 bg-transparent shadow-none focus:outline-none",
10068
- maskFieldPaddingClasses,
10069
- "text-base leading-6 tabular-nums",
10070
- props.disabled ? "cursor-not-allowed" : ""
10071
- ];
10072
- }
10073
- return [
10074
- ...shared,
10075
- "rounded-md border border-gray-500",
10076
- maskFieldPaddingClasses,
10077
- "focus:outline-2 focus:outline-blue-500 -outline-offset-2 focus:border-transparent",
10078
- props.disabled ? "text-gray-800 outline-dashed outline-2 outline-gray-400 cursor-not-allowed border-transparent" : "text-gray-900 bg-white",
10079
- isInvalid.value && "outline-2 outline-red-600"
10080
- ];
10081
- });
10082
10033
  const inputStyle = vue.computed(() => {
10083
- const size = maxlength.value ? {
10034
+ if (!maxlength.value) return void 0;
10035
+ return {
10084
10036
  width: `calc(${maxlength.value}ch + 1.5rem + 0.25rem)`,
10085
10037
  maxWidth: "100%"
10086
- } : {};
10087
- if (!useMaskPlaceholderStyle.value) {
10088
- return size;
10089
- }
10090
- return {
10091
- ...size,
10092
- color: "transparent",
10093
- WebkitTextFillColor: "transparent",
10094
- caretColor: props.disabled ? "#1f2937" : "#111827"
10095
10038
  };
10096
10039
  });
10097
10040
  const rightIconsContainerClasses = vue.computed(() => [
10098
- "absolute z-10 flex gap-2 top-1/2 -translate-y-1/2 items-center justify-end",
10041
+ "absolute flex gap-2 top-1/2 -translate-y-1/2 items-center justify-end",
10099
10042
  showClearButton.value ? "right-2" : "right-3"
10100
10043
  ]);
10101
10044
  const inputBindings = vue.computed(() => ({
@@ -10115,7 +10058,6 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
10115
10058
  internalValue.value = "";
10116
10059
  if (maskInstance) {
10117
10060
  maskInstance.value = "";
10118
- vue.nextTick(syncMaskDisplay);
10119
10061
  }
10120
10062
  emit("clearInput");
10121
10063
  }
@@ -10145,57 +10087,25 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
10145
10087
  }
10146
10088
  const inputRef = vue.ref(null);
10147
10089
  let maskInstance = null;
10148
- function getMaskEmittedValue(instance) {
10149
- if (!instance) return "";
10150
- const raw = String(instance.value ?? "");
10151
- if (!useMaskPlaceholderStyle.value) return raw;
10152
- const placeholder = instance.masked?.placeholderChar ?? resolvedPlaceholderChar.value;
10153
- if (!placeholder) return raw;
10154
- return raw.split(placeholder).join("").replace(/\s+$/, "");
10155
- }
10156
- function syncMaskDisplay() {
10157
- if (!inputRef.value) {
10158
- maskDisplayValue.value = "";
10159
- maskPlaceholderChar.value = "";
10160
- return;
10161
- }
10162
- maskPlaceholderChar.value = maskInstance?.masked?.placeholderChar ?? resolvedPlaceholderChar.value ?? "";
10163
- maskDisplayValue.value = maskInstance?.displayValue ?? inputRef.value.value ?? maskInstance?.value ?? "";
10164
- }
10165
10090
  const createMask2 = () => {
10166
10091
  if (maskInstance) {
10167
10092
  maskInstance.destroy();
10168
10093
  maskInstance = null;
10169
10094
  }
10170
10095
  if (props.mask && inputRef.value) {
10171
- const maskConfig = {
10096
+ maskInstance = IMask(inputRef.value, {
10172
10097
  mask: props.mask,
10173
10098
  ...props.maskOptions,
10174
- ...props.displayChar ? {
10175
- placeholderChar: props.displayChar,
10176
- lazy: props.maskOptions?.lazy ?? false
10177
- } : {}
10178
- };
10179
- maskInstance = IMask(inputRef.value, maskConfig);
10099
+ lazy: props.maskOptions?.lazy ?? true
10100
+ });
10180
10101
  if (internalValue.value) {
10181
10102
  maskInstance.value = internalValue.value;
10182
10103
  }
10183
10104
  maskInstance.on("accept", () => {
10184
10105
  if (maskInstance) {
10185
- internalValue.value = getMaskEmittedValue(maskInstance);
10186
- vue.nextTick(syncMaskDisplay);
10106
+ internalValue.value = maskInstance.value;
10187
10107
  }
10188
10108
  });
10189
- maskInstance.on("complete", () => {
10190
- vue.nextTick(syncMaskDisplay);
10191
- });
10192
- vue.nextTick(() => {
10193
- syncMaskDisplay();
10194
- vue.nextTick(syncMaskDisplay);
10195
- });
10196
- } else {
10197
- maskDisplayValue.value = "";
10198
- maskPlaceholderChar.value = "";
10199
10109
  }
10200
10110
  };
10201
10111
  vue.onMounted(() => {
@@ -10224,7 +10134,7 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
10224
10134
  return props.meta ? metaId.value : void 0;
10225
10135
  });
10226
10136
  vue.watch(
10227
- () => [props.mask, props.displayChar, props.maskOptions],
10137
+ () => [props.mask, props.maskOptions],
10228
10138
  () => {
10229
10139
  vue.nextTick(() => {
10230
10140
  createMask2();
@@ -10232,13 +10142,23 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
10232
10142
  },
10233
10143
  { deep: true }
10234
10144
  );
10145
+ function shouldSyncMaskFromModel(newValue, currentMaskedValue) {
10146
+ if (newValue === void 0) {
10147
+ return false;
10148
+ }
10149
+ if (document.activeElement !== inputRef.value) {
10150
+ return true;
10151
+ }
10152
+ const newDigits = String(newValue).replace(/\D/g, "");
10153
+ const currentDigits = String(currentMaskedValue ?? "").replace(/\D/g, "");
10154
+ return newDigits !== currentDigits;
10155
+ }
10235
10156
  vue.watch(
10236
10157
  () => props.value,
10237
10158
  (newValue) => {
10238
- if (maskInstance && newValue !== void 0 && newValue !== getMaskEmittedValue(maskInstance)) {
10239
- if (document.activeElement !== inputRef.value) {
10159
+ if (maskInstance && newValue !== void 0 && newValue !== maskInstance.value) {
10160
+ if (shouldSyncMaskFromModel(newValue, maskInstance.value)) {
10240
10161
  maskInstance.value = newValue;
10241
- vue.nextTick(syncMaskDisplay);
10242
10162
  }
10243
10163
  }
10244
10164
  }
@@ -10246,10 +10166,9 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
10246
10166
  vue.watch(
10247
10167
  () => modelValue.value,
10248
10168
  (newValue) => {
10249
- if (maskInstance && newValue !== void 0 && newValue !== getMaskEmittedValue(maskInstance)) {
10250
- if (document.activeElement !== inputRef.value) {
10169
+ if (maskInstance && newValue !== void 0 && newValue !== maskInstance.value) {
10170
+ if (shouldSyncMaskFromModel(newValue, maskInstance.value)) {
10251
10171
  maskInstance.value = newValue;
10252
- vue.nextTick(syncMaskDisplay);
10253
10172
  }
10254
10173
  }
10255
10174
  }
@@ -10269,8 +10188,8 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
10269
10188
  for: inputId.value,
10270
10189
  id: labelId.value,
10271
10190
  class: ["block font-bold text-gray-900 cursor-pointer", { "mb-0": props.meta, "mb-1": !props.meta }]
10272
- }, labelAttrs.value), vue.toDisplayString(props.label), 17, _hoisted_1$j)) : vue.createCommentVNode("", true),
10273
- props.meta ? (vue.openBlock(), vue.createBlock(_sfc_main$s, {
10191
+ }, labelAttrs.value), vue.toDisplayString(props.label), 17, _hoisted_1$k)) : vue.createCommentVNode("", true),
10192
+ props.meta ? (vue.openBlock(), vue.createBlock(_sfc_main$t, {
10274
10193
  key: 1,
10275
10194
  id: metaId.value,
10276
10195
  class: vue.normalizeClass({ "mb-1": !props.labelLeft })
@@ -10284,9 +10203,7 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
10284
10203
  vue.createElementVNode("div", {
10285
10204
  class: vue.normalizeClass({ "flex-1": props.labelLeft })
10286
10205
  }, [
10287
- vue.createElementVNode("div", {
10288
- class: vue.normalizeClass(["relative", maskFieldWrapperClasses.value])
10289
- }, [
10206
+ vue.createElementVNode("div", _hoisted_2$f, [
10290
10207
  vue.createElementVNode("input", vue.mergeProps({
10291
10208
  ref_key: "inputRef",
10292
10209
  ref: inputRef,
@@ -10307,30 +10224,17 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
10307
10224
  }, inputBindings.value, {
10308
10225
  onInput: handleInputChange,
10309
10226
  onChange: handleInputChange,
10310
- onBlur: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("blur", $event)),
10311
- onKeyup: _cache[1] || (_cache[1] = (ev) => {
10227
+ onAutocomplete: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("autocomplete", $event)),
10228
+ onBlur: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("blur", $event)),
10229
+ onKeyup: _cache[2] || (_cache[2] = (ev) => {
10312
10230
  _ctx.$emit("keyup", ev);
10313
10231
  if (ev.key === "Enter") _ctx.$emit("keyup.enter", ev);
10314
10232
  })
10315
- }), null, 16, _hoisted_2$f),
10316
- useMaskPlaceholderStyle.value ? (vue.openBlock(), vue.createElementBlock("div", {
10317
- key: 0,
10318
- class: vue.normalizeClass(maskOverlayClasses.value),
10319
- "aria-hidden": "true"
10320
- }, [
10321
- vue.createElementVNode("span", _hoisted_3$f, [
10322
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(maskDisplayChars.value, (item, index) => {
10323
- return vue.openBlock(), vue.createElementBlock("span", {
10324
- key: index,
10325
- style: vue.normalizeStyle(maskCharStyle(item.isPlaceholder))
10326
- }, vue.toDisplayString(item.char), 5);
10327
- }), 128))
10328
- ])
10329
- ], 2)) : vue.createCommentVNode("", true),
10233
+ }), null, 16, _hoisted_3$f),
10330
10234
  vue.createElementVNode("div", {
10331
10235
  class: vue.normalizeClass(rightIconsContainerClasses.value)
10332
10236
  }, [
10333
- showDateIcon.value ? (vue.openBlock(), vue.createBlock(_sfc_main$L, {
10237
+ showDateIcon.value ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
10334
10238
  key: 0,
10335
10239
  "aria-label": dateButtonLabel.value,
10336
10240
  onClick: onDateIconClick,
@@ -10338,29 +10242,29 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
10338
10242
  size: 28,
10339
10243
  class: "fill-blue-500"
10340
10244
  }, null, 8, ["aria-label"])) : vue.createCommentVNode("", true),
10341
- isInvalid.value ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
10245
+ isInvalid.value ? (vue.openBlock(), vue.createBlock(_sfc_main$N, {
10342
10246
  key: 1,
10343
10247
  name: "alert",
10344
10248
  class: "fill-red-700"
10345
10249
  })) : vue.createCommentVNode("", true),
10346
- isValid2.value ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
10250
+ isValid2.value ? (vue.openBlock(), vue.createBlock(_sfc_main$N, {
10347
10251
  key: 2,
10348
10252
  name: "bigSuccess"
10349
10253
  })) : vue.createCommentVNode("", true),
10350
- props.searchIcon ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
10254
+ props.searchIcon ? (vue.openBlock(), vue.createBlock(_sfc_main$N, {
10351
10255
  key: 3,
10352
10256
  name: "search",
10353
10257
  size: 24,
10354
10258
  class: "fill-blue-500"
10355
10259
  })) : vue.createCommentVNode("", true),
10356
- showClearButton.value ? (vue.openBlock(), vue.createBlock(_sfc_main$L, vue.mergeProps({
10260
+ showClearButton.value ? (vue.openBlock(), vue.createBlock(_sfc_main$M, vue.mergeProps({
10357
10261
  key: 4,
10358
10262
  icon: "cross"
10359
10263
  }, { "aria-label": clearButtonLabel.value }, {
10360
10264
  onClick: onClear,
10361
10265
  size: 30
10362
10266
  }), null, 16)) : vue.createCommentVNode("", true),
10363
- showPasswordToggle.value ? (vue.openBlock(), vue.createBlock(_sfc_main$D, {
10267
+ showPasswordToggle.value ? (vue.openBlock(), vue.createBlock(_sfc_main$E, {
10364
10268
  key: 5,
10365
10269
  icon: showPassword.value ? "viewOff" : "viewOn",
10366
10270
  text: showPassword.value ? passwordButtonHideLabel.value : passwordButtonShowLabel.value,
@@ -10368,11 +10272,11 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
10368
10272
  }, null, 8, ["icon", "text"])) : vue.createCommentVNode("", true)
10369
10273
  ], 2),
10370
10274
  showTodaySuffixInField.value ? (vue.openBlock(), vue.createElementBlock("span", {
10371
- key: 1,
10275
+ key: 0,
10372
10276
  class: vue.normalizeClass(todaySuffixClasses.value),
10373
10277
  style: vue.normalizeStyle(todaySuffixStyle.value)
10374
10278
  }, vue.toDisplayString(todayLabel.value), 7)) : vue.createCommentVNode("", true)
10375
- ], 2)
10279
+ ])
10376
10280
  ], 2)
10377
10281
  ], 2),
10378
10282
  showInvalidMessage.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$e, vue.toDisplayString(props.invalidMessage), 1)) : vue.createCommentVNode("", true)
@@ -10380,7 +10284,7 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
10380
10284
  };
10381
10285
  }
10382
10286
  });
10383
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
10287
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
10384
10288
  __name: "FdsTabs",
10385
10289
  props: {
10386
10290
  block: { type: Boolean, default: false },
@@ -10413,7 +10317,7 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
10413
10317
  };
10414
10318
  }
10415
10319
  });
10416
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
10320
+ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
10417
10321
  ...{
10418
10322
  inheritAttrs: false
10419
10323
  },
@@ -10528,7 +10432,7 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
10528
10432
  };
10529
10433
  }
10530
10434
  });
10531
- const _hoisted_1$i = { class: "space-y-6" };
10435
+ const _hoisted_1$j = { class: "space-y-6" };
10532
10436
  const _hoisted_2$e = {
10533
10437
  key: 0,
10534
10438
  class: "text-sm text-gray-600"
@@ -10627,7 +10531,7 @@ const _hoisted_59 = {
10627
10531
  class: "mt-2"
10628
10532
  };
10629
10533
  const _hoisted_60 = { class: "mt-4 flex justify-end gap-3" };
10630
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
10534
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
10631
10535
  __name: "FdsDevModeStorage",
10632
10536
  props: {
10633
10537
  open: { type: Boolean, default: false },
@@ -10800,7 +10704,7 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
10800
10704
  loadStorageEntries();
10801
10705
  };
10802
10706
  return (_ctx, _cache) => {
10803
- return vue.openBlock(), vue.createBlock(_sfc_main$t, {
10707
+ return vue.openBlock(), vue.createBlock(_sfc_main$u, {
10804
10708
  open: isOpen.value,
10805
10709
  heading: "DevTools",
10806
10710
  size: "xl",
@@ -10810,31 +10714,31 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
10810
10714
  onClose: _cache[11] || (_cache[11] = () => handleOpenChange(false))
10811
10715
  }, {
10812
10716
  default: vue.withCtx(() => [
10813
- vue.createElementVNode("div", _hoisted_1$i, [
10814
- vue.createVNode(_sfc_main$q, {
10717
+ vue.createElementVNode("div", _hoisted_1$j, [
10718
+ vue.createVNode(_sfc_main$r, {
10815
10719
  variant: "secondary",
10816
10720
  class: "flex-wrap overflow-visible! *:w-auto!"
10817
10721
  }, {
10818
10722
  default: vue.withCtx(() => [
10819
- vue.createVNode(_sfc_main$p, {
10723
+ vue.createVNode(_sfc_main$q, {
10820
10724
  label: vue.unref(t)("FdsDevModeStorage.tabs.localStorage"),
10821
10725
  active: activeTab.value === "local",
10822
10726
  as: "button",
10823
10727
  onClick: _cache[0] || (_cache[0] = ($event) => activeTab.value = "local")
10824
10728
  }, null, 8, ["label", "active"]),
10825
- vue.createVNode(_sfc_main$p, {
10729
+ vue.createVNode(_sfc_main$q, {
10826
10730
  label: vue.unref(t)("FdsDevModeStorage.tabs.sessionStorage"),
10827
10731
  active: activeTab.value === "session",
10828
10732
  as: "button",
10829
10733
  onClick: _cache[1] || (_cache[1] = ($event) => activeTab.value = "session")
10830
10734
  }, null, 8, ["label", "active"]),
10831
- vue.createVNode(_sfc_main$p, {
10735
+ vue.createVNode(_sfc_main$q, {
10832
10736
  label: vue.unref(t)("FdsDevModeStorage.tabs.cookies"),
10833
10737
  active: activeTab.value === "cookies",
10834
10738
  as: "button",
10835
10739
  onClick: _cache[2] || (_cache[2] = ($event) => activeTab.value = "cookies")
10836
10740
  }, null, 8, ["label", "active"]),
10837
- vue.createVNode(_sfc_main$p, {
10741
+ vue.createVNode(_sfc_main$q, {
10838
10742
  label: vue.unref(t)("FdsDevModeStorage.tabs.actions"),
10839
10743
  active: activeTab.value === "actions",
10840
10744
  as: "button",
@@ -10843,7 +10747,7 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
10843
10747
  ]),
10844
10748
  _: 1
10845
10749
  }),
10846
- activeTab.value === "local" ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
10750
+ activeTab.value === "local" ? (vue.openBlock(), vue.createBlock(_sfc_main$H, {
10847
10751
  key: 0,
10848
10752
  heading: vue.unref(t)("FdsDevModeStorage.tabs.localStorage"),
10849
10753
  icon: "information",
@@ -10897,12 +10801,12 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
10897
10801
  ])
10898
10802
  ]),
10899
10803
  localEditKey.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_18, [
10900
- vue.createVNode(_sfc_main$z, {
10804
+ vue.createVNode(_sfc_main$A, {
10901
10805
  text: vue.unref(t)("FdsDevModeStorage.actions.delete"),
10902
10806
  size: "sm",
10903
10807
  onClick: deleteLocalEntry
10904
10808
  }, null, 8, ["text"]),
10905
- vue.createVNode(_sfc_main$A, {
10809
+ vue.createVNode(_sfc_main$B, {
10906
10810
  text: vue.unref(t)("FdsDevModeStorage.actions.save"),
10907
10811
  size: "sm",
10908
10812
  onClick: saveLocalEntry
@@ -10911,7 +10815,7 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
10911
10815
  ])
10912
10816
  ]),
10913
10817
  _: 1
10914
- }, 8, ["heading"])) : activeTab.value === "session" ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
10818
+ }, 8, ["heading"])) : activeTab.value === "session" ? (vue.openBlock(), vue.createBlock(_sfc_main$H, {
10915
10819
  key: 1,
10916
10820
  heading: vue.unref(t)("FdsDevModeStorage.tabs.sessionStorage"),
10917
10821
  icon: "information",
@@ -10965,12 +10869,12 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
10965
10869
  ])
10966
10870
  ]),
10967
10871
  sessionEditKey.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_35, [
10968
- vue.createVNode(_sfc_main$z, {
10872
+ vue.createVNode(_sfc_main$A, {
10969
10873
  text: vue.unref(t)("FdsDevModeStorage.actions.delete"),
10970
10874
  size: "sm",
10971
10875
  onClick: deleteSessionEntry
10972
10876
  }, null, 8, ["text"]),
10973
- vue.createVNode(_sfc_main$A, {
10877
+ vue.createVNode(_sfc_main$B, {
10974
10878
  text: vue.unref(t)("FdsDevModeStorage.actions.save"),
10975
10879
  size: "sm",
10976
10880
  onClick: saveSessionEntry
@@ -10979,7 +10883,7 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
10979
10883
  ])
10980
10884
  ]),
10981
10885
  _: 1
10982
- }, 8, ["heading"])) : activeTab.value === "cookies" ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
10886
+ }, 8, ["heading"])) : activeTab.value === "cookies" ? (vue.openBlock(), vue.createBlock(_sfc_main$H, {
10983
10887
  key: 2,
10984
10888
  heading: vue.unref(t)("FdsDevModeStorage.tabs.cookies"),
10985
10889
  icon: "information",
@@ -11033,12 +10937,12 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
11033
10937
  ])
11034
10938
  ]),
11035
10939
  cookieEditKey.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_52, [
11036
- vue.createVNode(_sfc_main$z, {
10940
+ vue.createVNode(_sfc_main$A, {
11037
10941
  text: vue.unref(t)("FdsDevModeStorage.actions.delete"),
11038
10942
  size: "sm",
11039
10943
  onClick: deleteCookieEntry
11040
10944
  }, null, 8, ["text"]),
11041
- vue.createVNode(_sfc_main$A, {
10945
+ vue.createVNode(_sfc_main$B, {
11042
10946
  text: vue.unref(t)("FdsDevModeStorage.actions.save"),
11043
10947
  size: "sm",
11044
10948
  onClick: saveCookieEntry
@@ -11047,7 +10951,7 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
11047
10951
  ])
11048
10952
  ]),
11049
10953
  _: 1
11050
- }, 8, ["heading"])) : activeTab.value === "actions" ? (vue.openBlock(), vue.createBlock(_sfc_main$G, {
10954
+ }, 8, ["heading"])) : activeTab.value === "actions" ? (vue.openBlock(), vue.createBlock(_sfc_main$H, {
11051
10955
  key: 3,
11052
10956
  heading: vue.unref(t)("FdsDevModeStorage.tabs.actions"),
11053
10957
  icon: "information",
@@ -11065,14 +10969,14 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
11065
10969
  vue.createElementVNode("div", _hoisted_57, vue.toDisplayString(action.label), 1),
11066
10970
  action.description ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_58, vue.toDisplayString(action.description), 1)) : vue.createCommentVNode("", true)
11067
10971
  ]),
11068
- vue.createVNode(_sfc_main$z, {
10972
+ vue.createVNode(_sfc_main$A, {
11069
10973
  text: action.label,
11070
10974
  size: "sm",
11071
10975
  onClick: ($event) => runAction(index, action)
11072
10976
  }, null, 8, ["text", "onClick"])
11073
10977
  ]),
11074
10978
  action.input ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_59, [
11075
- vue.createVNode(_sfc_main$r, {
10979
+ vue.createVNode(_sfc_main$s, {
11076
10980
  type: action.input.type ?? "text",
11077
10981
  modelValue: getActionInputValue(index, action.input.defaultValue),
11078
10982
  placeholder: action.input.placeholder,
@@ -11086,11 +10990,11 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
11086
10990
  _: 1
11087
10991
  }, 8, ["heading"])) : vue.createCommentVNode("", true),
11088
10992
  vue.createElementVNode("div", _hoisted_60, [
11089
- vue.createVNode(_sfc_main$z, {
10993
+ vue.createVNode(_sfc_main$A, {
11090
10994
  text: vue.unref(t)("FdsDevModeStorage.actions.refresh"),
11091
10995
  onClick: refreshStorageEntries
11092
10996
  }, null, 8, ["text"]),
11093
- vue.createVNode(_sfc_main$A, {
10997
+ vue.createVNode(_sfc_main$B, {
11094
10998
  text: vue.unref(t)("FdsDevModeStorage.actions.close"),
11095
10999
  onClick: _cache[10] || (_cache[10] = ($event) => handleOpenChange(false))
11096
11000
  }, null, 8, ["text"])
@@ -11102,11 +11006,11 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
11102
11006
  };
11103
11007
  }
11104
11008
  });
11105
- const _hoisted_1$h = { class: "relative px-2 py-1" };
11009
+ const _hoisted_1$i = { class: "relative px-2 py-1" };
11106
11010
  const _hoisted_2$d = { class: "flex flex-col sm:flex-row items-center gap-2 sm:gap-1" };
11107
11011
  const _hoisted_3$d = { class: "flex items-center gap-1" };
11108
11012
  const _hoisted_4$c = { class: "flex items-center gap-1" };
11109
- const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
11013
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
11110
11014
  __name: "FdsDevMode",
11111
11015
  props: /* @__PURE__ */ vue.mergeModels({
11112
11016
  environment: { default: null },
@@ -11268,8 +11172,8 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
11268
11172
  onMousedown: _cache[1] || (_cache[1] = //@ts-ignore
11269
11173
  (...args) => vue.unref(onDragStart) && vue.unref(onDragStart)(...args))
11270
11174
  }, [
11271
- vue.createElementVNode("div", _hoisted_1$h, [
11272
- vue.unref(isDevMode) ? (vue.openBlock(), vue.createBlock(_sfc_main$u, {
11175
+ vue.createElementVNode("div", _hoisted_1$i, [
11176
+ vue.unref(isDevMode) ? (vue.openBlock(), vue.createBlock(_sfc_main$v, {
11273
11177
  key: 0,
11274
11178
  environment: __props.environment,
11275
11179
  toggles: overlayToggles.value,
@@ -11279,7 +11183,7 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
11279
11183
  }, null, 8, ["environment", "toggles"])) : vue.createCommentVNode("", true),
11280
11184
  vue.createElementVNode("div", _hoisted_2$d, [
11281
11185
  vue.createElementVNode("div", _hoisted_3$d, [
11282
- vue.createVNode(_sfc_main$y, { "popover-class": envBannerClasses.value }, null, 8, ["popover-class"]),
11186
+ vue.createVNode(_sfc_main$z, { "popover-class": envBannerClasses.value }, null, 8, ["popover-class"]),
11283
11187
  vue.createElementVNode("span", null, vue.toDisplayString(vue.unref(environmentText)), 1)
11284
11188
  ]),
11285
11189
  vue.createElementVNode("div", _hoisted_4$c, [
@@ -11288,13 +11192,13 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
11288
11192
  (...args) => vue.unref(toggleDevMode) && vue.unref(toggleDevMode)(...args)),
11289
11193
  class: "py-1 px-2 rounded text-xs font-bold bg-white bg-opacity-20 text-black hover:bg-opacity-30 min-w-[120px] cursor-pointer"
11290
11194
  }, vue.toDisplayString(devModeButtonText.value), 1),
11291
- vue.createVNode(_sfc_main$L, {
11195
+ vue.createVNode(_sfc_main$M, {
11292
11196
  icon: "settings",
11293
11197
  size: 24,
11294
11198
  class: vue.normalizeClass(envBannerFillColor.value),
11295
11199
  onClick: openStorageModal
11296
11200
  }, null, 8, ["class"]),
11297
- vue.createVNode(_sfc_main$L, {
11201
+ vue.createVNode(_sfc_main$M, {
11298
11202
  onClick: handleEnvBanner,
11299
11203
  icon: "cross",
11300
11204
  size: 24,
@@ -11304,7 +11208,7 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
11304
11208
  ])
11305
11209
  ])
11306
11210
  ], 38)) : vue.createCommentVNode("", true),
11307
- vue.createVNode(_sfc_main$o, {
11211
+ vue.createVNode(_sfc_main$p, {
11308
11212
  open: isStorageModalOpen.value,
11309
11213
  "onUpdate:open": _cache[2] || (_cache[2] = ($event) => isStorageModalOpen.value = $event),
11310
11214
  customActions: __props.customActions
@@ -11313,8 +11217,8 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
11313
11217
  };
11314
11218
  }
11315
11219
  });
11316
- const _hoisted_1$g = { class: "flex justify-between gap-6 w-full" };
11317
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
11220
+ const _hoisted_1$h = { class: "flex justify-between gap-6 w-full" };
11221
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
11318
11222
  __name: "FdsExitModal",
11319
11223
  props: {
11320
11224
  showExitConfirmModal: {},
@@ -11329,7 +11233,7 @@ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
11329
11233
  const props = __props;
11330
11234
  const isOpen = vue.computed(() => props.showExitConfirmModal.value);
11331
11235
  return (_ctx, _cache) => {
11332
- return vue.openBlock(), vue.createBlock(_sfc_main$t, {
11236
+ return vue.openBlock(), vue.createBlock(_sfc_main$u, {
11333
11237
  heading: props.heading,
11334
11238
  size: "sm",
11335
11239
  open: isOpen.value,
@@ -11337,13 +11241,13 @@ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
11337
11241
  onClose: props.cancelExit
11338
11242
  }, {
11339
11243
  "modal-footer": vue.withCtx(() => [
11340
- vue.createElementVNode("div", _hoisted_1$g, [
11341
- vue.createVNode(_sfc_main$z, {
11244
+ vue.createElementVNode("div", _hoisted_1$h, [
11245
+ vue.createVNode(_sfc_main$A, {
11342
11246
  text: props.stayText,
11343
11247
  onClick: props.cancelExit,
11344
11248
  block: ""
11345
11249
  }, null, 8, ["text", "onClick"]),
11346
- vue.createVNode(_sfc_main$z, {
11250
+ vue.createVNode(_sfc_main$A, {
11347
11251
  text: props.leaveText,
11348
11252
  onClick: props.confirmExit,
11349
11253
  block: ""
@@ -11378,12 +11282,12 @@ function debounce(fn, delayMs) {
11378
11282
  };
11379
11283
  return debounced;
11380
11284
  }
11381
- const _hoisted_1$f = ["id"];
11285
+ const _hoisted_1$g = ["id"];
11382
11286
  const _hoisted_2$c = { class: "flex items-center justify-start gap-1 w-[100px]" };
11383
11287
  const _hoisted_3$c = { class: "flex items-center justify-center w-auto gap-2 order-0 sm:order-0" };
11384
11288
  const _hoisted_4$b = { class: "whitespace-nowrap" };
11385
11289
  const _hoisted_5$b = { class: "flex items-center justify-end gap-1 order-2 sm:order-0 w-[100px]" };
11386
- const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
11290
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
11387
11291
  __name: "FdsPagination",
11388
11292
  props: {
11389
11293
  current: {},
@@ -11473,11 +11377,11 @@ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
11473
11377
  id: inputId.value
11474
11378
  }, rootAttrs.value), [
11475
11379
  vue.createElementVNode("div", _hoisted_2$c, [
11476
- __props.loading && loadingIndicator.value === "start" ? (vue.openBlock(), vue.createBlock(_sfc_main$E, {
11380
+ __props.loading && loadingIndicator.value === "start" ? (vue.openBlock(), vue.createBlock(_sfc_main$F, {
11477
11381
  key: 0,
11478
11382
  size: "32px",
11479
11383
  color: "blue"
11480
- })) : (vue.openBlock(), vue.createBlock(_sfc_main$L, vue.mergeProps({ key: 1 }, { "aria-disabled": __props.current === 1 }, {
11384
+ })) : (vue.openBlock(), vue.createBlock(_sfc_main$M, vue.mergeProps({ key: 1 }, { "aria-disabled": __props.current === 1 }, {
11481
11385
  type: "button",
11482
11386
  "aria-label": firstPageLabel.value,
11483
11387
  icon: "first",
@@ -11486,11 +11390,11 @@ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
11486
11390
  class: [{ "hidden!": __props.current === 1 }, "w-8 h-8 sm:w-12 sm:h-12"],
11487
11391
  onClick: _cache[0] || (_cache[0] = ($event) => handlePagination("start"))
11488
11392
  }), null, 16, ["aria-label", "disabled", "class"])),
11489
- __props.loading && loadingIndicator.value === "prev" ? (vue.openBlock(), vue.createBlock(_sfc_main$E, {
11393
+ __props.loading && loadingIndicator.value === "prev" ? (vue.openBlock(), vue.createBlock(_sfc_main$F, {
11490
11394
  key: 2,
11491
11395
  size: "24px",
11492
11396
  color: "blue"
11493
- })) : (vue.openBlock(), vue.createBlock(_sfc_main$L, vue.mergeProps({ key: 3 }, { "aria-disabled": __props.current === 1 }, {
11397
+ })) : (vue.openBlock(), vue.createBlock(_sfc_main$M, vue.mergeProps({ key: 3 }, { "aria-disabled": __props.current === 1 }, {
11494
11398
  type: "button",
11495
11399
  "aria-label": prevPageLabel.value,
11496
11400
  icon: "arrowLeft",
@@ -11501,14 +11405,14 @@ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
11501
11405
  }), null, 16, ["aria-label", "disabled", "class"]))
11502
11406
  ]),
11503
11407
  vue.createElementVNode("div", _hoisted_3$c, [
11504
- __props.loading && loadingIndicator.value === "input" ? (vue.openBlock(), vue.createBlock(_sfc_main$E, {
11408
+ __props.loading && loadingIndicator.value === "input" ? (vue.openBlock(), vue.createBlock(_sfc_main$F, {
11505
11409
  key: 0,
11506
11410
  size: "24px",
11507
11411
  color: "blue",
11508
11412
  label: loadingLabel.value,
11509
11413
  "label-position": "right"
11510
11414
  }, null, 8, ["label"])) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
11511
- vue.createVNode(_sfc_main$r, {
11415
+ vue.createVNode(_sfc_main$s, {
11512
11416
  style: { "text-align": "center" },
11513
11417
  value: inputValue.value,
11514
11418
  type: "text",
@@ -11522,11 +11426,11 @@ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
11522
11426
  ], 64))
11523
11427
  ]),
11524
11428
  vue.createElementVNode("div", _hoisted_5$b, [
11525
- __props.loading && loadingIndicator.value === "next" ? (vue.openBlock(), vue.createBlock(_sfc_main$E, {
11429
+ __props.loading && loadingIndicator.value === "next" ? (vue.openBlock(), vue.createBlock(_sfc_main$F, {
11526
11430
  key: 0,
11527
11431
  size: "24px",
11528
11432
  color: "blue"
11529
- })) : (vue.openBlock(), vue.createBlock(_sfc_main$L, vue.mergeProps({
11433
+ })) : (vue.openBlock(), vue.createBlock(_sfc_main$M, vue.mergeProps({
11530
11434
  key: 1,
11531
11435
  type: "button",
11532
11436
  "aria-label": nextPageLabel.value,
@@ -11537,11 +11441,11 @@ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
11537
11441
  class: [{ "hidden!": __props.current === __props.max }, "w-8 h-8 sm:w-12 sm:h-12"],
11538
11442
  onClick: _cache[2] || (_cache[2] = ($event) => handlePagination("next"))
11539
11443
  }), null, 16, ["aria-label", "disabled", "class"])),
11540
- __props.loading && loadingIndicator.value === "end" ? (vue.openBlock(), vue.createBlock(_sfc_main$E, {
11444
+ __props.loading && loadingIndicator.value === "end" ? (vue.openBlock(), vue.createBlock(_sfc_main$F, {
11541
11445
  key: 2,
11542
11446
  size: "24px",
11543
11447
  color: "blue"
11544
- })) : (vue.openBlock(), vue.createBlock(_sfc_main$L, vue.mergeProps({
11448
+ })) : (vue.openBlock(), vue.createBlock(_sfc_main$M, vue.mergeProps({
11545
11449
  key: 3,
11546
11450
  type: "button",
11547
11451
  "aria-label": lastPageLabel.value,
@@ -11553,11 +11457,11 @@ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
11553
11457
  onClick: _cache[3] || (_cache[3] = ($event) => handlePagination("end"))
11554
11458
  }), null, 16, ["aria-label", "disabled", "class"]))
11555
11459
  ])
11556
- ], 16, _hoisted_1$f);
11460
+ ], 16, _hoisted_1$g);
11557
11461
  };
11558
11462
  }
11559
11463
  });
11560
- const _hoisted_1$e = { class: "inline-flex" };
11464
+ const _hoisted_1$f = { class: "inline-flex" };
11561
11465
  const _hoisted_2$b = ["onKeydown"];
11562
11466
  const _hoisted_3$b = ["aria-label"];
11563
11467
  const _hoisted_4$a = { class: "mb-1 flex items-start justify-between gap-2" };
@@ -11567,7 +11471,7 @@ const _hoisted_6$7 = {
11567
11471
  class: "flex items-center gap-2"
11568
11472
  };
11569
11473
  const _hoisted_7$7 = { class: "mb-0! min-w-0 grow whitespace-normal wrap-break-word" };
11570
- const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
11474
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
11571
11475
  __name: "FdsPopover",
11572
11476
  props: {
11573
11477
  open: { type: Boolean, default: false },
@@ -11675,7 +11579,7 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
11675
11579
  return attrs;
11676
11580
  });
11677
11581
  return (_ctx, _cache) => {
11678
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
11582
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
11679
11583
  vue.createElementVNode("span", {
11680
11584
  class: vue.normalizeClass(triggerClasses.value),
11681
11585
  style: vue.normalizeStyle(triggerStyle.value)
@@ -11703,13 +11607,13 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
11703
11607
  }, { ...popoverAttrs.value, popover: "auto" }), [
11704
11608
  __props.label ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
11705
11609
  vue.createElementVNode("div", _hoisted_4$a, [
11706
- vue.createVNode(_sfc_main$v, { class: "mb-0! min-w-0 grow balance-text whitespace-normal" }, {
11610
+ vue.createVNode(_sfc_main$w, { class: "mb-0! min-w-0 grow balance-text whitespace-normal" }, {
11707
11611
  default: vue.withCtx(() => [
11708
11612
  vue.createTextVNode(vue.toDisplayString(__props.label), 1)
11709
11613
  ]),
11710
11614
  _: 1
11711
11615
  }),
11712
- vue.createVNode(_sfc_main$L, {
11616
+ vue.createVNode(_sfc_main$M, {
11713
11617
  icon: "cross",
11714
11618
  size: 28,
11715
11619
  "aria-label": __props.closeAriaLabel,
@@ -11727,7 +11631,7 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
11727
11631
  vue.createTextVNode(vue.toDisplayString(__props.body), 1)
11728
11632
  ])
11729
11633
  ]),
11730
- vue.createVNode(_sfc_main$L, {
11634
+ vue.createVNode(_sfc_main$M, {
11731
11635
  icon: "cross",
11732
11636
  size: 28,
11733
11637
  "aria-label": __props.closeAriaLabel,
@@ -11812,7 +11716,7 @@ function useIsPid(value) {
11812
11716
  isPid
11813
11717
  };
11814
11718
  }
11815
- const _hoisted_1$d = { class: "relative block" };
11719
+ const _hoisted_1$e = { class: "relative block" };
11816
11720
  const _hoisted_2$a = {
11817
11721
  key: 0,
11818
11722
  class: "relative"
@@ -11832,7 +11736,7 @@ const _hoisted_10$2 = {
11832
11736
  class: "block m-0 list-none p-0"
11833
11737
  };
11834
11738
  const _hoisted_11$2 = { class: "p-4" };
11835
- const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
11739
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
11836
11740
  __name: "FdsSearchSelect",
11837
11741
  props: {
11838
11742
  items: { default: () => [] },
@@ -12222,10 +12126,10 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
12222
12126
  ref: componentRef,
12223
12127
  class: "fds-search-select block mb-6"
12224
12128
  }, rootAttrs.value), [
12225
- vue.createElementVNode("div", _hoisted_1$d, [
12129
+ vue.createElementVNode("div", _hoisted_1$e, [
12226
12130
  !singleItemName.value.length ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$a, [
12227
12131
  vue.createElementVNode("div", _hoisted_3$a, [
12228
- vue.createVNode(_sfc_main$r, vue.mergeProps({
12132
+ vue.createVNode(_sfc_main$s, vue.mergeProps({
12229
12133
  ref_key: "inputComponentRef",
12230
12134
  ref: inputComponentRef,
12231
12135
  label: __props.label,
@@ -12259,7 +12163,7 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
12259
12163
  style: vue.normalizeStyle(listWrapperStyle.value)
12260
12164
  }, [
12261
12165
  __props.loading ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$6, [
12262
- vue.createVNode(_sfc_main$E, {
12166
+ vue.createVNode(_sfc_main$F, {
12263
12167
  color: "blue",
12264
12168
  size: "48px"
12265
12169
  })
@@ -12303,7 +12207,7 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
12303
12207
  ], 42, _hoisted_7$6);
12304
12208
  }), 128))
12305
12209
  ], 32),
12306
- __props.page !== void 0 && totalPages.value !== null && totalPages.value > 1 ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
12210
+ __props.page !== void 0 && totalPages.value !== null && totalPages.value > 1 ? (vue.openBlock(), vue.createBlock(_sfc_main$m, {
12307
12211
  key: 2,
12308
12212
  current: __props.page,
12309
12213
  max: totalPages.value,
@@ -12651,7 +12555,7 @@ const useSearchSelectProItems = ({
12651
12555
  syncSelectedItemsWithItems
12652
12556
  };
12653
12557
  };
12654
- const _hoisted_1$c = { class: "relative block" };
12558
+ const _hoisted_1$d = { class: "relative block" };
12655
12559
  const _hoisted_2$9 = { class: "relative" };
12656
12560
  const _hoisted_3$9 = { class: "relative" };
12657
12561
  const _hoisted_4$8 = { class: "flex items-center gap-2" };
@@ -12671,7 +12575,7 @@ const _hoisted_12 = {
12671
12575
  };
12672
12576
  const _hoisted_13 = { class: "p-3 flex items-center gap-2" };
12673
12577
  const _hoisted_14 = { key: 0 };
12674
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
12578
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
12675
12579
  __name: "FdsSearchSelectPro",
12676
12580
  props: {
12677
12581
  items: { default: () => [] },
@@ -13331,10 +13235,10 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
13331
13235
  ref: componentRef,
13332
13236
  class: "fds-search-select block mb-6"
13333
13237
  }, rootAttrs.value), [
13334
- vue.createElementVNode("div", _hoisted_1$c, [
13238
+ vue.createElementVNode("div", _hoisted_1$d, [
13335
13239
  vue.createElementVNode("div", _hoisted_2$9, [
13336
13240
  vue.createElementVNode("div", _hoisted_3$9, [
13337
- vue.createVNode(_sfc_main$r, vue.mergeProps({
13241
+ vue.createVNode(_sfc_main$s, vue.mergeProps({
13338
13242
  ref_key: "inputComponentRef",
13339
13243
  ref: inputComponentRef,
13340
13244
  label: __props.label,
@@ -13370,19 +13274,19 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
13370
13274
  class: vue.normalizeClass([headerClasses.value, "flex items-center justify-between gap-3 min-h-[53px]"])
13371
13275
  }, [
13372
13276
  vue.createElementVNode("div", _hoisted_4$8, [
13373
- vue.createVNode(_sfc_main$s, null, {
13277
+ vue.createVNode(_sfc_main$t, null, {
13374
13278
  default: vue.withCtx(() => [
13375
13279
  vue.createTextVNode(vue.toDisplayString(searchTerm.value && searchTerm.value.length ? `${totalMatchingItems.value} ${__props.searchContext.linkWord} ${totalCount.value} ${__props.searchContext.context}` : `${totalCount.value} ${__props.searchContext.context}`), 1)
13376
13280
  ]),
13377
13281
  _: 1
13378
13282
  }),
13379
- isSearching.value ? (vue.openBlock(), vue.createBlock(_sfc_main$E, {
13283
+ isSearching.value ? (vue.openBlock(), vue.createBlock(_sfc_main$F, {
13380
13284
  key: 0,
13381
13285
  color: "blue",
13382
13286
  size: "20px"
13383
13287
  })) : vue.createCommentVNode("", true)
13384
13288
  ]),
13385
- __props.multiple && __props.showSelectedToggle && selectedItems.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$x, {
13289
+ __props.multiple && __props.showSelectedToggle && selectedItems.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$y, {
13386
13290
  key: 0,
13387
13291
  label: `${__props.selectedToggleLabel} (${selectedItems.value.length})`,
13388
13292
  checked: showSelectedOnly.value,
@@ -13417,7 +13321,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
13417
13321
  class: vue.normalizeClass([labelClasses.value, listItemClasses.value]),
13418
13322
  style: vue.normalizeStyle(vue.unref(optionPaddingStyle)(item))
13419
13323
  }, [
13420
- __props.multiple ? (vue.openBlock(), vue.createBlock(_sfc_main$x, {
13324
+ __props.multiple ? (vue.openBlock(), vue.createBlock(_sfc_main$y, {
13421
13325
  key: 0,
13422
13326
  id: `search-select-radio-${index}`,
13423
13327
  name: `search-select-checkbox-group-${inputId}`,
@@ -13434,7 +13338,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
13434
13338
  }, null, 8, _hoisted_8$3)
13435
13339
  ]),
13436
13340
  _: 2
13437
- }, 1032, ["id", "name", "checked", "onChange"])) : (vue.openBlock(), vue.createBlock(_sfc_main$w, {
13341
+ }, 1032, ["id", "name", "checked", "onChange"])) : (vue.openBlock(), vue.createBlock(_sfc_main$x, {
13438
13342
  key: 1,
13439
13343
  id: `search-select-radio-${index}`,
13440
13344
  name: "search-select-radio-group",
@@ -13469,7 +13373,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
13469
13373
  _cache[2] || (_cache[2] = vue.withKeys(vue.withModifiers(($event) => !__props.loadingMore && handleLoadMore(), ["prevent"]), ["space"]))
13470
13374
  ]
13471
13375
  }, [
13472
- vue.createVNode(_sfc_main$L, {
13376
+ vue.createVNode(_sfc_main$M, {
13473
13377
  icon: "sync",
13474
13378
  loading: __props.loadingMore,
13475
13379
  "aria-label": __props.loadingMore ? resolvedLoadingMoreLabel.value : resolvedLoadMoreLabel.value,
@@ -13483,7 +13387,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
13483
13387
  ], 64)) : (vue.openBlock(), vue.createElementBlock("ul", _hoisted_12, [
13484
13388
  vue.createElementVNode("li", _hoisted_13, [
13485
13389
  !isSearching.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_14, vue.toDisplayString(__props.noResultPrompt), 1)) : vue.createCommentVNode("", true),
13486
- isSearching.value ? (vue.openBlock(), vue.createBlock(_sfc_main$E, {
13390
+ isSearching.value ? (vue.openBlock(), vue.createBlock(_sfc_main$F, {
13487
13391
  key: 1,
13488
13392
  color: "blue",
13489
13393
  size: "20px"
@@ -13996,7 +13900,7 @@ const useTreeState = (options = {}) => {
13996
13900
  isEmptySearchResult
13997
13901
  };
13998
13902
  };
13999
- const _hoisted_1$b = { class: "flex items-start" };
13903
+ const _hoisted_1$c = { class: "flex items-start" };
14000
13904
  const _hoisted_2$8 = { class: "flex-1 flex" };
14001
13905
  const _hoisted_3$8 = ["innerHTML"];
14002
13906
  const _hoisted_4$7 = { key: 1 };
@@ -14010,7 +13914,7 @@ const _hoisted_8$2 = ["onClick"];
14010
13914
  const _hoisted_9$1 = { key: 0 };
14011
13915
  const popoverWidth = 327;
14012
13916
  const popoverHeight = 80;
14013
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
13917
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14014
13918
  ...{
14015
13919
  name: "TreeNode"
14016
13920
  },
@@ -14228,8 +14132,8 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
14228
14132
  style: vue.normalizeStyle(indent.value),
14229
14133
  class: vue.normalizeClass("pt-2 pb-2")
14230
14134
  }, [
14231
- vue.createElementVNode("div", _hoisted_1$b, [
14232
- hasChildrenNodes.value ? (vue.openBlock(), vue.createBlock(_sfc_main$L, vue.mergeProps({
14135
+ vue.createElementVNode("div", _hoisted_1$c, [
14136
+ hasChildrenNodes.value ? (vue.openBlock(), vue.createBlock(_sfc_main$M, vue.mergeProps({
14233
14137
  key: 0,
14234
14138
  onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(treeState)?.toggleExpandNode(props.nodeId))
14235
14139
  }, { "aria-label": props.title ? childrenToggleAriaLabel(props.title) : void 0 }, {
@@ -14242,7 +14146,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
14242
14146
  style: vue.normalizeStyle({ minWidth: `${__props.indentation}px` })
14243
14147
  }, null, 4)) : vue.createCommentVNode("", true),
14244
14148
  vue.createElementVNode("div", _hoisted_2$8, [
14245
- vue.createVNode(_sfc_main$x, {
14149
+ vue.createVNode(_sfc_main$y, {
14246
14150
  id: `checkbox-${props.nodeId}`,
14247
14151
  checked: nodeIsSelected.value,
14248
14152
  indeterminate: nodeIsIndeterminate.value,
@@ -14261,7 +14165,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
14261
14165
  }, 8, ["id", "checked", "indeterminate"])
14262
14166
  ]),
14263
14167
  shouldShowPopoverActions.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$4, [
14264
- vue.createVNode(_sfc_main$L, vue.mergeProps({
14168
+ vue.createVNode(_sfc_main$M, vue.mergeProps({
14265
14169
  ref_key: "triggerRef",
14266
14170
  ref: triggerRef,
14267
14171
  icon: "more",
@@ -14309,7 +14213,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
14309
14213
  },
14310
14214
  class: "cursor-pointer"
14311
14215
  }, [
14312
- vue.createVNode(_sfc_main$w, {
14216
+ vue.createVNode(_sfc_main$x, {
14313
14217
  modelValue: selectedOption.value,
14314
14218
  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => selectedOption.value = $event),
14315
14219
  id: `tree-popover-${props.nodeId}-${option.value}`,
@@ -14321,7 +14225,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
14321
14225
  ], 8, _hoisted_8$2);
14322
14226
  }), 64))
14323
14227
  ]),
14324
- vue.createVNode(_sfc_main$L, vue.mergeProps({
14228
+ vue.createVNode(_sfc_main$M, vue.mergeProps({
14325
14229
  icon: "cross",
14326
14230
  id: "tree-popover-close-button",
14327
14231
  size: 24,
@@ -14368,7 +14272,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
14368
14272
  };
14369
14273
  }
14370
14274
  });
14371
- const _hoisted_1$a = { key: 0 };
14275
+ const _hoisted_1$b = { key: 0 };
14372
14276
  const _hoisted_2$7 = {
14373
14277
  key: 0,
14374
14278
  class: "text-xl"
@@ -14377,7 +14281,7 @@ const _hoisted_3$7 = {
14377
14281
  key: 1,
14378
14282
  class: "text-xl"
14379
14283
  };
14380
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14284
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
14381
14285
  __name: "FdsTreeView",
14382
14286
  props: {
14383
14287
  nodeExpandIcon: {},
@@ -14471,7 +14375,7 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14471
14375
  ref: searchContainerRef,
14472
14376
  class: "pb-4"
14473
14377
  }, [
14474
- vue.createVNode(_sfc_main$r, {
14378
+ vue.createVNode(_sfc_main$s, {
14475
14379
  value: vue.unref(treeState)?.searchTerm?.value ?? "",
14476
14380
  onInput: _cache[0] || (_cache[0] = ($event) => vue.unref(treeState)?.setSearchTerm($event.target.value)),
14477
14381
  class: "w-full",
@@ -14484,11 +14388,11 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14484
14388
  ])]),
14485
14389
  _: 1
14486
14390
  }, 8, ["value", "label"]),
14487
- props.searchCountTemplate || props.searchCountTemplateUnfiltered ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
14391
+ props.searchCountTemplate || props.searchCountTemplateUnfiltered ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
14488
14392
  props.searchCountTemplate && vue.unref(treeState)?.searchTerm?.value && String(vue.unref(treeState)?.searchTerm?.value || "").trim().length >= (vue.unref(treeState)?.triggerLength ?? 1) ? (vue.openBlock(), vue.createElementBlock("h2", _hoisted_2$7, vue.toDisplayString(props.searchCountTemplate.replace("[[filteredNodes]]", vue.unref(treeState)?.filteredMatchCount.value.toString()).replace("[[totalNodes]]", totalNodeCount.value.toString())), 1)) : (vue.openBlock(), vue.createElementBlock("h2", _hoisted_3$7, vue.toDisplayString(props.searchCountTemplateUnfiltered?.replace("[[totalNodes]]", totalNodeCount.value.toString()).replace("[[totalNodes]]", totalNodeCount.value.toString())), 1))
14489
14393
  ])) : vue.createCommentVNode("", true)
14490
14394
  ], 512)) : vue.createCommentVNode("", true),
14491
- vue.unref(treeState)?.isEmptySearchResult?.value ? (vue.openBlock(), vue.createBlock(_sfc_main$J, {
14395
+ vue.unref(treeState)?.isEmptySearchResult?.value ? (vue.openBlock(), vue.createBlock(_sfc_main$K, {
14492
14396
  key: 1,
14493
14397
  class: "mt-4"
14494
14398
  }, {
@@ -14496,7 +14400,7 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14496
14400
  vue.createTextVNode(vue.toDisplayString(props.searchResultNoMatchesTitle), 1)
14497
14401
  ]),
14498
14402
  default: vue.withCtx(() => [
14499
- vue.createVNode(_sfc_main$s, null, {
14403
+ vue.createVNode(_sfc_main$t, null, {
14500
14404
  default: vue.withCtx(() => [
14501
14405
  vue.createTextVNode(vue.toDisplayString(props.searchResultNoMatchesBody), 1)
14502
14406
  ]),
@@ -14508,7 +14412,7 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14508
14412
  vue.createElementVNode("div", {
14509
14413
  class: vue.normalizeClass(["rounded-md", { "overflow-x-auto bg-white-solid": props.horizontalScroll }])
14510
14414
  }, [
14511
- props.data && !vue.unref(treeState)?.isEmptySearchResult?.value ? (vue.openBlock(), vue.createBlock(_sfc_main$h, {
14415
+ props.data && !vue.unref(treeState)?.isEmptySearchResult?.value ? (vue.openBlock(), vue.createBlock(_sfc_main$i, {
14512
14416
  key: 0,
14513
14417
  style: { container: "bg-white-solid px-3 py-2" },
14514
14418
  nodes: props.data.children || [],
@@ -14539,8 +14443,8 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14539
14443
  };
14540
14444
  }
14541
14445
  });
14542
- const _hoisted_1$9 = { key: 1 };
14543
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
14446
+ const _hoisted_1$a = { key: 1 };
14447
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14544
14448
  __name: "FdsTruncatedText",
14545
14449
  props: {
14546
14450
  open: { type: Boolean, default: false },
@@ -14588,7 +14492,7 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
14588
14492
  return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({ class: "block mb-4" }, rootAttrs.value), [
14589
14493
  hasContent.value ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
14590
14494
  vue.createElementVNode("span", null, vue.toDisplayString(truncatedText.value), 1),
14591
- isTruncated.value ? (vue.openBlock(), vue.createBlock(_sfc_main$D, {
14495
+ isTruncated.value ? (vue.openBlock(), vue.createBlock(_sfc_main$E, {
14592
14496
  key: 0,
14593
14497
  icon: isOpen.value ? "arrowUp" : "arrowDown",
14594
14498
  iconPos: "right",
@@ -14596,7 +14500,7 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
14596
14500
  onClick: toggleComponent,
14597
14501
  class: "inline! ml-2"
14598
14502
  }, null, 8, ["icon", "text"])) : vue.createCommentVNode("", true)
14599
- ], 64)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
14503
+ ], 64)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
14600
14504
  vue.renderSlot(_ctx.$slots, "default")
14601
14505
  ]))
14602
14506
  ], 16);
@@ -16179,8 +16083,8 @@ const checkIfDateIsBeforeToday = (date) => {
16179
16083
  return isAfter(startOfToday, startOfDate);
16180
16084
  };
16181
16085
  const checkIfDateIsEnabled = (date, enabledDates) => enabledDates.some((enabledDate) => isSameDay(enabledDate, date));
16182
- const _hoisted_1$8 = ["disabled", "aria-label"];
16183
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
16086
+ const _hoisted_1$9 = ["disabled", "aria-label"];
16087
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
16184
16088
  __name: "WeekDay",
16185
16089
  props: {
16186
16090
  date: {},
@@ -16243,23 +16147,23 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
16243
16147
  vue.createElementVNode("span", {
16244
16148
  class: vue.normalizeClass(weekdayLabelClasses.value)
16245
16149
  }, [
16246
- __props.isToday ? (vue.openBlock(), vue.createBlock(_sfc_main$s, { key: 0 }, {
16150
+ __props.isToday ? (vue.openBlock(), vue.createBlock(_sfc_main$t, { key: 0 }, {
16247
16151
  default: vue.withCtx(() => [
16248
16152
  vue.createTextVNode(vue.toDisplayString(vue.unref(t)("FdsWeekCalendar.today")), 1)
16249
16153
  ]),
16250
16154
  _: 1
16251
- })) : (vue.openBlock(), vue.createBlock(_sfc_main$s, { key: 1 }, {
16155
+ })) : (vue.openBlock(), vue.createBlock(_sfc_main$t, { key: 1 }, {
16252
16156
  default: vue.withCtx(() => [
16253
16157
  vue.createTextVNode(vue.toDisplayString(weekdayLabel.value), 1)
16254
16158
  ]),
16255
16159
  _: 1
16256
16160
  }))
16257
16161
  ], 2)
16258
- ], 10, _hoisted_1$8);
16162
+ ], 10, _hoisted_1$9);
16259
16163
  };
16260
16164
  }
16261
16165
  });
16262
- const _hoisted_1$7 = { class: "mb-6" };
16166
+ const _hoisted_1$8 = { class: "mb-6" };
16263
16167
  const _hoisted_2$6 = { class: "max-w-[487px]" };
16264
16168
  const _hoisted_3$6 = { class: "mb-3 flex w-full flex-row items-center" };
16265
16169
  const _hoisted_4$6 = { class: "m-0 font-bold text-gray-800" };
@@ -16270,7 +16174,7 @@ const _hoisted_7$3 = {
16270
16174
  class: "mt-6 flex w-full flex-row items-center gap-2"
16271
16175
  };
16272
16176
  const _hoisted_8$1 = { class: "m-0 font-bold text-blue-700" };
16273
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
16177
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
16274
16178
  __name: "FdsWeekCalendar",
16275
16179
  props: {
16276
16180
  loading: { default: void 0 },
@@ -16403,18 +16307,18 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
16403
16307
  const isWeekDayDisabled = (weekDay) => checkIfDateIsBeforeToday(weekDay) || !checkIfDateIsEnabled(weekDay, props.enabledDates);
16404
16308
  const isTodayDate = (weekDay) => isSameDay(weekDay, /* @__PURE__ */ new Date());
16405
16309
  return (_ctx, _cache) => {
16406
- return vue.openBlock(), vue.createElementBlock("section", _hoisted_1$7, [
16310
+ return vue.openBlock(), vue.createElementBlock("section", _hoisted_1$8, [
16407
16311
  vue.createElementVNode("div", _hoisted_2$6, [
16408
16312
  vue.createElementVNode("div", _hoisted_3$6, [
16409
16313
  vue.createElementVNode("p", _hoisted_4$6, vue.toDisplayString(weekText.value), 1),
16410
16314
  vue.createElementVNode("div", _hoisted_5$6, [
16411
- vue.createVNode(_sfc_main$L, {
16315
+ vue.createVNode(_sfc_main$M, {
16412
16316
  icon: "arrowLeft",
16413
16317
  disabled: disableLastWeekInteraction.value,
16414
16318
  "aria-label": vue.unref(t)("FdsWeekCalendar.previousWeek"),
16415
16319
  onClick: decrementWeek
16416
16320
  }, null, 8, ["disabled", "aria-label"]),
16417
- vue.createVNode(_sfc_main$L, {
16321
+ vue.createVNode(_sfc_main$M, {
16418
16322
  icon: "arrowRight",
16419
16323
  disabled: disableNextWeekInteraction.value,
16420
16324
  "aria-label": vue.unref(t)("FdsWeekCalendar.nextWeek"),
@@ -16435,7 +16339,7 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
16435
16339
  class: "flex flex-row flex-nowrap items-center justify-start gap-x-px"
16436
16340
  }, [
16437
16341
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(visibleWeekDays.value, (weekDay, _index) => {
16438
- return vue.openBlock(), vue.createBlock(_sfc_main$e, {
16342
+ return vue.openBlock(), vue.createBlock(_sfc_main$f, {
16439
16343
  key: `current-${weekDay.toISOString()}-${_index}`,
16440
16344
  date: weekDay,
16441
16345
  disabled: isWeekDayDisabled(weekDay),
@@ -16450,7 +16354,7 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
16450
16354
  }, 8, ["enter-active-class", "leave-active-class", "enter-from-class", "leave-to-class"])
16451
16355
  ]),
16452
16356
  __props.loading?.loading ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$3, [
16453
- vue.createVNode(_sfc_main$E),
16357
+ vue.createVNode(_sfc_main$F),
16454
16358
  vue.createElementVNode("p", _hoisted_8$1, vue.toDisplayString(__props.loading.label), 1)
16455
16359
  ])) : vue.createCommentVNode("", true)
16456
16360
  ])
@@ -16458,7 +16362,7 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
16458
16362
  };
16459
16363
  }
16460
16364
  });
16461
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
16365
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
16462
16366
  ...{
16463
16367
  inheritAttrs: false
16464
16368
  },
@@ -16504,7 +16408,7 @@ const hasStepLabelOverlap = (labels, minGapBeforeHidePx = STEP_LABEL_MIN_GAP_BEF
16504
16408
  }
16505
16409
  return false;
16506
16410
  };
16507
- const _hoisted_1$6 = { class: "mb-6" };
16411
+ const _hoisted_1$7 = { class: "mb-6" };
16508
16412
  const _hoisted_2$5 = {
16509
16413
  key: 0,
16510
16414
  class: "mb-0"
@@ -16517,7 +16421,7 @@ const _hoisted_4$5 = { class: "h-[2px] absolute top-[22px] left-[50%] bg-white-s
16517
16421
  const _hoisted_5$5 = { class: "flex justify-between list-none mb-8 p-0" };
16518
16422
  const _hoisted_6$2 = ["onClick", "disabled"];
16519
16423
  const _hoisted_7$2 = { key: 0 };
16520
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
16424
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
16521
16425
  __name: "FdsWizard",
16522
16426
  props: {
16523
16427
  routes: {},
@@ -16873,12 +16777,12 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
16873
16777
  vue.createElementVNode("nav", {
16874
16778
  class: vue.normalizeClass([__props.wizardClass, "mx-auto"])
16875
16779
  }, [
16876
- vue.createElementVNode("header", _hoisted_1$6, [
16780
+ vue.createElementVNode("header", _hoisted_1$7, [
16877
16781
  vue.createElementVNode("h1", {
16878
16782
  ref: "mainHeader",
16879
16783
  tabindex: "-1"
16880
16784
  }, vue.toDisplayString(mainHeading.value), 513),
16881
- mainLead.value || subCategories.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$c, { key: 0 }, {
16785
+ mainLead.value || subCategories.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$d, { key: 0 }, {
16882
16786
  default: vue.withCtx(() => [
16883
16787
  mainLead.value ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_2$5, vue.toDisplayString(mainLead.value), 1)) : vue.createCommentVNode("", true),
16884
16788
  subCategories.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("ul", _hoisted_3$5, [
@@ -16887,7 +16791,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
16887
16791
  key: subCat.id,
16888
16792
  class: "list-inside list-disc mb-2"
16889
16793
  }, [
16890
- vue.createVNode(_sfc_main$c, { class: "inline!" }, {
16794
+ vue.createVNode(_sfc_main$d, { class: "inline!" }, {
16891
16795
  default: vue.withCtx(() => [
16892
16796
  vue.createTextVNode(vue.toDisplayString(subCat.name), 1)
16893
16797
  ]),
@@ -16931,7 +16835,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
16931
16835
  vue.createElementVNode("span", {
16932
16836
  class: vue.normalizeClass(["relative mb-6 flex flex-col items-center text-blue-600 font-bold justify-center transition-all duration-200 ease-in-out rounded-full w-[44px] h-[44px] bg-white-solid", setStepClasses(entry.index)])
16933
16837
  }, [
16934
- entry.index >= internalCompletedTo.value + 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7$2, vue.toDisplayString(entry.index + 1), 1)) : (vue.openBlock(), vue.createBlock(_sfc_main$M, {
16838
+ entry.index >= internalCompletedTo.value + 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7$2, vue.toDisplayString(entry.index + 1), 1)) : (vue.openBlock(), vue.createBlock(_sfc_main$N, {
16935
16839
  key: 1,
16936
16840
  name: "checkmark",
16937
16841
  size: 24
@@ -18615,6 +18519,11 @@ function parsePhoneNumber$1() {
18615
18519
  function getCountries$1(metadata2) {
18616
18520
  return new Metadata(metadata2).getCountries();
18617
18521
  }
18522
+ function getExampleNumber$1(country, examples2, metadata2) {
18523
+ if (examples2[country]) {
18524
+ return new PhoneNumber$1(country, examples2[country], metadata2);
18525
+ }
18526
+ }
18618
18527
  class PhoneNumber2 extends PhoneNumber$1 {
18619
18528
  constructor(number) {
18620
18529
  super(number, metadata);
@@ -18629,6 +18538,9 @@ function getCountries() {
18629
18538
  function getCountryCallingCode() {
18630
18539
  return withMetadataArgument(getCountryCallingCode$1, arguments);
18631
18540
  }
18541
+ function getExampleNumber() {
18542
+ return withMetadataArgument(getExampleNumber$1, arguments);
18543
+ }
18632
18544
  function resolveDisplayLocale(locale) {
18633
18545
  const trimmed = locale.trim();
18634
18546
  if (!trimmed) {
@@ -18702,7 +18614,91 @@ function filterCountryOptions(options, query) {
18702
18614
  return option.label.toLowerCase().includes(normalizedQuery) || option.countryName.toLowerCase().includes(normalizedQuery) || option.value.toLowerCase().includes(normalizedQuery) || dialCode.includes(normalizedQuery) || `+${dialCode}`.includes(normalizedQuery);
18703
18615
  });
18704
18616
  }
18705
- const _hoisted_1$5 = { class: "relative w-full" };
18617
+ const examples = { "AC": "40123", "AD": "312345", "AE": "501234567", "AF": "701234567", "AG": "2684641234", "AI": "2642351234", "AL": "672123456", "AM": "77123456", "AO": "923123456", "AR": "91123456789", "AS": "6847331234", "AT": "664123456", "AU": "412345678", "AW": "5601234", "AX": "412345678", "AZ": "401234567", "BA": "61123456", "BB": "2462501234", "BD": "1812345678", "BE": "450001234", "BF": "70123456", "BG": "43012345", "BH": "36001234", "BI": "79561234", "BJ": "0195123456", "BL": "690001234", "BM": "4413701234", "BN": "7123456", "BO": "71234567", "BQ": "3181234", "BR": "11961234567", "BS": "2423591234", "BT": "17123456", "BW": "71123456", "BY": "294911911", "BZ": "6221234", "CA": "5062345678", "CC": "412345678", "CD": "991234567", "CF": "70012345", "CG": "061234567", "CH": "781234567", "CI": "0123456789", "CK": "71234", "CL": "221234567", "CM": "671234567", "CN": "13123456789", "CO": "3211234567", "CR": "83123456", "CU": "51234567", "CV": "9911234", "CW": "95181234", "CX": "412345678", "CY": "96123456", "CZ": "601123456", "DE": "15123456789", "DJ": "77831001", "DK": "34412345", "DM": "7672251234", "DO": "8092345678", "DZ": "551234567", "EC": "991234567", "EE": "51234567", "EG": "1001234567", "EH": "650123456", "ER": "7123456", "ES": "612345678", "ET": "911234567", "FI": "412345678", "FJ": "7012345", "FK": "51234", "FM": "3501234", "FO": "211234", "FR": "612345678", "GA": "06031234", "GB": "7400123456", "GD": "4734031234", "GE": "555123456", "GF": "694201234", "GG": "7781123456", "GH": "231234567", "GI": "57123456", "GL": "221234", "GM": "3012345", "GN": "601123456", "GP": "690001234", "GQ": "222123456", "GR": "6912345678", "GT": "51234567", "GU": "6713001234", "GW": "955012345", "GY": "6091234", "HK": "51234567", "HN": "91234567", "HR": "921234567", "HT": "34101234", "HU": "201234567", "ID": "812345678", "IE": "850123456", "IL": "502345678", "IM": "7924123456", "IN": "8123456789", "IO": "3801234", "IQ": "7912345678", "IR": "9123456789", "IS": "6111234", "IT": "3123456789", "JE": "7797712345", "JM": "8762101234", "JO": "790123456", "JP": "9012345678", "KE": "712123456", "KG": "700123456", "KH": "91234567", "KI": "72001234", "KM": "3212345", "KN": "8697652917", "KP": "1921234567", "KR": "1020000000", "KW": "50012345", "KY": "3453231234", "KZ": "7710009998", "LA": "2023123456", "LB": "71123456", "LC": "7582845678", "LI": "660234567", "LK": "712345678", "LR": "770123456", "LS": "50123456", "LT": "61234567", "LU": "628123456", "LV": "21234567", "LY": "912345678", "MA": "650123456", "MC": "612345678", "MD": "62112345", "ME": "60123456", "MF": "690001234", "MG": "321234567", "MH": "2351234", "MK": "72345678", "ML": "65012345", "MM": "92123456", "MN": "88123456", "MO": "66123456", "MP": "6702345678", "MQ": "696201234", "MR": "22123456", "MS": "6644923456", "MT": "96961234", "MU": "52512345", "MV": "7712345", "MW": "991234567", "MX": "2221234567", "MY": "123456789", "MZ": "821234567", "NA": "811234567", "NC": "751234", "NE": "93123456", "NF": "381234", "NG": "8021234567", "NI": "81234567", "NL": "612345678", "NO": "40612345", "NP": "9841234567", "NR": "5551234", "NU": "8884012", "NZ": "211234567", "OM": "92123456", "PA": "61234567", "PE": "912345678", "PF": "87123456", "PG": "70123456", "PH": "9051234567", "PK": "3012345678", "PL": "512345678", "PM": "551234", "PR": "7872345678", "PS": "599123456", "PT": "912345678", "PW": "6201234", "PY": "961456789", "QA": "33123456", "RE": "692123456", "RO": "712034567", "RS": "601234567", "RU": "9123456789", "RW": "720123456", "SA": "512345678", "SB": "7421234", "SC": "2510123", "SD": "911231234", "SE": "701234567", "SG": "81234567", "SH": "51234", "SI": "31234567", "SJ": "41234567", "SK": "912123456", "SL": "25123456", "SM": "66661212", "SN": "701234567", "SO": "71123456", "SR": "7412345", "SS": "977123456", "ST": "9812345", "SV": "70123456", "SX": "7215205678", "SY": "944567890", "SZ": "76123456", "TA": "8999", "TC": "6492311234", "TD": "63012345", "TG": "90112345", "TH": "812345678", "TJ": "917123456", "TK": "7290", "TL": "77212345", "TM": "66123456", "TN": "20123456", "TO": "7715123", "TR": "5012345678", "TT": "8682911234", "TV": "901234", "TW": "912345678", "TZ": "621234567", "UA": "501234567", "UG": "712345678", "US": "2015550123", "UY": "94231234", "UZ": "912345678", "VA": "3123456789", "VC": "7844301234", "VE": "4121234567", "VG": "2843001234", "VI": "3406421234", "VN": "912345678", "VU": "5912345", "WF": "821234", "WS": "7212345", "XK": "43201234", "YE": "712345678", "YT": "639012345", "ZA": "711234567", "ZM": "955123456", "ZW": "712345678" };
18618
+ const maskCache = /* @__PURE__ */ new Map();
18619
+ const getPhoneMaskForCountry = (countryIso2) => {
18620
+ const country = countryIso2.trim().toUpperCase();
18621
+ const cached = maskCache.get(country);
18622
+ if (cached) {
18623
+ return cached;
18624
+ }
18625
+ const example = getExampleNumber(country, examples);
18626
+ if (!example) {
18627
+ return void 0;
18628
+ }
18629
+ const groups = example.formatNational().split(/\D+/).filter(Boolean).map((part) => part.length);
18630
+ const mask = groups.map((size) => "0".repeat(size)).join(" ");
18631
+ maskCache.set(country, mask);
18632
+ return mask;
18633
+ };
18634
+ const nationalDigitsForMask = (parsed) => parsed.formatNational().replace(/\D/g, "");
18635
+ const tryParseForCountry = (candidate, country) => {
18636
+ const parsed = parsePhoneNumber(candidate, country) ?? parsePhoneNumber(candidate);
18637
+ if (!parsed?.isValid() || parsed.country !== country) {
18638
+ return void 0;
18639
+ }
18640
+ return parsed;
18641
+ };
18642
+ const shouldNormalizePhoneInput = (value, countryIso2) => {
18643
+ const trimmed = value.trim();
18644
+ if (!trimmed) {
18645
+ return false;
18646
+ }
18647
+ if (trimmed.includes("+") || trimmed.startsWith("00")) {
18648
+ return true;
18649
+ }
18650
+ const digits = trimmed.replace(/\D/g, "");
18651
+ const mask = getPhoneMaskForCountry(countryIso2);
18652
+ if (!mask) {
18653
+ return false;
18654
+ }
18655
+ const maxDigits = (mask.match(/0/g) ?? []).length;
18656
+ if (digits.length > maxDigits) {
18657
+ return true;
18658
+ }
18659
+ try {
18660
+ const callingCode = getCountryCallingCode(countryIso2);
18661
+ if (digits.startsWith(callingCode) && digits.length > maxDigits - 1) {
18662
+ return true;
18663
+ }
18664
+ } catch {
18665
+ return false;
18666
+ }
18667
+ return false;
18668
+ };
18669
+ const normalizeNationalPhoneInput = (value, countryIso2) => {
18670
+ const trimmed = value.trim();
18671
+ if (!trimmed) {
18672
+ return "";
18673
+ }
18674
+ const country = countryIso2.trim().toUpperCase();
18675
+ const digits = trimmed.replace(/\D/g, "");
18676
+ const candidates = /* @__PURE__ */ new Set([trimmed]);
18677
+ if (digits) {
18678
+ candidates.add(digits);
18679
+ candidates.add(`+${digits}`);
18680
+ }
18681
+ for (const candidate of candidates) {
18682
+ const parsed = tryParseForCountry(candidate, country);
18683
+ if (parsed) {
18684
+ return nationalDigitsForMask(parsed);
18685
+ }
18686
+ }
18687
+ try {
18688
+ const callingCode = getCountryCallingCode(country);
18689
+ if (digits.startsWith(callingCode) && digits.length > callingCode.length) {
18690
+ const withoutCode = digits.slice(callingCode.length);
18691
+ const parsed = tryParseForCountry(withoutCode, country) ?? tryParseForCountry(`0${withoutCode}`, country);
18692
+ if (parsed) {
18693
+ return nationalDigitsForMask(parsed);
18694
+ }
18695
+ }
18696
+ } catch {
18697
+ return trimmed;
18698
+ }
18699
+ return trimmed;
18700
+ };
18701
+ const _hoisted_1$6 = { class: "relative w-full" };
18706
18702
  const _hoisted_2$4 = { class: "absolute left-3 top-1/2 -translate-y-1/2 text-xl leading-none" };
18707
18703
  const _hoisted_3$4 = ["aria-expanded", "aria-label", "aria-controls", "aria-activedescendant", "value", "disabled"];
18708
18704
  const _hoisted_4$4 = ["disabled"];
@@ -18716,7 +18712,7 @@ const _hoisted_9 = {
18716
18712
  };
18717
18713
  const _hoisted_10 = { class: "text-gray-600" };
18718
18714
  const _hoisted_11 = { "aria-hidden": "true" };
18719
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
18715
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
18720
18716
  __name: "FdsPhonenumberCountryPicker",
18721
18717
  props: /* @__PURE__ */ vue.mergeModels({
18722
18718
  items: {},
@@ -18989,7 +18985,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
18989
18985
  ref: rootRef,
18990
18986
  class: vue.normalizeClass(["relative w-32", props.class])
18991
18987
  }, [
18992
- vue.createElementVNode("div", _hoisted_1$5, [
18988
+ vue.createElementVNode("div", _hoisted_1$6, [
18993
18989
  !dropdownOpen.value ? (vue.openBlock(), vue.createElementBlock("div", {
18994
18990
  key: 0,
18995
18991
  class: vue.normalizeClass(dialPreviewClasses.value),
@@ -19027,7 +19023,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
19027
19023
  "aria-hidden": "true",
19028
19024
  onMousedown: vue.withModifiers(onArrowPointerDown, ["prevent"])
19029
19025
  }, [
19030
- vue.createVNode(_sfc_main$M, {
19026
+ vue.createVNode(_sfc_main$N, {
19031
19027
  name: "arrowDown",
19032
19028
  size: 24,
19033
19029
  class: vue.normalizeClass(arrowClasses.value)
@@ -19069,7 +19065,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
19069
19065
  vue.createElementVNode("span", _hoisted_10, "(" + vue.toDisplayString(vue.unref(t)("common.plus")) + vue.toDisplayString(option.countryCode) + ")", 1)
19070
19066
  ]),
19071
19067
  vue.createElementVNode("span", _hoisted_11, [
19072
- option.value === country.value ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
19068
+ option.value === country.value ? (vue.openBlock(), vue.createBlock(_sfc_main$N, {
19073
19069
  key: 0,
19074
19070
  name: "check",
19075
19071
  size: 24,
@@ -19084,7 +19080,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
19084
19080
  };
19085
19081
  }
19086
19082
  });
19087
- const INVALID_RESULT = {
19083
+ const INVALID_RESULT$1 = {
19088
19084
  isValid: false,
19089
19085
  phoneNumber: null,
19090
19086
  countryIso2: null,
@@ -19127,12 +19123,12 @@ function runPhoneValidation(value, countryIso2) {
19127
19123
  return toValidationResult(parsed);
19128
19124
  }
19129
19125
  }
19130
- return INVALID_RESULT;
19126
+ return INVALID_RESULT$1;
19131
19127
  }
19132
19128
  function validatePhoneNumber(nationalNumber, countryIso2) {
19133
19129
  const trimmed = nationalNumber.trim();
19134
19130
  if (!trimmed) {
19135
- return INVALID_RESULT;
19131
+ return INVALID_RESULT$1;
19136
19132
  }
19137
19133
  return runPhoneValidation(trimmed, countryIso2);
19138
19134
  }
@@ -19142,7 +19138,7 @@ function getPhoneValidationState(nationalNumber, countryIso2) {
19142
19138
  }
19143
19139
  return validatePhoneNumber(nationalNumber, countryIso2).isValid;
19144
19140
  }
19145
- const _hoisted_1$4 = { class: "w-full mb-6" };
19141
+ const _hoisted_1$5 = { class: "w-full mb-6" };
19146
19142
  const _hoisted_2$3 = {
19147
19143
  key: 1,
19148
19144
  class: "font-thin mb-1"
@@ -19156,7 +19152,7 @@ const _hoisted_5$3 = {
19156
19152
  key: 3,
19157
19153
  class: "text-red-700 font-bold mt-1"
19158
19154
  };
19159
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
19155
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
19160
19156
  ...{
19161
19157
  inheritAttrs: false
19162
19158
  },
@@ -19186,12 +19182,9 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
19186
19182
  autocomplete: { default: "tel" },
19187
19183
  required: { type: Boolean, default: false },
19188
19184
  placeholder: { default: void 0 },
19189
- maxlength: { default: void 0 },
19190
- minlength: { default: void 0 },
19191
19185
  name: { default: void 0 },
19192
19186
  autofocus: { type: Boolean, default: false },
19193
- readonly: { type: Boolean, default: false },
19194
- pattern: { default: void 0 }
19187
+ readonly: { type: Boolean, default: false }
19195
19188
  }, {
19196
19189
  "modelValue": { default: "" },
19197
19190
  "modelModifiers": {},
@@ -19200,7 +19193,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
19200
19193
  }),
19201
19194
  emits: /* @__PURE__ */ vue.mergeModels(["update:modelValue", "update:country", "update:e164", "valid", "noCountryResults", "blur"], ["update:modelValue", "update:country"]),
19202
19195
  setup(__props, { emit: __emit }) {
19203
- const [nationalNumber, modelModifiers] = vue.useModel(__props, "modelValue");
19196
+ const [nationalNumber] = vue.useModel(__props, "modelValue");
19204
19197
  const country = vue.useModel(__props, "country");
19205
19198
  const attrs = vue.useAttrs();
19206
19199
  const props = __props;
@@ -19219,12 +19212,10 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
19219
19212
  autocomplete: props.autocomplete,
19220
19213
  required: props.required,
19221
19214
  placeholder: props.placeholder,
19222
- maxlength: props.maxlength,
19223
- minlength: props.minlength,
19224
19215
  name: props.name,
19225
19216
  autofocus: props.autofocus,
19226
19217
  readonly: props.readonly,
19227
- pattern: props.pattern,
19218
+ inputmode: "tel",
19228
19219
  ...inputAttrs.value
19229
19220
  }));
19230
19221
  const countryItems = vue.computed(() => {
@@ -19235,6 +19226,10 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
19235
19226
  props.defaultCountry
19236
19227
  );
19237
19228
  });
19229
+ const phoneMask = vue.computed(() => getPhoneMaskForCountry(country.value ?? props.defaultCountry));
19230
+ const phoneMaskOptions = vue.computed(() => ({
19231
+ prepare: (value) => applyPhoneNormalization(value, country.value ?? props.defaultCountry)
19232
+ }));
19238
19233
  const committedValid = vue.ref(null);
19239
19234
  const resolvedLabel = vue.computed(() => props.label === void 0 ? t("FdsPhonenumber.phoneNumber") : props.label);
19240
19235
  const resolvedInvalidMessage = vue.computed(
@@ -19258,6 +19253,18 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
19258
19253
  const result2 = validatePhoneNumber(nationalNumber.value ?? "", country.value ?? "SE");
19259
19254
  emit("update:e164", result2.isValid && result2.phoneNumber ? result2.phoneNumber : "");
19260
19255
  }
19256
+ function applyPhoneNormalization(value, countryCode = country.value ?? props.defaultCountry) {
19257
+ if (!shouldNormalizePhoneInput(value, countryCode)) {
19258
+ return value;
19259
+ }
19260
+ return normalizeNationalPhoneInput(value, countryCode);
19261
+ }
19262
+ vue.watch(nationalNumber, (value) => {
19263
+ const normalized = applyPhoneNormalization(value ?? "");
19264
+ if (normalized !== (value ?? "")) {
19265
+ nationalNumber.value = normalized;
19266
+ }
19267
+ });
19261
19268
  vue.watch(country, () => {
19262
19269
  if (committedValid.value === null) {
19263
19270
  return;
@@ -19265,6 +19272,10 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
19265
19272
  runValidation();
19266
19273
  });
19267
19274
  function handleBlur(ev) {
19275
+ const normalized = applyPhoneNormalization(nationalNumber.value ?? "");
19276
+ if (normalized !== (nationalNumber.value ?? "")) {
19277
+ nationalNumber.value = normalized;
19278
+ }
19268
19279
  runValidation();
19269
19280
  emit("blur", ev);
19270
19281
  }
@@ -19273,14 +19284,14 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
19273
19284
  emit("noCountryResults", value);
19274
19285
  }
19275
19286
  return (_ctx, _cache) => {
19276
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
19287
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
19277
19288
  resolvedLabel.value ? (vue.openBlock(), vue.createElementBlock("label", {
19278
19289
  key: 0,
19279
19290
  class: vue.normalizeClass(["block font-bold text-gray-900 cursor-pointer", { "mb-0": __props.meta, "mb-1": !__props.meta }])
19280
19291
  }, vue.toDisplayString(resolvedLabel.value), 3)) : vue.createCommentVNode("", true),
19281
19292
  __props.meta ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$3, vue.toDisplayString(__props.meta), 1)) : vue.createCommentVNode("", true),
19282
19293
  vue.createElementVNode("div", _hoisted_3$3, [
19283
- vue.createVNode(_sfc_main$a, {
19294
+ vue.createVNode(_sfc_main$b, {
19284
19295
  modelValue: country.value,
19285
19296
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => country.value = $event),
19286
19297
  items: countryItems.value,
@@ -19291,18 +19302,18 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
19291
19302
  class: vue.normalizeClass(["mb-0! shrink-0", __props.selectClass ?? ""]),
19292
19303
  onNoCountryResults
19293
19304
  }, null, 8, ["modelValue", "items", "valid", "disabled", "ariaLabel", "data-testid", "class"]),
19294
- vue.createVNode(_sfc_main$r, vue.mergeProps({
19305
+ vue.createVNode(_sfc_main$s, vue.mergeProps({
19295
19306
  modelValue: vue.unref(nationalNumber),
19296
19307
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => vue.isRef(nationalNumber) ? nationalNumber.value = $event : null),
19297
- modelModifiers: vue.unref(modelModifiers),
19298
- type: "tel",
19308
+ mask: phoneMask.value,
19309
+ "mask-options": phoneMaskOptions.value,
19299
19310
  valid: displayValid.value,
19300
19311
  disabled: __props.disabled,
19301
19312
  optional: __props.optional,
19302
19313
  ariaLabel: vue.unref(t)("FdsPhonenumber.phoneNumber"),
19303
19314
  "data-testid": __props.dataTestid ? `${__props.dataTestid}-number` : void 0,
19304
19315
  class: ["mb-0! min-w-0 flex-1", __props.inputClass ?? ""]
19305
- }, forwardedInputProps.value, { onBlur: handleBlur }), null, 16, ["modelValue", "modelModifiers", "valid", "disabled", "optional", "ariaLabel", "data-testid", "class"])
19316
+ }, forwardedInputProps.value, { onBlur: handleBlur }), null, 16, ["modelValue", "mask", "mask-options", "valid", "disabled", "optional", "ariaLabel", "data-testid", "class"])
19306
19317
  ]),
19307
19318
  noCountryResults.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$3, vue.toDisplayString(vue.unref(t)("FdsPhonenumber.noCountryResults")), 1)) : vue.createCommentVNode("", true),
19308
19319
  showInvalidMessage.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$3, vue.toDisplayString(resolvedInvalidMessage.value), 1)) : vue.createCommentVNode("", true)
@@ -19310,6 +19321,474 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
19310
19321
  };
19311
19322
  }
19312
19323
  });
19324
+ const SSN_MASK = "000000000000";
19325
+ const SSN_INTERIM_MASK = "XXXXXXXXXXXX";
19326
+ const SSN_INTERIM_MASK_OPTIONS = {
19327
+ lazy: true,
19328
+ definitions: {
19329
+ X: /[0-9A-Za-z]/
19330
+ }
19331
+ };
19332
+ function getSsnMask(allowInterimNumber) {
19333
+ return allowInterimNumber ? SSN_INTERIM_MASK : SSN_MASK;
19334
+ }
19335
+ function getSsnMaskOptions(allowInterimNumber) {
19336
+ return allowInterimNumber ? SSN_INTERIM_MASK_OPTIONS : { lazy: true };
19337
+ }
19338
+ var PersonnummerError = class extends Error {
19339
+ constructor() {
19340
+ super("Invalid swedish personal identity number");
19341
+ }
19342
+ };
19343
+ var compareAsc = (dateLeft, dateRight) => {
19344
+ const diff = dateLeft.getTime() - dateRight.getTime();
19345
+ return diff < 0 ? -1 : diff > 0 ? 1 : diff;
19346
+ };
19347
+ var diffInYears = (dateLeft, dateRight) => {
19348
+ const sign = compareAsc(dateLeft, dateRight);
19349
+ const yearDiff = Math.abs(dateLeft.getFullYear() - dateRight.getFullYear());
19350
+ dateLeft.setFullYear(dateLeft.getFullYear() - sign * yearDiff);
19351
+ const isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;
19352
+ const result2 = sign * (yearDiff - +isLastYearNotFull);
19353
+ return result2 === 0 ? 0 : result2;
19354
+ };
19355
+ var luhn = (str) => {
19356
+ let sum = 0;
19357
+ str += "";
19358
+ for (let i = 0, l = str.length; i < l; i++) {
19359
+ let v = parseInt(str[i]);
19360
+ v *= 2 - i % 2;
19361
+ if (v > 9) {
19362
+ v -= 9;
19363
+ }
19364
+ sum += v;
19365
+ }
19366
+ return Math.ceil(sum / 10) * 10 - sum;
19367
+ };
19368
+ var testDate = (year, month, day) => {
19369
+ month -= 1;
19370
+ const date = new Date(year, month, day);
19371
+ return !(date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day);
19372
+ };
19373
+ var Personnummer = class {
19374
+ /**
19375
+ * Personnummer constructor.
19376
+ *
19377
+ * @param {string} pin
19378
+ * @param {object} options
19379
+ */
19380
+ constructor(pin, options) {
19381
+ this._century = "";
19382
+ this._fullYear = "";
19383
+ this._year = "";
19384
+ this._month = "";
19385
+ this._day = "";
19386
+ this._sep = "";
19387
+ this._num = "";
19388
+ this._check = "";
19389
+ this.parse(pin, {
19390
+ allowCoordinationNumber: true,
19391
+ allowInterimNumber: false,
19392
+ ...options
19393
+ });
19394
+ }
19395
+ /**
19396
+ * Get century.
19397
+ *
19398
+ * @return {string}
19399
+ */
19400
+ get century() {
19401
+ return this._century;
19402
+ }
19403
+ /**
19404
+ * Get age.
19405
+ *
19406
+ * @return {string}
19407
+ */
19408
+ get fullYear() {
19409
+ return this._fullYear;
19410
+ }
19411
+ /**
19412
+ * Get age.
19413
+ *
19414
+ * @return {string}
19415
+ */
19416
+ get year() {
19417
+ return this._year;
19418
+ }
19419
+ /**
19420
+ * Get month.
19421
+ *
19422
+ * @return {string}
19423
+ */
19424
+ get month() {
19425
+ return this._month;
19426
+ }
19427
+ /**
19428
+ * Get day.
19429
+ *
19430
+ * @return {string}
19431
+ */
19432
+ get day() {
19433
+ return this._day;
19434
+ }
19435
+ /**
19436
+ * Get sep.
19437
+ *
19438
+ * @return {string}
19439
+ */
19440
+ get sep() {
19441
+ return this._sep;
19442
+ }
19443
+ /**
19444
+ * Get num.
19445
+ *
19446
+ * @return {string}
19447
+ */
19448
+ get num() {
19449
+ return this._num;
19450
+ }
19451
+ /**
19452
+ * Get check.
19453
+ *
19454
+ * @return {string}
19455
+ */
19456
+ get check() {
19457
+ return this._check;
19458
+ }
19459
+ /**
19460
+ * Parse personnummer.
19461
+ *
19462
+ * @param {string} pin
19463
+ * @param {object} options
19464
+ *
19465
+ * @return {Personnummer}
19466
+ */
19467
+ static parse(pin, options) {
19468
+ return new Personnummer(pin, options);
19469
+ }
19470
+ /**
19471
+ * Validate a Swedish personal identity number.
19472
+ *
19473
+ * @param {string} str
19474
+ * @param {object} options
19475
+ *
19476
+ * @return {boolean}
19477
+ */
19478
+ static valid(pin, options) {
19479
+ try {
19480
+ Personnummer.parse(pin, options);
19481
+ return true;
19482
+ } catch (e) {
19483
+ return false;
19484
+ }
19485
+ }
19486
+ /**
19487
+ * Parse personnummer and set class properties.
19488
+ *
19489
+ * @param {string} pin
19490
+ * @param {object} options
19491
+ */
19492
+ parse(pin, options) {
19493
+ if (pin.length < 10 || pin.length > 13) {
19494
+ throw new PersonnummerError();
19495
+ }
19496
+ const reg = /^(\d{2}){0,1}(\d{2})(\d{2})(\d{2})([+-]?)((?!000)\d{3}|[TRSUWXJKLMN]\d{2})(\d)$/;
19497
+ const match2 = reg.exec(pin);
19498
+ if (!match2) {
19499
+ throw new PersonnummerError();
19500
+ }
19501
+ const century = match2[1];
19502
+ const year = match2[2];
19503
+ const month = match2[3];
19504
+ const day = match2[4];
19505
+ const sep = match2[5];
19506
+ const num = match2[6];
19507
+ const check = match2[7];
19508
+ if (typeof century === "undefined" || !century.length) {
19509
+ const d = /* @__PURE__ */ new Date();
19510
+ let baseYear = 0;
19511
+ if (sep === "+") {
19512
+ this._sep = "+";
19513
+ baseYear = d.getFullYear() - 100;
19514
+ } else {
19515
+ this._sep = "-";
19516
+ baseYear = d.getFullYear();
19517
+ }
19518
+ this._century = ("" + (baseYear - (baseYear - parseInt(year)) % 100)).substr(0, 2);
19519
+ } else {
19520
+ this._century = century;
19521
+ if ((/* @__PURE__ */ new Date()).getFullYear() - parseInt(century + year, 10) < 100) {
19522
+ this._sep = "-";
19523
+ } else {
19524
+ this._sep = "+";
19525
+ }
19526
+ }
19527
+ this._year = year;
19528
+ this._fullYear = this._century + year;
19529
+ this._month = month;
19530
+ this._day = day;
19531
+ this._num = num;
19532
+ this._check = check;
19533
+ if (!this.valid()) {
19534
+ throw new PersonnummerError();
19535
+ }
19536
+ if (!(options == null ? void 0 : options.allowCoordinationNumber) && this.isCoordinationNumber()) {
19537
+ throw new PersonnummerError();
19538
+ }
19539
+ if (!(options == null ? void 0 : options.allowInterimNumber) && this.isInterimNumber()) {
19540
+ throw new PersonnummerError();
19541
+ }
19542
+ }
19543
+ /**
19544
+ * Validate a Swedish personal identity number.
19545
+ *
19546
+ * @return {boolean}
19547
+ */
19548
+ valid() {
19549
+ const valid = luhn(
19550
+ this.year + this.month + this.day + this.num.replace(/[TRSUWXJKLMN]/, "1")
19551
+ ) === +this.check && !!this.check;
19552
+ if (valid && testDate(parseInt(this.century + this.year), +this.month, +this.day)) {
19553
+ return valid;
19554
+ }
19555
+ return valid && testDate(parseInt(this.century + this.year), +this.month, +this.day - 60);
19556
+ }
19557
+ /**
19558
+ * Format a Swedish personal identity number as one of the official formats,
19559
+ * A long format or a short format.
19560
+ *
19561
+ * If the input number could not be parsed a empty string will be returned.
19562
+ *
19563
+ * @param {boolean} longFormat
19564
+ *
19565
+ * @return {string}
19566
+ */
19567
+ format(longFormat = false) {
19568
+ if (longFormat) {
19569
+ return `${this.century}${this.year}${this.month}${this.day}${this.num}${this.check}`;
19570
+ }
19571
+ return `${this.year}${this.month}${this.day}${this.sep}${this.num}${this.check}`;
19572
+ }
19573
+ /**
19574
+ * Get age from a Swedish personal identity number.
19575
+ *
19576
+ * @return {number}
19577
+ */
19578
+ getAge() {
19579
+ const date = this.getDate();
19580
+ return diffInYears(new Date(Date.now()), date);
19581
+ }
19582
+ /**
19583
+ * Get date from a Swedish personal identity number.
19584
+ *
19585
+ * @return {Date}
19586
+ */
19587
+ getDate() {
19588
+ let ageDay = +this.day;
19589
+ if (this.isCoordinationNumber()) {
19590
+ ageDay -= 60;
19591
+ }
19592
+ const ageDate = this.century + this.year + "-" + this.month + "-" + (ageDay < 10 ? "0" + ageDay : ageDay);
19593
+ return new Date(ageDate);
19594
+ }
19595
+ /**
19596
+ * Check if a Swedish personal identity number is a interim number or not.
19597
+ *
19598
+ * @return {boolean}
19599
+ */
19600
+ isInterimNumber() {
19601
+ return /[TRSUWXJKLMN]/.test(this.num[0]);
19602
+ }
19603
+ /**
19604
+ * Check if a Swedish personal identity number is a coordination number or not.
19605
+ *
19606
+ * @return {boolean}
19607
+ */
19608
+ isCoordinationNumber() {
19609
+ return testDate(
19610
+ parseInt(this.century + this.year),
19611
+ +this.month,
19612
+ +this.day - 60
19613
+ );
19614
+ }
19615
+ /**
19616
+ * Check if a Swedish personal identity number is for a female.
19617
+ *
19618
+ * @return {boolean}
19619
+ */
19620
+ isFemale() {
19621
+ return !this.isMale();
19622
+ }
19623
+ /**
19624
+ * Check if a Swedish personal identity number is for a male.
19625
+ *
19626
+ * @return {boolean}
19627
+ */
19628
+ isMale() {
19629
+ const sexDigit = parseInt(this.num.substr(-1));
19630
+ return sexDigit % 2 === 1;
19631
+ }
19632
+ };
19633
+ var src_default = Personnummer;
19634
+ const INVALID_RESULT = {
19635
+ isValid: false,
19636
+ digits: null
19637
+ };
19638
+ const DEFAULT_SSN_VALIDATION_OPTIONS = {
19639
+ allowCoordinationNumber: true,
19640
+ allowInterimNumber: true
19641
+ };
19642
+ function resolveSsnValidationOptions(options) {
19643
+ return {
19644
+ ...DEFAULT_SSN_VALIDATION_OPTIONS,
19645
+ ...options
19646
+ };
19647
+ }
19648
+ function stripSsnSeparators(value) {
19649
+ return normalizePidSearchValue(value);
19650
+ }
19651
+ function validateSsnNumber(value, options) {
19652
+ const trimmed = value.trim();
19653
+ if (!trimmed) {
19654
+ return INVALID_RESULT;
19655
+ }
19656
+ const resolvedOptions = resolveSsnValidationOptions(options);
19657
+ const isValid2 = src_default.valid(trimmed, resolvedOptions);
19658
+ return {
19659
+ isValid: isValid2,
19660
+ digits: isValid2 ? stripSsnSeparators(trimmed) : null
19661
+ };
19662
+ }
19663
+ function validateSsn(value, options) {
19664
+ return validateSsnNumber(value, options).isValid;
19665
+ }
19666
+ function getSsnValidationState(value, options) {
19667
+ if (!value.trim()) {
19668
+ return null;
19669
+ }
19670
+ return validateSsn(value, options);
19671
+ }
19672
+ const _hoisted_1$4 = { class: "w-full" };
19673
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
19674
+ ...{
19675
+ inheritAttrs: false
19676
+ },
19677
+ __name: "FdsSsn",
19678
+ props: /* @__PURE__ */ vue.mergeModels({
19679
+ label: { default: void 0 },
19680
+ meta: { default: void 0 },
19681
+ optional: { type: Boolean, default: false },
19682
+ valid: { type: [Boolean, null], default: void 0 },
19683
+ invalidMessage: { default: void 0 },
19684
+ modelValue: {},
19685
+ allowCoordinationNumber: { type: Boolean, default: true },
19686
+ allowInterimNumber: { type: Boolean, default: true },
19687
+ disabled: { type: Boolean, default: false },
19688
+ dataTestid: { default: void 0 },
19689
+ onValid: {},
19690
+ onBlur: {},
19691
+ "onUpdate:modelValue": {},
19692
+ id: { default: void 0 },
19693
+ autocomplete: { default: "off" },
19694
+ required: { type: Boolean, default: false },
19695
+ placeholder: { default: void 0 },
19696
+ name: { default: void 0 },
19697
+ autofocus: { type: Boolean, default: false },
19698
+ readonly: { type: Boolean, default: false },
19699
+ inputClass: { default: void 0 }
19700
+ }, {
19701
+ "modelValue": { default: "" },
19702
+ "modelModifiers": {}
19703
+ }),
19704
+ emits: /* @__PURE__ */ vue.mergeModels(["update:modelValue", "valid", "blur"], ["update:modelValue"]),
19705
+ setup(__props, { emit: __emit }) {
19706
+ const modelValue = vue.useModel(__props, "modelValue");
19707
+ const attrs = vue.useAttrs();
19708
+ const props = __props;
19709
+ const emit = __emit;
19710
+ const { t } = useFdsI18n();
19711
+ const inputAttrs = vue.computed(() => {
19712
+ const { class: _class, style, ...rest } = attrs;
19713
+ return {
19714
+ ...rest,
19715
+ ...style == null ? {} : { style }
19716
+ };
19717
+ });
19718
+ const forwardedInputProps = vue.computed(() => ({
19719
+ id: props.id,
19720
+ autocomplete: props.autocomplete,
19721
+ required: props.required,
19722
+ placeholder: props.placeholder,
19723
+ name: props.name,
19724
+ autofocus: props.autofocus,
19725
+ readonly: props.readonly,
19726
+ inputmode: props.allowInterimNumber ? "text" : "numeric",
19727
+ ...inputAttrs.value
19728
+ }));
19729
+ const validationOptions = vue.computed(
19730
+ () => ({
19731
+ allowCoordinationNumber: props.allowCoordinationNumber,
19732
+ allowInterimNumber: props.allowInterimNumber
19733
+ })
19734
+ );
19735
+ const ssnMask = vue.computed(() => getSsnMask(props.allowInterimNumber));
19736
+ const ssnMaskOptions = vue.computed(() => getSsnMaskOptions(props.allowInterimNumber));
19737
+ const committedValid = vue.ref(null);
19738
+ const resolvedLabel = vue.computed(() => props.label === void 0 ? t("FdsSsn.label") : props.label);
19739
+ const resolvedInvalidMessage = vue.computed(
19740
+ () => props.invalidMessage === void 0 ? t("FdsSsn.invalidSsn") : props.invalidMessage
19741
+ );
19742
+ const displayValid = vue.computed(() => {
19743
+ if (props.valid === false) return false;
19744
+ if (props.valid === true) return true;
19745
+ if (committedValid.value === false) return false;
19746
+ if (committedValid.value === true) return true;
19747
+ return props.valid;
19748
+ });
19749
+ function normalizeValue2() {
19750
+ const normalized = stripSsnSeparators(modelValue.value ?? "");
19751
+ if (normalized !== (modelValue.value ?? "")) {
19752
+ modelValue.value = normalized;
19753
+ }
19754
+ }
19755
+ function runValidation() {
19756
+ const validationState = getSsnValidationState(modelValue.value ?? "", validationOptions.value);
19757
+ committedValid.value = validationState;
19758
+ emit("valid", validationState);
19759
+ }
19760
+ vue.watch([() => props.allowCoordinationNumber, () => props.allowInterimNumber], () => {
19761
+ if (committedValid.value === null) {
19762
+ return;
19763
+ }
19764
+ runValidation();
19765
+ });
19766
+ function handleBlur(ev) {
19767
+ normalizeValue2();
19768
+ runValidation();
19769
+ emit("blur", ev);
19770
+ }
19771
+ return (_ctx, _cache) => {
19772
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
19773
+ vue.createVNode(_sfc_main$s, vue.mergeProps({
19774
+ modelValue: modelValue.value,
19775
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
19776
+ mask: ssnMask.value,
19777
+ "mask-options": ssnMaskOptions.value,
19778
+ label: resolvedLabel.value,
19779
+ meta: __props.meta,
19780
+ valid: displayValid.value,
19781
+ disabled: __props.disabled,
19782
+ optional: __props.optional,
19783
+ "invalid-message": resolvedInvalidMessage.value,
19784
+ ariaLabel: resolvedLabel.value,
19785
+ "data-testid": __props.dataTestid,
19786
+ class: __props.inputClass
19787
+ }, forwardedInputProps.value, { onBlur: handleBlur }), null, 16, ["modelValue", "mask", "mask-options", "label", "meta", "valid", "disabled", "optional", "invalid-message", "ariaLabel", "data-testid", "class"])
19788
+ ]);
19789
+ };
19790
+ }
19791
+ });
19313
19792
  const _hoisted_1$3 = ["for"];
19314
19793
  const _hoisted_2$2 = {
19315
19794
  key: 1,
@@ -19438,7 +19917,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
19438
19917
  [vue.vModelSelect, internalValue.value]
19439
19918
  ]),
19440
19919
  vue.createElementVNode("div", _hoisted_6, [
19441
- vue.createVNode(_sfc_main$M, {
19920
+ vue.createVNode(_sfc_main$N, {
19442
19921
  name: "arrowDown",
19443
19922
  size: 24,
19444
19923
  class: vue.normalizeClass({
@@ -19605,12 +20084,12 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
19605
20084
  vue.createElementVNode("div", {
19606
20085
  class: vue.normalizeClass(validationIconClasses.value)
19607
20086
  }, [
19608
- isInvalid.value ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
20087
+ isInvalid.value ? (vue.openBlock(), vue.createBlock(_sfc_main$N, {
19609
20088
  key: 0,
19610
20089
  name: "alert",
19611
20090
  class: "fill-red-600"
19612
20091
  })) : vue.createCommentVNode("", true),
19613
- isValid2.value ? (vue.openBlock(), vue.createBlock(_sfc_main$M, {
20092
+ isValid2.value ? (vue.openBlock(), vue.createBlock(_sfc_main$N, {
19614
20093
  key: 1,
19615
20094
  name: "bigSuccess"
19616
20095
  })) : vue.createCommentVNode("", true)
@@ -19701,7 +20180,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
19701
20180
  vue.unref(hasSlot) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2, [
19702
20181
  vue.renderSlot(_ctx.$slots, "default")
19703
20182
  ])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_3, vue.toDisplayString(__props.heading), 1)),
19704
- vue.createVNode(_sfc_main$M, {
20183
+ vue.createVNode(_sfc_main$N, {
19705
20184
  name: iconName.value,
19706
20185
  size: "24px",
19707
20186
  class: "fill-blue-500 ml-1"
@@ -19933,7 +20412,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
19933
20412
  });
19934
20413
  return (_ctx, _cache) => {
19935
20414
  return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({ class: wrapperClasses.value }, rootAttrs.value), [
19936
- __props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$E, {
20415
+ __props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$F, {
19937
20416
  key: 0,
19938
20417
  size: "24px",
19939
20418
  color: "blue",
@@ -20222,96 +20701,100 @@ const FdsVueCorePlugin = {
20222
20701
  if (options?.i18n) {
20223
20702
  app.provide(FDS_VUE_CORE_I18N_KEY, options.i18n);
20224
20703
  }
20225
- app.component("FdsTreeView", _sfc_main$g);
20226
- app.component("FdsButtonPrimary", _sfc_main$A);
20227
- app.component("FdsButtonSecondary", _sfc_main$z);
20228
- app.component("FdsButtonMinor", _sfc_main$D);
20229
- app.component("FdsButtonIcon", _sfc_main$L);
20230
- app.component("FdsButtonCopy", _sfc_main$C);
20231
- app.component("FdsButtonDownload", _sfc_main$B);
20232
- app.component("FdsDevMode", _sfc_main$n);
20233
- app.component("FdsIcon", _sfc_main$M);
20234
- app.component("FdsSpinner", _sfc_main$E);
20235
- app.component("FdsRadio", _sfc_main$w);
20236
- app.component("FdsCheckbox", _sfc_main$x);
20704
+ app.component("FdsTreeView", _sfc_main$h);
20705
+ app.component("FdsButtonPrimary", _sfc_main$B);
20706
+ app.component("FdsButtonSecondary", _sfc_main$A);
20707
+ app.component("FdsButtonMinor", _sfc_main$E);
20708
+ app.component("FdsButtonIcon", _sfc_main$M);
20709
+ app.component("FdsButtonCopy", _sfc_main$D);
20710
+ app.component("FdsButtonDownload", _sfc_main$C);
20711
+ app.component("FdsDevMode", _sfc_main$o);
20712
+ app.component("FdsIcon", _sfc_main$N);
20713
+ app.component("FdsSpinner", _sfc_main$F);
20714
+ app.component("FdsRadio", _sfc_main$x);
20715
+ app.component("FdsCheckbox", _sfc_main$y);
20237
20716
  app.component("FdsTextarea", _sfc_main$7);
20238
- app.component("FdsPhonenumber", _sfc_main$9);
20717
+ app.component("FdsPhonenumber", _sfc_main$a);
20718
+ app.component("FdsSsn", _sfc_main$9);
20239
20719
  app.component("FdsSelect", _sfc_main$8);
20240
20720
  app.component("FdsTable", _sfc_main$6);
20241
20721
  app.component("FdsTableHead", _sfc_main$5);
20242
- app.component("FdsInput", _sfc_main$r);
20243
- app.component("FdsBlockContent", _sfc_main$J);
20244
- app.component("FdsBlockInfo", _sfc_main$G);
20245
- app.component("FdsBlockAlert", _sfc_main$K);
20246
- app.component("FdsBlockExpander", _sfc_main$H);
20247
- app.component("FdsBlockLink", _sfc_main$F);
20248
- app.component("FdsSticker", _sfc_main$I);
20249
- app.component("FdsTabs", _sfc_main$q);
20250
- app.component("FdsTabsItem", _sfc_main$p);
20251
- app.component("FdsModal", _sfc_main$t);
20252
- app.component("FdsPagination", _sfc_main$l);
20253
- app.component("FdsPopover", _sfc_main$k);
20254
- app.component("FdsSearchSelect", _sfc_main$j);
20255
- app.component("FdsSearchSelectPro", _sfc_main$i);
20256
- app.component("FdsTruncatedText", _sfc_main$f);
20257
- app.component("FdsWizard", _sfc_main$b);
20258
- app.component("FdsWeekCalendar", _sfc_main$d);
20722
+ app.component("FdsInput", _sfc_main$s);
20723
+ app.component("FdsBlockContent", _sfc_main$K);
20724
+ app.component("FdsBlockInfo", _sfc_main$H);
20725
+ app.component("FdsBlockAlert", _sfc_main$L);
20726
+ app.component("FdsBlockExpander", _sfc_main$I);
20727
+ app.component("FdsBlockLink", _sfc_main$G);
20728
+ app.component("FdsSticker", _sfc_main$J);
20729
+ app.component("FdsTabs", _sfc_main$r);
20730
+ app.component("FdsTabsItem", _sfc_main$q);
20731
+ app.component("FdsModal", _sfc_main$u);
20732
+ app.component("FdsPagination", _sfc_main$m);
20733
+ app.component("FdsPopover", _sfc_main$l);
20734
+ app.component("FdsSearchSelect", _sfc_main$k);
20735
+ app.component("FdsSearchSelectPro", _sfc_main$j);
20736
+ app.component("FdsTruncatedText", _sfc_main$g);
20737
+ app.component("FdsWizard", _sfc_main$c);
20738
+ app.component("FdsWeekCalendar", _sfc_main$e);
20259
20739
  app.component("FdsH1", _sfc_main$4);
20260
20740
  app.component("FdsH2", _sfc_main$3);
20261
20741
  app.component("FdsH3", _sfc_main$2);
20262
20742
  app.component("FdsHr", _sfc_main$1);
20263
- app.component("FdsLabel", _sfc_main$v);
20264
- app.component("FdsLead", _sfc_main$c);
20265
- app.component("FdsMeta", _sfc_main$s);
20743
+ app.component("FdsLabel", _sfc_main$w);
20744
+ app.component("FdsLead", _sfc_main$d);
20745
+ app.component("FdsMeta", _sfc_main$t);
20266
20746
  app.component("FdsListHeading", _sfc_main);
20267
20747
  }
20268
20748
  };
20269
20749
  exports.FDS_VUE_CORE_I18N_KEY = FDS_VUE_CORE_I18N_KEY;
20270
- exports.FdsBlockAlert = _sfc_main$K;
20271
- exports.FdsBlockContent = _sfc_main$J;
20272
- exports.FdsBlockExpander = _sfc_main$H;
20273
- exports.FdsBlockInfo = _sfc_main$G;
20274
- exports.FdsBlockLink = _sfc_main$F;
20275
- exports.FdsButtonCopy = _sfc_main$C;
20276
- exports.FdsButtonDownload = _sfc_main$B;
20277
- exports.FdsButtonIcon = _sfc_main$L;
20278
- exports.FdsButtonMinor = _sfc_main$D;
20279
- exports.FdsButtonPrimary = _sfc_main$A;
20280
- exports.FdsButtonSecondary = _sfc_main$z;
20281
- exports.FdsCheckbox = _sfc_main$x;
20282
- exports.FdsDevMode = _sfc_main$n;
20283
- exports.FdsExitModal = _sfc_main$m;
20750
+ exports.FdsBlockAlert = _sfc_main$L;
20751
+ exports.FdsBlockContent = _sfc_main$K;
20752
+ exports.FdsBlockExpander = _sfc_main$I;
20753
+ exports.FdsBlockInfo = _sfc_main$H;
20754
+ exports.FdsBlockLink = _sfc_main$G;
20755
+ exports.FdsButtonCopy = _sfc_main$D;
20756
+ exports.FdsButtonDownload = _sfc_main$C;
20757
+ exports.FdsButtonIcon = _sfc_main$M;
20758
+ exports.FdsButtonMinor = _sfc_main$E;
20759
+ exports.FdsButtonPrimary = _sfc_main$B;
20760
+ exports.FdsButtonSecondary = _sfc_main$A;
20761
+ exports.FdsCheckbox = _sfc_main$y;
20762
+ exports.FdsDevMode = _sfc_main$o;
20763
+ exports.FdsExitModal = _sfc_main$n;
20284
20764
  exports.FdsH1 = _sfc_main$4;
20285
20765
  exports.FdsH2 = _sfc_main$3;
20286
20766
  exports.FdsH3 = _sfc_main$2;
20287
20767
  exports.FdsHr = _sfc_main$1;
20288
- exports.FdsIcon = _sfc_main$M;
20289
- exports.FdsInput = _sfc_main$r;
20290
- exports.FdsLabel = _sfc_main$v;
20291
- exports.FdsLead = _sfc_main$c;
20768
+ exports.FdsIcon = _sfc_main$N;
20769
+ exports.FdsInput = _sfc_main$s;
20770
+ exports.FdsLabel = _sfc_main$w;
20771
+ exports.FdsLead = _sfc_main$d;
20292
20772
  exports.FdsListHeading = _sfc_main;
20293
- exports.FdsMeta = _sfc_main$s;
20294
- exports.FdsModal = _sfc_main$t;
20295
- exports.FdsPagination = _sfc_main$l;
20296
- exports.FdsPhonenumber = _sfc_main$9;
20297
- exports.FdsPopover = _sfc_main$k;
20298
- exports.FdsRadio = _sfc_main$w;
20299
- exports.FdsSearchSelect = _sfc_main$j;
20300
- exports.FdsSearchSelectPro = _sfc_main$i;
20773
+ exports.FdsMeta = _sfc_main$t;
20774
+ exports.FdsModal = _sfc_main$u;
20775
+ exports.FdsPagination = _sfc_main$m;
20776
+ exports.FdsPhonenumber = _sfc_main$a;
20777
+ exports.FdsPopover = _sfc_main$l;
20778
+ exports.FdsRadio = _sfc_main$x;
20779
+ exports.FdsSearchSelect = _sfc_main$k;
20780
+ exports.FdsSearchSelectPro = _sfc_main$j;
20301
20781
  exports.FdsSelect = _sfc_main$8;
20302
- exports.FdsSpinner = _sfc_main$E;
20303
- exports.FdsSticker = _sfc_main$I;
20782
+ exports.FdsSpinner = _sfc_main$F;
20783
+ exports.FdsSsn = _sfc_main$9;
20784
+ exports.FdsSticker = _sfc_main$J;
20304
20785
  exports.FdsTable = _sfc_main$6;
20305
20786
  exports.FdsTableHead = _sfc_main$5;
20306
- exports.FdsTabs = _sfc_main$q;
20307
- exports.FdsTabsItem = _sfc_main$p;
20787
+ exports.FdsTabs = _sfc_main$r;
20788
+ exports.FdsTabsItem = _sfc_main$q;
20308
20789
  exports.FdsTextarea = _sfc_main$7;
20309
- exports.FdsTreeView = _sfc_main$g;
20310
- exports.FdsTruncatedText = _sfc_main$f;
20311
- exports.FdsWeekCalendar = _sfc_main$d;
20312
- exports.FdsWizard = _sfc_main$b;
20790
+ exports.FdsTreeView = _sfc_main$h;
20791
+ exports.FdsTruncatedText = _sfc_main$g;
20792
+ exports.FdsWeekCalendar = _sfc_main$e;
20793
+ exports.FdsWizard = _sfc_main$c;
20313
20794
  exports.PID_MASK = PID_MASK;
20314
20795
  exports.PID_MASK_OPTIONS = PID_MASK_OPTIONS;
20796
+ exports.SSN_INTERIM_MASK = SSN_INTERIM_MASK;
20797
+ exports.SSN_MASK = SSN_MASK;
20315
20798
  exports.bankid = bankid;
20316
20799
  exports.buildCountryOptions = buildCountryOptions;
20317
20800
  exports.capitalizeFirstLetter = capitalizeFirstLetter;
@@ -20323,6 +20806,9 @@ exports.filterCountryOptions = filterCountryOptions;
20323
20806
  exports.formatPidWithDash = formatPidWithDash;
20324
20807
  exports.getExitGuardWizardId = getExitGuardWizardId;
20325
20808
  exports.getPhoneValidationState = getPhoneValidationState;
20809
+ exports.getSsnMask = getSsnMask;
20810
+ exports.getSsnMaskOptions = getSsnMaskOptions;
20811
+ exports.getSsnValidationState = getSsnValidationState;
20326
20812
  exports.isPidString = isPidString;
20327
20813
  exports.isRelativeHref = isRelativeHref;
20328
20814
  exports.logoFeelgoodColored = logoFeelgoodColored;
@@ -20334,6 +20820,7 @@ exports.setupRouterLinkInterceptor = setupRouterLinkInterceptor;
20334
20820
  exports.shouldBlockNavigation = shouldBlockNavigation;
20335
20821
  exports.shouldBlockWizardExit = shouldBlockWizardExit;
20336
20822
  exports.sortCountryOptionsByName = sortCountryOptionsByName;
20823
+ exports.stripSsnSeparators = stripSsnSeparators;
20337
20824
  exports.teardownRouterLinkInterceptor = teardownRouterLinkInterceptor;
20338
20825
  exports.useBoldQuery = useBoldQuery;
20339
20826
  exports.useDevMode = useDevMode;
@@ -20349,4 +20836,6 @@ exports.useRouteScrollPositions = useRouteScrollPositions;
20349
20836
  exports.useTreeState = useTreeState;
20350
20837
  exports.useViewportBreakpoint = useViewportBreakpoint;
20351
20838
  exports.validatePhoneNumber = validatePhoneNumber;
20839
+ exports.validateSsn = validateSsn;
20840
+ exports.validateSsnNumber = validateSsnNumber;
20352
20841
  //# sourceMappingURL=fds-vue-core.cjs.js.map