fds-vue-core 2.1.4 → 2.1.6

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 (121) hide show
  1. package/components.d.ts +8 -0
  2. package/configs/tsconfig.base.json +2 -1
  3. package/dist/fds-vue-core.cjs.js +35 -15
  4. package/dist/fds-vue-core.cjs.js.map +1 -1
  5. package/dist/fds-vue-core.es.js +35 -15
  6. package/dist/fds-vue-core.es.js.map +1 -1
  7. package/dist/global-components.d.ts +35 -33
  8. package/package.json +23 -21
  9. package/src/.DS_Store +0 -0
  10. package/src/App.vue +133 -0
  11. package/src/apply.css +60 -0
  12. package/src/assets/icons.ts +517 -0
  13. package/src/components/Blocks/FdsBlockAlert/FdsBlockAlert.stories.ts +94 -0
  14. package/src/components/Blocks/FdsBlockAlert/FdsBlockAlert.vue +112 -0
  15. package/src/components/Blocks/FdsBlockAlert/types.ts +12 -0
  16. package/src/components/Blocks/FdsBlockContent/FdsBlockContent.stories.ts +110 -0
  17. package/src/components/Blocks/FdsBlockContent/FdsBlockContent.vue +66 -0
  18. package/src/components/Blocks/FdsBlockContent/types.ts +6 -0
  19. package/src/components/Blocks/FdsBlockExpander/FdsBlockExpander.stories.ts +123 -0
  20. package/src/components/Blocks/FdsBlockExpander/FdsBlockExpander.vue +87 -0
  21. package/src/components/Blocks/FdsBlockExpander/types.ts +8 -0
  22. package/src/components/Blocks/FdsBlockInfo/FdsBlockInfo.stories.ts +110 -0
  23. package/src/components/Blocks/FdsBlockInfo/FdsBlockInfo.vue +75 -0
  24. package/src/components/Blocks/FdsBlockInfo/types.ts +9 -0
  25. package/src/components/Blocks/FdsBlockLink/FdsBlockLink.css +9 -0
  26. package/src/components/Blocks/FdsBlockLink/FdsBlockLink.stories.ts +179 -0
  27. package/src/components/Blocks/FdsBlockLink/FdsBlockLink.vue +149 -0
  28. package/src/components/Blocks/FdsBlockLink/types.ts +14 -0
  29. package/src/components/Buttons/ButtonBaseProps.ts +18 -0
  30. package/src/components/Buttons/FdsButtonCopy/FdsButtonCopy.stories.ts +53 -0
  31. package/src/components/Buttons/FdsButtonCopy/FdsButtonCopy.vue +87 -0
  32. package/src/components/Buttons/FdsButtonCopy/types.ts +8 -0
  33. package/src/components/Buttons/FdsButtonDownload/FdsButtonDownload.stories.ts +111 -0
  34. package/src/components/Buttons/FdsButtonDownload/FdsButtonDownload.vue +187 -0
  35. package/src/components/Buttons/FdsButtonIcon/FdsButtonIcon.stories.ts +55 -0
  36. package/src/components/Buttons/FdsButtonIcon/FdsButtonIcon.vue +57 -0
  37. package/src/components/Buttons/FdsButtonIcon/types.ts +12 -0
  38. package/src/components/Buttons/FdsButtonMinor/FdsButtonMinor.stories.ts +68 -0
  39. package/src/components/Buttons/FdsButtonMinor/FdsButtonMinor.vue +126 -0
  40. package/src/components/Buttons/FdsButtonPrimary/FdsButtonPrimary.stories.ts +86 -0
  41. package/src/components/Buttons/FdsButtonPrimary/FdsButtonPrimary.vue +107 -0
  42. package/src/components/Buttons/FdsButtonSecondary/FdsButtonSecondary.stories.ts +68 -0
  43. package/src/components/Buttons/FdsButtonSecondary/FdsButtonSecondary.vue +107 -0
  44. package/src/components/FdsIcon/FdsIcon.stories.ts +69 -0
  45. package/src/components/FdsIcon/FdsIcon.vue +34 -0
  46. package/src/components/FdsIcon/types.ts +9 -0
  47. package/src/components/FdsModal/FdsModal.stories.ts +241 -0
  48. package/src/components/FdsModal/FdsModal.vue +269 -0
  49. package/src/components/FdsModal/types.ts +12 -0
  50. package/src/components/FdsPagination/FdsPagination.stories.ts +109 -0
  51. package/src/components/FdsPagination/FdsPagination.vue +193 -0
  52. package/src/components/FdsPagination/types.ts +6 -0
  53. package/src/components/FdsSearchSelect/FdsSearchSelect.stories.ts +428 -0
  54. package/src/components/FdsSearchSelect/FdsSearchSelect.vue +621 -0
  55. package/src/components/FdsSearchSelect/types.ts +25 -0
  56. package/src/components/FdsSpinner/FdsSpinner.stories.ts +31 -0
  57. package/src/components/FdsSpinner/FdsSpinner.vue +90 -0
  58. package/src/components/FdsSpinner/types.ts +6 -0
  59. package/src/components/FdsSticker/FdsSticker.stories.ts +148 -0
  60. package/src/components/FdsSticker/FdsSticker.vue +44 -0
  61. package/src/components/FdsSticker/types.ts +4 -0
  62. package/src/components/FdsTreeView/FdsTreeView.stories.ts +136 -0
  63. package/src/components/FdsTreeView/FdsTreeView.vue +162 -0
  64. package/src/components/FdsTreeView/TreeNode.vue +383 -0
  65. package/src/components/FdsTreeView/types.ts +141 -0
  66. package/src/components/FdsTreeView/useTreeState.ts +607 -0
  67. package/src/components/FdsTreeView/utils.ts +69 -0
  68. package/src/components/FdsTruncatedText/FdsTruncatedText.stories.ts +78 -0
  69. package/src/components/FdsTruncatedText/FdsTruncatedText.vue +85 -0
  70. package/src/components/FdsTruncatedText/types.ts +6 -0
  71. package/src/components/Form/FdsCheckbox/FdsCheckbox.stories.ts +275 -0
  72. package/src/components/Form/FdsCheckbox/FdsCheckbox.vue +155 -0
  73. package/src/components/Form/FdsCheckbox/types.ts +10 -0
  74. package/src/components/Form/FdsInput/FdsInput.stories.ts +319 -0
  75. package/src/components/Form/FdsInput/FdsInput.vue +233 -0
  76. package/src/components/Form/FdsInput/types.ts +25 -0
  77. package/src/components/Form/FdsRadio/FdsRadio.stories.ts +63 -0
  78. package/src/components/Form/FdsRadio/FdsRadio.vue +88 -0
  79. package/src/components/Form/FdsRadio/types.ts +12 -0
  80. package/src/components/Form/FdsSelect/FdsSelect.stories.ts +78 -0
  81. package/src/components/Form/FdsSelect/FdsSelect.vue +136 -0
  82. package/src/components/Form/FdsSelect/types.ts +13 -0
  83. package/src/components/Form/FdsTextarea/FdsTextarea.stories.ts +52 -0
  84. package/src/components/Form/FdsTextarea/FdsTextarea.vue +110 -0
  85. package/src/components/Form/FdsTextarea/types.ts +12 -0
  86. package/src/components/Table/FdsTable/FdsTable.stories.ts +221 -0
  87. package/src/components/Table/FdsTable/FdsTable.vue +25 -0
  88. package/src/components/Table/FdsTable/types.ts +4 -0
  89. package/src/components/Table/FdsTableHead/FdsTableHead.stories.ts +151 -0
  90. package/src/components/Table/FdsTableHead/FdsTableHead.vue +54 -0
  91. package/src/components/Table/FdsTableHead/types.ts +5 -0
  92. package/src/components/Tabs/FdsTabs/FdsTabs.stories.ts +247 -0
  93. package/src/components/Tabs/FdsTabs/FdsTabs.vue +27 -0
  94. package/src/components/Tabs/FdsTabs/types.ts +4 -0
  95. package/src/components/Tabs/FdsTabsItem/FdsTabsItem.vue +125 -0
  96. package/src/components/Tabs/FdsTabsItem/types.ts +16 -0
  97. package/src/components/Typography/FdsHeading/FdsHeading.stories.ts +93 -0
  98. package/src/components/Typography/FdsHeading/FdsHeading.vue +51 -0
  99. package/src/components/Typography/FdsHeading/types.ts +5 -0
  100. package/src/components/Typography/FdsListHeading/FdsListHeading.stories.ts +58 -0
  101. package/src/components/Typography/FdsListHeading/FdsListHeading.vue +62 -0
  102. package/src/components/Typography/FdsListHeading/types.ts +8 -0
  103. package/src/components/Typography/FdsSeparator/FdsSeparator.stories.ts +31 -0
  104. package/src/components/Typography/FdsSeparator/FdsSeparator.vue +5 -0
  105. package/src/components/Typography/FdsText/FdsText.stories.ts +66 -0
  106. package/src/components/Typography/FdsText/FdsText.vue +28 -0
  107. package/src/components/Typography/FdsText/types.ts +3 -0
  108. package/src/composables/useBoldQuery.ts +29 -0
  109. package/src/composables/useElementFinalSize.ts +24 -0
  110. package/src/composables/useHasSlots.ts +17 -0
  111. package/src/composables/useIsPid.ts +48 -0
  112. package/src/docs/Start/Start.mdx +12 -0
  113. package/src/docs/Usage.md +117 -0
  114. package/src/fonts.css +28 -0
  115. package/src/global-components.ts +75 -0
  116. package/src/index.ts +180 -0
  117. package/src/main.ts +7 -0
  118. package/src/slot-styles.css +93 -0
  119. package/src/style.css +89 -0
  120. package/src/tokens.css +252 -0
  121. package/dist/index.d.ts +0 -2
@@ -1199,8 +1199,9 @@ const getTitleFromProperties = (node, titleTemplate) => {
1199
1199
  if (!titleTemplate) {
1200
1200
  return node.title;
1201
1201
  }
1202
- const templateVariables = extractTemplateVariables(titleTemplate);
1203
- let result = titleTemplate;
1202
+ const template = titleTemplate ?? "";
1203
+ const templateVariables = extractTemplateVariables(template);
1204
+ let result = template;
1204
1205
  templateVariables.forEach((variable) => {
1205
1206
  const value = getNodePropertyValue(node, variable);
1206
1207
  const regex = new RegExp(`\\[\\[${variable.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\]\\]`, "g");
@@ -1213,7 +1214,9 @@ const extractTemplateVariables = (template) => {
1213
1214
  const matches = [];
1214
1215
  let match;
1215
1216
  while ((match = regex.exec(template)) !== null) {
1216
- matches.push(match[1]);
1217
+ if (match[1]) {
1218
+ matches.push(match[1]);
1219
+ }
1217
1220
  }
1218
1221
  return matches;
1219
1222
  };
@@ -6573,6 +6576,13 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
6573
6576
  "sticky bg-white bottom-0 shadow-[0px_-8px_16px_0px_rgba(255,255,255,0.59)] z-[2] -mx-6 px-6 pb-6": props.stickyFooter
6574
6577
  }
6575
6578
  ]);
6579
+ const setHtmlOverflow = (value) => {
6580
+ if (typeof document === "undefined") return;
6581
+ const htmlEl = document.documentElement;
6582
+ if (htmlEl) {
6583
+ htmlEl.style.overflow = value;
6584
+ }
6585
+ };
6576
6586
  const handleBackdropClick = () => {
6577
6587
  handleClose("backdrop");
6578
6588
  };
@@ -6581,7 +6591,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
6581
6591
  return;
6582
6592
  }
6583
6593
  isOpen.value = false;
6584
- document.getElementsByTagName("html")[0].style.overflow = "auto";
6594
+ setHtmlOverflow("auto");
6585
6595
  nextTick(() => {
6586
6596
  if (previouslyFocusedElement.value) {
6587
6597
  previouslyFocusedElement.value.focus();
@@ -6636,11 +6646,11 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
6636
6646
  if (newValue) {
6637
6647
  previouslyFocusedElement.value = document.activeElement;
6638
6648
  if (props.lockScroll) {
6639
- document.getElementsByTagName("html")[0].style.overflow = "hidden";
6649
+ setHtmlOverflow("hidden");
6640
6650
  }
6641
6651
  trapFocus();
6642
6652
  } else {
6643
- document.getElementsByTagName("html")[0].style.overflow = "auto";
6653
+ setHtmlOverflow("auto");
6644
6654
  if (cleanupFocusTrap) {
6645
6655
  cleanupFocusTrap();
6646
6656
  cleanupFocusTrap = null;
@@ -6659,14 +6669,14 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
6659
6669
  if (props.open) {
6660
6670
  previouslyFocusedElement.value = document.activeElement;
6661
6671
  if (props.lockScroll) {
6662
- document.getElementsByTagName("html")[0].style.overflow = "hidden";
6672
+ setHtmlOverflow("hidden");
6663
6673
  }
6664
6674
  trapFocus();
6665
6675
  }
6666
6676
  });
6667
6677
  onBeforeUnmount(() => {
6668
6678
  document.removeEventListener("keydown", handleKeyDown, true);
6669
- document.getElementsByTagName("html")[0].style.overflow = "auto";
6679
+ setHtmlOverflow("auto");
6670
6680
  if (cleanupFocusTrap) {
6671
6681
  cleanupFocusTrap();
6672
6682
  }
@@ -6986,6 +6996,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
6986
6996
  emits: ["searchSelected", "paginate", "total", "change"],
6987
6997
  setup(__props, { emit: __emit }) {
6988
6998
  const props = __props;
6999
+ const searchFields = computed(() => props.searchFields ?? []);
6989
7000
  const emit = __emit;
6990
7001
  const dropdownVisible = ref(false);
6991
7002
  const singleItemName = ref("");
@@ -7028,7 +7039,9 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
7028
7039
  return { maxHeight: `${maxHeight}px` };
7029
7040
  });
7030
7041
  const sortResponse = (response) => {
7031
- const allKeys = [...props.searchFields, ...Object.keys(response[0]).filter((k) => !props.searchFields.includes(k))];
7042
+ if (!response.length) return [];
7043
+ const firstItem = response[0] ?? {};
7044
+ const allKeys = [...searchFields.value, ...Object.keys(firstItem).filter((k) => !searchFields.value.includes(k))];
7032
7045
  return response.map((item) => {
7033
7046
  const sorted = {};
7034
7047
  allKeys.forEach((key) => {
@@ -7043,7 +7056,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
7043
7056
  const searchLower = searchValue.toLowerCase();
7044
7057
  const pidRegex = /^\d{8}[a-zA-Z0-9]{4}$/;
7045
7058
  if (pidRegex.test(searchValue)) return true;
7046
- return props.searchFields.some((key) => {
7059
+ return searchFields.value.some((key) => {
7047
7060
  const value = item[key];
7048
7061
  if (!value) return false;
7049
7062
  const stringValue = String(value);
@@ -7059,7 +7072,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
7059
7072
  emit("total", 0);
7060
7073
  return;
7061
7074
  }
7062
- let sourceData = props.items;
7075
+ let sourceData = props.items ?? [];
7063
7076
  if (props.preserveOrder && sourceData.length) {
7064
7077
  sourceData = sortResponse(sourceData);
7065
7078
  }
@@ -7164,7 +7177,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
7164
7177
  return void 0;
7165
7178
  });
7166
7179
  const handleMatchingString = (item) => {
7167
- const values = props.searchFields.map((key) => String(item[key] || ""));
7180
+ const values = searchFields.value.map((key) => String(item[key] || ""));
7168
7181
  let result = "";
7169
7182
  if (values.length === 1) {
7170
7183
  result = values[0] || "";
@@ -7206,7 +7219,8 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
7206
7219
  if (keyEvent.key === "Enter" || keyEvent.code === "Space" || e.type === "mouseup") {
7207
7220
  e.preventDefault();
7208
7221
  e.stopPropagation();
7209
- searchTerm.value = item[props.searchFields[0]] || "";
7222
+ const firstField = searchFields.value[0];
7223
+ searchTerm.value = (firstField ? item[firstField] : "") || "";
7210
7224
  selectItem(item);
7211
7225
  focusedIndex.value = -1;
7212
7226
  dropdownVisible.value = false;
@@ -7270,9 +7284,15 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
7270
7284
  case "Enter":
7271
7285
  e.preventDefault();
7272
7286
  if (focusedIndex.value >= 0 && focusedIndex.value < displayedItems.value.length) {
7273
- handleClick(e, displayedItems.value[focusedIndex.value]);
7287
+ const focusedItem = displayedItems.value[focusedIndex.value];
7288
+ if (focusedItem) {
7289
+ handleClick(e, focusedItem);
7290
+ }
7274
7291
  } else if (displayedItems.value.length === 1) {
7275
- handleClick(e, displayedItems.value[0]);
7292
+ const onlyItem = displayedItems.value[0];
7293
+ if (onlyItem) {
7294
+ handleClick(e, onlyItem);
7295
+ }
7276
7296
  }
7277
7297
  break;
7278
7298
  case "Escape":