@fkui/vue 6.3.0 → 6.4.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.
@@ -1,5 +1,5 @@
1
- import { defineComponent, computed, createElementBlock, openBlock, normalizeClass, renderSlot, mergeProps, createTextVNode, createElementVNode, createApp, resolveComponent, createCommentVNode, withKeys, createVNode, toDisplayString, createBlock, withCtx, Fragment, renderList, withModifiers, isVNode, Comment, getCurrentInstance, resolveDynamicComponent, onMounted, toValue, onUnmounted, useSlots, ref, normalizeProps, guardReactiveProps, unref, Transition, Teleport, normalizeStyle, useTemplateRef, watchEffect, watch, nextTick, withDirectives, vShow, readonly, inject, toRef, provide, createSlots, vModelSelect, vModelDynamic, toHandlers, shallowRef, onUpdated, toRefs, getCurrentScope, onScopeDispose, defineCustomElement } from "vue";
2
- import { TranslationService, isSet, configLogic, focus as focus$1, ElementIdService, findTabbableElements, popFocus, pushFocus, scrollTo, documentOrderComparator, ValidationService, isValidatableHTMLElement, alertScreenReader, debounce, handleTab, isEmpty, deepClone, parseNumber, formatNumber, parseBankAccountNumber, parseBankgiro, parseClearingNumber, parsePersonnummer, formatPersonnummer, parsePlusgiro, formatPostalCode, parsePercent, formatPercent, parseOrganisationsnummer, isInvalidDatesConfig, isInvalidWeekdaysConfig, parseDate, waitForScreenReader, focusFirst, removeFocusListener, restoreFocus, saveFocus, addFocusListener, DomUtils } from "@fkui/logic";
1
+ import { defineComponent, computed, createElementBlock, openBlock, normalizeClass, renderSlot, mergeProps, createTextVNode, createElementVNode, createApp, resolveComponent, createCommentVNode, withKeys, createVNode, toDisplayString, createBlock, withCtx, Fragment, renderList, withModifiers, isVNode, Comment, getCurrentInstance, resolveDynamicComponent, onMounted, toValue, onUnmounted, useSlots, ref, normalizeProps, guardReactiveProps, unref, Transition, Teleport, normalizeStyle, useTemplateRef, watchEffect, watch, nextTick, withDirectives, vShow, readonly, inject, toRef, provide, createSlots, vModelSelect, vModelDynamic, toHandlers, shallowRef, onUpdated, toRefs, getCurrentScope, onScopeDispose, defineCustomElement, effectScope } from "vue";
2
+ import { TranslationService, isSet, configLogic, focus as focus$1, ElementIdService, findTabbableElements, popFocus, pushFocus, scrollTo, documentOrderComparator, ValidationService, availableValidators, isValidatableHTMLElement, alertScreenReader, debounce, handleTab, isEmpty, deepClone, parseNumber, formatNumber, parseBankAccountNumber, parseBankgiro, parseClearingNumber, parsePersonnummer, formatPersonnummer, parsePlusgiro, formatPostalCode, parsePercent, formatPercent, parseOrganisationsnummer, isInvalidDatesConfig, isInvalidWeekdaysConfig, parseDate, waitForScreenReader, focusFirst, removeFocusListener, restoreFocus, saveFocus, addFocusListener, DomUtils } from "@fkui/logic";
3
3
  import { groupByWeek, getWeekdayNamings, FDate, DateFormat } from "@fkui/date";
4
4
  const statuses = ["default", "warning", "error", "success", "info"];
5
5
  const _sfc_main$1e = /* @__PURE__ */ defineComponent({
@@ -1970,17 +1970,17 @@ const _export_sfc = (sfc, props) => {
1970
1970
  return target;
1971
1971
  };
1972
1972
  const _hoisted_1$X = ["aria-hidden"];
1973
- const _hoisted_2$G = ["xlink:href"];
1974
- function _sfc_render$R(_ctx, _cache, $props, $setup, $data, $options) {
1973
+ const _hoisted_2$G = ["href"];
1974
+ function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
1975
1975
  return openBlock(), createElementBlock("svg", mergeProps(_ctx.$attrs, {
1976
1976
  focusable: "false",
1977
1977
  class: ["icon", [_ctx.spriteKey, ..._ctx.modifiers]],
1978
1978
  "aria-hidden": _ctx.ariaHidden
1979
1979
  }), [renderSlot(_ctx.$slots, "default"), _cache[0] || (_cache[0] = createTextVNode()), createElementVNode("use", {
1980
- "xlink:href": _ctx.spriteId
1980
+ href: _ctx.spriteId
1981
1981
  }, null, 8, _hoisted_2$G)], 16, _hoisted_1$X);
1982
1982
  }
1983
- const FIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1d, [["render", _sfc_render$R]]);
1983
+ const FIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1d, [["render", _sfc_render$Q]]);
1984
1984
  const DATA_TEST_ATTRIBUTE_NAME = "data-test";
1985
1985
  function throwErrorIfEmpty(value) {
1986
1986
  if (!value) {
@@ -3861,8 +3861,8 @@ function require_Set() {
3861
3861
  if (hasRequired_Set) return _Set;
3862
3862
  hasRequired_Set = 1;
3863
3863
  var getNative = require_getNative(), root = require_root();
3864
- var Set = getNative(root, "Set");
3865
- _Set = Set;
3864
+ var Set2 = getNative(root, "Set");
3865
+ _Set = Set2;
3866
3866
  return _Set;
3867
3867
  }
3868
3868
  var _WeakMap;
@@ -3880,12 +3880,12 @@ var hasRequired_getTag;
3880
3880
  function require_getTag() {
3881
3881
  if (hasRequired_getTag) return _getTag;
3882
3882
  hasRequired_getTag = 1;
3883
- var DataView2 = require_DataView(), Map2 = require_Map(), Promise2 = require_Promise(), Set = require_Set(), WeakMap2 = require_WeakMap(), baseGetTag = require_baseGetTag(), toSource = require_toSource();
3883
+ var DataView2 = require_DataView(), Map2 = require_Map(), Promise2 = require_Promise(), Set2 = require_Set(), WeakMap2 = require_WeakMap(), baseGetTag = require_baseGetTag(), toSource = require_toSource();
3884
3884
  var mapTag = "[object Map]", objectTag = "[object Object]", promiseTag = "[object Promise]", setTag = "[object Set]", weakMapTag = "[object WeakMap]";
3885
3885
  var dataViewTag = "[object DataView]";
3886
- var dataViewCtorString = toSource(DataView2), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set), weakMapCtorString = toSource(WeakMap2);
3886
+ var dataViewCtorString = toSource(DataView2), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2);
3887
3887
  var getTag = baseGetTag;
3888
- if (DataView2 && getTag(new DataView2(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap2 && getTag(new WeakMap2()) != weakMapTag) {
3888
+ if (DataView2 && getTag(new DataView2(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap2 && getTag(new WeakMap2()) != weakMapTag) {
3889
3889
  getTag = function(value) {
3890
3890
  var result = baseGetTag(value), Ctor = result == objectTag ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : "";
3891
3891
  if (ctorString) {
@@ -4602,7 +4602,7 @@ const _hoisted_1$W = ["id"];
4602
4602
  const _hoisted_2$F = {
4603
4603
  class: "modal__backdrop"
4604
4604
  };
4605
- const _hoisted_3$w = {
4605
+ const _hoisted_3$x = {
4606
4606
  class: "modal__inner-container"
4607
4607
  };
4608
4608
  const _hoisted_4$q = {
@@ -4632,7 +4632,7 @@ const _hoisted_10$3 = {
4632
4632
  class: "modal__shelf"
4633
4633
  };
4634
4634
  const _hoisted_11$3 = ["aria-label"];
4635
- function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
4635
+ function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) {
4636
4636
  const _component_f_icon = resolveComponent("f-icon");
4637
4637
  return _ctx.isOpen ? (openBlock(), createElementBlock("div", {
4638
4638
  key: 0,
@@ -4644,7 +4644,7 @@ function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
4644
4644
  role: "dialog",
4645
4645
  "aria-modal": "true",
4646
4646
  onKeyup: _cache[3] || (_cache[3] = withKeys((...args) => _ctx.onClose && _ctx.onClose(...args), ["esc"]))
4647
- }, [createElementVNode("div", _hoisted_3$w, [createElementVNode("div", {
4647
+ }, [createElementVNode("div", _hoisted_3$x, [createElementVNode("div", {
4648
4648
  ref: "modalDialogContainer",
4649
4649
  class: normalizeClass(["modal__dialog-container", _ctx.containerClasses])
4650
4650
  }, [createElementVNode("div", _hoisted_4$q, [createElementVNode("div", _hoisted_5$l, [createElementVNode("div", _hoisted_6$g, [createElementVNode("div", {
@@ -4662,7 +4662,7 @@ function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
4662
4662
  onFocus: _cache[2] || (_cache[2] = (...args) => _ctx.onFocusLast && _ctx.onFocusLast(...args))
4663
4663
  }, null, 32)])])], 2)])], 32)])], 10, _hoisted_1$W)) : createCommentVNode("", true);
4664
4664
  }
4665
- const FModal = /* @__PURE__ */ _export_sfc(_sfc_main$1c, [["render", _sfc_render$Q]]);
4665
+ const FModal = /* @__PURE__ */ _export_sfc(_sfc_main$1c, [["render", _sfc_render$P]]);
4666
4666
  function prepareButtonList(src, buttonOrder = config.buttonOrder) {
4667
4667
  const list = src.map((it) => {
4668
4668
  var _it$event, _ref, _it$reason, _it$type;
@@ -4799,11 +4799,11 @@ const _hoisted_1$V = {
4799
4799
  class: "button-group"
4800
4800
  };
4801
4801
  const _hoisted_2$E = ["onClick"];
4802
- const _hoisted_3$v = {
4802
+ const _hoisted_3$w = {
4803
4803
  key: 0,
4804
4804
  class: "sr-only"
4805
4805
  };
4806
- function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) {
4806
+ function _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) {
4807
4807
  const _component_f_modal = resolveComponent("f-modal");
4808
4808
  return openBlock(), createBlock(_component_f_modal, {
4809
4809
  fullscreen: _ctx.fullscreen,
@@ -4822,12 +4822,12 @@ function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) {
4822
4822
  type: "button",
4823
4823
  class: normalizeClass([button.classlist, "button-group__item"]),
4824
4824
  onClick: ($event) => _ctx.onClick(button)
4825
- }, [createElementVNode("span", null, toDisplayString(button.label), 1), _cache[0] || (_cache[0] = createTextVNode()), button.screenreader ? (openBlock(), createElementBlock("span", _hoisted_3$v, " " + toDisplayString(button.screenreader), 1)) : createCommentVNode("", true)], 10, _hoisted_2$E);
4825
+ }, [createElementVNode("span", null, toDisplayString(button.label), 1), _cache[0] || (_cache[0] = createTextVNode()), button.screenreader ? (openBlock(), createElementBlock("span", _hoisted_3$w, " " + toDisplayString(button.screenreader), 1)) : createCommentVNode("", true)], 10, _hoisted_2$E);
4826
4826
  }), 128))])]),
4827
4827
  _: 3
4828
4828
  }, 8, ["fullscreen", "is-open", "aria-close-text", "size", "focus", "onClose"]);
4829
4829
  }
4830
- const FConfirmModal = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [["render", _sfc_render$P]]);
4830
+ const FConfirmModal = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [["render", _sfc_render$O]]);
4831
4831
  const GAP = ["1x", "2x", "3x", "4x", "5x", "6x", "7x", "8x"];
4832
4832
  const ALIGNMENT = ["top", "center", "bottom"];
4833
4833
  const FLOAT = ["left", "center", "right"];
@@ -4906,12 +4906,12 @@ const _sfc_main$1a = defineComponent({
4906
4906
  }
4907
4907
  }
4908
4908
  });
4909
- function _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) {
4909
+ function _sfc_render$N(_ctx, _cache, $props, $setup, $data, $options) {
4910
4910
  return openBlock(), createElementBlock("div", {
4911
4911
  class: normalizeClass(["iflex", _ctx.classList])
4912
4912
  }, [renderSlot(_ctx.$slots, "default")], 2);
4913
4913
  }
4914
- const IFlex = /* @__PURE__ */ _export_sfc(_sfc_main$1a, [["render", _sfc_render$O]]);
4914
+ const IFlex = /* @__PURE__ */ _export_sfc(_sfc_main$1a, [["render", _sfc_render$N]]);
4915
4915
  const _sfc_main$19 = defineComponent({
4916
4916
  name: "IFlexItem",
4917
4917
  inheritAttrs: true,
@@ -4959,12 +4959,12 @@ const _sfc_main$19 = defineComponent({
4959
4959
  }
4960
4960
  }
4961
4961
  });
4962
- function _sfc_render$N(_ctx, _cache, $props, $setup, $data, $options) {
4962
+ function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
4963
4963
  return openBlock(), createElementBlock("div", {
4964
4964
  class: normalizeClass(["iflex__item", _ctx.classList])
4965
4965
  }, [renderSlot(_ctx.$slots, "default")], 2);
4966
4966
  }
4967
- const IFlexItem = /* @__PURE__ */ _export_sfc(_sfc_main$19, [["render", _sfc_render$N]]);
4967
+ const IFlexItem = /* @__PURE__ */ _export_sfc(_sfc_main$19, [["render", _sfc_render$M]]);
4968
4968
  function focusError(item) {
4969
4969
  const element = document.querySelector(`#${item.id}`);
4970
4970
  if (!element) {
@@ -5036,14 +5036,14 @@ const _hoisted_1$U = {
5036
5036
  const _hoisted_2$D = {
5037
5037
  key: 0
5038
5038
  };
5039
- const _hoisted_3$u = {
5039
+ const _hoisted_3$v = {
5040
5040
  class: "error-list__list error-list--list-style-none"
5041
5041
  };
5042
5042
  const _hoisted_4$p = ["onClick"];
5043
5043
  const _hoisted_5$k = {
5044
5044
  class: "error-list__link"
5045
5045
  };
5046
- function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
5046
+ function _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) {
5047
5047
  const _component_f_icon = resolveComponent("f-icon");
5048
5048
  const _component_i_flex_item = resolveComponent("i-flex-item");
5049
5049
  const _component_i_flex = resolveComponent("i-flex");
@@ -5066,7 +5066,7 @@ function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
5066
5066
  })) : createCommentVNode("", true), _cache[7] || (_cache[7] = createTextVNode()), createVNode(_component_i_flex_item, {
5067
5067
  grow: ""
5068
5068
  }, {
5069
- default: withCtx(() => [_ctx.hasTitleSlot ? (openBlock(), createElementBlock("div", _hoisted_2$D, [renderSlot(_ctx.$slots, "title")])) : createCommentVNode("", true), _cache[5] || (_cache[5] = createTextVNode()), createElementVNode("ul", _hoisted_3$u, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.items, (item) => {
5069
+ default: withCtx(() => [_ctx.hasTitleSlot ? (openBlock(), createElementBlock("div", _hoisted_2$D, [renderSlot(_ctx.$slots, "title")])) : createCommentVNode("", true), _cache[5] || (_cache[5] = createTextVNode()), createElementVNode("ul", _hoisted_3$v, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.items, (item) => {
5070
5070
  return openBlock(), createElementBlock("li", {
5071
5071
  key: item.id,
5072
5072
  class: normalizeClass(_ctx.liClasses(item))
@@ -5097,7 +5097,7 @@ function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
5097
5097
  _: 3
5098
5098
  })]);
5099
5099
  }
5100
- const FErrorList = /* @__PURE__ */ _export_sfc(_sfc_main$18, [["render", _sfc_render$M]]);
5100
+ const FErrorList = /* @__PURE__ */ _export_sfc(_sfc_main$18, [["render", _sfc_render$L]]);
5101
5101
  var es_iterator_every = {};
5102
5102
  var hasRequiredEs_iterator_every;
5103
5103
  function requireEs_iterator_every() {
@@ -5255,13 +5255,13 @@ const _sfc_main$17 = defineComponent({
5255
5255
  }
5256
5256
  }
5257
5257
  });
5258
- function _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) {
5258
+ function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
5259
5259
  return openBlock(), createElementBlock("div", {
5260
5260
  onComponentValidity: _cache[0] || (_cache[0] = (...args) => _ctx.onComponentValidity && _ctx.onComponentValidity(...args)),
5261
5261
  onComponentUnmount: _cache[1] || (_cache[1] = (...args) => _ctx.onComponentUnmount && _ctx.onComponentUnmount(...args))
5262
5262
  }, [renderSlot(_ctx.$slots, "default")], 32);
5263
5263
  }
5264
- const FValidationGroup = /* @__PURE__ */ _export_sfc(_sfc_main$17, [["render", _sfc_render$L]]);
5264
+ const FValidationGroup = /* @__PURE__ */ _export_sfc(_sfc_main$17, [["render", _sfc_render$K]]);
5265
5265
  var FValidationFormAction = /* @__PURE__ */ ((FValidationFormAction2) => {
5266
5266
  FValidationFormAction2[FValidationFormAction2["CONTINUE"] = 0] = "CONTINUE";
5267
5267
  FValidationFormAction2[FValidationFormAction2["CANCEL"] = 1] = "CANCEL";
@@ -5413,7 +5413,7 @@ const _hoisted_2$C = {
5413
5413
  tabindex: "-1",
5414
5414
  role: "group"
5415
5415
  };
5416
- function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
5416
+ function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
5417
5417
  const _component_f_error_list = resolveComponent("f-error-list");
5418
5418
  const _component_f_validation_group = resolveComponent("f-validation-group");
5419
5419
  return openBlock(), createBlock(_component_f_validation_group, {
@@ -5439,7 +5439,7 @@ function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
5439
5439
  _: 3
5440
5440
  }, 8, ["modelValue"]);
5441
5441
  }
5442
- const FValidationForm = /* @__PURE__ */ _export_sfc(_sfc_main$16, [["render", _sfc_render$K]]);
5442
+ const FValidationForm = /* @__PURE__ */ _export_sfc(_sfc_main$16, [["render", _sfc_render$J]]);
5443
5443
  const _sfc_main$15 = defineComponent({
5444
5444
  name: "FFormModal",
5445
5445
  components: {
@@ -5538,6 +5538,14 @@ const _sfc_main$15 = defineComponent({
5538
5538
  default() {
5539
5539
  }
5540
5540
  },
5541
+ /**
5542
+ * List of buttons to display in the modal.
5543
+ * Each button is defined as an FModalButtonDescriptor with the following properties:
5544
+ * - `label` (String): The text displayed on the button.
5545
+ * - `event` (String): The event emitted when the button is clicked.
5546
+ * - `type` (String): The button type. Valid values are: "primary" or "secondary".
5547
+ * - `submitButton` (Boolean): Whether the button is a submit button.
5548
+ */
5541
5549
  buttons: {
5542
5550
  type: Array,
5543
5551
  required: false,
@@ -5593,11 +5601,11 @@ const _hoisted_1$S = {
5593
5601
  class: "button-group"
5594
5602
  };
5595
5603
  const _hoisted_2$B = ["type", "form", "onClick"];
5596
- const _hoisted_3$t = {
5604
+ const _hoisted_3$u = {
5597
5605
  key: 0,
5598
5606
  class: "sr-only"
5599
5607
  };
5600
- function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
5608
+ function _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) {
5601
5609
  const _component_f_validation_form = resolveComponent("f-validation-form");
5602
5610
  const _component_f_modal = resolveComponent("f-modal");
5603
5611
  return openBlock(), createBlock(_component_f_modal, {
@@ -5628,12 +5636,12 @@ function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
5628
5636
  class: normalizeClass([button.classlist, "button-group__item"]),
5629
5637
  form: button.buttonType === "submit" ? _ctx.formId : void 0,
5630
5638
  onClick: ($event) => button.buttonType === "button" ? _ctx.onCancel() : false
5631
- }, [createElementVNode("span", null, toDisplayString(button.label), 1), _cache[2] || (_cache[2] = createTextVNode()), button.screenreader ? (openBlock(), createElementBlock("span", _hoisted_3$t, " " + toDisplayString(button.screenreader), 1)) : createCommentVNode("", true)], 10, _hoisted_2$B);
5639
+ }, [createElementVNode("span", null, toDisplayString(button.label), 1), _cache[2] || (_cache[2] = createTextVNode()), button.screenreader ? (openBlock(), createElementBlock("span", _hoisted_3$u, " " + toDisplayString(button.screenreader), 1)) : createCommentVNode("", true)], 10, _hoisted_2$B);
5632
5640
  }), 128))])]),
5633
5641
  _: 3
5634
5642
  }, 8, ["data-test", "fullscreen", "is-open", "size", "aria-close-text", "onClose"]);
5635
5643
  }
5636
- const FFormModal = /* @__PURE__ */ _export_sfc(_sfc_main$15, [["render", _sfc_render$J]]);
5644
+ const FFormModal = /* @__PURE__ */ _export_sfc(_sfc_main$15, [["render", _sfc_render$I]]);
5637
5645
  async function confirmModal(callingInstance, texts) {
5638
5646
  const buttons = [{
5639
5647
  label: texts.confirm,
@@ -5950,6 +5958,9 @@ const ValidationPrefixDirective = {
5950
5958
  };
5951
5959
  const ValidationPlugin = {
5952
5960
  install(app) {
5961
+ for (const validator of availableValidators) {
5962
+ ValidationService.registerValidator(validator);
5963
+ }
5953
5964
  app.directive("validation", ValidationDirective);
5954
5965
  app.directive("validationPrefix", ValidationPrefixDirective);
5955
5966
  }
@@ -6006,12 +6017,12 @@ const _sfc_main$14 = defineComponent({
6006
6017
  const _hoisted_1$R = {
6007
6018
  "data-test": "f-error-page"
6008
6019
  };
6009
- function _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) {
6020
+ function _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) {
6010
6021
  return openBlock(), createElementBlock("div", _hoisted_1$R, _cache[0] || (_cache[0] = [createElementVNode("h1", null, "Fel", -1), createTextVNode(), createElementVNode("p", null, "Ett fel har uppstått.", -1), createTextVNode(), createElementVNode("a", {
6011
6022
  href: "/"
6012
6023
  }, "Gå till startsidan", -1)]));
6013
6024
  }
6014
- const FErrorPage = /* @__PURE__ */ _export_sfc(_sfc_main$14, [["render", _sfc_render$I]]);
6025
+ const FErrorPage = /* @__PURE__ */ _export_sfc(_sfc_main$14, [["render", _sfc_render$H]]);
6015
6026
  const _sfc_main$13 = defineComponent({
6016
6027
  name: "FErrorHandlingApp",
6017
6028
  props: {
@@ -6041,7 +6052,7 @@ const _sfc_main$13 = defineComponent({
6041
6052
  });
6042
6053
  }
6043
6054
  });
6044
- function _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) {
6055
+ function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
6045
6056
  return openBlock(), createElementBlock("div", null, [_ctx.hasError ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.errorComponent), {
6046
6057
  key: 0,
6047
6058
  payload: _ctx.payload
@@ -6051,7 +6062,7 @@ function _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) {
6051
6062
  key: 2
6052
6063
  })]);
6053
6064
  }
6054
- const FErrorHandlingApp = /* @__PURE__ */ _export_sfc(_sfc_main$13, [["render", _sfc_render$H]]);
6065
+ const FErrorHandlingApp = /* @__PURE__ */ _export_sfc(_sfc_main$13, [["render", _sfc_render$G]]);
6055
6066
  function isMonthBefore(date, minDate) {
6056
6067
  return Boolean(minDate && date.isBefore(minDate.startOfMonth()));
6057
6068
  }
@@ -6212,7 +6223,7 @@ const _hoisted_2$A = {
6212
6223
  class: "calendar-navbar__month",
6213
6224
  tabindex: "-1"
6214
6225
  };
6215
- const _hoisted_3$s = ["aria-disabled", "aria-live"];
6226
+ const _hoisted_3$t = ["aria-disabled", "aria-live"];
6216
6227
  const _hoisted_4$o = {
6217
6228
  class: "sr-only"
6218
6229
  };
@@ -6220,7 +6231,7 @@ const _hoisted_5$j = ["aria-disabled", "aria-live"];
6220
6231
  const _hoisted_6$f = {
6221
6232
  class: "sr-only"
6222
6233
  };
6223
- function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
6234
+ function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
6224
6235
  const _component_f_icon = resolveComponent("f-icon");
6225
6236
  return openBlock(), createElementBlock("div", _hoisted_1$Q, [createElementVNode("div", _hoisted_2$A, toDisplayString(_ctx.currentText), 1), _cache[4] || (_cache[4] = createTextVNode()), createElementVNode("button", {
6226
6237
  ref: "previousButton",
@@ -6232,7 +6243,7 @@ function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
6232
6243
  }, [createElementVNode("span", _hoisted_4$o, toDisplayString(_ctx.previousSrText), 1), _cache[2] || (_cache[2] = createTextVNode()), createVNode(_component_f_icon, {
6233
6244
  class: normalizeClass(_ctx.previousIconClasses),
6234
6245
  name: "arrow-right"
6235
- }, null, 8, ["class"])], 8, _hoisted_3$s), _cache[5] || (_cache[5] = createTextVNode()), createElementVNode("button", {
6246
+ }, null, 8, ["class"])], 8, _hoisted_3$t), _cache[5] || (_cache[5] = createTextVNode()), createElementVNode("button", {
6236
6247
  ref: "nextButton",
6237
6248
  class: "calendar-navbar__arrow calendar-navbar__arrow--next",
6238
6249
  type: "button",
@@ -6244,7 +6255,7 @@ function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
6244
6255
  name: "arrow-right"
6245
6256
  }, null, 8, ["class"])], 8, _hoisted_5$j)]);
6246
6257
  }
6247
- const ICalendarNavbar = /* @__PURE__ */ _export_sfc(_sfc_main$12, [["render", _sfc_render$G]]);
6258
+ const ICalendarNavbar = /* @__PURE__ */ _export_sfc(_sfc_main$12, [["render", _sfc_render$F]]);
6248
6259
  function getDayStartOffset(days) {
6249
6260
  return days[0].weekDay - 1;
6250
6261
  }
@@ -6330,7 +6341,7 @@ const _hoisted_2$z = {
6330
6341
  key: 0,
6331
6342
  class: "calendar-month__col--week"
6332
6343
  };
6333
- const _hoisted_3$r = {
6344
+ const _hoisted_3$s = {
6334
6345
  key: 0,
6335
6346
  scope: "col",
6336
6347
  "aria-hidden": "true",
@@ -6357,7 +6368,7 @@ const _hoisted_11$2 = {
6357
6368
  "aria-hidden": "true"
6358
6369
  };
6359
6370
  const _hoisted_12$2 = ["colspan"];
6360
- function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
6371
+ function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
6361
6372
  return openBlock(), createElementBlock("table", {
6362
6373
  class: "calendar-month__table",
6363
6374
  role: "grid",
@@ -6378,7 +6389,7 @@ function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
6378
6389
  class: "calendar-month__col--day"
6379
6390
  }, null, -1)), _cache[14] || (_cache[14] = createTextVNode()), _cache[15] || (_cache[15] = createElementVNode("col", {
6380
6391
  class: "calendar-month__col--day"
6381
- }, null, -1))]), _cache[22] || (_cache[22] = createTextVNode()), createElementVNode("thead", null, [createElementVNode("tr", null, [!_ctx.internalHideWeekNumbers ? (openBlock(), createElementBlock("th", _hoisted_3$r)) : createCommentVNode("", true), _cache[16] || (_cache[16] = createTextVNode()), (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.weekdays, (weekday) => {
6392
+ }, null, -1))]), _cache[22] || (_cache[22] = createTextVNode()), createElementVNode("thead", null, [createElementVNode("tr", null, [!_ctx.internalHideWeekNumbers ? (openBlock(), createElementBlock("th", _hoisted_3$s)) : createCommentVNode("", true), _cache[16] || (_cache[16] = createTextVNode()), (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.weekdays, (weekday) => {
6382
6393
  return openBlock(), createElementBlock("th", {
6383
6394
  key: weekday.name,
6384
6395
  scope: "col",
@@ -6420,7 +6431,7 @@ function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
6420
6431
  "aria-hidden": "true"
6421
6432
  }, null, 8, _hoisted_12$2)])) : createCommentVNode("", true)])], 40, _hoisted_1$P);
6422
6433
  }
6423
- const ICalendarMonthGrid = /* @__PURE__ */ _export_sfc(_sfc_main$11, [["render", _sfc_render$F]]);
6434
+ const ICalendarMonthGrid = /* @__PURE__ */ _export_sfc(_sfc_main$11, [["render", _sfc_render$E]]);
6424
6435
  const DayStep = {
6425
6436
  ArrowRight: 1,
6426
6437
  ArrowLeft: -1,
@@ -6535,7 +6546,7 @@ const _sfc_main$10 = defineComponent({
6535
6546
  }
6536
6547
  });
6537
6548
  const _hoisted_1$O = ["data-date", "tabindex", "onClick", "onKeydown"];
6538
- function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
6549
+ function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {
6539
6550
  const _component_i_calendar_month_grid = resolveComponent("i-calendar-month-grid");
6540
6551
  return openBlock(), createBlock(_component_i_calendar_month_grid, {
6541
6552
  value: _ctx.modelValue
@@ -6558,7 +6569,7 @@ function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
6558
6569
  _: 3
6559
6570
  }, 8, ["value"]);
6560
6571
  }
6561
- const ICalendarMonth = /* @__PURE__ */ _export_sfc(_sfc_main$10, [["render", _sfc_render$E]]);
6572
+ const ICalendarMonth = /* @__PURE__ */ _export_sfc(_sfc_main$10, [["render", _sfc_render$D]]);
6562
6573
  const _sfc_main$$ = defineComponent({
6563
6574
  name: "FCalendar",
6564
6575
  components: {
@@ -6613,7 +6624,7 @@ const _sfc_main$$ = defineComponent({
6613
6624
  const _hoisted_1$N = {
6614
6625
  class: "calendar__wrapper"
6615
6626
  };
6616
- function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {
6627
+ function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) {
6617
6628
  const _component_i_calendar_navbar = resolveComponent("i-calendar-navbar");
6618
6629
  const _component_i_calendar_month = resolveComponent("i-calendar-month");
6619
6630
  return openBlock(), createElementBlock("div", _hoisted_1$N, [createVNode(_component_i_calendar_navbar, {
@@ -6639,7 +6650,7 @@ function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {
6639
6650
  _: 3
6640
6651
  }, 8, ["model-value", "min-date", "max-date", "tab-date", "onClick", "onUpdate:modelValue"])]);
6641
6652
  }
6642
- const FCalendar = /* @__PURE__ */ _export_sfc(_sfc_main$$, [["render", _sfc_render$D]]);
6653
+ const FCalendar = /* @__PURE__ */ _export_sfc(_sfc_main$$, [["render", _sfc_render$C]]);
6643
6654
  function getCalendarDaySrText(day, enabled, selected, t) {
6644
6655
  const parts = [];
6645
6656
  if (!enabled) {
@@ -6729,12 +6740,12 @@ const _hoisted_1$M = {
6729
6740
  const _hoisted_2$y = {
6730
6741
  class: "sr-only"
6731
6742
  };
6732
- function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) {
6743
+ function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
6733
6744
  return openBlock(), createElementBlock("span", {
6734
6745
  class: normalizeClass(_ctx.dayClasses)
6735
6746
  }, [createElementVNode("span", _hoisted_1$M, toDisplayString(_ctx.day.day), 1), _cache[0] || (_cache[0] = createTextVNode()), createElementVNode("span", _hoisted_2$y, toDisplayString(_ctx.srText), 1)], 2);
6736
6747
  }
6737
- const FCalendarDay = /* @__PURE__ */ _export_sfc(_sfc_main$_, [["render", _sfc_render$C]]);
6748
+ const FCalendarDay = /* @__PURE__ */ _export_sfc(_sfc_main$_, [["render", _sfc_render$B]]);
6738
6749
  function useEventListener$1(target, event, callback) {
6739
6750
  onMounted(() => {
6740
6751
  var _a;
@@ -6760,7 +6771,7 @@ const _hoisted_2$x = {
6760
6771
  key: 0,
6761
6772
  class: "card__header"
6762
6773
  };
6763
- const _hoisted_3$q = {
6774
+ const _hoisted_3$r = {
6764
6775
  class: "card__content"
6765
6776
  };
6766
6777
  const _hoisted_4$m = {
@@ -6805,6 +6816,9 @@ const _sfc_main$Z = /* @__PURE__ */ defineComponent({
6805
6816
  if (!isMounted.value) {
6806
6817
  return;
6807
6818
  }
6819
+ if (detail.elementId !== props.id) {
6820
+ return;
6821
+ }
6808
6822
  if (!props.focusRef) {
6809
6823
  throw new Error("Element to focus on when card is invalid (`focusRef`) is required when using card validation.");
6810
6824
  }
@@ -6850,7 +6864,7 @@ const _sfc_main$Z = /* @__PURE__ */ defineComponent({
6850
6864
  _: 1
6851
6865
  })]),
6852
6866
  _: 1
6853
- })) : createCommentVNode("", true)]), _cache[2] || (_cache[2] = createTextVNode()), createElementVNode("div", _hoisted_3$q, [renderSlot(_ctx.$slots, "default")]), _cache[3] || (_cache[3] = createTextVNode()), hasFooterSlot.value ? (openBlock(), createElementBlock("div", _hoisted_4$m, [renderSlot(_ctx.$slots, "footer", normalizeProps(guardReactiveProps({
6867
+ })) : createCommentVNode("", true)]), _cache[2] || (_cache[2] = createTextVNode()), createElementVNode("div", _hoisted_3$r, [renderSlot(_ctx.$slots, "default")]), _cache[3] || (_cache[3] = createTextVNode()), hasFooterSlot.value ? (openBlock(), createElementBlock("div", _hoisted_4$m, [renderSlot(_ctx.$slots, "footer", normalizeProps(guardReactiveProps({
6854
6868
  hasError: hasError.value,
6855
6869
  validationMessage: validationMessage.value
6856
6870
  })))])) : createCommentVNode("", true)], 42, _hoisted_1$L);
@@ -6911,7 +6925,7 @@ const _sfc_main$Y = defineComponent({
6911
6925
  }
6912
6926
  }
6913
6927
  });
6914
- function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
6928
+ function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
6915
6929
  return openBlock(), createBlock(Transition, {
6916
6930
  onEnter: _ctx.enter,
6917
6931
  onAfterEnter: _ctx.afterEnter,
@@ -6923,7 +6937,7 @@ function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
6923
6937
  _: 3
6924
6938
  }, 8, ["onEnter", "onAfterEnter", "onLeave"]);
6925
6939
  }
6926
- const FExpand = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [["render", _sfc_render$B]]);
6940
+ const FExpand = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [["render", _sfc_render$A]]);
6927
6941
  function offset(page, el) {
6928
6942
  const rect = el.getBoundingClientRect();
6929
6943
  return {
@@ -7489,7 +7503,7 @@ const _sfc_main$X = defineComponent({
7489
7503
  }
7490
7504
  }
7491
7505
  });
7492
- function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
7506
+ function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
7493
7507
  return _ctx.isOpen ? (openBlock(), createBlock(Teleport, {
7494
7508
  key: 0,
7495
7509
  to: _ctx.teleportTarget,
@@ -7510,7 +7524,7 @@ function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
7510
7524
  placement: _ctx.placement
7511
7525
  })))], 544)], 16)], 8, ["to", "disabled"])) : createCommentVNode("", true);
7512
7526
  }
7513
- const IPopup = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["render", _sfc_render$A]]);
7527
+ const IPopup = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["render", _sfc_render$z]]);
7514
7528
  function computeArrowOffset(placement, inputIconRect, wrapperRect) {
7515
7529
  switch (placement) {
7516
7530
  case Placement.A: {
@@ -7716,7 +7730,7 @@ const _hoisted_1$K = {
7716
7730
  ref: "wrapper",
7717
7731
  class: "popup-error__wrapper"
7718
7732
  };
7719
- function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
7733
+ function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
7720
7734
  const _component_f_icon = resolveComponent("f-icon");
7721
7735
  return _ctx.isOpen ? (openBlock(), createBlock(Teleport, {
7722
7736
  key: 0,
@@ -7740,7 +7754,7 @@ function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
7740
7754
  class: "button__icon"
7741
7755
  })])], 6)], 512)], 2)], 8, ["to", "disabled"])) : createCommentVNode("", true);
7742
7756
  }
7743
- const IPopupError = /* @__PURE__ */ _export_sfc(_sfc_main$W, [["render", _sfc_render$z]]);
7757
+ const IPopupError = /* @__PURE__ */ _export_sfc(_sfc_main$W, [["render", _sfc_render$y]]);
7744
7758
  function numItems(itemHeight, availableHeight, verticalSpacing) {
7745
7759
  const itemsFit = Math.floor((availableHeight - verticalSpacing) / itemHeight);
7746
7760
  return Math.min(itemsFit, 7);
@@ -8270,13 +8284,13 @@ const _hoisted_2$v = {
8270
8284
  role: "menu",
8271
8285
  class: "ipopupmenu__list"
8272
8286
  };
8273
- const _hoisted_3$p = ["onClick"];
8287
+ const _hoisted_3$q = ["onClick"];
8274
8288
  const _hoisted_4$l = ["data-ref-index", "href", "target"];
8275
8289
  const _hoisted_5$h = {
8276
8290
  key: 0,
8277
8291
  class: "sr-only"
8278
8292
  };
8279
- function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
8293
+ function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
8280
8294
  const _component_i_popup = resolveComponent("i-popup");
8281
8295
  return openBlock(), createBlock(_component_i_popup, {
8282
8296
  class: "ipopupmenu",
@@ -8307,12 +8321,12 @@ function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
8307
8321
  role: "menuitem",
8308
8322
  target: item.target,
8309
8323
  tabindex: "0"
8310
- }, [_ctx.isSelected(index) ? (openBlock(), createElementBlock("span", _hoisted_5$h, [createElementVNode("span", null, toDisplayString(_ctx.selectedMenuItemScreenReaderText) + " ", 1)])) : createCommentVNode("", true), createTextVNode(" " + toDisplayString(item.label), 1)], 8, _hoisted_4$l)], 10, _hoisted_3$p);
8324
+ }, [_ctx.isSelected(index) ? (openBlock(), createElementBlock("span", _hoisted_5$h, [createElementVNode("span", null, toDisplayString(_ctx.selectedMenuItemScreenReaderText) + " ", 1)])) : createCommentVNode("", true), createTextVNode(" " + toDisplayString(item.label), 1)], 8, _hoisted_4$l)], 10, _hoisted_3$q);
8311
8325
  }), 128))])], 8, _hoisted_1$I)]),
8312
8326
  _: 1
8313
8327
  }, 8, ["is-open", "anchor", "focus-element", "onKeyup", "onKeydown"]);
8314
8328
  }
8315
- const IPopupMenu = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["render", _sfc_render$y]]);
8329
+ const IPopupMenu = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["render", _sfc_render$x]]);
8316
8330
  const ANIMATION_DURATION = 500;
8317
8331
  const NO_CSS_CLASSES = "";
8318
8332
  const CLOSED_CSS_CLASS_OPACITY = "animate-expand animate-expand--opacity";
@@ -8515,13 +8529,13 @@ const _hoisted_1$H = {
8515
8529
  ref: "content",
8516
8530
  "data-test": "animation-content"
8517
8531
  };
8518
- function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
8532
+ function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {
8519
8533
  return openBlock(), createElementBlock("div", {
8520
8534
  class: normalizeClass(_ctx.animationClasses),
8521
8535
  style: normalizeStyle(_ctx.heightStyle)
8522
8536
  }, [_ctx.shouldVIf ? withDirectives((openBlock(), createElementBlock("div", _hoisted_1$H, [renderSlot(_ctx.$slots, "default")], 512)), [[vShow, _ctx.shouldVShow]]) : createCommentVNode("", true)], 6);
8523
8537
  }
8524
- const IAnimateExpand = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["render", _sfc_render$x]]);
8538
+ const IAnimateExpand = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["render", _sfc_render$w]]);
8525
8539
  const _sfc_main$S = defineComponent({
8526
8540
  name: "ISkipLink",
8527
8541
  mixins: [TranslationMixin],
@@ -8537,13 +8551,13 @@ const _sfc_main$S = defineComponent({
8537
8551
  }
8538
8552
  });
8539
8553
  const _hoisted_1$G = ["href"];
8540
- function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {
8554
+ function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
8541
8555
  return openBlock(), createElementBlock("a", {
8542
8556
  class: "iskiplink",
8543
8557
  href: _ctx.href
8544
8558
  }, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(_ctx.$t("fkui.skip-link.text", "Gå direkt till innehåll")), 1)])], 8, _hoisted_1$G);
8545
8559
  }
8546
- const ISkipLink = /* @__PURE__ */ _export_sfc(_sfc_main$S, [["render", _sfc_render$w]]);
8560
+ const ISkipLink = /* @__PURE__ */ _export_sfc(_sfc_main$S, [["render", _sfc_render$v]]);
8547
8561
  function filterOptions(options, filter2, selectMode) {
8548
8562
  if (isEmpty(filter2) || selectMode) {
8549
8563
  return options;
@@ -8793,7 +8807,7 @@ const _hoisted_1$F = {
8793
8807
  class: "combobox"
8794
8808
  };
8795
8809
  const _hoisted_2$u = ["id"];
8796
- const _hoisted_3$o = ["id", "aria-selected", "onClick"];
8810
+ const _hoisted_3$p = ["id", "aria-selected", "onClick"];
8797
8811
  const _sfc_main$R = /* @__PURE__ */ defineComponent({
8798
8812
  __name: "IComboboxDropdown",
8799
8813
  props: {
@@ -8855,7 +8869,7 @@ const _sfc_main$R = /* @__PURE__ */ defineComponent({
8855
8869
  "combobox__listbox__option--highlight": isOptionActive(item)
8856
8870
  }]),
8857
8871
  onClick: withModifiers(($event) => onOptionClick(item), ["stop", "prevent"])
8858
- }, toDisplayString(item), 11, _hoisted_3$o);
8872
+ }, toDisplayString(item), 11, _hoisted_3$p);
8859
8873
  }), 128))], 8, _hoisted_2$u)]),
8860
8874
  _: 1
8861
8875
  }, 8, ["is-open", "anchor", "num-of-items", "active-element"])]);
@@ -9147,7 +9161,7 @@ const _hoisted_1$D = ["aria-expanded"];
9147
9161
  const _hoisted_2$t = {
9148
9162
  class: "icon-stack icon-stack--tooltip"
9149
9163
  };
9150
- const _hoisted_3$n = {
9164
+ const _hoisted_3$o = {
9151
9165
  class: "sr-only"
9152
9166
  };
9153
9167
  const _hoisted_4$k = {
@@ -9161,7 +9175,7 @@ const _hoisted_5$g = {
9161
9175
  const _hoisted_6$d = {
9162
9176
  class: "tooltip__footer"
9163
9177
  };
9164
- function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
9178
+ function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
9165
9179
  const _component_f_icon = resolveComponent("f-icon");
9166
9180
  return openBlock(), createElementBlock(Fragment, null, [(openBlock(), createBlock(Teleport, {
9167
9181
  disabled: _ctx.iconTarget === null,
@@ -9176,7 +9190,7 @@ function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
9176
9190
  name: "circle"
9177
9191
  }), _cache[2] || (_cache[2] = createTextVNode()), createVNode(_component_f_icon, {
9178
9192
  name: "i"
9179
- }), _cache[3] || (_cache[3] = createTextVNode()), createElementVNode("span", _hoisted_3$n, toDisplayString(_ctx.screenReaderText), 1)])], 8, _hoisted_1$D)], 8, ["disabled", "to"])), _cache[7] || (_cache[7] = createTextVNode()), createElementVNode("div", mergeProps({
9193
+ }), _cache[3] || (_cache[3] = createTextVNode()), createElementVNode("span", _hoisted_3$o, toDisplayString(_ctx.screenReaderText), 1)])], 8, _hoisted_1$D)], 8, ["disabled", "to"])), _cache[7] || (_cache[7] = createTextVNode()), createElementVNode("div", mergeProps({
9180
9194
  ref: "wrapper",
9181
9195
  class: "tooltip"
9182
9196
  }, _ctx.$attrs), [_ctx.ready ? (openBlock(), createElementBlock("div", _hoisted_4$k, [_ctx.hasHeader ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.headerTag), {
@@ -9194,7 +9208,7 @@ function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
9194
9208
  name: "close"
9195
9209
  })])])])) : createCommentVNode("", true)], 16)], 64);
9196
9210
  }
9197
- const FTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["render", _sfc_render$v]]);
9211
+ const FTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["render", _sfc_render$u]]);
9198
9212
  function* labelClasses(options) {
9199
9213
  const {
9200
9214
  labelClass
@@ -9468,7 +9482,7 @@ const _hoisted_2$s = {
9468
9482
  key: 0,
9469
9483
  class: "sr-only"
9470
9484
  };
9471
- const _hoisted_3$m = {
9485
+ const _hoisted_3$n = {
9472
9486
  key: 0,
9473
9487
  class: "label__message label__message--error"
9474
9488
  };
@@ -9495,7 +9509,7 @@ const _hoisted_9$4 = {
9495
9509
  key: 0,
9496
9510
  class: "label__message label__message--error"
9497
9511
  };
9498
- function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
9512
+ function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
9499
9513
  const _component_f_icon = resolveComponent("f-icon");
9500
9514
  return openBlock(), createElementBlock("fieldset", {
9501
9515
  id: _ctx.id,
@@ -9510,7 +9524,7 @@ function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
9510
9524
  }), _cache[3] || (_cache[3] = createTextVNode()), renderSlot(_ctx.$slots, "error-message", normalizeProps(guardReactiveProps({
9511
9525
  hasError: _ctx.hasError,
9512
9526
  validationMessage: _ctx.validity.validationMessage
9513
- })), () => [_ctx.hasError ? (openBlock(), createElementBlock("span", _hoisted_3$m, [createVNode(_component_f_icon, {
9527
+ })), () => [_ctx.hasError ? (openBlock(), createElementBlock("span", _hoisted_3$n, [createVNode(_component_f_icon, {
9514
9528
  class: "label__icon--left",
9515
9529
  name: "error"
9516
9530
  }), createTextVNode(" " + toDisplayString(_ctx.validity.validationMessage), 1)])) : createCommentVNode("", true)])], 2)), _cache[7] || (_cache[7] = createTextVNode()), _ctx.hasCheckbox ? (openBlock(), createElementBlock("span", _hoisted_4$j, [_ctx.children.length === 1 ? (openBlock(), createElementBlock("span", _hoisted_5$f, toDisplayString(_ctx.checkboxCheckedScreenReaderText), 1)) : (openBlock(), createElementBlock("span", _hoisted_6$c, toDisplayString(_ctx.numberOfCheckedCheckboxesScreenText), 1))])) : createCommentVNode("", true), _cache[8] || (_cache[8] = createTextVNode()), _ctx.hasTooltipSlot ? (openBlock(), createElementBlock(Fragment, {
@@ -9532,7 +9546,7 @@ function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
9532
9546
  class: normalizeClass(_ctx.groupContentClass)
9533
9547
  }, [renderSlot(_ctx.$slots, "default")], 2)], 42, _hoisted_1$C);
9534
9548
  }
9535
- const FFieldset = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["render", _sfc_render$u]]);
9549
+ const FFieldset = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["render", _sfc_render$t]]);
9536
9550
  const anyType$1 = [String, Object, Array, Number, Date, Boolean];
9537
9551
  const _sfc_main$N = defineComponent({
9538
9552
  name: "FCheckboxField",
@@ -9722,7 +9736,7 @@ const _sfc_main$N = defineComponent({
9722
9736
  });
9723
9737
  const _hoisted_1$B = ["id", "disabled"];
9724
9738
  const _hoisted_2$r = ["for"];
9725
- const _hoisted_3$l = {
9739
+ const _hoisted_3$m = {
9726
9740
  key: 0,
9727
9741
  class: "checkbox__details"
9728
9742
  };
@@ -9730,7 +9744,7 @@ const _hoisted_4$i = {
9730
9744
  key: 0,
9731
9745
  class: "checkbox__details"
9732
9746
  };
9733
- function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
9747
+ function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
9734
9748
  return openBlock(), createElementBlock("div", {
9735
9749
  class: normalizeClass(["checkbox", _ctx.disabledClass]),
9736
9750
  onValidity: _cache[2] || (_cache[2] = (...args) => _ctx.onValidity && _ctx.onValidity(...args))
@@ -9748,7 +9762,7 @@ function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
9748
9762
  for: _ctx.id
9749
9763
  }, [renderSlot(_ctx.$slots, "default"), _cache[8] || (_cache[8] = createTextVNode()), _ctx.$slots.details ? (openBlock(), createElementBlock(Fragment, {
9750
9764
  key: 0
9751
- }, [_ctx.showDetails === "always" ? (openBlock(), createElementBlock("span", _hoisted_3$l, [_cache[3] || (_cache[3] = createElementVNode("br", null, null, -1)), _cache[4] || (_cache[4] = createTextVNode()), renderSlot(_ctx.$slots, "details")])) : createCommentVNode("", true), _cache[7] || (_cache[7] = createTextVNode()), _ctx.showDetails === "when-selected" ? (openBlock(), createBlock(Transition, {
9765
+ }, [_ctx.showDetails === "always" ? (openBlock(), createElementBlock("span", _hoisted_3$m, [_cache[3] || (_cache[3] = createElementVNode("br", null, null, -1)), _cache[4] || (_cache[4] = createTextVNode()), renderSlot(_ctx.$slots, "details")])) : createCommentVNode("", true), _cache[7] || (_cache[7] = createTextVNode()), _ctx.showDetails === "when-selected" ? (openBlock(), createBlock(Transition, {
9752
9766
  key: 1,
9753
9767
  onEnter: _ctx.enter,
9754
9768
  onAfterEnter: _ctx.afterEnter,
@@ -9760,7 +9774,7 @@ function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
9760
9774
  _: 3
9761
9775
  }, 8, ["onEnter", "onAfterEnter", "onLeave"])) : createCommentVNode("", true)], 64)) : createCommentVNode("", true)], 10, _hoisted_2$r)], 34);
9762
9776
  }
9763
- const FCheckboxField = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["render", _sfc_render$t]]);
9777
+ const FCheckboxField = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["render", _sfc_render$s]]);
9764
9778
  var es_iterator_some = {};
9765
9779
  var hasRequiredEs_iterator_some;
9766
9780
  function requireEs_iterator_some() {
@@ -10010,13 +10024,13 @@ const _hoisted_2$q = {
10010
10024
  tabindex: "-1",
10011
10025
  class: "contextmenu__list"
10012
10026
  };
10013
- const _hoisted_3$k = ["onClick"];
10027
+ const _hoisted_3$l = ["onClick"];
10014
10028
  const _hoisted_4$h = ["tabindex"];
10015
10029
  const _hoisted_5$e = {
10016
10030
  key: 0,
10017
10031
  class: "contextmenu__separator"
10018
10032
  };
10019
- function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
10033
+ function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
10020
10034
  const _component_f_icon = resolveComponent("f-icon");
10021
10035
  const _component_i_popup = resolveComponent("i-popup");
10022
10036
  return openBlock(), createBlock(_component_i_popup, {
@@ -10051,12 +10065,12 @@ function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
10051
10065
  }, null, 8, ["name", "library"])) : createCommentVNode("", true), _cache[3] || (_cache[3] = createTextVNode()), createElementVNode("a", {
10052
10066
  ref_for: true,
10053
10067
  ref: "anchors"
10054
- }, toDisplayString(item.label), 513)], 8, _hoisted_4$h), _cache[4] || (_cache[4] = createTextVNode()), _ctx.hasSeparatorAfterItemAt(index) ? (openBlock(), createElementBlock("hr", _hoisted_5$e)) : createCommentVNode("", true)], 8, _hoisted_3$k);
10068
+ }, toDisplayString(item.label), 513)], 8, _hoisted_4$h), _cache[4] || (_cache[4] = createTextVNode()), _ctx.hasSeparatorAfterItemAt(index) ? (openBlock(), createElementBlock("hr", _hoisted_5$e)) : createCommentVNode("", true)], 8, _hoisted_3$l);
10055
10069
  }), 128))], 512)], 40, _hoisted_1$A)]),
10056
10070
  _: 1
10057
10071
  }, 8, ["is-open", "anchor", "focus-element"]);
10058
10072
  }
10059
- const FContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["render", _sfc_render$s]]);
10073
+ const FContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["render", _sfc_render$r]]);
10060
10074
  var Operation = /* @__PURE__ */ ((Operation2) => {
10061
10075
  Operation2[Operation2["ADD"] = 0] = "ADD";
10062
10076
  Operation2[Operation2["DELETE"] = 1] = "DELETE";
@@ -10300,7 +10314,7 @@ const _sfc_main$L = /* @__PURE__ */ defineComponent({
10300
10314
  isFormModalOpen.value = true;
10301
10315
  }
10302
10316
  return (_ctx, _cache) => {
10303
- return openBlock(), createElementBlock("div", _hoisted_1$z, [renderSlot(_ctx.$slots, "default"), _cache[5] || (_cache[5] = createTextVNode()), hasAddSlot.value ? (openBlock(), createElementBlock("div", _hoisted_2$p, [createElementVNode("button", {
10317
+ return openBlock(), createElementBlock("div", _hoisted_1$z, [renderSlot(_ctx.$slots, "default"), _cache[6] || (_cache[6] = createTextVNode()), hasAddSlot.value ? (openBlock(), createElementBlock("div", _hoisted_2$p, [createElementVNode("button", {
10304
10318
  "data-test": "f-crud-dataset-add-button",
10305
10319
  type: "button",
10306
10320
  class: "button button--tertiary crud-dataset__add-button",
@@ -10308,7 +10322,9 @@ const _sfc_main$L = /* @__PURE__ */ defineComponent({
10308
10322
  }, [createVNode(unref(FIcon), {
10309
10323
  class: "button__icon",
10310
10324
  name: "plus"
10311
- }), _cache[1] || (_cache[1] = createTextVNode()), renderSlot(_ctx.$slots, "add-button", {}, () => [createTextVNode(toDisplayString(unref($t2)("fkui.crud-dataset.button.add", "Lägg till ny")), 1)])])])) : createCommentVNode("", true), _cache[6] || (_cache[6] = createTextVNode()), createVNode(unref(FFormModal), {
10325
+ }), _cache[1] || (_cache[1] = createTextVNode()), renderSlot(_ctx.$slots, "add-button", {}, () => [createTextVNode(toDisplayString(unref($t2)("fkui.crud-dataset.button.add", "Lägg till ny")), 1)])]), _cache[2] || (_cache[2] = createTextVNode()), renderSlot(_ctx.$slots, "buttons", normalizeProps(guardReactiveProps({
10326
+ buttonClasses: ["button", "button--tertiary", "crud-dataset__add-button"]
10327
+ })))])) : createCommentVNode("", true), _cache[7] || (_cache[7] = createTextVNode()), createVNode(unref(FFormModal), {
10312
10328
  "is-open": isFormModalOpen.value,
10313
10329
  "aria-close-text": unref($t2)("fkui.crud-dataset.modal.close", "Stäng"),
10314
10330
  buttons: formModalButtons.value,
@@ -10325,13 +10341,13 @@ const _sfc_main$L = /* @__PURE__ */ defineComponent({
10325
10341
  key: 0
10326
10342
  }, {
10327
10343
  item: item.value
10328
- }))) : createCommentVNode("", true), _cache[2] || (_cache[2] = createTextVNode()), operation.value === unref(Operation).MODIFY ? renderSlot(_ctx.$slots, "modify", normalizeProps(mergeProps({
10344
+ }))) : createCommentVNode("", true), _cache[3] || (_cache[3] = createTextVNode()), operation.value === unref(Operation).MODIFY ? renderSlot(_ctx.$slots, "modify", normalizeProps(mergeProps({
10329
10345
  key: 1
10330
10346
  }, {
10331
10347
  item: item.value
10332
10348
  }))) : createCommentVNode("", true)]),
10333
10349
  _: 3
10334
- }, 8, ["is-open", "aria-close-text", "buttons", "before-submit", "before-validation", "on-cancel", "onCancel"]), _cache[7] || (_cache[7] = createTextVNode()), createVNode(unref(FConfirmModal), {
10350
+ }, 8, ["is-open", "aria-close-text", "buttons", "before-submit", "before-validation", "on-cancel", "onCancel"]), _cache[8] || (_cache[8] = createTextVNode()), createVNode(unref(FConfirmModal), {
10335
10351
  "is-open": isConfirmModalOpen.value,
10336
10352
  buttons: confirmDeleteButtons.value,
10337
10353
  onConfirm: onDeleteConfirm,
@@ -10359,6 +10375,10 @@ const _sfc_main$K = defineComponent({
10359
10375
  },
10360
10376
  mixins: [TranslationMixin],
10361
10377
  props: {
10378
+ /**
10379
+ * The action to be performed by the button.
10380
+ * Must be one of the following values: "delete" or "modify".
10381
+ */
10362
10382
  action: {
10363
10383
  type: String,
10364
10384
  required: true,
@@ -10366,14 +10386,24 @@ const _sfc_main$K = defineComponent({
10366
10386
  return ["delete", "modify"].includes(value);
10367
10387
  }
10368
10388
  },
10389
+ /**
10390
+ * Determines if an icon should be displayed on the button.
10391
+ */
10369
10392
  icon: {
10370
10393
  type: Boolean,
10371
10394
  default: false
10372
10395
  },
10396
+ /**
10397
+ * The item that the action will be performed on.
10398
+ */
10373
10399
  item: {
10374
10400
  type: Object,
10375
10401
  required: true
10376
10402
  },
10403
+ /**
10404
+ * Determines if the button should display a label.
10405
+ * If false, the button will use a visually hidden text for accessibility.
10406
+ */
10377
10407
  label: {
10378
10408
  type: Boolean,
10379
10409
  default: false
@@ -10412,7 +10442,7 @@ const _hoisted_1$y = {
10412
10442
  key: 1,
10413
10443
  class: "sr-only"
10414
10444
  };
10415
- function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
10445
+ function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
10416
10446
  const _component_f_icon = resolveComponent("f-icon");
10417
10447
  return openBlock(), createElementBlock("button", {
10418
10448
  type: "button",
@@ -10426,13 +10456,578 @@ function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
10426
10456
  key: 2
10427
10457
  }, () => [createTextVNode(toDisplayString(_ctx.buttonText), 1)]) : createCommentVNode("", true)]);
10428
10458
  }
10429
- const FCrudButton = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["render", _sfc_render$r]]);
10459
+ const FCrudButton = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["render", _sfc_render$q]]);
10430
10460
  function ActivateItemInjected() {
10431
10461
  return {
10432
10462
  registerCallbackAfterItemAdd: inject("registerCallbackAfterItemAdd", () => void 0),
10433
10463
  registerCallbackBeforeItemDelete: inject("registerCallbackBeforeItemDelete", () => void 0)
10434
10464
  };
10435
10465
  }
10466
+ var es_set_difference_v2 = {};
10467
+ var setHelpers;
10468
+ var hasRequiredSetHelpers;
10469
+ function requireSetHelpers() {
10470
+ if (hasRequiredSetHelpers) return setHelpers;
10471
+ hasRequiredSetHelpers = 1;
10472
+ var uncurryThis = requireFunctionUncurryThis();
10473
+ var SetPrototype = Set.prototype;
10474
+ setHelpers = {
10475
+ // eslint-disable-next-line es/no-set -- safe
10476
+ Set,
10477
+ add: uncurryThis(SetPrototype.add),
10478
+ has: uncurryThis(SetPrototype.has),
10479
+ remove: uncurryThis(SetPrototype["delete"]),
10480
+ proto: SetPrototype
10481
+ };
10482
+ return setHelpers;
10483
+ }
10484
+ var aSet;
10485
+ var hasRequiredASet;
10486
+ function requireASet() {
10487
+ if (hasRequiredASet) return aSet;
10488
+ hasRequiredASet = 1;
10489
+ var has = requireSetHelpers().has;
10490
+ aSet = function(it) {
10491
+ has(it);
10492
+ return it;
10493
+ };
10494
+ return aSet;
10495
+ }
10496
+ var iterateSimple;
10497
+ var hasRequiredIterateSimple;
10498
+ function requireIterateSimple() {
10499
+ if (hasRequiredIterateSimple) return iterateSimple;
10500
+ hasRequiredIterateSimple = 1;
10501
+ var call = requireFunctionCall();
10502
+ iterateSimple = function(record, fn2, ITERATOR_INSTEAD_OF_RECORD) {
10503
+ var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;
10504
+ var next = record.next;
10505
+ var step, result;
10506
+ while (!(step = call(next, iterator)).done) {
10507
+ result = fn2(step.value);
10508
+ if (result !== void 0) return result;
10509
+ }
10510
+ };
10511
+ return iterateSimple;
10512
+ }
10513
+ var setIterate;
10514
+ var hasRequiredSetIterate;
10515
+ function requireSetIterate() {
10516
+ if (hasRequiredSetIterate) return setIterate;
10517
+ hasRequiredSetIterate = 1;
10518
+ var uncurryThis = requireFunctionUncurryThis();
10519
+ var iterateSimple2 = requireIterateSimple();
10520
+ var SetHelpers = requireSetHelpers();
10521
+ var Set2 = SetHelpers.Set;
10522
+ var SetPrototype = SetHelpers.proto;
10523
+ var forEach = uncurryThis(SetPrototype.forEach);
10524
+ var keys = uncurryThis(SetPrototype.keys);
10525
+ var next = keys(new Set2()).next;
10526
+ setIterate = function(set, fn2, interruptible) {
10527
+ return interruptible ? iterateSimple2({
10528
+ iterator: keys(set),
10529
+ next
10530
+ }, fn2) : forEach(set, fn2);
10531
+ };
10532
+ return setIterate;
10533
+ }
10534
+ var setClone;
10535
+ var hasRequiredSetClone;
10536
+ function requireSetClone() {
10537
+ if (hasRequiredSetClone) return setClone;
10538
+ hasRequiredSetClone = 1;
10539
+ var SetHelpers = requireSetHelpers();
10540
+ var iterate2 = requireSetIterate();
10541
+ var Set2 = SetHelpers.Set;
10542
+ var add = SetHelpers.add;
10543
+ setClone = function(set) {
10544
+ var result = new Set2();
10545
+ iterate2(set, function(it) {
10546
+ add(result, it);
10547
+ });
10548
+ return result;
10549
+ };
10550
+ return setClone;
10551
+ }
10552
+ var setSize;
10553
+ var hasRequiredSetSize;
10554
+ function requireSetSize() {
10555
+ if (hasRequiredSetSize) return setSize;
10556
+ hasRequiredSetSize = 1;
10557
+ var uncurryThisAccessor = requireFunctionUncurryThisAccessor();
10558
+ var SetHelpers = requireSetHelpers();
10559
+ setSize = uncurryThisAccessor(SetHelpers.proto, "size", "get") || function(set) {
10560
+ return set.size;
10561
+ };
10562
+ return setSize;
10563
+ }
10564
+ var getSetRecord;
10565
+ var hasRequiredGetSetRecord;
10566
+ function requireGetSetRecord() {
10567
+ if (hasRequiredGetSetRecord) return getSetRecord;
10568
+ hasRequiredGetSetRecord = 1;
10569
+ var aCallable2 = requireACallable();
10570
+ var anObject2 = requireAnObject();
10571
+ var call = requireFunctionCall();
10572
+ var toIntegerOrInfinity2 = requireToIntegerOrInfinity();
10573
+ var getIteratorDirect2 = requireGetIteratorDirect();
10574
+ var INVALID_SIZE = "Invalid size";
10575
+ var $RangeError = RangeError;
10576
+ var $TypeError = TypeError;
10577
+ var max = Math.max;
10578
+ var SetRecord = function(set, intSize) {
10579
+ this.set = set;
10580
+ this.size = max(intSize, 0);
10581
+ this.has = aCallable2(set.has);
10582
+ this.keys = aCallable2(set.keys);
10583
+ };
10584
+ SetRecord.prototype = {
10585
+ getIterator: function() {
10586
+ return getIteratorDirect2(anObject2(call(this.keys, this.set)));
10587
+ },
10588
+ includes: function(it) {
10589
+ return call(this.has, this.set, it);
10590
+ }
10591
+ };
10592
+ getSetRecord = function(obj) {
10593
+ anObject2(obj);
10594
+ var numSize = +obj.size;
10595
+ if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);
10596
+ var intSize = toIntegerOrInfinity2(numSize);
10597
+ if (intSize < 0) throw new $RangeError(INVALID_SIZE);
10598
+ return new SetRecord(obj, intSize);
10599
+ };
10600
+ return getSetRecord;
10601
+ }
10602
+ var setDifference;
10603
+ var hasRequiredSetDifference;
10604
+ function requireSetDifference() {
10605
+ if (hasRequiredSetDifference) return setDifference;
10606
+ hasRequiredSetDifference = 1;
10607
+ var aSet2 = requireASet();
10608
+ var SetHelpers = requireSetHelpers();
10609
+ var clone = requireSetClone();
10610
+ var size = requireSetSize();
10611
+ var getSetRecord2 = requireGetSetRecord();
10612
+ var iterateSet = requireSetIterate();
10613
+ var iterateSimple2 = requireIterateSimple();
10614
+ var has = SetHelpers.has;
10615
+ var remove = SetHelpers.remove;
10616
+ setDifference = function difference(other) {
10617
+ var O = aSet2(this);
10618
+ var otherRec = getSetRecord2(other);
10619
+ var result = clone(O);
10620
+ if (size(O) <= otherRec.size) iterateSet(O, function(e) {
10621
+ if (otherRec.includes(e)) remove(result, e);
10622
+ });
10623
+ else iterateSimple2(otherRec.getIterator(), function(e) {
10624
+ if (has(O, e)) remove(result, e);
10625
+ });
10626
+ return result;
10627
+ };
10628
+ return setDifference;
10629
+ }
10630
+ var setMethodAcceptSetLike;
10631
+ var hasRequiredSetMethodAcceptSetLike;
10632
+ function requireSetMethodAcceptSetLike() {
10633
+ if (hasRequiredSetMethodAcceptSetLike) return setMethodAcceptSetLike;
10634
+ hasRequiredSetMethodAcceptSetLike = 1;
10635
+ var getBuiltIn2 = requireGetBuiltIn();
10636
+ var createSetLike = function(size) {
10637
+ return {
10638
+ size,
10639
+ has: function() {
10640
+ return false;
10641
+ },
10642
+ keys: function() {
10643
+ return {
10644
+ next: function() {
10645
+ return {
10646
+ done: true
10647
+ };
10648
+ }
10649
+ };
10650
+ }
10651
+ };
10652
+ };
10653
+ var createSetLikeWithInfinitySize = function(size) {
10654
+ return {
10655
+ size,
10656
+ has: function() {
10657
+ return true;
10658
+ },
10659
+ keys: function() {
10660
+ throw new Error("e");
10661
+ }
10662
+ };
10663
+ };
10664
+ setMethodAcceptSetLike = function(name, callback) {
10665
+ var Set2 = getBuiltIn2("Set");
10666
+ try {
10667
+ new Set2()[name](createSetLike(0));
10668
+ try {
10669
+ new Set2()[name](createSetLike(-1));
10670
+ return false;
10671
+ } catch (error2) {
10672
+ if (!callback) return true;
10673
+ try {
10674
+ new Set2()[name](createSetLikeWithInfinitySize(-Infinity));
10675
+ return false;
10676
+ } catch (error) {
10677
+ var set = new Set2();
10678
+ set.add(1);
10679
+ set.add(2);
10680
+ return callback(set[name](createSetLikeWithInfinitySize(Infinity)));
10681
+ }
10682
+ }
10683
+ } catch (error) {
10684
+ return false;
10685
+ }
10686
+ };
10687
+ return setMethodAcceptSetLike;
10688
+ }
10689
+ var hasRequiredEs_set_difference_v2;
10690
+ function requireEs_set_difference_v2() {
10691
+ if (hasRequiredEs_set_difference_v2) return es_set_difference_v2;
10692
+ hasRequiredEs_set_difference_v2 = 1;
10693
+ var $ = require_export();
10694
+ var difference = requireSetDifference();
10695
+ var setMethodAcceptSetLike2 = requireSetMethodAcceptSetLike();
10696
+ var INCORRECT = !setMethodAcceptSetLike2("difference", function(result) {
10697
+ return result.size === 0;
10698
+ });
10699
+ $({
10700
+ target: "Set",
10701
+ proto: true,
10702
+ real: true,
10703
+ forced: INCORRECT
10704
+ }, {
10705
+ difference
10706
+ });
10707
+ return es_set_difference_v2;
10708
+ }
10709
+ requireEs_set_difference_v2();
10710
+ var es_set_intersection_v2 = {};
10711
+ var setIntersection;
10712
+ var hasRequiredSetIntersection;
10713
+ function requireSetIntersection() {
10714
+ if (hasRequiredSetIntersection) return setIntersection;
10715
+ hasRequiredSetIntersection = 1;
10716
+ var aSet2 = requireASet();
10717
+ var SetHelpers = requireSetHelpers();
10718
+ var size = requireSetSize();
10719
+ var getSetRecord2 = requireGetSetRecord();
10720
+ var iterateSet = requireSetIterate();
10721
+ var iterateSimple2 = requireIterateSimple();
10722
+ var Set2 = SetHelpers.Set;
10723
+ var add = SetHelpers.add;
10724
+ var has = SetHelpers.has;
10725
+ setIntersection = function intersection2(other) {
10726
+ var O = aSet2(this);
10727
+ var otherRec = getSetRecord2(other);
10728
+ var result = new Set2();
10729
+ if (size(O) > otherRec.size) {
10730
+ iterateSimple2(otherRec.getIterator(), function(e) {
10731
+ if (has(O, e)) add(result, e);
10732
+ });
10733
+ } else {
10734
+ iterateSet(O, function(e) {
10735
+ if (otherRec.includes(e)) add(result, e);
10736
+ });
10737
+ }
10738
+ return result;
10739
+ };
10740
+ return setIntersection;
10741
+ }
10742
+ var hasRequiredEs_set_intersection_v2;
10743
+ function requireEs_set_intersection_v2() {
10744
+ if (hasRequiredEs_set_intersection_v2) return es_set_intersection_v2;
10745
+ hasRequiredEs_set_intersection_v2 = 1;
10746
+ var $ = require_export();
10747
+ var fails2 = requireFails();
10748
+ var intersection2 = requireSetIntersection();
10749
+ var setMethodAcceptSetLike2 = requireSetMethodAcceptSetLike();
10750
+ var INCORRECT = !setMethodAcceptSetLike2("intersection", function(result) {
10751
+ return result.size === 2 && result.has(1) && result.has(2);
10752
+ }) || fails2(function() {
10753
+ return String(Array.from((/* @__PURE__ */ new Set([1, 2, 3])).intersection(/* @__PURE__ */ new Set([3, 2])))) !== "3,2";
10754
+ });
10755
+ $({
10756
+ target: "Set",
10757
+ proto: true,
10758
+ real: true,
10759
+ forced: INCORRECT
10760
+ }, {
10761
+ intersection: intersection2
10762
+ });
10763
+ return es_set_intersection_v2;
10764
+ }
10765
+ requireEs_set_intersection_v2();
10766
+ var es_set_isDisjointFrom_v2 = {};
10767
+ var setIsDisjointFrom;
10768
+ var hasRequiredSetIsDisjointFrom;
10769
+ function requireSetIsDisjointFrom() {
10770
+ if (hasRequiredSetIsDisjointFrom) return setIsDisjointFrom;
10771
+ hasRequiredSetIsDisjointFrom = 1;
10772
+ var aSet2 = requireASet();
10773
+ var has = requireSetHelpers().has;
10774
+ var size = requireSetSize();
10775
+ var getSetRecord2 = requireGetSetRecord();
10776
+ var iterateSet = requireSetIterate();
10777
+ var iterateSimple2 = requireIterateSimple();
10778
+ var iteratorClose2 = requireIteratorClose();
10779
+ setIsDisjointFrom = function isDisjointFrom(other) {
10780
+ var O = aSet2(this);
10781
+ var otherRec = getSetRecord2(other);
10782
+ if (size(O) <= otherRec.size) return iterateSet(O, function(e) {
10783
+ if (otherRec.includes(e)) return false;
10784
+ }, true) !== false;
10785
+ var iterator = otherRec.getIterator();
10786
+ return iterateSimple2(iterator, function(e) {
10787
+ if (has(O, e)) return iteratorClose2(iterator, "normal", false);
10788
+ }) !== false;
10789
+ };
10790
+ return setIsDisjointFrom;
10791
+ }
10792
+ var hasRequiredEs_set_isDisjointFrom_v2;
10793
+ function requireEs_set_isDisjointFrom_v2() {
10794
+ if (hasRequiredEs_set_isDisjointFrom_v2) return es_set_isDisjointFrom_v2;
10795
+ hasRequiredEs_set_isDisjointFrom_v2 = 1;
10796
+ var $ = require_export();
10797
+ var isDisjointFrom = requireSetIsDisjointFrom();
10798
+ var setMethodAcceptSetLike2 = requireSetMethodAcceptSetLike();
10799
+ var INCORRECT = !setMethodAcceptSetLike2("isDisjointFrom", function(result) {
10800
+ return !result;
10801
+ });
10802
+ $({
10803
+ target: "Set",
10804
+ proto: true,
10805
+ real: true,
10806
+ forced: INCORRECT
10807
+ }, {
10808
+ isDisjointFrom
10809
+ });
10810
+ return es_set_isDisjointFrom_v2;
10811
+ }
10812
+ requireEs_set_isDisjointFrom_v2();
10813
+ var es_set_isSubsetOf_v2 = {};
10814
+ var setIsSubsetOf;
10815
+ var hasRequiredSetIsSubsetOf;
10816
+ function requireSetIsSubsetOf() {
10817
+ if (hasRequiredSetIsSubsetOf) return setIsSubsetOf;
10818
+ hasRequiredSetIsSubsetOf = 1;
10819
+ var aSet2 = requireASet();
10820
+ var size = requireSetSize();
10821
+ var iterate2 = requireSetIterate();
10822
+ var getSetRecord2 = requireGetSetRecord();
10823
+ setIsSubsetOf = function isSubsetOf(other) {
10824
+ var O = aSet2(this);
10825
+ var otherRec = getSetRecord2(other);
10826
+ if (size(O) > otherRec.size) return false;
10827
+ return iterate2(O, function(e) {
10828
+ if (!otherRec.includes(e)) return false;
10829
+ }, true) !== false;
10830
+ };
10831
+ return setIsSubsetOf;
10832
+ }
10833
+ var hasRequiredEs_set_isSubsetOf_v2;
10834
+ function requireEs_set_isSubsetOf_v2() {
10835
+ if (hasRequiredEs_set_isSubsetOf_v2) return es_set_isSubsetOf_v2;
10836
+ hasRequiredEs_set_isSubsetOf_v2 = 1;
10837
+ var $ = require_export();
10838
+ var isSubsetOf = requireSetIsSubsetOf();
10839
+ var setMethodAcceptSetLike2 = requireSetMethodAcceptSetLike();
10840
+ var INCORRECT = !setMethodAcceptSetLike2("isSubsetOf", function(result) {
10841
+ return result;
10842
+ });
10843
+ $({
10844
+ target: "Set",
10845
+ proto: true,
10846
+ real: true,
10847
+ forced: INCORRECT
10848
+ }, {
10849
+ isSubsetOf
10850
+ });
10851
+ return es_set_isSubsetOf_v2;
10852
+ }
10853
+ requireEs_set_isSubsetOf_v2();
10854
+ var es_set_isSupersetOf_v2 = {};
10855
+ var setIsSupersetOf;
10856
+ var hasRequiredSetIsSupersetOf;
10857
+ function requireSetIsSupersetOf() {
10858
+ if (hasRequiredSetIsSupersetOf) return setIsSupersetOf;
10859
+ hasRequiredSetIsSupersetOf = 1;
10860
+ var aSet2 = requireASet();
10861
+ var has = requireSetHelpers().has;
10862
+ var size = requireSetSize();
10863
+ var getSetRecord2 = requireGetSetRecord();
10864
+ var iterateSimple2 = requireIterateSimple();
10865
+ var iteratorClose2 = requireIteratorClose();
10866
+ setIsSupersetOf = function isSupersetOf(other) {
10867
+ var O = aSet2(this);
10868
+ var otherRec = getSetRecord2(other);
10869
+ if (size(O) < otherRec.size) return false;
10870
+ var iterator = otherRec.getIterator();
10871
+ return iterateSimple2(iterator, function(e) {
10872
+ if (!has(O, e)) return iteratorClose2(iterator, "normal", false);
10873
+ }) !== false;
10874
+ };
10875
+ return setIsSupersetOf;
10876
+ }
10877
+ var hasRequiredEs_set_isSupersetOf_v2;
10878
+ function requireEs_set_isSupersetOf_v2() {
10879
+ if (hasRequiredEs_set_isSupersetOf_v2) return es_set_isSupersetOf_v2;
10880
+ hasRequiredEs_set_isSupersetOf_v2 = 1;
10881
+ var $ = require_export();
10882
+ var isSupersetOf = requireSetIsSupersetOf();
10883
+ var setMethodAcceptSetLike2 = requireSetMethodAcceptSetLike();
10884
+ var INCORRECT = !setMethodAcceptSetLike2("isSupersetOf", function(result) {
10885
+ return !result;
10886
+ });
10887
+ $({
10888
+ target: "Set",
10889
+ proto: true,
10890
+ real: true,
10891
+ forced: INCORRECT
10892
+ }, {
10893
+ isSupersetOf
10894
+ });
10895
+ return es_set_isSupersetOf_v2;
10896
+ }
10897
+ requireEs_set_isSupersetOf_v2();
10898
+ var es_set_symmetricDifference_v2 = {};
10899
+ var setSymmetricDifference;
10900
+ var hasRequiredSetSymmetricDifference;
10901
+ function requireSetSymmetricDifference() {
10902
+ if (hasRequiredSetSymmetricDifference) return setSymmetricDifference;
10903
+ hasRequiredSetSymmetricDifference = 1;
10904
+ var aSet2 = requireASet();
10905
+ var SetHelpers = requireSetHelpers();
10906
+ var clone = requireSetClone();
10907
+ var getSetRecord2 = requireGetSetRecord();
10908
+ var iterateSimple2 = requireIterateSimple();
10909
+ var add = SetHelpers.add;
10910
+ var has = SetHelpers.has;
10911
+ var remove = SetHelpers.remove;
10912
+ setSymmetricDifference = function symmetricDifference(other) {
10913
+ var O = aSet2(this);
10914
+ var keysIter = getSetRecord2(other).getIterator();
10915
+ var result = clone(O);
10916
+ iterateSimple2(keysIter, function(e) {
10917
+ if (has(O, e)) remove(result, e);
10918
+ else add(result, e);
10919
+ });
10920
+ return result;
10921
+ };
10922
+ return setSymmetricDifference;
10923
+ }
10924
+ var hasRequiredEs_set_symmetricDifference_v2;
10925
+ function requireEs_set_symmetricDifference_v2() {
10926
+ if (hasRequiredEs_set_symmetricDifference_v2) return es_set_symmetricDifference_v2;
10927
+ hasRequiredEs_set_symmetricDifference_v2 = 1;
10928
+ var $ = require_export();
10929
+ var symmetricDifference = requireSetSymmetricDifference();
10930
+ var setMethodAcceptSetLike2 = requireSetMethodAcceptSetLike();
10931
+ $({
10932
+ target: "Set",
10933
+ proto: true,
10934
+ real: true,
10935
+ forced: !setMethodAcceptSetLike2("symmetricDifference")
10936
+ }, {
10937
+ symmetricDifference
10938
+ });
10939
+ return es_set_symmetricDifference_v2;
10940
+ }
10941
+ requireEs_set_symmetricDifference_v2();
10942
+ var es_set_union_v2 = {};
10943
+ var setUnion;
10944
+ var hasRequiredSetUnion;
10945
+ function requireSetUnion() {
10946
+ if (hasRequiredSetUnion) return setUnion;
10947
+ hasRequiredSetUnion = 1;
10948
+ var aSet2 = requireASet();
10949
+ var add = requireSetHelpers().add;
10950
+ var clone = requireSetClone();
10951
+ var getSetRecord2 = requireGetSetRecord();
10952
+ var iterateSimple2 = requireIterateSimple();
10953
+ setUnion = function union(other) {
10954
+ var O = aSet2(this);
10955
+ var keysIter = getSetRecord2(other).getIterator();
10956
+ var result = clone(O);
10957
+ iterateSimple2(keysIter, function(it) {
10958
+ add(result, it);
10959
+ });
10960
+ return result;
10961
+ };
10962
+ return setUnion;
10963
+ }
10964
+ var hasRequiredEs_set_union_v2;
10965
+ function requireEs_set_union_v2() {
10966
+ if (hasRequiredEs_set_union_v2) return es_set_union_v2;
10967
+ hasRequiredEs_set_union_v2 = 1;
10968
+ var $ = require_export();
10969
+ var union = requireSetUnion();
10970
+ var setMethodAcceptSetLike2 = requireSetMethodAcceptSetLike();
10971
+ $({
10972
+ target: "Set",
10973
+ proto: true,
10974
+ real: true,
10975
+ forced: !setMethodAcceptSetLike2("union")
10976
+ }, {
10977
+ union
10978
+ });
10979
+ return es_set_union_v2;
10980
+ }
10981
+ requireEs_set_union_v2();
10982
+ const internalKey = Symbol("internal-key");
10983
+ let internalIndex = 0;
10984
+ function getInternalKey() {
10985
+ return internalKey;
10986
+ }
10987
+ function setInternalKey(item, value) {
10988
+ if (item[internalKey]) {
10989
+ return;
10990
+ }
10991
+ Object.defineProperty(item, internalKey, {
10992
+ value: value !== null && value !== void 0 ? value : String(internalIndex++),
10993
+ enumerable: false,
10994
+ writable: true
10995
+ });
10996
+ }
10997
+ function setInternalKeys(items, key, nestedKey, seenValues = /* @__PURE__ */ new Set()) {
10998
+ if (key === void 0) {
10999
+ return items.map((item) => {
11000
+ setInternalKey(item);
11001
+ if (nestedKey !== void 0) {
11002
+ const nestedItem = item[nestedKey];
11003
+ if (Array.isArray(nestedItem)) {
11004
+ setInternalKeys(nestedItem);
11005
+ }
11006
+ }
11007
+ return item;
11008
+ });
11009
+ }
11010
+ return items.map((item, index) => {
11011
+ const value = item[key];
11012
+ const keyString = String(key);
11013
+ const invalidValue = value === void 0 || value === null || String(value).length === 0;
11014
+ if (invalidValue) {
11015
+ throw new Error(`Key [${keyString}] is missing or has invalid value in item index ${index}`);
11016
+ }
11017
+ if (seenValues.has(value)) {
11018
+ throw new Error(`Expected each item to have key [${keyString}] with unique value but encountered duplicate of "${value}" in item index ${index}.`);
11019
+ }
11020
+ setInternalKey(item, String(value));
11021
+ seenValues.add(value);
11022
+ if (nestedKey !== void 0) {
11023
+ const nestedItem = item[nestedKey];
11024
+ if (Array.isArray(nestedItem)) {
11025
+ setInternalKeys(nestedItem, key, void 0, seenValues);
11026
+ }
11027
+ }
11028
+ return item;
11029
+ });
11030
+ }
10436
11031
  var FTableColumnType = /* @__PURE__ */ ((FTableColumnType2) => {
10437
11032
  FTableColumnType2["TEXT"] = "text";
10438
11033
  FTableColumnType2["DATE"] = "date";
@@ -10510,9 +11105,11 @@ function FTableInjected() {
10510
11105
  renderColumns: inject("renderColumns", false)
10511
11106
  };
10512
11107
  }
10513
- const _sfc_main$J = defineComponent({
10514
- name: "FTableColumn",
10515
- inheritAttrs: false,
11108
+ const _sfc_main$J = /* @__PURE__ */ defineComponent({
11109
+ ...{
11110
+ inheritAttrs: false
11111
+ },
11112
+ __name: "FTableColumn",
10516
11113
  props: {
10517
11114
  /**
10518
11115
  * Unique (per-table) identifier.
@@ -10599,71 +11196,58 @@ const _sfc_main$J = defineComponent({
10599
11196
  }
10600
11197
  }
10601
11198
  },
10602
- setup() {
11199
+ setup(__props) {
10603
11200
  const {
10604
11201
  renderColumns,
10605
11202
  setVisibilityColumn: setVisibilityColumn2,
10606
11203
  addColumn: addColumn2
10607
11204
  } = FTableInjected();
10608
- return {
10609
- renderColumns,
10610
- setVisibilityColumn: setVisibilityColumn2,
10611
- addColumn: addColumn2
10612
- };
10613
- },
10614
- computed: {
10615
- classes() {
10616
- return ["table__column", `table__column--${this.type}`];
10617
- },
10618
- scope() {
10619
- return this.rowHeader ? "row" : null;
10620
- },
10621
- tagName() {
10622
- if (this.rowHeader) {
11205
+ const props = __props;
11206
+ const classes = computed(() => {
11207
+ return ["table__column", `table__column--${props.type}`];
11208
+ });
11209
+ const scope = computed(() => {
11210
+ return props.rowHeader ? "row" : null;
11211
+ });
11212
+ const tagName2 = computed(() => {
11213
+ if (props.rowHeader) {
10623
11214
  return "th";
10624
11215
  } else {
10625
11216
  return "td";
10626
11217
  }
10627
- }
10628
- },
10629
- watch: {
10630
- visible: {
10631
- handler: function() {
10632
- this.setVisibilityColumn(this.name, this.visible);
10633
- }
10634
- }
10635
- },
10636
- created() {
10637
- if (this.shrink && this.expand) {
10638
- throw new Error("Table cannot have both shrink and expand enabled at the same time");
10639
- }
10640
- const size = this.shrink ? FTableColumnSize.SHRINK : FTableColumnSize.EXPAND;
10641
- this.addColumn({
10642
- name: this.name,
10643
- title: this.title,
10644
- description: this.description || void 0,
10645
- id: ElementIdService.generateElementId("column"),
10646
- size,
10647
- type: this.type,
10648
- visible: this.visible,
10649
- sortable: false,
10650
- sort: FTableColumnSort.UNSORTED
10651
11218
  });
11219
+ watch(() => props.visible, () => setVisibilityColumn2(props.name, props.visible));
11220
+ onMounted(() => {
11221
+ if (props.shrink && props.expand) {
11222
+ throw new Error("Table cannot have both shrink and expand enabled at the same time");
11223
+ }
11224
+ const size = props.shrink ? FTableColumnSize.SHRINK : FTableColumnSize.EXPAND;
11225
+ addColumn2({
11226
+ name: props.name,
11227
+ title: props.title,
11228
+ description: props.description || void 0,
11229
+ id: ElementIdService.generateElementId("column"),
11230
+ size,
11231
+ type: props.type,
11232
+ visible: props.visible,
11233
+ sortable: false,
11234
+ sort: FTableColumnSort.UNSORTED
11235
+ });
11236
+ });
11237
+ return (_ctx, _cache) => {
11238
+ return unref(renderColumns) && __props.visible ? (openBlock(), createBlock(resolveDynamicComponent(tagName2.value), mergeProps({
11239
+ key: 0,
11240
+ class: classes.value,
11241
+ scope: scope.value
11242
+ }, _ctx.$attrs), {
11243
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default"), _cache[0] || (_cache[0] = createTextVNode()), _cache[1] || (_cache[1] = createElementVNode("span", {
11244
+ class: "sr-only"
11245
+ }, " ", -1))]),
11246
+ _: 3
11247
+ }, 16, ["class", "scope"])) : createCommentVNode("", true);
11248
+ };
10652
11249
  }
10653
11250
  });
10654
- function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
10655
- return _ctx.renderColumns && _ctx.visible ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.tagName), mergeProps({
10656
- key: 0,
10657
- class: _ctx.classes,
10658
- scope: _ctx.scope
10659
- }, _ctx.$attrs), {
10660
- default: withCtx(() => [renderSlot(_ctx.$slots, "default"), _cache[0] || (_cache[0] = createTextVNode()), _cache[1] || (_cache[1] = createElementVNode("span", {
10661
- class: "sr-only"
10662
- }, " ", -1))]),
10663
- _: 3
10664
- }, 16, ["class", "scope"])) : createCommentVNode("", true);
10665
- }
10666
- const FTableColumn = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["render", _sfc_render$q]]);
10667
11251
  function FSortFilterDatasetInjected() {
10668
11252
  return {
10669
11253
  sort: inject("sort", () => void 0),
@@ -10717,7 +11301,7 @@ const _hoisted_2$o = {
10717
11301
  key: 0,
10718
11302
  ref: "tooltipAttachTo"
10719
11303
  };
10720
- const _hoisted_3$j = ["for"];
11304
+ const _hoisted_3$k = ["for"];
10721
11305
  const _hoisted_4$g = ["for"];
10722
11306
  const _hoisted_5$d = {
10723
11307
  key: 0,
@@ -10733,7 +11317,7 @@ function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {
10733
11317
  return _ctx.$slots.tooltip ? (openBlock(), createElementBlock("div", _hoisted_1$x, [_ctx.hasDefaultSlot ? (openBlock(), createElementBlock("div", _hoisted_2$o, [createElementVNode("label", {
10734
11318
  class: "label",
10735
11319
  for: _ctx.forProperty
10736
- }, [renderSlot(_ctx.$slots, "default")], 8, _hoisted_3$j)], 512)) : createCommentVNode("", true), _cache[2] || (_cache[2] = createTextVNode()), renderSlot(_ctx.$slots, "tooltip"), _cache[3] || (_cache[3] = createTextVNode()), _ctx.hasDescriptionSlot || _ctx.hasErrorMessageSlot ? (openBlock(), createElementBlock("label", {
11320
+ }, [renderSlot(_ctx.$slots, "default")], 8, _hoisted_3$k)], 512)) : createCommentVNode("", true), _cache[2] || (_cache[2] = createTextVNode()), renderSlot(_ctx.$slots, "tooltip"), _cache[3] || (_cache[3] = createTextVNode()), _ctx.hasDescriptionSlot || _ctx.hasErrorMessageSlot ? (openBlock(), createElementBlock("label", {
10737
11321
  key: 1,
10738
11322
  class: "label sr-separator",
10739
11323
  for: _ctx.forProperty
@@ -11328,7 +11912,7 @@ const _hoisted_2$n = {
11328
11912
  key: 0,
11329
11913
  class: "sr-only"
11330
11914
  };
11331
- const _hoisted_3$i = {
11915
+ const _hoisted_3$j = {
11332
11916
  key: 0,
11333
11917
  class: "sr-only"
11334
11918
  };
@@ -11371,7 +11955,7 @@ function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {
11371
11955
  }, [_ctx.descriptionScreenReaderText ? (openBlock(), createElementBlock("span", _hoisted_2$n, toDisplayString(_ctx.descriptionScreenReaderText), 1)) : createCommentVNode("", true), _cache[7] || (_cache[7] = createTextVNode()), createElementVNode("span", null, toDisplayString(_ctx.descriptionText), 1)], 2)) : createCommentVNode("", true), _cache[9] || (_cache[9] = createTextVNode()), _ctx.discreteDescriptionText ? (openBlock(), createElementBlock("span", {
11372
11956
  key: 1,
11373
11957
  class: normalizeClass(formatDescriptionClass)
11374
- }, [_ctx.discreteDescriptionScreenReaderText ? (openBlock(), createElementBlock("span", _hoisted_3$i, toDisplayString(_ctx.discreteDescriptionScreenReaderText), 1)) : createCommentVNode("", true), _cache[8] || (_cache[8] = createTextVNode()), createElementVNode("span", null, toDisplayString(_ctx.discreteDescriptionText), 1)], 2)) : createCommentVNode("", true)])]),
11958
+ }, [_ctx.discreteDescriptionScreenReaderText ? (openBlock(), createElementBlock("span", _hoisted_3$j, toDisplayString(_ctx.discreteDescriptionScreenReaderText), 1)) : createCommentVNode("", true), _cache[8] || (_cache[8] = createTextVNode()), createElementVNode("span", null, toDisplayString(_ctx.discreteDescriptionText), 1)], 2)) : createCommentVNode("", true)])]),
11375
11959
  "error-message": withCtx(() => [renderSlot(_ctx.$slots, "error-message", normalizeProps(guardReactiveProps({
11376
11960
  hasError: _ctx.hasError,
11377
11961
  validationMessage: _ctx.validationMessage
@@ -12258,7 +12842,7 @@ const _hoisted_1$s = {
12258
12842
  const _hoisted_2$m = {
12259
12843
  class: "sort-filter-dataset__search"
12260
12844
  };
12261
- const _hoisted_3$h = {
12845
+ const _hoisted_3$i = {
12262
12846
  class: "sr-only"
12263
12847
  };
12264
12848
  const _hoisted_4$e = ["title"];
@@ -12495,7 +13079,7 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
12495
13079
  maxlength: "64",
12496
13080
  onInput: onSearchInput
12497
13081
  }, {
12498
- default: withCtx(() => [createElementVNode("span", _hoisted_3$h, toDisplayString(__props.placeholderFilter), 1)]),
13082
+ default: withCtx(() => [createElementVNode("span", _hoisted_3$i, toDisplayString(__props.placeholderFilter), 1)]),
12499
13083
  _: 1
12500
13084
  }, 8, ["modelValue", "placeholder"]), _cache[4] || (_cache[4] = createTextVNode()), showClearButton.value ? (openBlock(), createElementBlock("button", {
12501
13085
  key: 0,
@@ -12545,7 +13129,7 @@ const _hoisted_1$r = ["tabindex"];
12545
13129
  const _hoisted_2$l = {
12546
13130
  key: 0
12547
13131
  };
12548
- const _hoisted_3$g = {
13132
+ const _hoisted_3$h = {
12549
13133
  class: "table__row"
12550
13134
  };
12551
13135
  const _hoisted_4$d = ["innerHTML"];
@@ -12579,7 +13163,8 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
12579
13163
  */
12580
13164
  keyAttribute: {
12581
13165
  type: String,
12582
- required: true
13166
+ required: false,
13167
+ default: void 0
12583
13168
  },
12584
13169
  /**
12585
13170
  * If `true` alternating rows will use a different background color.
@@ -12617,6 +13202,7 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
12617
13202
  registerCallbackOnSort,
12618
13203
  registerCallbackOnMount
12619
13204
  } = FSortFilterDatasetInjected();
13205
+ const internalKey2 = getInternalKey();
12620
13206
  const columns = ref([]);
12621
13207
  const props = __props;
12622
13208
  const hasCaption = computed(() => {
@@ -12632,7 +13218,7 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
12632
13218
  return classes;
12633
13219
  });
12634
13220
  const isEmpty2 = computed(() => {
12635
- return props.rows.length === 0;
13221
+ return internalRows.value.length === 0;
12636
13222
  });
12637
13223
  const visibleColumns = computed(() => {
12638
13224
  return columns.value.filter((col) => col.visible);
@@ -12643,6 +13229,15 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
12643
13229
  const tabindex = computed(() => {
12644
13230
  return props.scroll !== TableScroll.NONE ? 0 : void 0;
12645
13231
  });
13232
+ const internalRows = computed(() => {
13233
+ const {
13234
+ keyAttribute
13235
+ } = props;
13236
+ if (keyAttribute) {
13237
+ return setInternalKeys(props.rows, keyAttribute);
13238
+ }
13239
+ return setInternalKeys(props.rows);
13240
+ });
12646
13241
  provide("addColumn", (column) => {
12647
13242
  if (column.type === FTableColumnType.ACTION) {
12648
13243
  throw new Error("Cannot use action column in FDataTable component");
@@ -12654,18 +13249,14 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
12654
13249
  });
12655
13250
  provide("textFieldTableMode", true);
12656
13251
  provide("renderColumns", computed(() => {
12657
- return props.rows.length > 0;
13252
+ return internalRows.value.length > 0;
12658
13253
  }));
12659
13254
  onMounted(() => {
12660
13255
  registerCallbackOnSort(callbackOnSort);
12661
13256
  registerCallbackOnMount(callbackSortableColumns);
12662
13257
  });
12663
13258
  function rowKey(item) {
12664
- const key = item[props.keyAttribute];
12665
- if (typeof key === "undefined") {
12666
- throw new Error(`Key attribute [${props.keyAttribute}]' is missing in row`);
12667
- }
12668
- return String(key);
13259
+ return String(item[internalKey2]);
12669
13260
  }
12670
13261
  function columnClasses(column) {
12671
13262
  const classes = ["table__column", `table__column--${column.type}`, column.size];
@@ -12711,7 +13302,7 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
12711
13302
  key: column.id,
12712
13303
  class: normalizeClass(column.size)
12713
13304
  }, null, 2);
12714
- }), 128))]), _cache[5] || (_cache[5] = createTextVNode()), createElementVNode("thead", null, [createElementVNode("tr", _hoisted_3$g, [(openBlock(true), createElementBlock(Fragment, null, renderList(visibleColumns.value, (column) => {
13305
+ }), 128))]), _cache[5] || (_cache[5] = createTextVNode()), createElementVNode("thead", null, [createElementVNode("tr", _hoisted_3$h, [(openBlock(true), createElementBlock(Fragment, null, renderList(visibleColumns.value, (column) => {
12715
13306
  return openBlock(), createElementBlock("th", mergeProps({
12716
13307
  key: column.id,
12717
13308
  scope: "col",
@@ -12730,7 +13321,7 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
12730
13321
  })))])) : createCommentVNode("", true), _cache[2] || (_cache[2] = createTextVNode()), isEmpty2.value ? (openBlock(), createElementBlock("tr", _hoisted_7$7, [createElementVNode("td", {
12731
13322
  class: "table__column table__column--action",
12732
13323
  colspan: columns.value.length
12733
- }, [renderSlot(_ctx.$slots, "empty", {}, () => [createTextVNode(toDisplayString(unref($t2)("fkui.data-table.empty", "Tabellen är tom")), 1)])], 8, _hoisted_8$5)])) : createCommentVNode("", true), _cache[3] || (_cache[3] = createTextVNode()), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.rows, (row) => {
13324
+ }, [renderSlot(_ctx.$slots, "empty", {}, () => [createTextVNode(toDisplayString(unref($t2)("fkui.data-table.empty", "Tabellen är tom")), 1)])], 8, _hoisted_8$5)])) : createCommentVNode("", true), _cache[3] || (_cache[3] = createTextVNode()), (openBlock(true), createElementBlock(Fragment, null, renderList(internalRows.value, (row) => {
12734
13325
  return openBlock(), createElementBlock("tr", {
12735
13326
  key: rowKey(row),
12736
13327
  class: "table__row"
@@ -13081,7 +13672,7 @@ const _hoisted_1$q = {
13081
13672
  class: "datepicker-field"
13082
13673
  };
13083
13674
  const _hoisted_2$k = ["disabled", "aria-expanded"];
13084
- const _hoisted_3$f = {
13675
+ const _hoisted_3$g = {
13085
13676
  class: "sr-only"
13086
13677
  };
13087
13678
  const _hoisted_4$c = {
@@ -13132,7 +13723,7 @@ function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {
13132
13723
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.onClickCalendarButton())
13133
13724
  }, [createVNode(_component_f_icon, {
13134
13725
  name: "calendar"
13135
- }), _cache[6] || (_cache[6] = createTextVNode()), createElementVNode("span", _hoisted_3$f, toDisplayString(_ctx.calendarButtonText), 1)], 8, _hoisted_2$k)]),
13726
+ }), _cache[6] || (_cache[6] = createTextVNode()), createElementVNode("span", _hoisted_3$g, toDisplayString(_ctx.calendarButtonText), 1)], 8, _hoisted_2$k)]),
13136
13727
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(_ctx.$t("fkui.datepicker-field.label", "Datum")), 1)]), _cache[7] || (_cache[7] = createTextVNode()), _cache[8] || (_cache[8] = createTextVNode()), _cache[9] || (_cache[9] = createTextVNode()), _cache[10] || (_cache[10] = createTextVNode())]),
13137
13728
  _: 2
13138
13729
  }, [_ctx.$slots.tooltip ? {
@@ -13272,7 +13863,7 @@ const _hoisted_2$j = {
13272
13863
  key: 0,
13273
13864
  class: "dialogue-tree__list"
13274
13865
  };
13275
- const _hoisted_3$e = ["onClick"];
13866
+ const _hoisted_3$f = ["onClick"];
13276
13867
  function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
13277
13868
  const _component_f_icon = resolveComponent("f-icon");
13278
13869
  return openBlock(), createElementBlock("div", _hoisted_1$p, [_ctx.options.length > 0 ? (openBlock(), createElementBlock("ul", _hoisted_2$j, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.options, (option, index) => {
@@ -13286,7 +13877,7 @@ function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
13286
13877
  onClick: ($event) => _ctx.onClickedOption(option, index)
13287
13878
  }, [createElementVNode("span", null, toDisplayString(option.label), 1), _cache[0] || (_cache[0] = createTextVNode()), createVNode(_component_f_icon, {
13288
13879
  name: "arrow-right"
13289
- })], 8, _hoisted_3$e)]);
13880
+ })], 8, _hoisted_3$f)]);
13290
13881
  }), 128))])) : renderSlot(_ctx.$slots, "default", normalizeProps(mergeProps({
13291
13882
  key: 1
13292
13883
  }, {
@@ -13341,6 +13932,10 @@ const _sfc_main$o = defineComponent({
13341
13932
  required: false,
13342
13933
  default: 0
13343
13934
  },
13935
+ /**
13936
+ * Text template for the screen reader notification text.
13937
+ * Use `%VALUE%` as a placeholder for the number of notifications.
13938
+ */
13344
13939
  screenReaderNotificationTemplate: {
13345
13940
  type: String,
13346
13941
  required: false,
@@ -13372,7 +13967,7 @@ const _hoisted_1$o = ["aria-expanded", "aria-controls"];
13372
13967
  const _hoisted_2$i = {
13373
13968
  class: "expandable-panel__icon"
13374
13969
  };
13375
- const _hoisted_3$d = {
13970
+ const _hoisted_3$e = {
13376
13971
  class: "icon-stack"
13377
13972
  };
13378
13973
  const _hoisted_4$b = ["title"];
@@ -13401,7 +13996,7 @@ function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {
13401
13996
  "aria-controls": _ctx.id
13402
13997
  }, _ctx.$attrs, {
13403
13998
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClickHeadingButton && _ctx.onClickHeadingButton(...args))
13404
- }), [createElementVNode("span", _hoisted_2$i, [createElementVNode("span", _hoisted_3$d, [createVNode(_component_f_icon, {
13999
+ }), [createElementVNode("span", _hoisted_2$i, [createElementVNode("span", _hoisted_3$e, [createVNode(_component_f_icon, {
13405
14000
  name: "dash"
13406
14001
  }), _cache[1] || (_cache[1] = createTextVNode()), createVNode(_component_f_icon, {
13407
14002
  name: "dash"
@@ -13511,7 +14106,7 @@ const _hoisted_1$n = ["aria-expanded", "aria-controls"];
13511
14106
  const _hoisted_2$h = {
13512
14107
  class: "expandable-paragraph__icon"
13513
14108
  };
13514
- const _hoisted_3$c = {
14109
+ const _hoisted_3$d = {
13515
14110
  class: "icon-stack"
13516
14111
  };
13517
14112
  const _hoisted_4$a = {
@@ -13543,7 +14138,7 @@ function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
13543
14138
  "aria-controls": _ctx.id
13544
14139
  }, _ctx.$attrs, {
13545
14140
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClickMinimize && _ctx.onClickMinimize(...args))
13546
- }), [createElementVNode("span", _hoisted_2$h, [createElementVNode("span", _hoisted_3$c, [createVNode(_component_f_icon, {
14141
+ }), [createElementVNode("span", _hoisted_2$h, [createElementVNode("span", _hoisted_3$d, [createVNode(_component_f_icon, {
13547
14142
  name: "dash"
13548
14143
  }), _cache[1] || (_cache[1] = createTextVNode()), createVNode(_component_f_icon, {
13549
14144
  name: "dash"
@@ -13651,7 +14246,7 @@ const _hoisted_1$m = {
13651
14246
  const _hoisted_2$g = {
13652
14247
  class: "file-item__row"
13653
14248
  };
13654
- const _hoisted_3$b = ["id"];
14249
+ const _hoisted_3$c = ["id"];
13655
14250
  const _hoisted_4$9 = {
13656
14251
  class: "icon-stack button__icon icon-stack--new-window"
13657
14252
  };
@@ -13674,7 +14269,7 @@ function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
13674
14269
  name: "new-window"
13675
14270
  }), _cache[0] || (_cache[0] = createTextVNode()), createVNode(_component_f_icon, {
13676
14271
  name: _ctx.iconName
13677
- }, null, 8, ["name"])]), _cache[1] || (_cache[1] = createTextVNode()), createElementVNode("span", _hoisted_5$7, toDisplayString(_ctx.fileName), 1), _cache[2] || (_cache[2] = createTextVNode()), createElementVNode("span", _hoisted_6$5, " " + toDisplayString(_ctx.$t("fkui.file-item.file-open", "öppnas i nytt fönster")), 1)], 16, _hoisted_3$b), _cache[3] || (_cache[3] = createTextVNode()), renderSlot(_ctx.$slots, "row")]), _cache[4] || (_cache[4] = createTextVNode()), renderSlot(_ctx.$slots, "default"), _cache[5] || (_cache[5] = createTextVNode()), _ctx.isMimeTypeChanged ? (openBlock(), createElementBlock("div", _hoisted_7$4, toDisplayString(_ctx.mimeTypeChangedText), 1)) : createCommentVNode("", true), _cache[6] || (_cache[6] = createTextVNode()), _cache[7] || (_cache[7] = createElementVNode("hr", {
14272
+ }, null, 8, ["name"])]), _cache[1] || (_cache[1] = createTextVNode()), createElementVNode("span", _hoisted_5$7, toDisplayString(_ctx.fileName), 1), _cache[2] || (_cache[2] = createTextVNode()), createElementVNode("span", _hoisted_6$5, " " + toDisplayString(_ctx.$t("fkui.file-item.file-open", "öppnas i nytt fönster")), 1)], 16, _hoisted_3$c), _cache[3] || (_cache[3] = createTextVNode()), renderSlot(_ctx.$slots, "row")]), _cache[4] || (_cache[4] = createTextVNode()), renderSlot(_ctx.$slots, "default"), _cache[5] || (_cache[5] = createTextVNode()), _ctx.isMimeTypeChanged ? (openBlock(), createElementBlock("div", _hoisted_7$4, toDisplayString(_ctx.mimeTypeChangedText), 1)) : createCommentVNode("", true), _cache[6] || (_cache[6] = createTextVNode()), _cache[7] || (_cache[7] = createElementVNode("hr", {
13678
14273
  class: "file-item__separator"
13679
14274
  }, null, -1))]);
13680
14275
  }
@@ -13700,6 +14295,9 @@ const _sfc_main$l = defineComponent({
13700
14295
  required: false,
13701
14296
  default: () => ElementIdService.generateElementId()
13702
14297
  },
14298
+ /**
14299
+ * Disables the file selector.
14300
+ */
13703
14301
  disabled: {
13704
14302
  type: Boolean,
13705
14303
  required: false,
@@ -13744,7 +14342,7 @@ const _hoisted_1$l = {
13744
14342
  class: "file-selector"
13745
14343
  };
13746
14344
  const _hoisted_2$f = ["id", "aria-labelledby", "aria-disabled"];
13747
- const _hoisted_3$a = ["id", "for"];
14345
+ const _hoisted_3$b = ["id", "for"];
13748
14346
  function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
13749
14347
  const _component_f_icon = resolveComponent("f-icon");
13750
14348
  return openBlock(), createElementBlock("div", _hoisted_1$l, [createElementVNode("input", mergeProps({
@@ -13764,7 +14362,7 @@ function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
13764
14362
  }, [createVNode(_component_f_icon, {
13765
14363
  class: "button__icon",
13766
14364
  name: "paper-clip"
13767
- }), _cache[1] || (_cache[1] = createTextVNode()), renderSlot(_ctx.$slots, "default")], 10, _hoisted_3$a)]);
14365
+ }), _cache[1] || (_cache[1] = createTextVNode()), renderSlot(_ctx.$slots, "default")], 10, _hoisted_3$b)]);
13768
14366
  }
13769
14367
  const FFileSelector = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$e]]);
13770
14368
  const keybindings = {
@@ -13882,7 +14480,7 @@ const _hoisted_1$k = ["role"];
13882
14480
  const _hoisted_2$e = {
13883
14481
  key: 0
13884
14482
  };
13885
- const _hoisted_3$9 = {
14483
+ const _hoisted_3$a = {
13886
14484
  key: 0,
13887
14485
  class: "table__column--shrink"
13888
14486
  };
@@ -13969,7 +14567,8 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
13969
14567
  */
13970
14568
  keyAttribute: {
13971
14569
  type: String,
13972
- required: true
14570
+ required: false,
14571
+ default: void 0
13973
14572
  },
13974
14573
  /**
13975
14574
  * Attribute of expandable content in rows.
@@ -14020,7 +14619,8 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14020
14619
  }
14021
14620
  },
14022
14621
  /**
14023
- * V-model will bind to value containing selected rows.
14622
+ * Currently selected rows.
14623
+ * Requires `selectable` to be set.
14024
14624
  */
14025
14625
  modelValue: {
14026
14626
  type: Array,
@@ -14062,6 +14662,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14062
14662
  registerCallbackAfterItemAdd,
14063
14663
  registerCallbackBeforeItemDelete
14064
14664
  } = ActivateItemInjected();
14665
+ const internalKey2 = getInternalKey();
14065
14666
  const activeRow = ref(void 0);
14066
14667
  const columns = ref([]);
14067
14668
  const selectedRows = ref([]);
@@ -14069,7 +14670,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14069
14670
  const tbodyKey = ref(0);
14070
14671
  const props = __props;
14071
14672
  const emit = __emit;
14072
- const expandableTable = useExpandableTable(props.expandableAttribute, props.keyAttribute, props.expandableDescribedby, emit, slots);
14673
+ const expandableTable = useExpandableTable(props.expandableAttribute, internalKey2, props.expandableDescribedby, emit, slots);
14073
14674
  const {
14074
14675
  isExpandableTable,
14075
14676
  hasExpandableSlot,
@@ -14081,19 +14682,20 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14081
14682
  expandableRows,
14082
14683
  hasExpandableContent
14083
14684
  } = expandableTable;
14685
+ const tbodyElement = useTemplateRef("tbodyElement");
14084
14686
  const hasCaption = computed(() => {
14085
14687
  return hasSlot2("caption", {}, {
14086
14688
  stripClasses: []
14087
14689
  });
14088
14690
  });
14089
14691
  const hasCheckboxDescription = computed(() => {
14090
- const firstRow = props.rows[0];
14692
+ const firstRow = internalRows.value[0];
14091
14693
  return hasSlot2("checkbox-description", {
14092
14694
  row: firstRow
14093
14695
  });
14094
14696
  });
14095
14697
  const isEmpty2 = computed(() => {
14096
- return props.rows.length === 0;
14698
+ return internalRows.value.length === 0;
14097
14699
  });
14098
14700
  const visibleColumns = computed(() => {
14099
14701
  return columns.value.filter((col) => col.visible);
@@ -14124,6 +14726,16 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14124
14726
  }
14125
14727
  return columnCount;
14126
14728
  });
14729
+ const internalRows = computed(() => {
14730
+ const {
14731
+ keyAttribute,
14732
+ expandableAttribute
14733
+ } = props;
14734
+ if (isExpandableTable) {
14735
+ return setInternalKeys(props.rows, keyAttribute, expandableAttribute);
14736
+ }
14737
+ return setInternalKeys(props.rows, keyAttribute);
14738
+ });
14127
14739
  provide("addColumn", (column) => {
14128
14740
  columns.value = addColumn(columns.value, column);
14129
14741
  });
@@ -14131,7 +14743,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14131
14743
  setVisibilityColumn(columns.value, id, visible);
14132
14744
  });
14133
14745
  provide("textFieldTableMode", true);
14134
- provide("renderColumns", computed(() => props.rows.length > 0));
14746
+ provide("renderColumns", computed(() => internalRows.value.length > 0));
14135
14747
  watch(() => props.rows, () => setSelectedRows(), {
14136
14748
  immediate: true,
14137
14749
  deep: true
@@ -14152,21 +14764,19 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14152
14764
  immediate: true,
14153
14765
  deep: true
14154
14766
  });
14155
- function updateTr(tbodyElement) {
14156
- const trElements = [].slice.call(tbodyElement.children);
14767
+ function updateTr(tbodyElement2) {
14768
+ const trElements = [].slice.call(tbodyElement2.children);
14157
14769
  const trInteractableElements = trElements.filter((tr2) => {
14158
14770
  return tr2.tabIndex === 0;
14159
14771
  });
14160
14772
  tr.value = trInteractableElements;
14161
14773
  }
14162
14774
  onUpdated(() => {
14163
- const tbodyElement = useTemplateRef("tbodyElement");
14164
14775
  if (tbodyElement.value) {
14165
14776
  updateTr(tbodyElement.value);
14166
14777
  }
14167
14778
  });
14168
14779
  onMounted(() => {
14169
- const tbodyElement = useTemplateRef("tbodyElement");
14170
14780
  if (tbodyElement.value) {
14171
14781
  updateTr(tbodyElement.value);
14172
14782
  }
@@ -14186,14 +14796,14 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14186
14796
  if (!props.showActive) {
14187
14797
  return false;
14188
14798
  }
14189
- return itemEquals(row, activeRow.value, props.keyAttribute);
14799
+ return itemEquals(row, activeRow.value, internalKey2);
14190
14800
  }
14191
14801
  function isSelected(row) {
14192
- return includeItem(row, selectedRows.value, props.keyAttribute);
14802
+ return includeItem(row, selectedRows.value, internalKey2);
14193
14803
  }
14194
14804
  function onKeydown$1(event, index) {
14195
14805
  onKeydown({
14196
- rows: props.rows,
14806
+ rows: internalRows.value,
14197
14807
  tr,
14198
14808
  activate
14199
14809
  }, event, index);
@@ -14213,7 +14823,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14213
14823
  if (isExpandableTable.value && hasExpandableContent(row)) {
14214
14824
  toggleExpanded(row);
14215
14825
  }
14216
- if (!itemEquals(row, activeRow.value, props.keyAttribute)) {
14826
+ if (!itemEquals(row, activeRow.value, internalKey2)) {
14217
14827
  emit("change", row);
14218
14828
  setActiveRow(row);
14219
14829
  if (tr2) {
@@ -14231,8 +14841,8 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14231
14841
  }
14232
14842
  function onSelect(row) {
14233
14843
  var _a, _b;
14234
- if (includeItem(row, selectedRows.value, props.keyAttribute)) {
14235
- selectedRows.value = selectedRows.value.filter((i) => !itemEquals(i, row, props.keyAttribute));
14844
+ if (includeItem(row, selectedRows.value, internalKey2)) {
14845
+ selectedRows.value = selectedRows.value.filter((i) => !itemEquals(i, row, internalKey2));
14236
14846
  emit("unselect", row);
14237
14847
  } else {
14238
14848
  selectedRows.value.push(row);
@@ -14247,7 +14857,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14247
14857
  return;
14248
14858
  }
14249
14859
  selectedRows.value = props.modelValue.filter((row) => {
14250
- return includeItem(row, props.rows, props.keyAttribute);
14860
+ return includeItem(row, internalRows.value, internalKey2);
14251
14861
  });
14252
14862
  }
14253
14863
  function updateVModelWithSelectedRows() {
@@ -14265,11 +14875,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14265
14875
  return ["table__row", ...active, ...selected, ...striped, ...expandable, ...expanded];
14266
14876
  }
14267
14877
  function rowKey(row) {
14268
- const key = row[props.keyAttribute];
14269
- if (typeof key === "undefined") {
14270
- throw new Error(`Key attribute [${props.keyAttribute}]' is missing in row`);
14271
- }
14272
- return String(key);
14878
+ return String(row[internalKey2]);
14273
14879
  }
14274
14880
  function columnClasses(column) {
14275
14881
  const sortable = column.sortable ? ["table__column--sortable"] : [];
@@ -14302,16 +14908,16 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14302
14908
  activate(item, null);
14303
14909
  }
14304
14910
  function callbackBeforeItemDelete(item) {
14305
- if (props.rows.length === 0) {
14911
+ if (internalRows.value.length === 0) {
14306
14912
  return;
14307
14913
  }
14308
- let targetIndex = props.rows.indexOf(item) - 1;
14309
- if (targetIndex < 0 && props.rows.length > 1) {
14914
+ let targetIndex = internalRows.value.indexOf(item) - 1;
14915
+ if (targetIndex < 0 && internalRows.value.length > 1) {
14310
14916
  targetIndex = 1;
14311
14917
  } else if (targetIndex < 0) {
14312
14918
  targetIndex = 0;
14313
14919
  }
14314
- activate(props.rows[targetIndex], tr.value[targetIndex]);
14920
+ activate(internalRows.value[targetIndex], tr.value[targetIndex]);
14315
14921
  }
14316
14922
  function escapeNewlines(value) {
14317
14923
  return value.replace(/\n/g, "<br/>");
@@ -14319,7 +14925,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14319
14925
  function updateActiveRowFromVModel() {
14320
14926
  if (props.active === void 0) {
14321
14927
  setActiveRow(void 0);
14322
- } else if (!itemEquals(props.active, activeRow.value, props.keyAttribute)) {
14928
+ } else if (!itemEquals(props.active, activeRow.value, internalKey2)) {
14323
14929
  setActiveRow(props.active);
14324
14930
  }
14325
14931
  }
@@ -14333,7 +14939,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14333
14939
  }, [createCommentVNode("", true), _cache[18] || (_cache[18] = createTextVNode()), createElementVNode("table", mergeProps({
14334
14940
  class: ["table", tableClasses.value],
14335
14941
  role: tableRole.value
14336
- }, _ctx.$attrs), [hasCaption.value ? (openBlock(), createElementBlock("caption", _hoisted_2$e, [renderSlot(_ctx.$slots, "caption")])) : createCommentVNode("", true), _cache[15] || (_cache[15] = createTextVNode()), createElementVNode("colgroup", null, [unref(isExpandableTable) ? (openBlock(), createElementBlock("col", _hoisted_3$9)) : createCommentVNode("", true), _cache[0] || (_cache[0] = createTextVNode()), __props.selectable ? (openBlock(), createElementBlock("col", _hoisted_4$8)) : createCommentVNode("", true), _cache[1] || (_cache[1] = createTextVNode()), (openBlock(true), createElementBlock(Fragment, null, renderList(columns.value, (column) => {
14942
+ }, _ctx.$attrs), [hasCaption.value ? (openBlock(), createElementBlock("caption", _hoisted_2$e, [renderSlot(_ctx.$slots, "caption")])) : createCommentVNode("", true), _cache[15] || (_cache[15] = createTextVNode()), createElementVNode("colgroup", null, [unref(isExpandableTable) ? (openBlock(), createElementBlock("col", _hoisted_3$a)) : createCommentVNode("", true), _cache[0] || (_cache[0] = createTextVNode()), __props.selectable ? (openBlock(), createElementBlock("col", _hoisted_4$8)) : createCommentVNode("", true), _cache[1] || (_cache[1] = createTextVNode()), (openBlock(true), createElementBlock(Fragment, null, renderList(columns.value, (column) => {
14337
14943
  return openBlock(), createElementBlock("col", {
14338
14944
  key: column.id,
14339
14945
  class: normalizeClass(column.size)
@@ -14353,9 +14959,10 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
14353
14959
  name: iconName(column)
14354
14960
  }, null, 8, ["class", "name"])) : createCommentVNode("", true), _cache[3] || (_cache[3] = createTextVNode()), column.description ? (openBlock(), createElementBlock("span", _hoisted_11$1, toDisplayString(column.description), 1)) : createCommentVNode("", true)], 16);
14355
14961
  }), 128))])]), _cache[17] || (_cache[17] = createTextVNode()), (openBlock(), createElementBlock("tbody", {
14356
- ref: "tbodyElement",
14962
+ ref_key: "tbodyElement",
14963
+ ref: tbodyElement,
14357
14964
  key: tbodyKey.value
14358
- }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rows, (row, index) => {
14965
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(internalRows.value, (row, index) => {
14359
14966
  return openBlock(), createElementBlock(Fragment, {
14360
14967
  key: rowKey(row)
14361
14968
  }, [createElementVNode("tr", {
@@ -14454,7 +15061,7 @@ const _hoisted_2$d = {
14454
15061
  ref: "header",
14455
15062
  class: "layout-application-template__header"
14456
15063
  };
14457
- const _hoisted_3$8 = {
15064
+ const _hoisted_3$9 = {
14458
15065
  key: 1
14459
15066
  };
14460
15067
  const _hoisted_4$7 = {
@@ -14468,7 +15075,7 @@ const _hoisted_5$5 = {
14468
15075
  function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
14469
15076
  return openBlock(), createElementBlock("div", _hoisted_1$j, [_ctx.showHeader || _ctx.showTopNavigation ? (openBlock(), createElementBlock("header", _hoisted_2$d, [_ctx.showHeader ? renderSlot(_ctx.$slots, "header", {
14470
15077
  key: 0
14471
- }) : createCommentVNode("", true), _cache[0] || (_cache[0] = createTextVNode()), _ctx.showTopNavigation ? (openBlock(), createElementBlock("nav", _hoisted_3$8, [renderSlot(_ctx.$slots, "top-navigation")])) : createCommentVNode("", true)], 512)) : createCommentVNode("", true), _cache[2] || (_cache[2] = createTextVNode()), createElementVNode("main", _hoisted_4$7, [renderSlot(_ctx.$slots, "default"), _cache[1] || (_cache[1] = createTextVNode()), _ctx.showFooter ? (openBlock(), createElementBlock("footer", _hoisted_5$5, [renderSlot(_ctx.$slots, "footer")])) : createCommentVNode("", true)], 512)]);
15078
+ }) : createCommentVNode("", true), _cache[0] || (_cache[0] = createTextVNode()), _ctx.showTopNavigation ? (openBlock(), createElementBlock("nav", _hoisted_3$9, [renderSlot(_ctx.$slots, "top-navigation")])) : createCommentVNode("", true)], 512)) : createCommentVNode("", true), _cache[2] || (_cache[2] = createTextVNode()), createElementVNode("main", _hoisted_4$7, [renderSlot(_ctx.$slots, "default"), _cache[1] || (_cache[1] = createTextVNode()), _ctx.showFooter ? (openBlock(), createElementBlock("footer", _hoisted_5$5, [renderSlot(_ctx.$slots, "footer")])) : createCommentVNode("", true)], 512)]);
14472
15079
  }
14473
15080
  const FLayoutApplicationTemplate = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", _sfc_render$d]]);
14474
15081
  function getGridClasses(target) {
@@ -14660,7 +15267,7 @@ const _hoisted_1$i = {
14660
15267
  class: "layout-navigation"
14661
15268
  };
14662
15269
  const _hoisted_2$c = ["aria-expanded"];
14663
- const _hoisted_3$7 = {
15270
+ const _hoisted_3$8 = {
14664
15271
  class: "layout-navigation__navigation__inner"
14665
15272
  };
14666
15273
  const _hoisted_4$6 = {
@@ -14674,7 +15281,7 @@ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
14674
15281
  class: "layout-navigation__navigation",
14675
15282
  style: normalizeStyle(_ctx.navigationStyle),
14676
15283
  "aria-expanded": _ctx.isOpen
14677
- }, [createElementVNode("div", _hoisted_3$7, [_ctx.isOpen ? (openBlock(), createElementBlock(Fragment, {
15284
+ }, [createElementVNode("div", _hoisted_3$8, [_ctx.isOpen ? (openBlock(), createElementBlock(Fragment, {
14678
15285
  key: 0
14679
15286
  }, [createElementVNode("div", {
14680
15287
  class: "layout-navigation__navigation__inner__title",
@@ -14919,7 +15526,7 @@ const _hoisted_2$a = {
14919
15526
  key: 0,
14920
15527
  class: "list__item"
14921
15528
  };
14922
- const _hoisted_3$6 = {
15529
+ const _hoisted_3$7 = {
14923
15530
  class: "list__item__itempane"
14924
15531
  };
14925
15532
  const _hoisted_4$5 = ["id", "aria-labelledby", "tabindex", "onKeydown"];
@@ -14953,7 +15560,8 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
14953
15560
  */
14954
15561
  keyAttribute: {
14955
15562
  type: String,
14956
- required: true
15563
+ required: false,
15564
+ default: void 0
14957
15565
  },
14958
15566
  /**
14959
15567
  * If `true` the list will be selectable.
@@ -15006,13 +15614,23 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
15006
15614
  registerCallbackAfterItemAdd,
15007
15615
  registerCallbackBeforeItemDelete
15008
15616
  } = ActivateItemInjected();
15617
+ const internalKey2 = getInternalKey();
15009
15618
  const selectedItems = ref([]);
15010
15619
  const activeItem = ref(void 0);
15011
15620
  const ulElement = ref();
15012
15621
  const props = __props;
15013
15622
  const emit = __emit;
15014
15623
  const isEmpty2 = computed(() => {
15015
- return props.items.length === 0;
15624
+ return internalItems.value.length === 0;
15625
+ });
15626
+ const internalItems = computed(() => {
15627
+ const {
15628
+ keyAttribute
15629
+ } = props;
15630
+ if (keyAttribute) {
15631
+ return setInternalKeys(props.items, keyAttribute);
15632
+ }
15633
+ return setInternalKeys(props.items);
15016
15634
  });
15017
15635
  watch(() => props.items, () => {
15018
15636
  updateSelectedItemsFromVModel();
@@ -15045,14 +15663,10 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
15045
15663
  return Array.from(element.children);
15046
15664
  }
15047
15665
  function itemKey(item) {
15048
- const key = item[props.keyAttribute];
15049
- if (typeof key === "undefined") {
15050
- throw new Error(`Key attribute [${props.keyAttribute}]' is missing in item`);
15051
- }
15052
- return String(key);
15666
+ return String(item[internalKey2]);
15053
15667
  }
15054
15668
  function isSelected(item) {
15055
- return includeItem(item, selectedItems.value, props.keyAttribute);
15669
+ return includeItem(item, selectedItems.value, internalKey2);
15056
15670
  }
15057
15671
  function itemClasses(item) {
15058
15672
  return {
@@ -15062,8 +15676,8 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
15062
15676
  }
15063
15677
  function onSelect(item) {
15064
15678
  var _a, _b;
15065
- if (includeItem(item, selectedItems.value, props.keyAttribute)) {
15066
- selectedItems.value = selectedItems.value.filter((i) => !itemEquals(i, item, props.keyAttribute));
15679
+ if (includeItem(item, selectedItems.value, internalKey2)) {
15680
+ selectedItems.value = selectedItems.value.filter((i) => !itemEquals(i, item, internalKey2));
15067
15681
  emit("unselect", item);
15068
15682
  } else {
15069
15683
  selectedItems.value.push(item);
@@ -15074,7 +15688,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
15074
15688
  }
15075
15689
  function setActiveItem(item) {
15076
15690
  emit("click", item);
15077
- if (!itemEquals(item, activeItem.value, props.keyAttribute)) {
15691
+ if (!itemEquals(item, activeItem.value, internalKey2)) {
15078
15692
  emit("change", item);
15079
15693
  activeItem.value = item;
15080
15694
  emit("update:active", activeItem.value);
@@ -15091,7 +15705,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
15091
15705
  function updateSelectedItemsFromVModel() {
15092
15706
  if (Array.isArray(props.modelValue)) {
15093
15707
  selectedItems.value = props.modelValue.filter((item) => {
15094
- return includeItem(item, props.items, props.keyAttribute);
15708
+ return includeItem(item, internalItems.value, internalKey2);
15095
15709
  });
15096
15710
  } else {
15097
15711
  selectedItems.value = [];
@@ -15100,7 +15714,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
15100
15714
  function updateActiveItemFromVModel() {
15101
15715
  if (props.active === void 0) {
15102
15716
  activeItem.value = void 0;
15103
- } else if (!itemEquals(props.active, activeItem.value, props.keyAttribute)) {
15717
+ } else if (!itemEquals(props.active, activeItem.value, internalKey2)) {
15104
15718
  activeItem.value = props.active;
15105
15719
  }
15106
15720
  }
@@ -15140,26 +15754,26 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
15140
15754
  setActiveItem(item);
15141
15755
  }
15142
15756
  function callbackBeforeItemDelete(item) {
15143
- if (props.items.length === 0) {
15757
+ if (internalItems.value.length === 0) {
15144
15758
  return;
15145
15759
  }
15146
- let targetIndex = props.items.indexOf(item) - 1;
15147
- if (targetIndex < 0 && props.items.length > 1) {
15760
+ let targetIndex = internalItems.value.indexOf(item) - 1;
15761
+ if (targetIndex < 0 && internalItems.value.length > 1) {
15148
15762
  targetIndex = 1;
15149
15763
  } else if (targetIndex < 0) {
15150
15764
  targetIndex = 0;
15151
15765
  }
15152
- setActiveItem(props.items[targetIndex]);
15766
+ setActiveItem(internalItems.value[targetIndex]);
15153
15767
  const targetElement = getLiElements()[targetIndex];
15154
15768
  if (targetElement) {
15155
15769
  targetElement.focus();
15156
15770
  }
15157
15771
  }
15158
15772
  function isActive(item) {
15159
- return props.checkbox && itemEquals(activeItem.value, item, props.keyAttribute);
15773
+ return props.checkbox && itemEquals(activeItem.value, item, internalKey2);
15160
15774
  }
15161
15775
  return (_ctx, _cache) => {
15162
- return !__props.selectable ? (openBlock(), createElementBlock("ul", _hoisted_1$g, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {
15776
+ return !__props.selectable ? (openBlock(), createElementBlock("ul", _hoisted_1$g, [(openBlock(true), createElementBlock(Fragment, null, renderList(internalItems.value, (item) => {
15163
15777
  return openBlock(), createElementBlock("li", {
15164
15778
  key: itemKey(item),
15165
15779
  class: "list__item"
@@ -15172,12 +15786,12 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
15172
15786
  }, {
15173
15787
  item
15174
15788
  }))], 512)]);
15175
- }), 128)), _cache[0] || (_cache[0] = createTextVNode()), isEmpty2.value ? (openBlock(), createElementBlock("li", _hoisted_2$a, [createElementVNode("div", _hoisted_3$6, [renderSlot(_ctx.$slots, "empty", {}, () => [createElementVNode("em", null, toDisplayString(unref($t2)("fkui.list.empty", "Listan är tom")), 1)])])])) : createCommentVNode("", true)])) : (openBlock(), createElementBlock("ul", {
15789
+ }), 128)), _cache[0] || (_cache[0] = createTextVNode()), isEmpty2.value ? (openBlock(), createElementBlock("li", _hoisted_2$a, [createElementVNode("div", _hoisted_3$7, [renderSlot(_ctx.$slots, "empty", {}, () => [createElementVNode("em", null, toDisplayString(unref($t2)("fkui.list.empty", "Listan är tom")), 1)])])])) : createCommentVNode("", true)])) : (openBlock(), createElementBlock("ul", {
15176
15790
  key: 1,
15177
15791
  ref_key: "ulElement",
15178
15792
  ref: ulElement,
15179
15793
  class: "list list--hover"
15180
- }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item, index) => {
15794
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(internalItems.value, (item, index) => {
15181
15795
  return openBlock(), createElementBlock("li", {
15182
15796
  id: getItemId(item),
15183
15797
  key: itemKey(item),
@@ -15971,7 +16585,7 @@ const _sfc_main$c = defineComponent({
15971
16585
  });
15972
16586
  const _hoisted_1$c = ["aria-label"];
15973
16587
  const _hoisted_2$8 = ["data-ref-index", "onClick"];
15974
- const _hoisted_3$5 = {
16588
+ const _hoisted_3$6 = {
15975
16589
  class: "imenu__list__anchor-container"
15976
16590
  };
15977
16591
  const _hoisted_4$4 = ["data-ref-index", "href", "target"];
@@ -16012,7 +16626,7 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
16012
16626
  class: normalizeClass(_ctx.itemClasses(item, index)),
16013
16627
  role: "none",
16014
16628
  onClick: (event) => _ctx.onClickItem(event, item)
16015
- }, [createElementVNode("div", _hoisted_3$5, [createElementVNode("a", {
16629
+ }, [createElementVNode("div", _hoisted_3$6, [createElementVNode("a", {
16016
16630
  ref_for: true,
16017
16631
  ref: "anchors",
16018
16632
  "data-ref-index": index,
@@ -16107,7 +16721,7 @@ const _hoisted_2$7 = {
16107
16721
  key: 0,
16108
16722
  class: "offline"
16109
16723
  };
16110
- const _hoisted_3$4 = {
16724
+ const _hoisted_3$5 = {
16111
16725
  class: "icon-stack icon-stack--error"
16112
16726
  };
16113
16727
  const _hoisted_4$3 = {
@@ -16130,7 +16744,7 @@ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
16130
16744
  shrink: "",
16131
16745
  align: "center"
16132
16746
  }, {
16133
- default: withCtx(() => [createElementVNode("span", _hoisted_3$4, [createVNode(_component_f_icon, {
16747
+ default: withCtx(() => [createElementVNode("span", _hoisted_3$5, [createVNode(_component_f_icon, {
16134
16748
  name: "triangle"
16135
16749
  }), _cache[0] || (_cache[0] = createTextVNode()), createVNode(_component_f_icon, {
16136
16750
  name: "alert"
@@ -16259,7 +16873,7 @@ const _hoisted_1$9 = {
16259
16873
  const _hoisted_2$5 = {
16260
16874
  key: 0
16261
16875
  };
16262
- const _hoisted_3$3 = {
16876
+ const _hoisted_3$4 = {
16263
16877
  ref: "header",
16264
16878
  class: "page-header"
16265
16879
  };
@@ -16280,7 +16894,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
16280
16894
  }, {
16281
16895
  default: withCtx(() => [renderSlot(_ctx.$slots, "skip-link-text")]),
16282
16896
  _: 3
16283
- }, 8, ["href"])])) : createCommentVNode("", true), _cache[2] || (_cache[2] = createTextVNode()), createElementVNode("div", _hoisted_3$3, [_ctx.hasLogo ? (openBlock(), createElementBlock("div", _hoisted_4$2, [renderSlot(_ctx.$slots, "logo")])) : createCommentVNode("", true), _cache[0] || (_cache[0] = createTextVNode()), (openBlock(), createBlock(resolveDynamicComponent(_ctx.headerTag), {
16897
+ }, 8, ["href"])])) : createCommentVNode("", true), _cache[2] || (_cache[2] = createTextVNode()), createElementVNode("div", _hoisted_3$4, [_ctx.hasLogo ? (openBlock(), createElementBlock("div", _hoisted_4$2, [renderSlot(_ctx.$slots, "logo")])) : createCommentVNode("", true), _cache[0] || (_cache[0] = createTextVNode()), (openBlock(), createBlock(resolveDynamicComponent(_ctx.headerTag), {
16284
16898
  class: "page-header__app-name"
16285
16899
  }, {
16286
16900
  default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
@@ -16425,7 +17039,7 @@ registerLayout({
16425
17039
  }
16426
17040
  }
16427
17041
  });
16428
- const styleContent = ':host {\n display: block;\n}\n\n.page-layout {\n display: grid;\n height: 100cqh;\n width: min(100%, 100cqw);\n\n &[part~="simple"] {\n grid-template:\n "header" min-content\n "content" 1fr\n "footer" min-content\n / 1fr;\n\n [part="area header"],\n [part="area footer"] {\n background: var(--f-background-pageheader-primary);\n color: var(--fkds-color-text-inverted);\n }\n\n [part="area content"] {\n background: var(--fkds-color-background-primary);\n color: var(--fkds-color-text-primary);\n }\n }\n\n &[part~="left-panel"] {\n grid-template:\n "header header" min-content\n "left content" 1fr\n "footer footer" min-content\n / min-content 1fr;\n\n [part="area header"],\n [part="area footer"] {\n background: var(--f-background-pageheader-primary);\n color: var(--fkds-color-text-inverted);\n }\n\n [part="area left"] {\n background: var(--fkds-color-background-secondary);\n }\n\n [part="area content"] {\n background: var(--fkds-color-background-primary);\n color: var(--fkds-color-text-primary);\n }\n }\n\n &[part~="right-panel"] {\n grid-template:\n "header header" min-content\n "content right" 1fr\n "footer footer" min-content\n / 1fr min-content;\n\n [part="area header"],\n [part="area footer"] {\n background: var(--f-background-pageheader-primary);\n color: var(--fkds-color-text-inverted);\n }\n\n [part="area right"] {\n background: var(--fkds-color-background-secondary);\n color: var(--fkds-color-text-primary);\n }\n\n [part="area content"] {\n background: var(--fkds-color-background-primary);\n color: var(--fkds-color-text-primary);\n }\n }\n\n &[part~="three-column"] {\n grid-template:\n "header header header" min-content\n "left content right" 1fr\n "footer footer footer" min-content\n / min-content 1fr min-content;\n\n [part="area header"],\n [part="area footer"] {\n background: var(--f-background-pageheader-primary);\n color: var(--fkds-color-text-inverted);\n }\n\n [part="area left"],\n [part="area right"] {\n background: var(--fkds-color-background-secondary);\n color: var(--fkds-color-text-primary);\n }\n\n [part="area content"] {\n background: var(--fkds-color-background-primary);\n color: var(--fkds-color-text-primary);\n }\n }\n}\n\n.page-layout__area {\n display: flex;\n position: relative;\n\n &[data-direction="column"] {\n flex-direction: column;\n }\n\n &[data-direction="row"] {\n flex-direction: row;\n }\n\n &[data-scroll] {\n overflow-y: auto;\n }\n\n &:empty {\n display: none;\n }\n}\n\n:host ::slotted(*) {\n display: contents;\n}\n';
17042
+ const styleContent = ':host {\n display: block;\n}\n\n.page-layout {\n display: grid;\n height: 100cqh;\n width: min(100%, 100cqw);\n\n &[part~="simple"] {\n grid-template:\n "header" min-content\n "content" 1fr\n "footer" min-content\n / 1fr;\n\n [part="area header"],\n [part="area footer"] {\n --f-page-layout-background: var(--f-background-pageheader-primary);\n --f-page-layout-color: var(--fkds-color-text-inverted);\n }\n\n [part="area content"] {\n --f-page-layout-background: var(--fkds-color-background-primary);\n --f-page-layout-color: var(--fkds-color-text-primary);\n }\n }\n\n &[part~="left-panel"] {\n grid-template:\n "header header" min-content\n "left content" 1fr\n "footer footer" min-content\n / min-content 1fr;\n\n [part="area header"],\n [part="area footer"] {\n --f-page-layout-background: var(--f-background-pageheader-primary);\n --f-page-layout-color: var(--fkds-color-text-inverted);\n }\n\n [part="area left"] {\n --f-page-layout-background: var(--fkds-color-background-secondary);\n }\n\n [part="area content"] {\n --f-page-layout-background: var(--fkds-color-background-primary);\n --f-page-layout-color: var(--fkds-color-text-primary);\n }\n }\n\n &[part~="right-panel"] {\n grid-template:\n "header header" min-content\n "content right" 1fr\n "footer footer" min-content\n / 1fr min-content;\n\n [part="area header"],\n [part="area footer"] {\n --f-page-layout-background: var(--f-background-pageheader-primary);\n --f-page-layout-color: var(--fkds-color-text-inverted);\n }\n\n [part="area right"] {\n --f-page-layout-background: var(--fkds-color-background-secondary);\n --f-page-layout-color: var(--fkds-color-text-primary);\n }\n\n [part="area content"] {\n --f-page-layout-background: var(--fkds-color-background-primary);\n --f-page-layout-color: var(--fkds-color-text-primary);\n }\n }\n\n &[part~="three-column"] {\n grid-template:\n "header header header" min-content\n "left content right" 1fr\n "footer footer footer" min-content\n / min-content 1fr min-content;\n\n [part="area header"],\n [part="area footer"] {\n --f-page-layout-background: var(--f-background-pageheader-primary);\n --f-page-layout-color: var(--fkds-color-text-inverted);\n }\n\n [part="area left"],\n [part="area right"] {\n --f-page-layout-background: var(--fkds-color-background-secondary);\n --f-page-layout-color: var(--fkds-color-text-primary);\n }\n\n [part="area content"] {\n --f-page-layout-background: var(--fkds-color-background-primary);\n --f-page-layout-color: var(--fkds-color-text-primary);\n }\n }\n}\n\n.page-layout__area {\n display: flex;\n position: relative;\n background: var(--f-page-layout-background);\n color: var(--f-page-layout-color);\n\n &[data-direction="column"] {\n flex-direction: column;\n }\n\n &[data-direction="row"] {\n flex-direction: row;\n }\n\n &[data-scroll] {\n overflow-y: auto;\n }\n\n &:empty {\n display: none;\n }\n}\n\n:host ::slotted(*) {\n display: contents;\n}\n';
16429
17043
  const stubLayout = defineLayout({
16430
17044
  name: "",
16431
17045
  areas: {}
@@ -16527,6 +17141,9 @@ class PageLayout extends HTMLElement {
16527
17141
  _classPrivateFieldGet2(_elements, this)[slot] = element;
16528
17142
  }
16529
17143
  }
17144
+ setTimeout(() => {
17145
+ this.dispatchEvent(new CustomEvent("update"));
17146
+ }, 0);
16530
17147
  }
16531
17148
  }
16532
17149
  const _hoisted_1$8 = ["slot"];
@@ -16536,7 +17153,11 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
16536
17153
  props: {
16537
17154
  layout: {}
16538
17155
  },
16539
- setup(__props) {
17156
+ emits: ["update"],
17157
+ setup(__props, {
17158
+ emit: __emit
17159
+ }) {
17160
+ const emit = __emit;
16540
17161
  const slots = useSlots();
16541
17162
  const slotNames = computed(() => {
16542
17163
  return Object.keys(slots);
@@ -16546,9 +17167,13 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
16546
17167
  customElements.define(tagName$1, PageLayout);
16547
17168
  }
16548
17169
  });
17170
+ function onUpdate() {
17171
+ emit("update");
17172
+ }
16549
17173
  return (_ctx, _cache) => {
16550
17174
  return openBlock(), createBlock(resolveDynamicComponent(tagName$1), {
16551
- layout: _ctx.layout
17175
+ layout: _ctx.layout,
17176
+ onUpdate
16552
17177
  }, {
16553
17178
  default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(slotNames.value, (slot) => {
16554
17179
  return openBlock(), createElementBlock("div", {
@@ -16557,10 +17182,87 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
16557
17182
  }, [renderSlot(_ctx.$slots, slot)], 8, _hoisted_1$8);
16558
17183
  }), 128))]),
16559
17184
  _: 3
16560
- }, 8, ["layout"]);
17185
+ }, 40, ["layout"]);
16561
17186
  };
16562
17187
  }
16563
17188
  });
17189
+ function tryOnScopeDispose(fn2) {
17190
+ if (getCurrentScope()) {
17191
+ onScopeDispose(fn2);
17192
+ return true;
17193
+ }
17194
+ return false;
17195
+ }
17196
+ const isClient = typeof window !== "undefined" && typeof document !== "undefined";
17197
+ typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope;
17198
+ const toString = Object.prototype.toString;
17199
+ const isObject = (val) => toString.call(val) === "[object Object]";
17200
+ function toArray(value) {
17201
+ return Array.isArray(value) ? value : [value];
17202
+ }
17203
+ function watchImmediate(source, cb, options) {
17204
+ return watch(
17205
+ source,
17206
+ cb,
17207
+ {
17208
+ ...options,
17209
+ immediate: true
17210
+ }
17211
+ );
17212
+ }
17213
+ const defaultWindow = isClient ? window : void 0;
17214
+ function unrefElement(elRef) {
17215
+ var _a;
17216
+ const plain = toValue(elRef);
17217
+ return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
17218
+ }
17219
+ function useEventListener(...args) {
17220
+ const cleanups = [];
17221
+ const cleanup = () => {
17222
+ cleanups.forEach((fn2) => fn2());
17223
+ cleanups.length = 0;
17224
+ };
17225
+ const register = (el, event, listener, options) => {
17226
+ el.addEventListener(event, listener, options);
17227
+ return () => el.removeEventListener(event, listener, options);
17228
+ };
17229
+ const firstParamTargets = computed(() => {
17230
+ const test = toArray(toValue(args[0])).filter((e) => e != null);
17231
+ return test.every((e) => typeof e !== "string") ? test : void 0;
17232
+ });
17233
+ const stopWatch = watchImmediate(
17234
+ () => {
17235
+ var _a, _b;
17236
+ return [
17237
+ (_b = (_a = firstParamTargets.value) == null ? void 0 : _a.map((e) => unrefElement(e))) != null ? _b : [defaultWindow].filter((e) => e != null),
17238
+ toArray(toValue(firstParamTargets.value ? args[1] : args[0])),
17239
+ toArray(unref(firstParamTargets.value ? args[2] : args[1])),
17240
+ // @ts-expect-error - TypeScript gets the correct types, but somehow still complains
17241
+ toValue(firstParamTargets.value ? args[3] : args[2])
17242
+ ];
17243
+ },
17244
+ ([raw_targets, raw_events, raw_listeners, raw_options]) => {
17245
+ cleanup();
17246
+ if (!(raw_targets == null ? void 0 : raw_targets.length) || !(raw_events == null ? void 0 : raw_events.length) || !(raw_listeners == null ? void 0 : raw_listeners.length))
17247
+ return;
17248
+ const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;
17249
+ cleanups.push(
17250
+ ...raw_targets.flatMap(
17251
+ (el) => raw_events.flatMap(
17252
+ (event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))
17253
+ )
17254
+ )
17255
+ );
17256
+ },
17257
+ { flush: "post" }
17258
+ );
17259
+ const stop = () => {
17260
+ stopWatch();
17261
+ cleanup();
17262
+ };
17263
+ tryOnScopeDispose(cleanup);
17264
+ return stop;
17265
+ }
16564
17266
  function getProperty(style, key) {
16565
17267
  const value = style.getPropertyValue(key);
16566
17268
  if (value === "") {
@@ -16569,16 +17271,33 @@ function getProperty(style, key) {
16569
17271
  return JSON.parse(value);
16570
17272
  }
16571
17273
  }
17274
+ function findLayoutElement(element) {
17275
+ if (!element) {
17276
+ return null;
17277
+ }
17278
+ const parent = element.closest("ce-page-layout");
17279
+ if (parent) {
17280
+ return parent;
17281
+ }
17282
+ const root = element.getRootNode();
17283
+ if (root instanceof ShadowRoot) {
17284
+ return findLayoutElement(root.host);
17285
+ }
17286
+ return null;
17287
+ }
16572
17288
  function useAreaData(element) {
16573
17289
  const area = ref(null);
16574
17290
  const attachPanel = ref(null);
16575
17291
  const direction = ref(null);
17292
+ const layoutElement = computed(() => findLayoutElement(toValue(element)));
17293
+ useEventListener(layoutElement, "update", () => {
17294
+ if (element.value) {
17295
+ update(element.value);
17296
+ }
17297
+ });
16576
17298
  watchEffect(() => {
16577
17299
  if (element.value) {
16578
- const style = getComputedStyle(element.value);
16579
- area.value = getProperty(style, VAR_NAME_AREA);
16580
- attachPanel.value = getProperty(style, VAR_NAME_ATTACH_PANEL);
16581
- direction.value = getProperty(style, VAR_NAME_DIRECTION);
17300
+ update(element.value);
16582
17301
  }
16583
17302
  });
16584
17303
  return {
@@ -16586,12 +17305,18 @@ function useAreaData(element) {
16586
17305
  attachPanel,
16587
17306
  direction
16588
17307
  };
17308
+ function update(element2) {
17309
+ const style = getComputedStyle(element2);
17310
+ area.value = getProperty(style, VAR_NAME_AREA);
17311
+ attachPanel.value = getProperty(style, VAR_NAME_ATTACH_PANEL);
17312
+ direction.value = getProperty(style, VAR_NAME_DIRECTION);
17313
+ }
16589
17314
  }
16590
17315
  const _hoisted_1$7 = {
16591
17316
  class: "progress"
16592
17317
  };
16593
17318
  const _hoisted_2$4 = ["aria-label", "aria-valuenow", "aria-valuetext"];
16594
- const _hoisted_3$2 = {
17319
+ const _hoisted_3$3 = {
16595
17320
  class: "sr-only"
16596
17321
  };
16597
17322
  const MIN_VALUE = 0;
@@ -16662,7 +17387,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
16662
17387
  "aria-valuenow": progressValueNow.value,
16663
17388
  "aria-valuetext": progressText.value,
16664
17389
  style: normalizeStyle(cssWidth.value)
16665
- }, [createElementVNode("span", _hoisted_3$2, toDisplayString(progressText.value), 1)], 14, _hoisted_2$4)]);
17390
+ }, [createElementVNode("span", _hoisted_3$3, toDisplayString(progressText.value), 1)], 14, _hoisted_2$4)]);
16666
17391
  };
16667
17392
  }
16668
17393
  });
@@ -16825,7 +17550,7 @@ const _sfc_main$6 = defineComponent({
16825
17550
  });
16826
17551
  const _hoisted_1$6 = ["id", "disabled"];
16827
17552
  const _hoisted_2$3 = ["for"];
16828
- const _hoisted_3$1 = {
17553
+ const _hoisted_3$2 = {
16829
17554
  key: 0,
16830
17555
  class: "radio-button__details"
16831
17556
  };
@@ -16847,7 +17572,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
16847
17572
  for: _ctx.id
16848
17573
  }, [renderSlot(_ctx.$slots, "default"), _cache[6] || (_cache[6] = createTextVNode()), _ctx.$slots.details ? (openBlock(), createElementBlock(Fragment, {
16849
17574
  key: 0
16850
- }, [_ctx.showDetails === "always" ? (openBlock(), createElementBlock("span", _hoisted_3$1, [_cache[1] || (_cache[1] = createElementVNode("br", null, null, -1)), _cache[2] || (_cache[2] = createTextVNode()), renderSlot(_ctx.$slots, "details")])) : createCommentVNode("", true), _cache[5] || (_cache[5] = createTextVNode()), _ctx.showDetails === "when-selected" ? (openBlock(), createBlock(Transition, {
17575
+ }, [_ctx.showDetails === "always" ? (openBlock(), createElementBlock("span", _hoisted_3$2, [_cache[1] || (_cache[1] = createElementVNode("br", null, null, -1)), _cache[2] || (_cache[2] = createTextVNode()), renderSlot(_ctx.$slots, "details")])) : createCommentVNode("", true), _cache[5] || (_cache[5] = createTextVNode()), _ctx.showDetails === "when-selected" ? (openBlock(), createBlock(Transition, {
16851
17576
  key: 1,
16852
17577
  onEnter: _ctx.enter,
16853
17578
  onAfterEnter: _ctx.afterEnter,
@@ -16860,83 +17585,6 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
16860
17585
  }, 8, ["onEnter", "onAfterEnter", "onLeave"])) : createCommentVNode("", true)], 64)) : createCommentVNode("", true)], 10, _hoisted_2$3)], 34);
16861
17586
  }
16862
17587
  const FRadioField = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$4]]);
16863
- function tryOnScopeDispose(fn2) {
16864
- if (getCurrentScope()) {
16865
- onScopeDispose(fn2);
16866
- return true;
16867
- }
16868
- return false;
16869
- }
16870
- const isClient = typeof window !== "undefined" && typeof document !== "undefined";
16871
- typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope;
16872
- const toString = Object.prototype.toString;
16873
- const isObject = (val) => toString.call(val) === "[object Object]";
16874
- function toArray(value) {
16875
- return Array.isArray(value) ? value : [value];
16876
- }
16877
- function watchImmediate(source, cb, options) {
16878
- return watch(
16879
- source,
16880
- cb,
16881
- {
16882
- ...options,
16883
- immediate: true
16884
- }
16885
- );
16886
- }
16887
- const defaultWindow = isClient ? window : void 0;
16888
- function unrefElement(elRef) {
16889
- var _a;
16890
- const plain = toValue(elRef);
16891
- return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
16892
- }
16893
- function useEventListener(...args) {
16894
- const cleanups = [];
16895
- const cleanup = () => {
16896
- cleanups.forEach((fn2) => fn2());
16897
- cleanups.length = 0;
16898
- };
16899
- const register = (el, event, listener, options) => {
16900
- el.addEventListener(event, listener, options);
16901
- return () => el.removeEventListener(event, listener, options);
16902
- };
16903
- const firstParamTargets = computed(() => {
16904
- const test = toArray(toValue(args[0])).filter((e) => e != null);
16905
- return test.every((e) => typeof e !== "string") ? test : void 0;
16906
- });
16907
- const stopWatch = watchImmediate(
16908
- () => {
16909
- var _a, _b;
16910
- return [
16911
- (_b = (_a = firstParamTargets.value) == null ? void 0 : _a.map((e) => unrefElement(e))) != null ? _b : [defaultWindow].filter((e) => e != null),
16912
- toArray(toValue(firstParamTargets.value ? args[1] : args[0])),
16913
- toArray(unref(firstParamTargets.value ? args[2] : args[1])),
16914
- // @ts-expect-error - TypeScript gets the correct types, but somehow still complains
16915
- toValue(firstParamTargets.value ? args[3] : args[2])
16916
- ];
16917
- },
16918
- ([raw_targets, raw_events, raw_listeners, raw_options]) => {
16919
- cleanup();
16920
- if (!(raw_targets == null ? void 0 : raw_targets.length) || !(raw_events == null ? void 0 : raw_events.length) || !(raw_listeners == null ? void 0 : raw_listeners.length))
16921
- return;
16922
- const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;
16923
- cleanups.push(
16924
- ...raw_targets.flatMap(
16925
- (el) => raw_events.flatMap(
16926
- (event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))
16927
- )
16928
- )
16929
- );
16930
- },
16931
- { flush: "post" }
16932
- );
16933
- const stop = () => {
16934
- stopWatch();
16935
- cleanup();
16936
- };
16937
- tryOnScopeDispose(cleanup);
16938
- return stop;
16939
- }
16940
17588
  const keymap = {
16941
17589
  left: {
16942
17590
  ArrowLeft: "decrease",
@@ -17055,7 +17703,7 @@ function computeCssValue(raw, total, auto) {
17055
17703
  return percent * total;
17056
17704
  } else if (raw === "0") {
17057
17705
  return 0;
17058
- } else if (raw === "auto") {
17706
+ } else if (raw === "auto" || raw === "") {
17059
17707
  return auto;
17060
17708
  } else {
17061
17709
  throw new Error(`Cant parse size from "${raw}"`);
@@ -17103,10 +17751,17 @@ function useStorage(options) {
17103
17751
  loaded.value = true;
17104
17752
  });
17105
17753
  }
17106
- const _hoisted_1$5 = ["aria-orientation"];
17754
+ const _hoisted_1$5 = {
17755
+ key: 0,
17756
+ class: "resize__offset"
17757
+ };
17107
17758
  const _hoisted_2$2 = ["aria-orientation"];
17759
+ const _hoisted_3$1 = ["aria-orientation"];
17108
17760
  const STEP_SIZE = 10;
17109
17761
  const _sfc_main$5 = /* @__PURE__ */ defineComponent({
17762
+ ...{
17763
+ inheritAttrs: false
17764
+ },
17110
17765
  __name: "FResizePane.ce",
17111
17766
  props: {
17112
17767
  disabled: {
@@ -17124,10 +17779,22 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
17124
17779
  initial: {
17125
17780
  default: "50%",
17126
17781
  type: String
17782
+ },
17783
+ overlay: {
17784
+ type: Boolean,
17785
+ default: false
17786
+ },
17787
+ offset: {
17788
+ default: 0,
17789
+ type: Number
17127
17790
  }
17128
17791
  },
17129
- setup(__props) {
17792
+ emits: ["resize"],
17793
+ setup(__props, {
17794
+ emit: __emit
17795
+ }) {
17130
17796
  const props = __props;
17797
+ const emit = __emit;
17131
17798
  const root = shallowRef();
17132
17799
  const content = ref();
17133
17800
  const separator = ref();
@@ -17136,11 +17803,11 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
17136
17803
  max: -1,
17137
17804
  current: -1
17138
17805
  });
17139
- const separatorSize = ref(0);
17140
17806
  const layoutSize = ref(0);
17141
17807
  const storageKey = computed(() => area.value ? `layout/${area.value}/size` : null);
17142
17808
  const {
17143
17809
  attachPanel: attachment,
17810
+ direction,
17144
17811
  area
17145
17812
  } = useAreaData(root);
17146
17813
  useKeyboardHandler({
@@ -17173,11 +17840,11 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
17173
17840
  });
17174
17841
  const minSize = computed(() => {
17175
17842
  const total = layoutSize.value;
17176
- return Math.floor(aggregateCssValue(props.min, total, 0, Math.max) + separatorSize.value);
17843
+ return Math.floor(aggregateCssValue(props.min, total, 0, Math.max));
17177
17844
  });
17178
17845
  const maxSize = computed(() => {
17179
17846
  const total = layoutSize.value;
17180
- return Math.floor(aggregateCssValue(props.max, total, total, Math.min) + separatorSize.value);
17847
+ return Math.max(Math.floor(aggregateCssValue(props.max, total, total, Math.min)), minSize.value);
17181
17848
  });
17182
17849
  const initialSize = computed(() => {
17183
17850
  const total = layoutSize.value;
@@ -17190,6 +17857,9 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
17190
17857
  return "vertical";
17191
17858
  }
17192
17859
  });
17860
+ const classes = computed(() => {
17861
+ return [`resize--${attachment.value}`, `resize--${direction.value}`, props.overlay ? "resize--overlay" : void 0, props.disabled ? "resize--disabled" : void 0];
17862
+ });
17193
17863
  const layoutElement = computed(() => {
17194
17864
  var _host$closest;
17195
17865
  if (!root.value) {
@@ -17199,6 +17869,8 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
17199
17869
  const host = shadow.host;
17200
17870
  return (_host$closest = host.closest("ce-page-layout")) !== null && _host$closest !== void 0 ? _host$closest : void 0;
17201
17871
  });
17872
+ watch(() => props.min, onResize);
17873
+ watch(() => props.max, onResize);
17202
17874
  watchEffect(() => {
17203
17875
  const {
17204
17876
  min,
@@ -17206,23 +17878,23 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
17206
17878
  current: value
17207
17879
  } = state.value;
17208
17880
  if (root.value) {
17209
- root.value.style.setProperty("--size", `${String(value)}px`);
17210
- root.value.style.setProperty("--min", `${min}px`);
17211
- root.value.style.setProperty("--max", `${max}px`);
17881
+ const shadowRoot = root.value.getRootNode();
17882
+ const host = shadowRoot.host;
17883
+ host.style.setProperty("--size", `${String(value)}px`);
17884
+ host.style.setProperty("--min", `${min}px`);
17885
+ host.style.setProperty("--max", `${max}px`);
17886
+ host.style.setProperty("--offset", `${props.offset}px`);
17212
17887
  }
17213
17888
  if (separator.value) {
17214
17889
  separator.value.setAttribute("aria-valuemin", String(Math.floor(min)));
17215
17890
  separator.value.setAttribute("aria-valuemax", String(Math.floor(max)));
17216
17891
  separator.value.setAttribute("aria-valuenow", String(Math.floor(value)));
17217
17892
  }
17893
+ if (value >= 0) {
17894
+ emit("resize", value);
17895
+ }
17218
17896
  });
17219
17897
  onMounted(() => {
17220
- if (separator.value) {
17221
- const {
17222
- flexBasis
17223
- } = getComputedStyle(separator.value);
17224
- separatorSize.value = computeCssValue(flexBasis, 0, 0);
17225
- }
17226
17898
  layoutSize.value = getLayoutSize();
17227
17899
  state.value = {
17228
17900
  min: minSize.value,
@@ -17253,11 +17925,11 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
17253
17925
  }
17254
17926
  }
17255
17927
  return (_ctx, _cache) => {
17256
- return openBlock(), createElementBlock("div", {
17928
+ return openBlock(), createElementBlock(Fragment, null, [_ctx.overlay && _ctx.offset ? (openBlock(), createElementBlock("div", _hoisted_1$5)) : createCommentVNode("", true), _cache[1] || (_cache[1] = createTextVNode()), createElementVNode("div", mergeProps({
17257
17929
  ref_key: "root",
17258
17930
  ref: root,
17259
- class: normalizeClass(["resize", `resize--${unref(attachment)}`])
17260
- }, [createElementVNode("div", {
17931
+ class: ["resize", classes.value]
17932
+ }, _ctx.$attrs), [createElementVNode("div", {
17261
17933
  ref_key: "content",
17262
17934
  ref: content,
17263
17935
  class: "resize__content"
@@ -17269,17 +17941,36 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
17269
17941
  class: "resize__handle",
17270
17942
  tabindex: "0",
17271
17943
  "aria-orientation": orientation.value
17272
- }, null, 8, _hoisted_1$5)) : (openBlock(), createElementBlock("div", {
17944
+ }, null, 8, _hoisted_2$2)) : (openBlock(), createElementBlock("div", {
17273
17945
  key: 1,
17274
17946
  role: "separator",
17275
17947
  class: "resize__handle disabled",
17276
17948
  "aria-orientation": orientation.value
17277
- }, null, 8, _hoisted_2$2))], 2);
17949
+ }, null, 8, _hoisted_3$1))], 16)], 64);
17278
17950
  };
17279
17951
  }
17280
17952
  });
17281
- const _style_0 = '/* background color */\n/* highlight color */\n/* the width of the visible handle */\n/* how much extra click/hover area the handle has */\n/* how much extra space the handle occupies when hovering (not counting the click area) */\n/* how long before visually indicating the hover state */\n/* how long the animation for the visual indicator is */\n:host {\n display: contents;\n}\n.resize {\n flex-grow: 1;\n display: flex;\n align-items: stretch;\n}\n.resize--left {\n flex-direction: row;\n width: var(--size);\n}\n.resize--right {\n flex-direction: row-reverse;\n width: var(--size);\n}\n.resize--top {\n flex-direction: column;\n height: var(--size);\n}\n.resize--bottom {\n flex-direction: column-reverse;\n height: var(--size);\n}\n.resize__content {\n flex: 1 1 auto;\n overflow: auto;\n box-sizing: border-box;\n display: flex;\n}\n.resize--left .resize__content, .resize--right .resize__content {\n min-width: calc(var(--min) - 2px);\n max-width: calc(var(--max) - 2px);\n}\n.resize--top .resize__content, .resize--bottom .resize__content {\n min-height: calc(var(--min) - 2px);\n max-height: calc(var(--max) - 2px);\n}\n.resize__handle {\n flex: 0 0 2px;\n background: var(--fkds-color-border-primary);\n touch-action: none;\n user-select: none;\n z-index: 1;\n position: relative;\n transition: z-index 0s 200ms;\n /* disable regular focus indicator as this component has its own */\n /* when focus by keyboard we dont want the delay or transition */\n /* as the handle area expand we increase z-index for the handle to make sure it covers other separators */\n}\n@media (forced-colors: active) {\n.resize__handle {\n background: CanvasText;\n}\n}\n.resize__handle[aria-orientation=horizontal] {\n cursor: row-resize;\n height: 2px;\n}\n.resize__handle[aria-orientation=horizontal]::before {\n inset: -2px 0;\n}\n.resize__handle[aria-orientation=horizontal]::after {\n inset: -4px 0;\n}\n.resize__handle[aria-orientation=vertical] {\n cursor: col-resize;\n width: 2px;\n}\n.resize__handle[aria-orientation=vertical]::before {\n inset: 0 -2px;\n}\n.resize__handle[aria-orientation=vertical]::after {\n inset: 0 -4px;\n}\n.resize__handle::before {\n content: "";\n pointer-events: none;\n position: absolute;\n background-color: transparent;\n transition: background-color 200ms ease-in;\n}\n.resize__handle::after {\n content: "";\n position: absolute;\n}\n.resize__handle:focus::before, .resize__handle:hover::before, .resize__handle.drag::before {\n background-color: var(--fkds-color-action-border-primary-hover);\n transition-delay: 200ms;\n}\n@media (forced-colors: active) {\n.resize__handle:focus::before, .resize__handle:hover::before, .resize__handle.drag::before {\n background-color: Highlight;\n}\n}\n.resize__handle:focus {\n outline: none;\n box-shadow: none;\n}\n.resize__handle:focus::before {\n transition: none;\n}\n.resize__handle:hover, .resize__handle:focus, .resize__handle.drag {\n z-index: 2;\n transition: z-index 0s 0s;\n}\n.resize__handle.disabled {\n cursor: auto;\n}\n.resize__handle.disabled::before {\n display: none;\n}\n.resize--left .resize__handle {\n left: 2px;\n}\n.resize--right .resize__handle {\n right: 2px;\n}\n.resize--top .resize__handle {\n top: 2px;\n}\n.resize--bottom .resize__handle {\n bottom: 2px;\n}';
17953
+ const _style_0 = '/* background color */\n/* highlight color */\n/* the width of the visible handle */\n/* how much extra click/hover area the handle has */\n/* how much extra space the handle occupies when hovering (not counting the click area) */\n/* how long before visually indicating the hover state */\n/* how long the animation for the visual indicator is */\n:host {\n display: contents;\n}\n:host([hidden]) {\n display: none;\n}\n:host ::slotted(*) {\n display: contents;\n}\n.resize {\n flex-grow: 1;\n display: flex;\n align-items: stretch;\n}\n.resize--overlay {\n position: absolute;\n z-index: 1;\n background: var(--f-page-layout-background);\n}\n.resize--left {\n flex-direction: row;\n}\n.resize--left:not(.resize--disabled) {\n width: calc(var(--size) + 2px);\n}\n.resize--left .resize__content {\n flex-direction: row;\n}\n.resize--left.resize--overlay {\n left: 0;\n top: 0;\n bottom: 0;\n}\n.resize--right {\n flex-direction: row-reverse;\n}\n.resize--right:not(.resize--disabled) {\n width: calc(var(--size) + 2px);\n}\n.resize--right .resize__content {\n flex-direction: row;\n}\n.resize--right.resize--overlay {\n right: 0;\n top: 0;\n bottom: 0;\n}\n.resize--top {\n flex-direction: column;\n}\n.resize--top:not(.resize--disabled) {\n height: calc(var(--size) + 2px);\n}\n.resize--bottom {\n flex-direction: column-reverse;\n}\n.resize--bottom:not(.resize--disabled) {\n height: calc(var(--size) + 2px);\n}\n.resize__offset {\n width: calc(var(--offset) + 2px);\n}\n.resize__content {\n flex: 1 1 auto;\n overflow: auto;\n box-sizing: border-box;\n display: flex;\n}\n.resize--column .resize__content {\n flex-direction: column;\n}\n.resize--row .resize__content {\n flex-direction: row;\n}\n.resize--left:not(.resize--disabled) .resize__content, .resize--right:not(.resize--disabled) .resize__content {\n min-width: var(--min);\n max-width: var(--max);\n flex-basis: var(--size);\n}\n.resize--top:not(.resize--disabled) .resize__content, .resize--bottom:not(.resize--disabled) .resize__content {\n min-height: var(--min);\n max-height: var(--max);\n flex-basis: var(--size);\n}\n.resize__handle {\n flex: 0 0 2px;\n background: var(--fkds-color-border-primary);\n touch-action: none;\n user-select: none;\n z-index: 1;\n position: relative;\n transition: z-index 0s 200ms;\n /* disable regular focus indicator as this component has its own */\n /* when focus by keyboard we dont want the delay or transition */\n /* as the handle area expand we increase z-index for the handle to make sure it covers other separators */\n}\n@media (forced-colors: active) {\n.resize__handle {\n background: CanvasText;\n}\n}\n.resize__handle[aria-orientation=horizontal] {\n cursor: row-resize;\n height: 2px;\n}\n.resize__handle[aria-orientation=horizontal]::before {\n inset: -2px 0;\n}\n.resize__handle[aria-orientation=horizontal]::after {\n inset: -4px 0;\n}\n.resize__handle[aria-orientation=vertical] {\n cursor: col-resize;\n width: 2px;\n}\n.resize__handle[aria-orientation=vertical]::before {\n inset: 0 -2px;\n}\n.resize__handle[aria-orientation=vertical]::after {\n inset: 0 -4px;\n}\n.resize__handle::before {\n content: "";\n pointer-events: none;\n position: absolute;\n background-color: transparent;\n transition: background-color 200ms ease-in;\n}\n.resize__handle::after {\n content: "";\n position: absolute;\n}\n.resize__handle:focus::before, .resize__handle:hover::before, .resize__handle.drag::before {\n background-color: var(--fkds-color-action-border-primary-hover);\n transition-delay: 200ms;\n}\n@media (forced-colors: active) {\n.resize__handle:focus::before, .resize__handle:hover::before, .resize__handle.drag::before {\n background-color: Highlight;\n}\n}\n.resize__handle:focus {\n outline: none;\n box-shadow: none;\n}\n.resize__handle:focus::before {\n transition: none;\n}\n.resize__handle:hover, .resize__handle:focus, .resize__handle.drag {\n z-index: 2;\n transition: z-index 0s 0s;\n}\n.resize__handle.disabled {\n cursor: auto;\n}\n.resize__handle.disabled::before {\n display: none;\n}';
17282
17954
  const FResizePane = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["styles", [_style_0]]]);
17955
+ const injectionKey = Symbol("FResizePane");
17956
+ function useResize(options = {}) {
17957
+ const api = inject(injectionKey, {
17958
+ register() {
17959
+ return () => void 0;
17960
+ },
17961
+ size: ref(0)
17962
+ });
17963
+ const unregister = api.register({
17964
+ enabled: options.enabled,
17965
+ visible: options.visible,
17966
+ overlay: options.overlay,
17967
+ offset: options.offset
17968
+ });
17969
+ onUnmounted(unregister);
17970
+ return {
17971
+ size: api.size
17972
+ };
17973
+ }
17283
17974
  const _hoisted_1$4 = {
17284
17975
  slot: "content"
17285
17976
  };
@@ -17287,10 +17978,6 @@ const tagName = "ce-resize-pane";
17287
17978
  const _sfc_main$4 = /* @__PURE__ */ defineComponent({
17288
17979
  __name: "FResizePane",
17289
17980
  props: {
17290
- disabled: {
17291
- type: Boolean,
17292
- default: false
17293
- },
17294
17981
  min: {
17295
17982
  default: "0"
17296
17983
  },
@@ -17305,12 +17992,83 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
17305
17992
  if (!customElements.get(tagName)) {
17306
17993
  customElements.define(tagName, defineCustomElement(FResizePane));
17307
17994
  }
17995
+ const anyEnabled = ref(true);
17996
+ const anyVisible = ref(true);
17997
+ const anyOverlay = ref(false);
17998
+ const size = ref(-1);
17999
+ const offset2 = ref(0);
18000
+ let components = [];
18001
+ let n = 0;
18002
+ function any(src, predicate) {
18003
+ return src.length === 0 || src.some(predicate);
18004
+ }
18005
+ provide(injectionKey, {
18006
+ register(options) {
18007
+ const component = {
18008
+ ...options,
18009
+ id: n++
18010
+ };
18011
+ components.push(component);
18012
+ const scope = effectScope();
18013
+ scope.run(() => {
18014
+ watchEffect(() => {
18015
+ anyEnabled.value = any(components, (it) => {
18016
+ var _a;
18017
+ var _it$enabled$value;
18018
+ return (_it$enabled$value = (_a = it.enabled) == null ? void 0 : _a.value) !== null && _it$enabled$value !== void 0 ? _it$enabled$value : true;
18019
+ });
18020
+ });
18021
+ watchEffect(() => {
18022
+ anyVisible.value = any(components, (it) => {
18023
+ var _a;
18024
+ var _it$visible$value;
18025
+ return (_it$visible$value = (_a = it.visible) == null ? void 0 : _a.value) !== null && _it$visible$value !== void 0 ? _it$visible$value : true;
18026
+ });
18027
+ });
18028
+ watchEffect(() => {
18029
+ anyOverlay.value = any(components, (it) => {
18030
+ var _a;
18031
+ var _it$overlay$value;
18032
+ return (_it$overlay$value = (_a = it.overlay) == null ? void 0 : _a.value) !== null && _it$overlay$value !== void 0 ? _it$overlay$value : false;
18033
+ });
18034
+ });
18035
+ watchEffect(() => {
18036
+ if (components.length === 0) {
18037
+ return 0;
18038
+ }
18039
+ const offsets = components.map((it) => {
18040
+ var _a;
18041
+ return (_a = it.offset) == null ? void 0 : _a.value;
18042
+ }).filter((it) => typeof it === "number");
18043
+ offset2.value = Math.max(0, ...offsets);
18044
+ });
18045
+ });
18046
+ return () => {
18047
+ components = components.filter((it) => it.id !== component.id);
18048
+ scope.stop();
18049
+ };
18050
+ },
18051
+ size
18052
+ });
18053
+ const disabled = computed(() => anyEnabled.value === false);
18054
+ const hidden = computed(() => anyVisible.value === false);
18055
+ const overlay = computed(() => anyOverlay.value === true);
17308
18056
  const props = __props;
18057
+ function onResize(event) {
18058
+ size.value = event.detail[0];
18059
+ }
17309
18060
  return (_ctx, _cache) => {
17310
- return openBlock(), createBlock(resolveDynamicComponent(tagName), normalizeProps(guardReactiveProps(props)), {
18061
+ return openBlock(), createBlock(resolveDynamicComponent(tagName), mergeProps({
18062
+ disabled: disabled.value,
18063
+ hidden: hidden.value,
18064
+ overlay: overlay.value,
18065
+ offset: offset2.value
18066
+ }, props, {
18067
+ onResize
18068
+ }), {
17311
18069
  default: withCtx(() => [createElementVNode("div", _hoisted_1$4, [renderSlot(_ctx.$slots, "default")])]),
17312
18070
  _: 3
17313
- }, 16);
18071
+ }, 16, ["disabled", "hidden", "overlay", "offset"]);
17314
18072
  };
17315
18073
  }
17316
18074
  });
@@ -17748,6 +18506,10 @@ const _sfc_main = defineComponent({
17748
18506
  mixins: [TranslationMixin],
17749
18507
  inheritAttrs: true,
17750
18508
  props: {
18509
+ /**
18510
+ * The title of the wizard step.
18511
+ * This will be displayed as the step's header.
18512
+ */
17751
18513
  title: {
17752
18514
  type: String,
17753
18515
  required: true
@@ -18146,7 +18908,7 @@ export {
18146
18908
  _sfc_main$s as FSortFilterDataset,
18147
18909
  FSortFilterDatasetInjected,
18148
18910
  FStaticField,
18149
- FTableColumn,
18911
+ _sfc_main$J as FTableColumn,
18150
18912
  FTableColumnSize,
18151
18913
  FTableColumnSort,
18152
18914
  FTableColumnType,
@@ -18227,6 +18989,7 @@ export {
18227
18989
  useAreaData,
18228
18990
  useCombobox,
18229
18991
  useModal,
18992
+ useResize,
18230
18993
  useSlotUtils,
18231
18994
  useTextFieldSetup,
18232
18995
  useTranslate