fds-vue-core 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/components/Blocks/FdsAlertBlock/FdsAlertBlock.vue.d.ts +1 -1
  2. package/dist/components/Buttons/{FdsButton/types.d.ts → ButtonBaseProps.d.ts} +4 -5
  3. package/dist/components/Buttons/ButtonBaseProps.d.ts.map +1 -0
  4. package/dist/components/Buttons/FdsButtonCopy/FdsButtonCopy.stories.d.ts +7 -0
  5. package/dist/components/Buttons/FdsButtonCopy/FdsButtonCopy.stories.d.ts.map +1 -0
  6. package/dist/components/Buttons/{FdsCopyButton/FdsCopyButton.vue.d.ts → FdsButtonCopy/FdsButtonCopy.vue.d.ts} +1 -1
  7. package/dist/components/Buttons/FdsButtonCopy/FdsButtonCopy.vue.d.ts.map +1 -0
  8. package/dist/components/Buttons/{FdsCopyButton → FdsButtonCopy}/types.d.ts +0 -1
  9. package/dist/components/Buttons/FdsButtonCopy/types.d.ts.map +1 -0
  10. package/dist/components/Buttons/FdsButtonIcon/FdsButtonIcon.stories.d.ts +7 -0
  11. package/dist/components/Buttons/FdsButtonIcon/FdsButtonIcon.stories.d.ts.map +1 -0
  12. package/dist/components/Buttons/{FdsIconButton/FdsIconButton.vue.d.ts → FdsButtonIcon/FdsButtonIcon.vue.d.ts} +1 -1
  13. package/dist/components/Buttons/FdsButtonIcon/FdsButtonIcon.vue.d.ts.map +1 -0
  14. package/dist/components/Buttons/{FdsIconButton → FdsButtonIcon}/types.d.ts +1 -2
  15. package/dist/components/Buttons/FdsButtonIcon/types.d.ts.map +1 -0
  16. package/dist/components/Buttons/FdsButtonMinor/FdsButtonMinor.stories.d.ts +7 -0
  17. package/dist/components/Buttons/FdsButtonMinor/FdsButtonMinor.stories.d.ts.map +1 -0
  18. package/dist/components/Buttons/FdsButtonMinor/FdsButtonMinor.vue.d.ts +23 -0
  19. package/dist/components/Buttons/FdsButtonMinor/FdsButtonMinor.vue.d.ts.map +1 -0
  20. package/dist/components/Buttons/FdsButtonPrimary/FdsButtonPrimary.stories.d.ts +9 -0
  21. package/dist/components/Buttons/FdsButtonPrimary/FdsButtonPrimary.stories.d.ts.map +1 -0
  22. package/dist/components/Buttons/FdsButtonPrimary/FdsButtonPrimary.vue.d.ts +20 -0
  23. package/dist/components/Buttons/FdsButtonPrimary/FdsButtonPrimary.vue.d.ts.map +1 -0
  24. package/dist/components/Buttons/FdsButtonSecondary/FdsButtonSecondary.stories.d.ts +7 -0
  25. package/dist/components/Buttons/FdsButtonSecondary/FdsButtonSecondary.stories.d.ts.map +1 -0
  26. package/dist/components/Buttons/FdsButtonSecondary/FdsButtonSecondary.vue.d.ts +20 -0
  27. package/dist/components/Buttons/FdsButtonSecondary/FdsButtonSecondary.vue.d.ts.map +1 -0
  28. package/dist/components/FdsModal/FdsModal.stories.d.ts.map +1 -1
  29. package/dist/components/FdsTreeView/TreeNode.vue.d.ts.map +1 -1
  30. package/dist/components/FdsTruncatedText/FdsTruncatedText.vue.d.ts.map +1 -1
  31. package/dist/components/Form/FdsInput/FdsInput.vue.d.ts.map +1 -1
  32. package/dist/components/Tabs/FdsTabs/FdsTabs.vue.d.ts +1 -1
  33. package/dist/fds-vue-core.cjs.js +495 -308
  34. package/dist/fds-vue-core.cjs.js.map +1 -1
  35. package/dist/fds-vue-core.css +40 -18
  36. package/dist/fds-vue-core.es.js +496 -309
  37. package/dist/fds-vue-core.es.js.map +1 -1
  38. package/dist/index.d.ts +10 -6
  39. package/dist/index.d.ts.map +1 -1
  40. package/package.json +1 -1
  41. package/dist/components/Buttons/FdsButton/FdsButton.stories.d.ts +0 -14
  42. package/dist/components/Buttons/FdsButton/FdsButton.stories.d.ts.map +0 -1
  43. package/dist/components/Buttons/FdsButton/FdsButton.vue.d.ts +0 -31
  44. package/dist/components/Buttons/FdsButton/FdsButton.vue.d.ts.map +0 -1
  45. package/dist/components/Buttons/FdsButton/types.d.ts.map +0 -1
  46. package/dist/components/Buttons/FdsCopyButton/FdsCopyButton.stories.d.ts +0 -9
  47. package/dist/components/Buttons/FdsCopyButton/FdsCopyButton.stories.d.ts.map +0 -1
  48. package/dist/components/Buttons/FdsCopyButton/FdsCopyButton.vue.d.ts.map +0 -1
  49. package/dist/components/Buttons/FdsCopyButton/types.d.ts.map +0 -1
  50. package/dist/components/Buttons/FdsIconButton/FdsIconButton.stories.d.ts +0 -9
  51. package/dist/components/Buttons/FdsIconButton/FdsIconButton.stories.d.ts.map +0 -1
  52. package/dist/components/Buttons/FdsIconButton/FdsIconButton.vue.d.ts.map +0 -1
  53. package/dist/components/Buttons/FdsIconButton/types.d.ts.map +0 -1
@@ -405,9 +405,9 @@ const useTreeState = (options = {}) => {
405
405
  isEmptySearchResult
406
406
  };
407
407
  };
408
- const _hoisted_1$k = ["id", "name", "value", "disabled", "required"];
408
+ const _hoisted_1$n = ["id", "name", "value", "disabled", "required"];
409
409
  const _hoisted_2$d = ["for"];
410
- const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
410
+ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
411
411
  __name: "FdsCheckbox",
412
412
  props: {
413
413
  checked: { type: Boolean, default: false },
@@ -476,7 +476,7 @@ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
476
476
  checkboxClasses.value
477
477
  ]),
478
478
  onChange: handleChange
479
- }, null, 42, _hoisted_1$k), [
479
+ }, null, 42, _hoisted_1$n), [
480
480
  [vue.vModelCheckbox, internalChecked.value]
481
481
  ]),
482
482
  slots.default ? (vue.openBlock(), vue.createElementBlock("label", {
@@ -1002,8 +1002,8 @@ const icons = {
1002
1002
  </defs>
1003
1003
  </svg>`
1004
1004
  };
1005
- const _hoisted_1$j = ["innerHTML"];
1006
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
1005
+ const _hoisted_1$m = ["innerHTML"];
1006
+ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
1007
1007
  __name: "FdsIcon",
1008
1008
  props: {
1009
1009
  name: {},
@@ -1029,7 +1029,7 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
1029
1029
  class: "inline-flex items-center justify-center align-middle",
1030
1030
  style: vue.normalizeStyle({ width: pixelSize.value, height: pixelSize.value }),
1031
1031
  innerHTML: svgHtml.value
1032
- }, null, 12, _hoisted_1$j);
1032
+ }, null, 12, _hoisted_1$m);
1033
1033
  };
1034
1034
  }
1035
1035
  });
@@ -1040,10 +1040,10 @@ const _export_sfc = (sfc, props) => {
1040
1040
  }
1041
1041
  return target;
1042
1042
  };
1043
- const FdsIcon = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["__scopeId", "data-v-e24163cd"]]);
1044
- const _hoisted_1$i = ["id", "type", "disabled", "aria-label", "aria-disabled"];
1045
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
1046
- __name: "FdsIconButton",
1043
+ const FdsIcon = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-e24163cd"]]);
1044
+ const _hoisted_1$l = ["id", "type", "disabled", "aria-label", "aria-disabled"];
1045
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
1046
+ __name: "FdsButtonIcon",
1047
1047
  props: {
1048
1048
  icon: {},
1049
1049
  size: { default: "24px" },
@@ -1089,11 +1089,11 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
1089
1089
  name: "spinner",
1090
1090
  class: "animate-spin"
1091
1091
  }, null, 8, ["size"]))
1092
- ], 10, _hoisted_1$i);
1092
+ ], 10, _hoisted_1$l);
1093
1093
  };
1094
1094
  }
1095
1095
  });
1096
- const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
1096
+ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
1097
1097
  __name: "FdsText",
1098
1098
  props: {
1099
1099
  type: { default: "default" }
@@ -1119,10 +1119,10 @@ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
1119
1119
  };
1120
1120
  }
1121
1121
  });
1122
- const _hoisted_1$h = { class: "block p-[2px] mb-2 last:mb-0 relative min-h-[28px]" };
1122
+ const _hoisted_1$k = { class: "block p-[2px] mb-2 last:mb-0 relative min-h-[28px]" };
1123
1123
  const _hoisted_2$c = ["id", "name", "value", "checked", "disabled", "required"];
1124
1124
  const _hoisted_3$b = ["for"];
1125
- const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
1125
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
1126
1126
  __name: "FdsRadio",
1127
1127
  props: {
1128
1128
  checked: { type: Boolean, default: false },
@@ -1150,7 +1150,7 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
1150
1150
  accentClass.value
1151
1151
  ]);
1152
1152
  return (_ctx, _cache) => {
1153
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [
1153
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [
1154
1154
  vue.createElementVNode("input", {
1155
1155
  id: inputId.value,
1156
1156
  name: _ctx.name,
@@ -1177,17 +1177,22 @@ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
1177
1177
  };
1178
1178
  }
1179
1179
  });
1180
- const _hoisted_1$g = { class: "flex items-center" };
1180
+ const _hoisted_1$j = { class: "flex items-start" };
1181
1181
  const _hoisted_2$b = ["innerHTML"];
1182
- const _hoisted_3$a = { key: 1 };
1182
+ const _hoisted_3$a = {
1183
+ key: 1,
1184
+ style: { "line-height": "25px" }
1185
+ };
1183
1186
  const _hoisted_4$8 = {
1184
1187
  key: 2,
1185
1188
  style: { "max-height": "28px" }
1186
1189
  };
1187
- const _hoisted_5$6 = { key: 0 };
1190
+ const _hoisted_5$6 = { class: "flex flex-col gap-2" };
1191
+ const _hoisted_6$5 = ["onClick"];
1192
+ const _hoisted_7$3 = { key: 0 };
1188
1193
  const popoverWidth = 327;
1189
1194
  const popoverHeight = 80;
1190
- const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
1195
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
1191
1196
  ...{
1192
1197
  name: "TreeNode"
1193
1198
  },
@@ -1299,13 +1304,13 @@ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
1299
1304
  firstRadio?.focus();
1300
1305
  };
1301
1306
  const closePopover = () => {
1302
- setTimeout(() => {
1303
- isOpen.value = false;
1304
- window.removeEventListener("scroll", computePopoverCoords, true);
1305
- window.removeEventListener("resize", computePopoverCoords);
1306
- document.removeEventListener("pointerdown", handleGlobalPointerDown);
1307
- document.removeEventListener("keydown", handleGlobalKeydown);
1308
- }, 300);
1307
+ isOpen.value = false;
1308
+ };
1309
+ const onAfterPopoverLeave = () => {
1310
+ window.removeEventListener("scroll", computePopoverCoords, true);
1311
+ window.removeEventListener("resize", computePopoverCoords);
1312
+ document.removeEventListener("pointerdown", handleGlobalPointerDown);
1313
+ document.removeEventListener("keydown", handleGlobalKeydown);
1309
1314
  };
1310
1315
  const togglePopover = () => {
1311
1316
  if (isOpen.value) closePopover();
@@ -1352,14 +1357,12 @@ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
1352
1357
  return "";
1353
1358
  });
1354
1359
  const handleOptionClick = (option) => {
1355
- setTimeout(() => {
1356
- if (option === "parent_and_children") {
1357
- treeState?.selectNodeAndAllChildren(props.nodeId);
1358
- } else if (option === "parent") {
1359
- treeState?.deselectChildrenOnly(props.nodeId);
1360
- }
1361
- isOpen.value = false;
1362
- }, 300);
1360
+ if (option === "parent_and_children") {
1361
+ treeState?.selectNodeAndAllChildren(props.nodeId);
1362
+ } else if (option === "parent") {
1363
+ treeState?.deselectChildrenOnly(props.nodeId);
1364
+ }
1365
+ closePopover();
1363
1366
  };
1364
1367
  return (_ctx, _cache) => {
1365
1368
  const _component_TreeNode = vue.resolveComponent("TreeNode", true);
@@ -1370,30 +1373,30 @@ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
1370
1373
  style: vue.normalizeStyle(indent.value),
1371
1374
  class: vue.normalizeClass("pt-2 pb-2")
1372
1375
  }, [
1373
- vue.createElementVNode("div", _hoisted_1$g, [
1374
- hasChildrenNodes.value ? (vue.openBlock(), vue.createBlock(_sfc_main$p, {
1376
+ vue.createElementVNode("div", _hoisted_1$j, [
1377
+ hasChildrenNodes.value ? (vue.openBlock(), vue.createBlock(_sfc_main$r, {
1375
1378
  key: 0,
1376
1379
  onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(treeState)?.toggleExpandNode(props.nodeId)),
1377
1380
  ariaLabel: childrenToggleAriaLabel(props.title),
1378
1381
  icon: vue.unref(treeState)?.getNodeIcon(props.nodeId, props.nodeExpandIcon, props.nodeCollapseIcon) ?? props.nodeExpandIcon,
1379
- size: "20px",
1382
+ size: "24px",
1380
1383
  class: "fill-blue-500 mr-3"
1381
1384
  }, null, 8, ["ariaLabel", "icon"])) : vue.createCommentVNode("", true),
1382
1385
  !hasChildrenNodes.value ? (vue.openBlock(), vue.createElementBlock("div", {
1383
1386
  key: 1,
1384
1387
  style: vue.normalizeStyle({ minWidth: `${_ctx.indentation}px` })
1385
1388
  }, null, 4)) : vue.createCommentVNode("", true),
1386
- vue.createVNode(_sfc_main$r, {
1389
+ vue.createVNode(_sfc_main$t, {
1387
1390
  id: `checkbox-${props.nodeId}`,
1388
1391
  checked: vue.unref(treeState)?.isNodeSelected(props.nodeId),
1389
1392
  indeterminate: _ctx.showIndeterminate && (vue.unref(treeState)?.isNodeIndeterminateById(props.nodeId) ?? false),
1390
1393
  onChange: _cache[1] || (_cache[1] = ($event) => vue.unref(treeState)?.toggleSelectNode(props.nodeId, props.title, props.data)),
1391
- class: "pl-0 flex-1 flex items-center"
1394
+ class: "pl-0 flex-1 flex items-start"
1392
1395
  }, {
1393
1396
  default: vue.withCtx(() => [
1394
1397
  vue.createElementVNode("div", null, [
1395
1398
  _ctx.title ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
1396
- _ctx.searchHighlighting && _ctx.searchEnabled && vue.unref(treeState)?.searchTerm?.value && String(vue.unref(treeState)?.searchTerm?.value || "").trim().length >= (vue.unref(treeState)?.triggerLength ?? 1) ? (vue.openBlock(), vue.createBlock(_sfc_main$o, {
1399
+ _ctx.searchHighlighting && _ctx.searchEnabled && vue.unref(treeState)?.searchTerm?.value && String(vue.unref(treeState)?.searchTerm?.value || "").trim().length >= (vue.unref(treeState)?.triggerLength ?? 1) ? (vue.openBlock(), vue.createBlock(_sfc_main$q, {
1397
1400
  key: 0,
1398
1401
  type: "default"
1399
1402
  }, {
@@ -1403,8 +1406,9 @@ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
1403
1406
  }, null, 8, _hoisted_2$b)
1404
1407
  ]),
1405
1408
  _: 1
1406
- })) : (vue.openBlock(), vue.createBlock(_sfc_main$o, {
1409
+ })) : (vue.openBlock(), vue.createBlock(_sfc_main$q, {
1407
1410
  key: 1,
1411
+ style: { "line-height": "25px" },
1408
1412
  type: "default"
1409
1413
  }, {
1410
1414
  default: vue.withCtx(() => [
@@ -1419,7 +1423,7 @@ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
1419
1423
  _: 1
1420
1424
  }, 8, ["id", "checked", "indeterminate"]),
1421
1425
  vue.unref(treeState)?.isParentOrChildrenSelected(props.nodeId) && !(vue.unref(treeState)?.isNodeIndeterminateById(props.nodeId) ?? false) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$8, [
1422
- vue.createVNode(_sfc_main$p, {
1426
+ vue.createVNode(_sfc_main$r, {
1423
1427
  ref_key: "triggerRef",
1424
1428
  ref: triggerRef,
1425
1429
  icon: "more",
@@ -1427,66 +1431,84 @@ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
1427
1431
  onClick: togglePopover,
1428
1432
  ariaLabel: `Fler val för ${_ctx.title}`
1429
1433
  }, null, 8, ["ariaLabel"]),
1430
- isOpen.value ? (vue.openBlock(), vue.createElementBlock("div", {
1431
- key: 0,
1432
- class: "fixed z-9999",
1433
- style: vue.normalizeStyle({
1434
- top: popoverCoords.top + "px",
1435
- left: popoverCoords.right - popoverWidth - (popoverCoords.right - popoverCoords.left) + "px"
1436
- })
1437
- }, [
1438
- vue.createElementVNode("div", {
1439
- ref_key: "popoverPanelRef",
1440
- ref: popoverPanelRef,
1441
- class: "bg-white rounded-md p-4 shadow-lg flex flex-row justify-between items-start gap-3",
1442
- style: vue.normalizeStyle({
1443
- width: popoverWidth + "px",
1444
- minHeight: popoverHeight + "px"
1445
- }),
1446
- onClick: _cache[3] || (_cache[3] = vue.withModifiers(() => {
1447
- }, ["stop"])),
1448
- onFocusout: onPanelFocusOut
1449
- }, [
1450
- vue.createElementVNode("div", null, [
1451
- (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(options, (option) => {
1452
- return vue.createElementVNode("div", {
1453
- key: option.value,
1454
- class: "flex align-center gap-2 justify-between"
1455
- }, [
1456
- vue.createVNode(_sfc_main$n, {
1457
- checked: currentOption.value === option.value,
1458
- id: `tree-popover-${props.nodeId}-${option.value}`,
1459
- name: `tree-popover-${props.nodeId}`,
1460
- value: option.value,
1461
- onChange: ($event) => handleOptionClick(option.value),
1462
- onBlur: closePopover,
1463
- onKeydown: [
1464
- vue.withKeys(vue.withModifiers(($event) => handleOptionClick(option.value), ["prevent"]), ["enter"]),
1465
- vue.withKeys(vue.withModifiers(($event) => handleOptionClick(option.value), ["prevent"]), ["space"])
1466
- ]
1467
- }, {
1468
- default: vue.withCtx(() => [
1469
- vue.createTextVNode(vue.toDisplayString(option.label), 1)
1470
- ]),
1471
- _: 2
1472
- }, 1032, ["checked", "id", "name", "value", "onChange", "onKeydown"])
1473
- ]);
1474
- }), 64))
1475
- ]),
1476
- vue.createVNode(_sfc_main$p, {
1477
- icon: "cross",
1478
- id: "tree-popover-close-button",
1479
- size: "24px",
1480
- onClick: _cache[2] || (_cache[2] = ($event) => closePopover()),
1481
- class: "fill-blue-500",
1482
- ariaLabel: "Stäng"
1483
- })
1484
- ], 36)
1485
- ], 4)) : vue.createCommentVNode("", true)
1434
+ vue.createVNode(vue.Transition, {
1435
+ "enter-active-class": "transition-opacity duration-200 ease-in-out",
1436
+ "enter-from-class": "opacity-0",
1437
+ "enter-to-class": "opacity-100",
1438
+ "leave-active-class": "transition-opacity duration-500 ease-in-out",
1439
+ "leave-from-class": "opacity-100",
1440
+ "leave-to-class": "opacity-0",
1441
+ onAfterLeave: onAfterPopoverLeave
1442
+ }, {
1443
+ default: vue.withCtx(() => [
1444
+ isOpen.value ? (vue.openBlock(), vue.createElementBlock("div", {
1445
+ key: 0,
1446
+ class: "fixed z-9999",
1447
+ style: vue.normalizeStyle({
1448
+ top: popoverCoords.top + "px",
1449
+ left: popoverCoords.right - popoverWidth - (popoverCoords.right - popoverCoords.left) + "px"
1450
+ })
1451
+ }, [
1452
+ vue.createElementVNode("div", {
1453
+ ref_key: "popoverPanelRef",
1454
+ ref: popoverPanelRef,
1455
+ class: "bg-white rounded-md p-4 shadow-lg flex flex-row justify-between items-start gap-3",
1456
+ style: vue.normalizeStyle({
1457
+ width: popoverWidth + "px",
1458
+ minHeight: popoverHeight + "px"
1459
+ }),
1460
+ onClick: _cache[3] || (_cache[3] = vue.withModifiers(() => {
1461
+ }, ["stop"])),
1462
+ onFocusout: onPanelFocusOut
1463
+ }, [
1464
+ vue.createElementVNode("div", _hoisted_5$6, [
1465
+ (vue.openBlock(), vue.createElementBlock(vue.Fragment, null, vue.renderList(options, (option) => {
1466
+ return vue.createElementVNode("div", {
1467
+ key: option.value,
1468
+ onClick: (e) => {
1469
+ if (e.target.tagName !== "INPUT") {
1470
+ handleOptionClick(option.value);
1471
+ }
1472
+ },
1473
+ class: "cursor-pointer"
1474
+ }, [
1475
+ vue.createVNode(_sfc_main$p, {
1476
+ checked: currentOption.value === option.value,
1477
+ id: `tree-popover-${props.nodeId}-${option.value}`,
1478
+ name: `tree-popover-${props.nodeId}`,
1479
+ value: option.value,
1480
+ onChange: () => handleOptionClick(option.value),
1481
+ onBlur: closePopover,
1482
+ onKeydown: [
1483
+ vue.withKeys(vue.withModifiers(($event) => handleOptionClick(option.value), ["prevent"]), ["enter"]),
1484
+ vue.withKeys(vue.withModifiers(($event) => handleOptionClick(option.value), ["prevent"]), ["space"])
1485
+ ]
1486
+ }, {
1487
+ default: vue.withCtx(() => [
1488
+ vue.createTextVNode(vue.toDisplayString(option.label), 1)
1489
+ ]),
1490
+ _: 2
1491
+ }, 1032, ["checked", "id", "name", "value", "onChange", "onKeydown"])
1492
+ ], 8, _hoisted_6$5);
1493
+ }), 64))
1494
+ ]),
1495
+ vue.createVNode(_sfc_main$r, {
1496
+ icon: "cross",
1497
+ id: "tree-popover-close-button",
1498
+ size: "24px",
1499
+ onClick: _cache[2] || (_cache[2] = ($event) => closePopover()),
1500
+ class: "fill-blue-500",
1501
+ ariaLabel: "Stäng"
1502
+ })
1503
+ ], 36)
1504
+ ], 4)) : vue.createCommentVNode("", true)
1505
+ ]),
1506
+ _: 1
1507
+ })
1486
1508
  ])) : vue.createCommentVNode("", true)
1487
1509
  ])
1488
1510
  ], 4),
1489
- vue.unref(expandedNodes).has(props.nodeId) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$6, [
1511
+ vue.unref(expandedNodes).has(props.nodeId) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$3, [
1490
1512
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(filteredNodes.value, (child) => {
1491
1513
  return vue.openBlock(), vue.createBlock(_component_TreeNode, {
1492
1514
  key: child.nodeId,
@@ -1533,8 +1555,8 @@ function useElementFinalSize(elementRef, onFinalSize, delay = 100) {
1533
1555
  onCleanup(() => clearTimeout(timeoutId));
1534
1556
  });
1535
1557
  }
1536
- const _hoisted_1$f = ["aria-label"];
1537
- const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
1558
+ const _hoisted_1$i = ["aria-label"];
1559
+ const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
1538
1560
  __name: "FdsSpinner",
1539
1561
  props: {
1540
1562
  size: { default: "48px" },
@@ -1606,23 +1628,24 @@ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
1606
1628
  key: 0,
1607
1629
  class: vue.normalizeClass(_ctx.labelPosition === "bottom" ? "font-bold" : "")
1608
1630
  }, vue.toDisplayString(_ctx.label), 3)) : vue.createCommentVNode("", true)
1609
- ], 10, _hoisted_1$f);
1631
+ ], 10, _hoisted_1$i);
1610
1632
  };
1611
1633
  }
1612
1634
  });
1613
- const _hoisted_1$e = ["aria-disabled"];
1614
- const elBase = "box-border appearance-none inline-flex items-center justify-center cursor-pointer select-none min-h-0 min-w-12 h-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";
1615
- const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
1616
- __name: "FdsButton",
1635
+ const _hoisted_1$h = ["aria-disabled"];
1636
+ const elBase$2 = "box-border appearance-none inline-flex items-center justify-center cursor-pointer shadow-none p-1 text-base h-7 select-none m-0 rounded-md textcenter align-middle whitespace-nowrap 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";
1637
+ const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
1638
+ __name: "FdsButtonMinor",
1617
1639
  props: {
1618
- variant: { default: "primary" },
1640
+ invert: { type: Boolean, default: false },
1641
+ text: {},
1619
1642
  loading: { type: Boolean, default: false },
1620
1643
  disabled: { type: Boolean, default: false },
1621
1644
  block: { type: Boolean, default: false },
1622
1645
  state: { default: void 0 },
1623
1646
  icon: { default: void 0 },
1624
1647
  iconPos: { default: "left" },
1625
- size: { default: "m" },
1648
+ size: {},
1626
1649
  textSelection: { type: Boolean, default: false },
1627
1650
  as: { default: "button" },
1628
1651
  href: { default: void 0 },
@@ -1632,39 +1655,25 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
1632
1655
  setup(__props, { emit: __emit }) {
1633
1656
  const props = __props;
1634
1657
  const emit = __emit;
1635
- const slots = vue.useSlots();
1636
1658
  const rootClasses = vue.computed(() => [
1637
1659
  "inline-block transition-opacity duration-200",
1638
1660
  props.disabled && "opacity-20 pointer-events-none",
1639
1661
  props.block && "block w-full"
1640
1662
  ]);
1641
- const sizeClasses = {
1642
- s: "text-sm h-7 px-3",
1643
- m: "text-base h-12 px-4",
1644
- l: "text-lg h-[68px] px-6"
1645
- };
1646
- const variantClasses = {
1647
- primary: "bg-red-600 border border-red-700 text-white hover:bg-red-700 active:bg-red-800 active:border-red-800",
1648
- secondary: "bg-white border-2 border-blue-500 text-blue-600 hover:border-blue-600 active:bg-blue-600 active:border-blue-600 active:text-white",
1649
- minor: "h-auto border-0 shadow-none font-normal px-0! text-blue-600 p-0 bg-transparent rounded focus-visible:outline-dashed focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-blue-500 hover:bg-blue_t-100 active:bg-blue_t-200",
1650
- "minor-invert": "h-auto border-0 shadow-none font-normal text-white p-0 bg-transparent rounded focus-visible:outline-dashed focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white hover:bg-white-100 active:bg-white-200"
1651
- };
1663
+ const variantClasses2 = vue.computed(
1664
+ () => props.invert ? "border-0 font-normal text-white bg-transparent focus-visible:outline-dashed focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-white hover:bg-white-100 active:bg-white-200" : "border-0 font-normal text-blue-600 bg-transparent focus-visible:outline-dashed focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-blue-500 hover:bg-blue_t-100 active:bg-blue_t-200"
1665
+ );
1652
1666
  const blockElClasses = vue.computed(() => props.block && "w-full justify-center");
1653
- const onlyIcon = vue.computed(() => !slots.default || String(slots.default()).trim() === "");
1654
1667
  const iconOrderClasses = vue.computed(
1655
1668
  () => props.icon && props.iconPos === "right" ? "order-2 ml-2 mr-0" : props.icon && "mr-2"
1656
1669
  );
1657
1670
  const buttonClasses = vue.computed(() => [
1658
- elBase,
1659
- sizeClasses[props.size],
1660
- variantClasses[props.variant],
1671
+ elBase$2,
1672
+ variantClasses2.value,
1661
1673
  blockElClasses.value,
1662
- props.textSelection && "select-text",
1663
- onlyIcon.value ? "" : ""
1674
+ props.textSelection && "select-text"
1664
1675
  ]);
1665
- const iconFillClass = vue.computed(
1666
- () => props.variant === "primary" || props.variant === "minor-invert" ? "fill-white" : "fill-blue-500"
1667
- );
1676
+ const iconFillClass2 = vue.computed(() => props.invert ? "fill-white" : "fill-blue-500");
1668
1677
  function onClick(ev) {
1669
1678
  if (props.disabled || props.loading) {
1670
1679
  ev.preventDefault();
@@ -1672,20 +1681,24 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
1672
1681
  }
1673
1682
  emit("click", ev);
1674
1683
  }
1684
+ const linkAttrs = vue.computed(() => {
1685
+ if (props.as === "a") return { href: props.href };
1686
+ if (props.as === "router-link") return { to: props.href };
1687
+ return {};
1688
+ });
1675
1689
  return (_ctx, _cache) => {
1676
1690
  return vue.openBlock(), vue.createElementBlock("div", {
1677
1691
  class: vue.normalizeClass(rootClasses.value),
1678
1692
  "aria-disabled": _ctx.disabled ? "true" : null
1679
1693
  }, [
1680
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.as), {
1681
- href: _ctx.as === "a" ? _ctx.href : void 0,
1694
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.as), vue.mergeProps(linkAttrs.value, {
1682
1695
  type: _ctx.as === "button" ? _ctx.type : void 0,
1683
1696
  disabled: _ctx.as === "button" ? _ctx.disabled : void 0,
1684
- class: vue.normalizeClass(buttonClasses.value),
1697
+ class: buttonClasses.value,
1685
1698
  onClick
1686
- }, {
1699
+ }), {
1687
1700
  default: vue.withCtx(() => [
1688
- _ctx.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
1701
+ _ctx.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$n, {
1689
1702
  key: 0,
1690
1703
  class: "mr-2",
1691
1704
  size: "24px",
@@ -1696,20 +1709,20 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
1696
1709
  "aria-hidden": "true"
1697
1710
  }, [
1698
1711
  vue.createVNode(FdsIcon, {
1699
- class: vue.normalizeClass(iconFillClass.value),
1712
+ class: vue.normalizeClass(iconFillClass2.value),
1700
1713
  name: _ctx.icon,
1701
1714
  size: 24
1702
1715
  }, null, 8, ["class", "name"])
1703
1716
  ], 2)) : vue.createCommentVNode("", true),
1704
- vue.renderSlot(_ctx.$slots, "default")
1717
+ vue.createTextVNode(" " + vue.toDisplayString(_ctx.text), 1)
1705
1718
  ]),
1706
- _: 3
1707
- }, 8, ["href", "type", "disabled", "class"]))
1708
- ], 10, _hoisted_1$e);
1719
+ _: 1
1720
+ }, 16, ["type", "disabled", "class"]))
1721
+ ], 10, _hoisted_1$h);
1709
1722
  };
1710
1723
  }
1711
1724
  });
1712
- const _hoisted_1$d = { class: "flex flex-col" };
1725
+ const _hoisted_1$g = { class: "flex flex-col" };
1713
1726
  const _hoisted_2$a = ["for"];
1714
1727
  const _hoisted_3$9 = { class: "w-full" };
1715
1728
  const _hoisted_4$7 = { class: "relative" };
@@ -1718,7 +1731,7 @@ const _hoisted_6$4 = {
1718
1731
  key: 0,
1719
1732
  class: "text-red-600 font-bold mt-1"
1720
1733
  };
1721
- const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
1734
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
1722
1735
  __name: "FdsInput",
1723
1736
  props: {
1724
1737
  value: { default: "" },
@@ -1752,7 +1765,7 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
1752
1765
  const isInvalid = vue.computed(() => props.valid === "false" && !props.optional && !props.disabled);
1753
1766
  const isValid = vue.computed(() => props.valid === "true");
1754
1767
  const showPasswordToggle = vue.computed(
1755
- () => isPasswordType.value && hasPasswordLabels.value && internalValue.value.length > 0
1768
+ () => isPasswordType.value && internalValue.value.length > 0
1756
1769
  );
1757
1770
  const inputClasses = vue.computed(() => [
1758
1771
  "block w-full rounded-md border border-gray-300 px-3 py-2",
@@ -1780,24 +1793,15 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
1780
1793
  }
1781
1794
  const showPassword = vue.ref(false);
1782
1795
  const isPasswordType = vue.computed(() => props.type === "password");
1783
- const passwordToggleLabels = vue.computed(() => {
1784
- const labels = props.passwordLabels ?? [];
1785
- const off = (labels[0] ?? "Visa").toString().trim();
1786
- const on = (labels[1] ?? "Dölj").toString().trim();
1787
- return { off, on };
1788
- });
1789
1796
  function toggleShowPassword() {
1790
1797
  showPassword.value = !showPassword.value;
1791
1798
  }
1792
- const hasPasswordLabels = vue.computed(
1793
- () => Array.isArray(props.passwordLabels) && props.passwordLabels.some((l) => (l ?? "").toString().trim().length > 0)
1794
- );
1795
1799
  return (_ctx, _cache) => {
1796
1800
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
1797
1801
  vue.createElementVNode("div", {
1798
1802
  class: vue.normalizeClass(["w-full", { "flex flex-row gap-4": _ctx.labelLeft }])
1799
1803
  }, [
1800
- vue.createElementVNode("div", _hoisted_1$d, [
1804
+ vue.createElementVNode("div", _hoisted_1$g, [
1801
1805
  _ctx.label ? (vue.openBlock(), vue.createElementBlock("label", {
1802
1806
  key: 0,
1803
1807
  for: inputId.value,
@@ -1836,23 +1840,18 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
1836
1840
  key: 1,
1837
1841
  name: "bigSuccess"
1838
1842
  })) : vue.createCommentVNode("", true),
1839
- _ctx.clearButton && !!internalValue.value && !_ctx.disabled ? (vue.openBlock(), vue.createBlock(_sfc_main$p, {
1843
+ _ctx.clearButton && !!internalValue.value && !_ctx.disabled ? (vue.openBlock(), vue.createBlock(_sfc_main$r, {
1840
1844
  key: 2,
1841
1845
  icon: "cross",
1842
1846
  ariaLabel: clearButtonLabel.value,
1843
1847
  onClick: onClear
1844
1848
  }, null, 8, ["ariaLabel"])) : vue.createCommentVNode("", true),
1845
- showPasswordToggle.value ? (vue.openBlock(), vue.createBlock(_sfc_main$k, {
1849
+ showPasswordToggle.value ? (vue.openBlock(), vue.createBlock(_sfc_main$m, {
1846
1850
  key: 3,
1847
- variant: "minor",
1848
1851
  icon: showPassword.value ? "viewOff" : "viewOn",
1852
+ text: "",
1849
1853
  onClick: toggleShowPassword
1850
- }, {
1851
- default: vue.withCtx(() => [
1852
- vue.createTextVNode(vue.toDisplayString(showPassword.value ? passwordToggleLabels.value.off : passwordToggleLabels.value.on), 1)
1853
- ]),
1854
- _: 1
1855
- }, 8, ["icon"])) : vue.createCommentVNode("", true)
1854
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true)
1856
1855
  ], 2)
1857
1856
  ])
1858
1857
  ])
@@ -1862,7 +1861,7 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
1862
1861
  };
1863
1862
  }
1864
1863
  });
1865
- const _hoisted_1$c = ["id"];
1864
+ const _hoisted_1$f = ["id"];
1866
1865
  const _hoisted_2$9 = {
1867
1866
  key: 0,
1868
1867
  class: "flex items-start gap-4"
@@ -1876,7 +1875,7 @@ const _hoisted_8$1 = { class: "flex items-center gap-3" };
1876
1875
  const _hoisted_9$1 = { class: "flex items-start gap-3" };
1877
1876
  const smallIconSize = 24;
1878
1877
  const largeIconSize = 48;
1879
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
1878
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
1880
1879
  __name: "FdsContentBlock",
1881
1880
  props: {
1882
1881
  variant: { default: "primary" },
@@ -1982,11 +1981,11 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
1982
1981
  ], 2),
1983
1982
  vue.renderSlot(_ctx.$slots, "default")
1984
1983
  ]))
1985
- ], 14, _hoisted_1$c);
1984
+ ], 14, _hoisted_1$f);
1986
1985
  };
1987
1986
  }
1988
1987
  });
1989
- const _hoisted_1$b = { key: 0 };
1988
+ const _hoisted_1$e = { key: 0 };
1990
1989
  const _hoisted_2$8 = {
1991
1990
  key: 0,
1992
1991
  class: "text-xl"
@@ -1995,7 +1994,7 @@ const _hoisted_3$7 = {
1995
1994
  key: 1,
1996
1995
  class: "text-xl"
1997
1996
  };
1998
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
1997
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
1999
1998
  __name: "FdsTreeView",
2000
1999
  props: {
2001
2000
  nodeExpandIcon: {},
@@ -2076,7 +2075,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
2076
2075
  ref: searchContainerRef,
2077
2076
  class: "pb-4"
2078
2077
  }, [
2079
- vue.createVNode(_sfc_main$j, {
2078
+ vue.createVNode(_sfc_main$l, {
2080
2079
  value: vue.unref(treeState)?.searchTerm?.value ?? "",
2081
2080
  onInput: _cache[0] || (_cache[0] = ($event) => vue.unref(treeState)?.setSearchTerm($event.target.value)),
2082
2081
  class: "w-full",
@@ -2089,11 +2088,11 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
2089
2088
  ])]),
2090
2089
  _: 1
2091
2090
  }, 8, ["value", "label"]),
2092
- props.searchCountTemplate || props.searchCountTemplateUnfiltered ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
2091
+ props.searchCountTemplate || props.searchCountTemplateUnfiltered ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
2093
2092
  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$8, 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))
2094
2093
  ])) : vue.createCommentVNode("", true)
2095
2094
  ], 512)) : vue.createCommentVNode("", true),
2096
- vue.unref(treeState)?.isEmptySearchResult?.value ? (vue.openBlock(), vue.createBlock(_sfc_main$i, {
2095
+ vue.unref(treeState)?.isEmptySearchResult?.value ? (vue.openBlock(), vue.createBlock(_sfc_main$k, {
2097
2096
  key: 1,
2098
2097
  variant: "secondary",
2099
2098
  icon: "information",
@@ -2103,7 +2102,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
2103
2102
  vue.createTextVNode(vue.toDisplayString(props.searchResultNoMatchesTitle), 1)
2104
2103
  ]),
2105
2104
  default: vue.withCtx(() => [
2106
- vue.createVNode(_sfc_main$o, null, {
2105
+ vue.createVNode(_sfc_main$q, null, {
2107
2106
  default: vue.withCtx(() => [
2108
2107
  vue.createTextVNode(vue.toDisplayString(props.searchResultNoMatchesBody), 1)
2109
2108
  ]),
@@ -2115,7 +2114,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
2115
2114
  vue.createElementVNode("div", {
2116
2115
  class: vue.normalizeClass(["rounded-md", { "overflow-x-auto bg-white-solid": props.horizontalScroll }])
2117
2116
  }, [
2118
- props.data && !vue.unref(treeState)?.isEmptySearchResult?.value ? (vue.openBlock(), vue.createBlock(_sfc_main$m, {
2117
+ props.data && !vue.unref(treeState)?.isEmptySearchResult?.value ? (vue.openBlock(), vue.createBlock(_sfc_main$o, {
2119
2118
  key: 0,
2120
2119
  style: { container: "bg-white-solid px-3 py-2" },
2121
2120
  nodes: props.data.children || [],
@@ -2146,6 +2145,272 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
2146
2145
  };
2147
2146
  }
2148
2147
  });
2148
+ const _hoisted_1$d = ["aria-disabled"];
2149
+ const elBase$1 = "box-border appearance-none inline-flex items-center justify-center cursor-pointer select-none min-h-0 min-w-12 h-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";
2150
+ const variantClasses$1 = "bg-red-600 border border-red-700 text-white hover:bg-red-700 active:bg-red-800 active:border-red-800";
2151
+ const iconFillClass$1 = "fill-white";
2152
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
2153
+ __name: "FdsButtonPrimary",
2154
+ props: {
2155
+ text: {},
2156
+ loading: { type: Boolean, default: false },
2157
+ disabled: { type: Boolean, default: false },
2158
+ block: { type: Boolean, default: false },
2159
+ state: { default: void 0 },
2160
+ icon: { default: void 0 },
2161
+ iconPos: { default: "left" },
2162
+ size: { default: "m" },
2163
+ textSelection: { type: Boolean, default: false },
2164
+ as: { default: "button" },
2165
+ href: { default: void 0 },
2166
+ type: { default: "button" }
2167
+ },
2168
+ emits: ["click"],
2169
+ setup(__props, { emit: __emit }) {
2170
+ const props = __props;
2171
+ const emit = __emit;
2172
+ const rootClasses = vue.computed(() => [
2173
+ "inline-block transition-opacity duration-200",
2174
+ props.disabled && "opacity-20 pointer-events-none",
2175
+ props.block && "block w-full"
2176
+ ]);
2177
+ const sizeClasses = {
2178
+ s: "text-sm h-7 px-3",
2179
+ m: "text-base h-12 px-4",
2180
+ l: "text-lg h-[68px] px-6"
2181
+ };
2182
+ const blockElClasses = vue.computed(() => props.block && "w-full justify-center");
2183
+ const iconOrderClasses = vue.computed(
2184
+ () => props.icon && props.iconPos === "right" ? "order-2 ml-2 mr-0" : props.icon && "mr-2"
2185
+ );
2186
+ const buttonClasses = vue.computed(() => [
2187
+ elBase$1,
2188
+ sizeClasses[props.size || "m"],
2189
+ variantClasses$1,
2190
+ blockElClasses.value,
2191
+ props.textSelection && "select-text"
2192
+ ]);
2193
+ function onClick(ev) {
2194
+ if (props.disabled || props.loading) {
2195
+ ev.preventDefault();
2196
+ return;
2197
+ }
2198
+ emit("click", ev);
2199
+ }
2200
+ const linkAttrs = vue.computed(() => {
2201
+ if (props.as === "a") return { href: props.href };
2202
+ if (props.as === "router-link") return { to: props.href };
2203
+ return {};
2204
+ });
2205
+ return (_ctx, _cache) => {
2206
+ return vue.openBlock(), vue.createElementBlock("div", {
2207
+ class: vue.normalizeClass(rootClasses.value),
2208
+ "aria-disabled": _ctx.disabled ? "true" : null
2209
+ }, [
2210
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.as), vue.mergeProps(linkAttrs.value, {
2211
+ type: _ctx.as === "button" ? _ctx.type : void 0,
2212
+ disabled: _ctx.as === "button" ? _ctx.disabled : void 0,
2213
+ class: buttonClasses.value,
2214
+ onClick
2215
+ }), {
2216
+ default: vue.withCtx(() => [
2217
+ _ctx.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$n, {
2218
+ key: 0,
2219
+ class: "mr-2",
2220
+ size: "24px",
2221
+ color: "inherit"
2222
+ })) : _ctx.icon ? (vue.openBlock(), vue.createElementBlock("span", {
2223
+ key: 1,
2224
+ class: vue.normalizeClass(iconOrderClasses.value),
2225
+ "aria-hidden": "true"
2226
+ }, [
2227
+ vue.createVNode(FdsIcon, {
2228
+ class: vue.normalizeClass(iconFillClass$1),
2229
+ name: _ctx.icon,
2230
+ size: 24
2231
+ }, null, 8, ["name"])
2232
+ ], 2)) : vue.createCommentVNode("", true),
2233
+ vue.createTextVNode(" " + vue.toDisplayString(_ctx.text), 1)
2234
+ ]),
2235
+ _: 1
2236
+ }, 16, ["type", "disabled", "class"]))
2237
+ ], 10, _hoisted_1$d);
2238
+ };
2239
+ }
2240
+ });
2241
+ const _hoisted_1$c = ["aria-disabled"];
2242
+ const elBase = "box-border appearance-none inline-flex items-center justify-center cursor-pointer select-none min-h-0 min-w-12 h-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";
2243
+ const variantClasses = "bg-white border-2 border-blue-500 text-blue-600 hover:border-blue-600 active:bg-blue-600 active:border-blue-600 active:text-white";
2244
+ const iconFillClass = "fill-blue-500";
2245
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
2246
+ __name: "FdsButtonSecondary",
2247
+ props: {
2248
+ text: {},
2249
+ loading: { type: Boolean, default: false },
2250
+ disabled: { type: Boolean, default: false },
2251
+ block: { type: Boolean, default: false },
2252
+ state: { default: void 0 },
2253
+ icon: { default: void 0 },
2254
+ iconPos: { default: "left" },
2255
+ size: { default: "m" },
2256
+ textSelection: { type: Boolean, default: false },
2257
+ as: { default: "button" },
2258
+ href: { default: void 0 },
2259
+ type: { default: "button" }
2260
+ },
2261
+ emits: ["click"],
2262
+ setup(__props, { emit: __emit }) {
2263
+ const props = __props;
2264
+ const emit = __emit;
2265
+ const rootClasses = vue.computed(() => [
2266
+ "inline-block transition-opacity duration-200",
2267
+ props.disabled && "opacity-20 pointer-events-none",
2268
+ props.block && "block w-full"
2269
+ ]);
2270
+ const sizeClasses = {
2271
+ s: "text-sm h-7 px-3",
2272
+ m: "text-base h-12 px-4",
2273
+ l: "text-lg h-[68px] px-6"
2274
+ };
2275
+ const blockElClasses = vue.computed(() => props.block && "w-full justify-center");
2276
+ const iconOrderClasses = vue.computed(
2277
+ () => props.icon && props.iconPos === "right" ? "order-2 ml-2 mr-0" : props.icon && "mr-2"
2278
+ );
2279
+ const buttonClasses = vue.computed(() => [
2280
+ elBase,
2281
+ sizeClasses[props.size || "m"],
2282
+ variantClasses,
2283
+ blockElClasses.value,
2284
+ props.textSelection && "select-text"
2285
+ ]);
2286
+ function onClick(ev) {
2287
+ if (props.disabled || props.loading) {
2288
+ ev.preventDefault();
2289
+ return;
2290
+ }
2291
+ emit("click", ev);
2292
+ }
2293
+ const linkAttrs = vue.computed(() => {
2294
+ if (props.as === "a") return { href: props.href };
2295
+ if (props.as === "router-link") return { to: props.href };
2296
+ return {};
2297
+ });
2298
+ return (_ctx, _cache) => {
2299
+ return vue.openBlock(), vue.createElementBlock("div", {
2300
+ class: vue.normalizeClass(rootClasses.value),
2301
+ "aria-disabled": _ctx.disabled ? "true" : null
2302
+ }, [
2303
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.as), vue.mergeProps(linkAttrs.value, {
2304
+ type: _ctx.as === "button" ? _ctx.type : void 0,
2305
+ disabled: _ctx.as === "button" ? _ctx.disabled : void 0,
2306
+ class: buttonClasses.value,
2307
+ onClick
2308
+ }), {
2309
+ default: vue.withCtx(() => [
2310
+ _ctx.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$n, {
2311
+ key: 0,
2312
+ class: "mr-2",
2313
+ size: "24px",
2314
+ color: "inherit"
2315
+ })) : _ctx.icon ? (vue.openBlock(), vue.createElementBlock("span", {
2316
+ key: 1,
2317
+ class: vue.normalizeClass(iconOrderClasses.value),
2318
+ "aria-hidden": "true"
2319
+ }, [
2320
+ vue.createVNode(FdsIcon, {
2321
+ class: vue.normalizeClass(iconFillClass),
2322
+ name: _ctx.icon,
2323
+ size: 24
2324
+ }, null, 8, ["name"])
2325
+ ], 2)) : vue.createCommentVNode("", true),
2326
+ vue.createTextVNode(" " + vue.toDisplayString(_ctx.text), 1)
2327
+ ]),
2328
+ _: 1
2329
+ }, 16, ["type", "disabled", "class"]))
2330
+ ], 10, _hoisted_1$c);
2331
+ };
2332
+ }
2333
+ });
2334
+ const _hoisted_1$b = {
2335
+ key: 0,
2336
+ class: "flex items-center gap-2 h-7"
2337
+ };
2338
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
2339
+ __name: "FdsButtonCopy",
2340
+ props: {
2341
+ value: { default: "" },
2342
+ targetId: {},
2343
+ label: { default: "Kopiera" },
2344
+ copiedLabel: { default: "Kopierat!" },
2345
+ timeoutMs: { default: 800 },
2346
+ disabled: { type: Boolean, default: false }
2347
+ },
2348
+ emits: ["click"],
2349
+ setup(__props) {
2350
+ const props = __props;
2351
+ const isCopied = vue.ref(false);
2352
+ let resetTimer = null;
2353
+ async function copyToClipboard(text) {
2354
+ try {
2355
+ if (navigator.clipboard && navigator.clipboard.writeText) {
2356
+ await navigator.clipboard.writeText(text);
2357
+ return true;
2358
+ }
2359
+ } catch {
2360
+ }
2361
+ const textarea = document.createElement("textarea");
2362
+ textarea.value = text;
2363
+ textarea.style.position = "fixed";
2364
+ textarea.style.opacity = "0";
2365
+ document.body.appendChild(textarea);
2366
+ textarea.focus();
2367
+ textarea.select();
2368
+ let ok = false;
2369
+ try {
2370
+ ok = document.execCommand("copy");
2371
+ } catch {
2372
+ ok = false;
2373
+ }
2374
+ document.body.removeChild(textarea);
2375
+ return ok;
2376
+ }
2377
+ async function onClick() {
2378
+ if (props.disabled) return;
2379
+ let textToCopy = props.value;
2380
+ if (props.targetId) {
2381
+ const el = document.getElementById(props.targetId);
2382
+ if (el) {
2383
+ textToCopy = el.innerText || el.textContent || "";
2384
+ }
2385
+ }
2386
+ if (!textToCopy) return;
2387
+ const ok = await copyToClipboard(textToCopy);
2388
+ if (!ok) return;
2389
+ isCopied.value = true;
2390
+ if (resetTimer) clearTimeout(resetTimer);
2391
+ resetTimer = setTimeout(() => isCopied.value = false, props.timeoutMs);
2392
+ }
2393
+ vue.onMounted(() => {
2394
+ if (resetTimer) {
2395
+ clearTimeout(resetTimer);
2396
+ resetTimer = null;
2397
+ }
2398
+ });
2399
+ return (_ctx, _cache) => {
2400
+ return isCopied.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
2401
+ vue.createVNode(FdsIcon, { name: "bigSuccess" }),
2402
+ vue.createElementVNode("span", null, vue.toDisplayString(props.copiedLabel), 1)
2403
+ ])) : (vue.openBlock(), vue.createBlock(_sfc_main$m, {
2404
+ key: 1,
2405
+ type: "button",
2406
+ disabled: props.disabled,
2407
+ icon: "copy",
2408
+ text: isCopied.value ? props.copiedLabel : props.label,
2409
+ onClick
2410
+ }, null, 8, ["disabled", "text"]));
2411
+ };
2412
+ }
2413
+ });
2149
2414
  const _hoisted_1$a = { class: "w-full" };
2150
2415
  const _hoisted_2$7 = ["for"];
2151
2416
  const _hoisted_3$6 = {
@@ -2162,7 +2427,7 @@ const _hoisted_7$1 = {
2162
2427
  key: 0,
2163
2428
  class: "sr-only"
2164
2429
  };
2165
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
2430
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
2166
2431
  __name: "FdsTextarea",
2167
2432
  props: {
2168
2433
  value: { default: "" },
@@ -2269,7 +2534,7 @@ const _hoisted_9 = {
2269
2534
  key: 2,
2270
2535
  class: "text-red-600 font-bold mt-1"
2271
2536
  };
2272
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
2537
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
2273
2538
  __name: "FdsSelect",
2274
2539
  props: {
2275
2540
  value: { default: "" },
@@ -2363,7 +2628,7 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
2363
2628
  };
2364
2629
  }
2365
2630
  });
2366
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
2631
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
2367
2632
  __name: "FdsTable",
2368
2633
  props: {
2369
2634
  bordered: { type: Boolean, default: false },
@@ -2385,8 +2650,8 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
2385
2650
  };
2386
2651
  }
2387
2652
  });
2388
- const FdsTable = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-9bc82042"]]);
2389
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
2653
+ const FdsTable = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-9bc82042"]]);
2654
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
2390
2655
  __name: "FdsTableHead",
2391
2656
  props: {
2392
2657
  sortable: { type: Boolean, default: false },
@@ -2430,83 +2695,6 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
2430
2695
  };
2431
2696
  }
2432
2697
  });
2433
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
2434
- __name: "FdsCopyButton",
2435
- props: {
2436
- value: { default: "" },
2437
- targetId: {},
2438
- label: { default: "Kopiera" },
2439
- copiedLabel: { default: "Kopierat!" },
2440
- timeoutMs: { default: 1500 },
2441
- disabled: { type: Boolean, default: false }
2442
- },
2443
- emits: ["click"],
2444
- setup(__props) {
2445
- const props = __props;
2446
- const isCopied = vue.ref(false);
2447
- let resetTimer = null;
2448
- async function copyToClipboard(text) {
2449
- try {
2450
- if (navigator.clipboard && navigator.clipboard.writeText) {
2451
- await navigator.clipboard.writeText(text);
2452
- return true;
2453
- }
2454
- } catch {
2455
- }
2456
- const textarea = document.createElement("textarea");
2457
- textarea.value = text;
2458
- textarea.style.position = "fixed";
2459
- textarea.style.opacity = "0";
2460
- document.body.appendChild(textarea);
2461
- textarea.focus();
2462
- textarea.select();
2463
- let ok = false;
2464
- try {
2465
- ok = document.execCommand("copy");
2466
- } catch {
2467
- ok = false;
2468
- }
2469
- document.body.removeChild(textarea);
2470
- return ok;
2471
- }
2472
- async function onClick() {
2473
- if (props.disabled) return;
2474
- let textToCopy = props.value;
2475
- if (props.targetId) {
2476
- const el = document.getElementById(props.targetId);
2477
- if (el) {
2478
- textToCopy = el.innerText || el.textContent || "";
2479
- }
2480
- }
2481
- if (!textToCopy) return;
2482
- const ok = await copyToClipboard(textToCopy);
2483
- if (!ok) return;
2484
- isCopied.value = true;
2485
- if (resetTimer) clearTimeout(resetTimer);
2486
- resetTimer = setTimeout(() => isCopied.value = false, props.timeoutMs);
2487
- }
2488
- vue.onMounted(() => {
2489
- if (resetTimer) {
2490
- clearTimeout(resetTimer);
2491
- resetTimer = null;
2492
- }
2493
- });
2494
- return (_ctx, _cache) => {
2495
- return vue.openBlock(), vue.createBlock(_sfc_main$k, {
2496
- variant: "minor",
2497
- type: "button",
2498
- disabled: props.disabled,
2499
- icon: isCopied.value ? "bigSuccess" : "copy",
2500
- onClick
2501
- }, {
2502
- default: vue.withCtx(() => [
2503
- vue.createTextVNode(vue.toDisplayString(isCopied.value ? props.copiedLabel : props.label), 1)
2504
- ]),
2505
- _: 1
2506
- }, 8, ["disabled", "icon"]);
2507
- };
2508
- }
2509
- });
2510
2698
  const _hoisted_1$8 = ["id"];
2511
2699
  const _hoisted_2$5 = { class: "flex items-center gap-2" };
2512
2700
  const _hoisted_3$4 = { class: "relative" };
@@ -2541,7 +2729,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
2541
2729
  isVisible.value = v;
2542
2730
  }
2543
2731
  );
2544
- const variantClasses = {
2732
+ const variantClasses2 = {
2545
2733
  info: "bg-blue_t-100",
2546
2734
  warning: "bg-yellow-200 border-yellow-300"
2547
2735
  };
@@ -2549,7 +2737,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
2549
2737
  info: "information",
2550
2738
  warning: "alert"
2551
2739
  };
2552
- const alertClasses = vue.computed(() => ["rounded-md p-4", variantClasses[props.variant]]);
2740
+ const alertClasses = vue.computed(() => ["rounded-md p-4", variantClasses2[props.variant]]);
2553
2741
  const autoId = `fds-alert-${Math.random().toString(36).slice(2, 9)}`;
2554
2742
  const alertId = vue.computed(() => props.id ?? autoId);
2555
2743
  const iconName = vue.computed(() => iconMap[props.variant]);
@@ -2585,7 +2773,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
2585
2773
  vue.createElementVNode("span", null, vue.toDisplayString(_ctx.label), 1)
2586
2774
  ]),
2587
2775
  vue.createElementVNode("div", _hoisted_3$4, [
2588
- _ctx.closeable ? (vue.openBlock(), vue.createBlock(_sfc_main$p, {
2776
+ _ctx.closeable ? (vue.openBlock(), vue.createBlock(_sfc_main$r, {
2589
2777
  key: 0,
2590
2778
  icon: "cross",
2591
2779
  size: "24px",
@@ -2593,7 +2781,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
2593
2781
  ariaLabel: closeLabel.value,
2594
2782
  class: vue.normalizeClass(["fill-gray-900! hover:bg-gray-100 active:bg-gray-200"])
2595
2783
  }, null, 8, ["ariaLabel"])) : vue.createCommentVNode("", true),
2596
- _ctx.collapsable ? (vue.openBlock(), vue.createBlock(_sfc_main$p, {
2784
+ _ctx.collapsable ? (vue.openBlock(), vue.createBlock(_sfc_main$r, {
2597
2785
  key: 1,
2598
2786
  icon: "arrowDown",
2599
2787
  size: "24px",
@@ -2616,7 +2804,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
2616
2804
  };
2617
2805
  }
2618
2806
  });
2619
- const FdsAlertBlock = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-38596eb2"]]);
2807
+ const FdsAlertBlock = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-6aea4869"]]);
2620
2808
  const _hoisted_1$7 = { class: "inline-flex items-center" };
2621
2809
  const _hoisted_2$4 = {
2622
2810
  key: 0,
@@ -3166,7 +3354,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
3166
3354
  }, null, 8, ["name", "class"])) : vue.createCommentVNode("", true),
3167
3355
  vue.createTextVNode(" " + vue.toDisplayString(_ctx.heading), 1)
3168
3356
  ], 2),
3169
- !_ctx.strict ? (vue.openBlock(), vue.createBlock(_sfc_main$p, {
3357
+ !_ctx.strict ? (vue.openBlock(), vue.createBlock(_sfc_main$r, {
3170
3358
  key: 0,
3171
3359
  icon: "cross",
3172
3360
  size: "24px",
@@ -3190,7 +3378,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
3190
3378
  };
3191
3379
  }
3192
3380
  });
3193
- const FdsModal = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-8b32a4a7"]]);
3381
+ const FdsModal = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-8405e00f"]]);
3194
3382
  const _hoisted_1$3 = { class: "my-6 flex items-between justify-between gap-2" };
3195
3383
  const _hoisted_2$1 = { class: "flex items-center justify-start gap-1 w-[100px]" };
3196
3384
  const _hoisted_3$1 = { class: "flex items-center justify-center w-auto gap-2 order-0 sm:order-0" };
@@ -3272,11 +3460,11 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
3272
3460
  return (_ctx, _cache) => {
3273
3461
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
3274
3462
  vue.createElementVNode("div", _hoisted_2$1, [
3275
- _ctx.loading && loadingIndicator.value === "start" ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
3463
+ _ctx.loading && loadingIndicator.value === "start" ? (vue.openBlock(), vue.createBlock(_sfc_main$n, {
3276
3464
  key: 0,
3277
3465
  size: "32px",
3278
3466
  color: "blue"
3279
- })) : (vue.openBlock(), vue.createBlock(_sfc_main$p, {
3467
+ })) : (vue.openBlock(), vue.createBlock(_sfc_main$r, {
3280
3468
  key: 1,
3281
3469
  icon: "first",
3282
3470
  size: "24px",
@@ -3285,11 +3473,11 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
3285
3473
  class: vue.normalizeClass({ hidden: _ctx.current === 1 }),
3286
3474
  onClick: _cache[0] || (_cache[0] = ($event) => handlePagination("start"))
3287
3475
  }, null, 8, ["disabled", "ariaDisabled", "class"])),
3288
- _ctx.loading && loadingIndicator.value === "prev" ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
3476
+ _ctx.loading && loadingIndicator.value === "prev" ? (vue.openBlock(), vue.createBlock(_sfc_main$n, {
3289
3477
  key: 2,
3290
3478
  size: "24px",
3291
3479
  color: "blue"
3292
- })) : (vue.openBlock(), vue.createBlock(_sfc_main$p, {
3480
+ })) : (vue.openBlock(), vue.createBlock(_sfc_main$r, {
3293
3481
  key: 3,
3294
3482
  icon: "arrowLeft",
3295
3483
  size: "24px",
@@ -3300,14 +3488,14 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
3300
3488
  }, null, 8, ["disabled", "ariaDisabled", "class"]))
3301
3489
  ]),
3302
3490
  vue.createElementVNode("div", _hoisted_3$1, [
3303
- _ctx.loading && loadingIndicator.value === "input" ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
3491
+ _ctx.loading && loadingIndicator.value === "input" ? (vue.openBlock(), vue.createBlock(_sfc_main$n, {
3304
3492
  key: 0,
3305
3493
  size: "24px",
3306
3494
  color: "blue",
3307
3495
  label: "Laddar",
3308
3496
  "label-position": "right"
3309
3497
  })) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
3310
- vue.createVNode(_sfc_main$j, {
3498
+ vue.createVNode(_sfc_main$l, {
3311
3499
  value: internalValue.value.toString(),
3312
3500
  type: "text",
3313
3501
  size: _ctx.max.toString().length,
@@ -3319,11 +3507,11 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
3319
3507
  ], 64))
3320
3508
  ]),
3321
3509
  vue.createElementVNode("div", _hoisted_5$1, [
3322
- _ctx.loading && loadingIndicator.value === "next" ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
3510
+ _ctx.loading && loadingIndicator.value === "next" ? (vue.openBlock(), vue.createBlock(_sfc_main$n, {
3323
3511
  key: 0,
3324
3512
  size: "24px",
3325
3513
  color: "blue"
3326
- })) : (vue.openBlock(), vue.createBlock(_sfc_main$p, {
3514
+ })) : (vue.openBlock(), vue.createBlock(_sfc_main$r, {
3327
3515
  key: 1,
3328
3516
  icon: "arrowRight",
3329
3517
  size: "24px",
@@ -3332,11 +3520,11 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
3332
3520
  class: vue.normalizeClass({ hidden: _ctx.current === _ctx.max }),
3333
3521
  onClick: _cache[2] || (_cache[2] = ($event) => handlePagination("next"))
3334
3522
  }, null, 8, ["disabled", "ariaDisabled", "class"])),
3335
- _ctx.loading && loadingIndicator.value === "end" ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
3523
+ _ctx.loading && loadingIndicator.value === "end" ? (vue.openBlock(), vue.createBlock(_sfc_main$n, {
3336
3524
  key: 2,
3337
3525
  size: "24px",
3338
3526
  color: "blue"
3339
- })) : (vue.openBlock(), vue.createBlock(_sfc_main$p, {
3527
+ })) : (vue.openBlock(), vue.createBlock(_sfc_main$r, {
3340
3528
  key: 3,
3341
3529
  icon: "last",
3342
3530
  size: "24px",
@@ -3350,7 +3538,7 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
3350
3538
  };
3351
3539
  }
3352
3540
  });
3353
- const FdsPagination = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-7eb40808"]]);
3541
+ const FdsPagination = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-df967fb4"]]);
3354
3542
  const _hoisted_1$2 = { class: "block mb-4" };
3355
3543
  const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
3356
3544
  __name: "FdsTruncatedText",
@@ -3418,23 +3606,18 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
3418
3606
  class: vue.normalizeClass(["content", { open: isOpen.value }]),
3419
3607
  style: vue.normalizeStyle({ maxWidth: `${containerWidth.value}px` })
3420
3608
  }, vue.toDisplayString(_ctx.content), 7)),
3421
- shouldShowButton.value ? (vue.openBlock(), vue.createBlock(_sfc_main$k, {
3609
+ shouldShowButton.value ? (vue.openBlock(), vue.createBlock(_sfc_main$m, {
3422
3610
  key: 2,
3423
- variant: "minor",
3424
3611
  icon: isOpen.value ? "arrowUp" : "arrowDown",
3425
- "icon-pos": "right",
3612
+ iconPos: "right",
3613
+ text: isOpen.value ? _ctx.btnCollapse : _ctx.btnExpand,
3426
3614
  onClick: toggleComponent
3427
- }, {
3428
- default: vue.withCtx(() => [
3429
- vue.createTextVNode(vue.toDisplayString(isOpen.value ? _ctx.btnCollapse : _ctx.btnExpand), 1)
3430
- ]),
3431
- _: 1
3432
- }, 8, ["icon"])) : vue.createCommentVNode("", true)
3615
+ }, null, 8, ["icon", "text"])) : vue.createCommentVNode("", true)
3433
3616
  ]);
3434
3617
  };
3435
3618
  }
3436
3619
  });
3437
- const FdsTruncatedText = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-6e02b5dc"]]);
3620
+ const FdsTruncatedText = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-7c1d8d51"]]);
3438
3621
  const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3439
3622
  __name: "FdsHeading",
3440
3623
  props: {
@@ -3533,7 +3716,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
3533
3716
  };
3534
3717
  return (_ctx, _cache) => {
3535
3718
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
3536
- _ctx.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
3719
+ _ctx.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$n, {
3537
3720
  key: 0,
3538
3721
  size: "24px",
3539
3722
  color: "blue",
@@ -3549,20 +3732,22 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
3549
3732
  });
3550
3733
  const FdsVueCorePlugin = {
3551
3734
  install(app) {
3552
- app.component("FdsTreeView", _sfc_main$h);
3553
- app.component("FdsButton", _sfc_main$k);
3735
+ app.component("FdsTreeView", _sfc_main$j);
3736
+ app.component("FdsButtonPrimary", _sfc_main$i);
3737
+ app.component("FdsButtonSecondary", _sfc_main$h);
3738
+ app.component("FdsButtonMinor", _sfc_main$m);
3739
+ app.component("FdsButtonIcon", _sfc_main$r);
3740
+ app.component("FdsButtonCopy", _sfc_main$g);
3554
3741
  app.component("FdsIcon", FdsIcon);
3555
- app.component("FdsSpinner", _sfc_main$l);
3556
- app.component("FdsRadio", _sfc_main$n);
3557
- app.component("FdsCheckbox", _sfc_main$r);
3558
- app.component("FdsTextarea", _sfc_main$g);
3559
- app.component("FdsSelect", _sfc_main$f);
3742
+ app.component("FdsSpinner", _sfc_main$n);
3743
+ app.component("FdsRadio", _sfc_main$p);
3744
+ app.component("FdsCheckbox", _sfc_main$t);
3745
+ app.component("FdsTextarea", _sfc_main$f);
3746
+ app.component("FdsSelect", _sfc_main$e);
3560
3747
  app.component("FdsTable", FdsTable);
3561
- app.component("FdsTableHead", _sfc_main$d);
3562
- app.component("FdsInput", _sfc_main$j);
3563
- app.component("FdsIconButton", _sfc_main$p);
3564
- app.component("FdsCopyButton", _sfc_main$c);
3565
- app.component("FdsContentBlock", _sfc_main$i);
3748
+ app.component("FdsTableHead", _sfc_main$c);
3749
+ app.component("FdsInput", _sfc_main$l);
3750
+ app.component("FdsContentBlock", _sfc_main$k);
3566
3751
  app.component("FdsAlertBlock", FdsAlertBlock);
3567
3752
  app.component("FdsExpanderBlock", FdsExpanderBlock);
3568
3753
  app.component("FdsInteractionBlock", FdsInteractionBlock);
@@ -3574,36 +3759,38 @@ const FdsVueCorePlugin = {
3574
3759
  app.component("FdsTruncatedText", FdsTruncatedText);
3575
3760
  app.component("FdsHeading", _sfc_main$2);
3576
3761
  app.component("FdsSeparator", FdsSeparator);
3577
- app.component("FdsText", _sfc_main$o);
3762
+ app.component("FdsText", _sfc_main$q);
3578
3763
  app.component("FdsListHeading", _sfc_main);
3579
3764
  }
3580
3765
  };
3581
3766
  exports.FdsAlertBlock = FdsAlertBlock;
3582
- exports.FdsButton = _sfc_main$k;
3583
- exports.FdsCheckbox = _sfc_main$r;
3584
- exports.FdsContentBlock = _sfc_main$i;
3585
- exports.FdsCopyButton = _sfc_main$c;
3767
+ exports.FdsButtonCopy = _sfc_main$g;
3768
+ exports.FdsButtonIcon = _sfc_main$r;
3769
+ exports.FdsButtonMinor = _sfc_main$m;
3770
+ exports.FdsButtonPrimary = _sfc_main$i;
3771
+ exports.FdsButtonSecondary = _sfc_main$h;
3772
+ exports.FdsCheckbox = _sfc_main$t;
3773
+ exports.FdsContentBlock = _sfc_main$k;
3586
3774
  exports.FdsExpanderBlock = FdsExpanderBlock;
3587
3775
  exports.FdsHeading = _sfc_main$2;
3588
3776
  exports.FdsIcon = FdsIcon;
3589
- exports.FdsIconButton = _sfc_main$p;
3590
- exports.FdsInput = _sfc_main$j;
3777
+ exports.FdsInput = _sfc_main$l;
3591
3778
  exports.FdsInteractionBlock = FdsInteractionBlock;
3592
3779
  exports.FdsListHeading = _sfc_main;
3593
3780
  exports.FdsModal = FdsModal;
3594
3781
  exports.FdsPagination = FdsPagination;
3595
- exports.FdsRadio = _sfc_main$n;
3596
- exports.FdsSelect = _sfc_main$f;
3782
+ exports.FdsRadio = _sfc_main$p;
3783
+ exports.FdsSelect = _sfc_main$e;
3597
3784
  exports.FdsSeparator = FdsSeparator;
3598
- exports.FdsSpinner = _sfc_main$l;
3785
+ exports.FdsSpinner = _sfc_main$n;
3599
3786
  exports.FdsSticker = _sfc_main$8;
3600
3787
  exports.FdsTable = FdsTable;
3601
- exports.FdsTableHead = _sfc_main$d;
3788
+ exports.FdsTableHead = _sfc_main$c;
3602
3789
  exports.FdsTabs = _sfc_main$7;
3603
3790
  exports.FdsTabsItem = _sfc_main$6;
3604
- exports.FdsText = _sfc_main$o;
3605
- exports.FdsTextarea = _sfc_main$g;
3606
- exports.FdsTreeView = _sfc_main$h;
3791
+ exports.FdsText = _sfc_main$q;
3792
+ exports.FdsTextarea = _sfc_main$f;
3793
+ exports.FdsTreeView = _sfc_main$j;
3607
3794
  exports.FdsTruncatedText = FdsTruncatedText;
3608
3795
  exports.default = FdsVueCorePlugin;
3609
3796
  exports.useTreeState = useTreeState;