@fkui/vue 6.2.0 → 6.3.1

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.
@@ -4,7 +4,7 @@ const vue = require("vue");
4
4
  const logic = require("@fkui/logic");
5
5
  const date = require("@fkui/date");
6
6
  const statuses = ["default", "warning", "error", "success", "info"];
7
- const _sfc_main$1c = /* @__PURE__ */ vue.defineComponent({
7
+ const _sfc_main$1e = /* @__PURE__ */ vue.defineComponent({
8
8
  __name: "FBadge",
9
9
  props: {
10
10
  /**
@@ -162,10 +162,10 @@ function requireClassofRaw() {
162
162
  if (hasRequiredClassofRaw) return classofRaw;
163
163
  hasRequiredClassofRaw = 1;
164
164
  var uncurryThis = requireFunctionUncurryThis();
165
- var toString = uncurryThis({}.toString);
165
+ var toString2 = uncurryThis({}.toString);
166
166
  var stringSlice = uncurryThis("".slice);
167
167
  classofRaw = function(it) {
168
- return stringSlice(toString(it), 8, -1);
168
+ return stringSlice(toString2(it), 8, -1);
169
169
  };
170
170
  return classofRaw;
171
171
  }
@@ -234,16 +234,16 @@ function requireIsCallable() {
234
234
  };
235
235
  return isCallable;
236
236
  }
237
- var isObject;
237
+ var isObject$1;
238
238
  var hasRequiredIsObject$1;
239
239
  function requireIsObject$1() {
240
- if (hasRequiredIsObject$1) return isObject;
240
+ if (hasRequiredIsObject$1) return isObject$1;
241
241
  hasRequiredIsObject$1 = 1;
242
242
  var isCallable2 = requireIsCallable();
243
- isObject = function(it) {
243
+ isObject$1 = function(it) {
244
244
  return typeof it == "object" ? it !== null : isCallable2(it);
245
245
  };
246
- return isObject;
246
+ return isObject$1;
247
247
  }
248
248
  var getBuiltIn;
249
249
  var hasRequiredGetBuiltIn;
@@ -451,10 +451,10 @@ function requireSharedStore() {
451
451
  var SHARED = "__core-js_shared__";
452
452
  var store = sharedStore.exports = globalThis2[SHARED] || defineGlobalProperty2(SHARED, {});
453
453
  (store.versions || (store.versions = [])).push({
454
- version: "3.40.0",
454
+ version: "3.41.0",
455
455
  mode: IS_PURE ? "pure" : "global",
456
456
  copyright: "© 2014-2025 Denis Pushkarev (zloirock.ru)",
457
- license: "https://github.com/zloirock/core-js/blob/v3.40.0/LICENSE",
457
+ license: "https://github.com/zloirock/core-js/blob/v3.41.0/LICENSE",
458
458
  source: "https://github.com/zloirock/core-js"
459
459
  });
460
460
  return sharedStore.exports;
@@ -503,9 +503,9 @@ function requireUid() {
503
503
  var uncurryThis = requireFunctionUncurryThis();
504
504
  var id = 0;
505
505
  var postfix = Math.random();
506
- var toString = uncurryThis(1 .toString);
506
+ var toString2 = uncurryThis(1 .toString);
507
507
  uid = function(key) {
508
- return "Symbol(" + (key === void 0 ? "" : key) + ")_" + toString(++id + postfix, 36);
508
+ return "Symbol(" + (key === void 0 ? "" : key) + ")_" + toString2(++id + postfix, 36);
509
509
  };
510
510
  return uid;
511
511
  }
@@ -920,7 +920,7 @@ function requireMakeBuiltIn() {
920
920
  }
921
921
  return value;
922
922
  };
923
- Function.prototype.toString = makeBuiltIn$1(function toString() {
923
+ Function.prototype.toString = makeBuiltIn$1(function toString2() {
924
924
  return isCallable2(this) && getInternalState(this).source || inspectSource2(this);
925
925
  }, "toString");
926
926
  return makeBuiltIn.exports;
@@ -1883,7 +1883,7 @@ function requireEs_array_push() {
1883
1883
  requireEs_array_push();
1884
1884
  const Flip = ["horizontal", "vertical"];
1885
1885
  const Rotate = ["90", "180", "270"];
1886
- const _sfc_main$1b = vue.defineComponent({
1886
+ const _sfc_main$1d = vue.defineComponent({
1887
1887
  name: "FIcon",
1888
1888
  inheritAttrs: false,
1889
1889
  props: {
@@ -1971,8 +1971,8 @@ const _export_sfc = (sfc, props) => {
1971
1971
  }
1972
1972
  return target;
1973
1973
  };
1974
- const _hoisted_1$V = ["aria-hidden"];
1975
- const _hoisted_2$F = ["xlink:href"];
1974
+ const _hoisted_1$X = ["aria-hidden"];
1975
+ const _hoisted_2$G = ["xlink:href"];
1976
1976
  function _sfc_render$R(_ctx, _cache, $props, $setup, $data, $options) {
1977
1977
  return vue.openBlock(), vue.createElementBlock("svg", vue.mergeProps(_ctx.$attrs, {
1978
1978
  focusable: "false",
@@ -1980,9 +1980,9 @@ function _sfc_render$R(_ctx, _cache, $props, $setup, $data, $options) {
1980
1980
  "aria-hidden": _ctx.ariaHidden
1981
1981
  }), [vue.renderSlot(_ctx.$slots, "default"), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createElementVNode("use", {
1982
1982
  "xlink:href": _ctx.spriteId
1983
- }, null, 8, _hoisted_2$F)], 16, _hoisted_1$V);
1983
+ }, null, 8, _hoisted_2$G)], 16, _hoisted_1$X);
1984
1984
  }
1985
- const FIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [["render", _sfc_render$R]]);
1985
+ const FIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1d, [["render", _sfc_render$R]]);
1986
1986
  const DATA_TEST_ATTRIBUTE_NAME = "data-test";
1987
1987
  function throwErrorIfEmpty(value) {
1988
1988
  if (!value) {
@@ -3863,8 +3863,8 @@ function require_Set() {
3863
3863
  if (hasRequired_Set) return _Set;
3864
3864
  hasRequired_Set = 1;
3865
3865
  var getNative = require_getNative(), root = require_root();
3866
- var Set = getNative(root, "Set");
3867
- _Set = Set;
3866
+ var Set2 = getNative(root, "Set");
3867
+ _Set = Set2;
3868
3868
  return _Set;
3869
3869
  }
3870
3870
  var _WeakMap;
@@ -3882,12 +3882,12 @@ var hasRequired_getTag;
3882
3882
  function require_getTag() {
3883
3883
  if (hasRequired_getTag) return _getTag;
3884
3884
  hasRequired_getTag = 1;
3885
- var DataView2 = require_DataView(), Map2 = require_Map(), Promise2 = require_Promise(), Set = require_Set(), WeakMap2 = require_WeakMap(), baseGetTag = require_baseGetTag(), toSource = require_toSource();
3885
+ var DataView2 = require_DataView(), Map2 = require_Map(), Promise2 = require_Promise(), Set2 = require_Set(), WeakMap2 = require_WeakMap(), baseGetTag = require_baseGetTag(), toSource = require_toSource();
3886
3886
  var mapTag = "[object Map]", objectTag = "[object Object]", promiseTag = "[object Promise]", setTag = "[object Set]", weakMapTag = "[object WeakMap]";
3887
3887
  var dataViewTag = "[object DataView]";
3888
- var dataViewCtorString = toSource(DataView2), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set), weakMapCtorString = toSource(WeakMap2);
3888
+ var dataViewCtorString = toSource(DataView2), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2);
3889
3889
  var getTag = baseGetTag;
3890
- 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) {
3890
+ 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) {
3891
3891
  getTag = function(value) {
3892
3892
  var result = baseGetTag(value), Ctor = result == objectTag ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : "";
3893
3893
  if (ctorString) {
@@ -4420,7 +4420,7 @@ function elementIsRadioButton(element) {
4420
4420
  function isHTMLInputElement(element) {
4421
4421
  return element instanceof HTMLInputElement;
4422
4422
  }
4423
- const _sfc_main$1a = vue.defineComponent({
4423
+ const _sfc_main$1c = vue.defineComponent({
4424
4424
  name: "FModal",
4425
4425
  components: {
4426
4426
  FIcon
@@ -4600,8 +4600,8 @@ const _sfc_main$1a = vue.defineComponent({
4600
4600
  }
4601
4601
  }
4602
4602
  });
4603
- const _hoisted_1$U = ["id"];
4604
- const _hoisted_2$E = {
4603
+ const _hoisted_1$W = ["id"];
4604
+ const _hoisted_2$F = {
4605
4605
  class: "modal__backdrop"
4606
4606
  };
4607
4607
  const _hoisted_3$w = {
@@ -4630,7 +4630,7 @@ const _hoisted_8$8 = {
4630
4630
  const _hoisted_9$6 = {
4631
4631
  class: "modal__footer"
4632
4632
  };
4633
- const _hoisted_10$4 = {
4633
+ const _hoisted_10$3 = {
4634
4634
  class: "modal__shelf"
4635
4635
  };
4636
4636
  const _hoisted_11$3 = ["aria-label"];
@@ -4640,7 +4640,7 @@ function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
4640
4640
  key: 0,
4641
4641
  id: _ctx.id,
4642
4642
  class: vue.normalizeClass(["modal", _ctx.modalClass])
4643
- }, [vue.createElementVNode("div", _hoisted_2$E, [vue.createElementVNode("div", {
4643
+ }, [vue.createElementVNode("div", _hoisted_2$F, [vue.createElementVNode("div", {
4644
4644
  class: "modal__outer-container scroll-target",
4645
4645
  tabindex: "-1",
4646
4646
  role: "dialog",
@@ -4652,7 +4652,7 @@ function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
4652
4652
  }, [vue.createElementVNode("div", _hoisted_4$q, [vue.createElementVNode("div", _hoisted_5$l, [vue.createElementVNode("div", _hoisted_6$g, [vue.createElementVNode("div", {
4653
4653
  tabindex: "0",
4654
4654
  onFocus: _cache[0] || (_cache[0] = (...args) => _ctx.onFocusFirst && _ctx.onFocusFirst(...args))
4655
- }, null, 32), _cache[4] || (_cache[4] = vue.createTextVNode()), _ctx.hasHeaderSlot ? (vue.openBlock(), vue.createElementBlock("h1", _hoisted_7$d, [vue.renderSlot(_ctx.$slots, "header")], 512)) : vue.createCommentVNode("", true)]), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_8$8, [vue.renderSlot(_ctx.$slots, "content")], 512), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_9$6, [vue.renderSlot(_ctx.$slots, "footer")])]), _cache[9] || (_cache[9] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_10$4, [vue.createElementVNode("button", {
4655
+ }, null, 32), _cache[4] || (_cache[4] = vue.createTextVNode()), _ctx.hasHeaderSlot ? (vue.openBlock(), vue.createElementBlock("h1", _hoisted_7$d, [vue.renderSlot(_ctx.$slots, "header")], 512)) : vue.createCommentVNode("", true)]), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_8$8, [vue.renderSlot(_ctx.$slots, "content")], 512), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_9$6, [vue.renderSlot(_ctx.$slots, "footer")])]), _cache[9] || (_cache[9] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_10$3, [vue.createElementVNode("button", {
4656
4656
  type: "button",
4657
4657
  class: "close-button",
4658
4658
  "aria-label": _ctx.ariaCloseText,
@@ -4662,9 +4662,9 @@ function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
4662
4662
  })], 8, _hoisted_11$3), _cache[8] || (_cache[8] = vue.createTextVNode()), vue.createElementVNode("div", {
4663
4663
  tabindex: "0",
4664
4664
  onFocus: _cache[2] || (_cache[2] = (...args) => _ctx.onFocusLast && _ctx.onFocusLast(...args))
4665
- }, null, 32)])])], 2)])], 32)])], 10, _hoisted_1$U)) : vue.createCommentVNode("", true);
4665
+ }, null, 32)])])], 2)])], 32)])], 10, _hoisted_1$W)) : vue.createCommentVNode("", true);
4666
4666
  }
4667
- const FModal = /* @__PURE__ */ _export_sfc(_sfc_main$1a, [["render", _sfc_render$Q]]);
4667
+ const FModal = /* @__PURE__ */ _export_sfc(_sfc_main$1c, [["render", _sfc_render$Q]]);
4668
4668
  function prepareButtonList(src, buttonOrder = config.buttonOrder) {
4669
4669
  const list = src.map((it) => {
4670
4670
  var _it$event, _ref, _it$reason, _it$type;
@@ -4693,7 +4693,7 @@ const defaultButtons = [{
4693
4693
  event: "dismiss",
4694
4694
  type: "secondary"
4695
4695
  }];
4696
- const _sfc_main$19 = vue.defineComponent({
4696
+ const _sfc_main$1b = vue.defineComponent({
4697
4697
  name: "FConfirmModal",
4698
4698
  components: {
4699
4699
  FModal
@@ -4797,10 +4797,10 @@ const _sfc_main$19 = vue.defineComponent({
4797
4797
  }
4798
4798
  }
4799
4799
  });
4800
- const _hoisted_1$T = {
4800
+ const _hoisted_1$V = {
4801
4801
  class: "button-group"
4802
4802
  };
4803
- const _hoisted_2$D = ["onClick"];
4803
+ const _hoisted_2$E = ["onClick"];
4804
4804
  const _hoisted_3$v = {
4805
4805
  key: 0,
4806
4806
  class: "sr-only"
@@ -4818,22 +4818,22 @@ function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) {
4818
4818
  }, {
4819
4819
  header: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "heading", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.heading), 1)])]),
4820
4820
  content: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "content", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.content), 1)])]),
4821
- footer: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_1$T, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.preparedButtons, (button) => {
4821
+ footer: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_1$V, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.preparedButtons, (button) => {
4822
4822
  return vue.openBlock(), vue.createElementBlock("button", {
4823
4823
  key: button.label,
4824
4824
  type: "button",
4825
4825
  class: vue.normalizeClass([button.classlist, "button-group__item"]),
4826
4826
  onClick: ($event) => _ctx.onClick(button)
4827
- }, [vue.createElementVNode("span", null, vue.toDisplayString(button.label), 1), _cache[0] || (_cache[0] = vue.createTextVNode()), button.screenreader ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$v, " " + vue.toDisplayString(button.screenreader), 1)) : vue.createCommentVNode("", true)], 10, _hoisted_2$D);
4827
+ }, [vue.createElementVNode("span", null, vue.toDisplayString(button.label), 1), _cache[0] || (_cache[0] = vue.createTextVNode()), button.screenreader ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$v, " " + vue.toDisplayString(button.screenreader), 1)) : vue.createCommentVNode("", true)], 10, _hoisted_2$E);
4828
4828
  }), 128))])]),
4829
4829
  _: 3
4830
4830
  }, 8, ["fullscreen", "is-open", "aria-close-text", "size", "focus", "onClose"]);
4831
4831
  }
4832
- const FConfirmModal = /* @__PURE__ */ _export_sfc(_sfc_main$19, [["render", _sfc_render$P]]);
4832
+ const FConfirmModal = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [["render", _sfc_render$P]]);
4833
4833
  const GAP = ["1x", "2x", "3x", "4x", "5x", "6x", "7x", "8x"];
4834
4834
  const ALIGNMENT = ["top", "center", "bottom"];
4835
4835
  const FLOAT = ["left", "center", "right"];
4836
- const _sfc_main$18 = vue.defineComponent({
4836
+ const _sfc_main$1a = vue.defineComponent({
4837
4837
  name: "IFlex",
4838
4838
  inheritAttrs: true,
4839
4839
  props: {
@@ -4913,8 +4913,8 @@ function _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) {
4913
4913
  class: vue.normalizeClass(["iflex", _ctx.classList])
4914
4914
  }, [vue.renderSlot(_ctx.$slots, "default")], 2);
4915
4915
  }
4916
- const IFlex = /* @__PURE__ */ _export_sfc(_sfc_main$18, [["render", _sfc_render$O]]);
4917
- const _sfc_main$17 = vue.defineComponent({
4916
+ const IFlex = /* @__PURE__ */ _export_sfc(_sfc_main$1a, [["render", _sfc_render$O]]);
4917
+ const _sfc_main$19 = vue.defineComponent({
4918
4918
  name: "IFlexItem",
4919
4919
  inheritAttrs: true,
4920
4920
  props: {
@@ -4966,7 +4966,7 @@ function _sfc_render$N(_ctx, _cache, $props, $setup, $data, $options) {
4966
4966
  class: vue.normalizeClass(["iflex__item", _ctx.classList])
4967
4967
  }, [vue.renderSlot(_ctx.$slots, "default")], 2);
4968
4968
  }
4969
- const IFlexItem = /* @__PURE__ */ _export_sfc(_sfc_main$17, [["render", _sfc_render$N]]);
4969
+ const IFlexItem = /* @__PURE__ */ _export_sfc(_sfc_main$19, [["render", _sfc_render$N]]);
4970
4970
  function focusError(item) {
4971
4971
  const element = document.querySelector(`#${item.id}`);
4972
4972
  if (!element) {
@@ -4976,7 +4976,7 @@ function focusError(item) {
4976
4976
  logic.scrollTo(element, window.innerHeight * 0.25);
4977
4977
  logic.focus(focusElement2 ? focusElement2 : element);
4978
4978
  }
4979
- const _sfc_main$16 = vue.defineComponent({
4979
+ const _sfc_main$18 = vue.defineComponent({
4980
4980
  name: "FErrorList",
4981
4981
  components: {
4982
4982
  FIcon,
@@ -5032,10 +5032,10 @@ const _sfc_main$16 = vue.defineComponent({
5032
5032
  }
5033
5033
  }
5034
5034
  });
5035
- const _hoisted_1$S = {
5035
+ const _hoisted_1$U = {
5036
5036
  class: "error-list"
5037
5037
  };
5038
- const _hoisted_2$C = {
5038
+ const _hoisted_2$D = {
5039
5039
  key: 0
5040
5040
  };
5041
5041
  const _hoisted_3$u = {
@@ -5049,7 +5049,7 @@ function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
5049
5049
  const _component_f_icon = vue.resolveComponent("f-icon");
5050
5050
  const _component_i_flex_item = vue.resolveComponent("i-flex-item");
5051
5051
  const _component_i_flex = vue.resolveComponent("i-flex");
5052
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$S, [vue.createVNode(_component_i_flex, null, {
5052
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$U, [vue.createVNode(_component_i_flex, null, {
5053
5053
  default: vue.withCtx(() => [_ctx.hasTitleSlot ? (vue.openBlock(), vue.createBlock(_component_i_flex_item, {
5054
5054
  key: 0,
5055
5055
  shrink: ""
@@ -5068,7 +5068,7 @@ function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
5068
5068
  })) : vue.createCommentVNode("", true), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createVNode(_component_i_flex_item, {
5069
5069
  grow: ""
5070
5070
  }, {
5071
- default: vue.withCtx(() => [_ctx.hasTitleSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$C, [vue.renderSlot(_ctx.$slots, "title")])) : vue.createCommentVNode("", true), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("ul", _hoisted_3$u, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.items, (item) => {
5071
+ default: vue.withCtx(() => [_ctx.hasTitleSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$D, [vue.renderSlot(_ctx.$slots, "title")])) : vue.createCommentVNode("", true), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("ul", _hoisted_3$u, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.items, (item) => {
5072
5072
  return vue.openBlock(), vue.createElementBlock("li", {
5073
5073
  key: item.id,
5074
5074
  class: vue.normalizeClass(_ctx.liClasses(item))
@@ -5099,7 +5099,7 @@ function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
5099
5099
  _: 3
5100
5100
  })]);
5101
5101
  }
5102
- const FErrorList = /* @__PURE__ */ _export_sfc(_sfc_main$16, [["render", _sfc_render$M]]);
5102
+ const FErrorList = /* @__PURE__ */ _export_sfc(_sfc_main$18, [["render", _sfc_render$M]]);
5103
5103
  var es_iterator_every = {};
5104
5104
  var hasRequiredEs_iterator_every;
5105
5105
  function requireEs_iterator_every() {
@@ -5187,7 +5187,7 @@ function cleanUpElements(vm) {
5187
5187
  }, 0);
5188
5188
  });
5189
5189
  }
5190
- const _sfc_main$15 = vue.defineComponent({
5190
+ const _sfc_main$17 = vue.defineComponent({
5191
5191
  name: "FValidationGroup",
5192
5192
  props: {
5193
5193
  /**
@@ -5263,13 +5263,13 @@ function _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) {
5263
5263
  onComponentUnmount: _cache[1] || (_cache[1] = (...args) => _ctx.onComponentUnmount && _ctx.onComponentUnmount(...args))
5264
5264
  }, [vue.renderSlot(_ctx.$slots, "default")], 32);
5265
5265
  }
5266
- const FValidationGroup = /* @__PURE__ */ _export_sfc(_sfc_main$15, [["render", _sfc_render$L]]);
5266
+ const FValidationGroup = /* @__PURE__ */ _export_sfc(_sfc_main$17, [["render", _sfc_render$L]]);
5267
5267
  var FValidationFormAction = /* @__PURE__ */ ((FValidationFormAction2) => {
5268
5268
  FValidationFormAction2[FValidationFormAction2["CONTINUE"] = 0] = "CONTINUE";
5269
5269
  FValidationFormAction2[FValidationFormAction2["CANCEL"] = 1] = "CANCEL";
5270
5270
  return FValidationFormAction2;
5271
5271
  })(FValidationFormAction || {});
5272
- const _sfc_main$14 = vue.defineComponent({
5272
+ const _sfc_main$16 = vue.defineComponent({
5273
5273
  name: "FValidationForm",
5274
5274
  components: {
5275
5275
  FValidationGroup,
@@ -5408,8 +5408,8 @@ const _sfc_main$14 = vue.defineComponent({
5408
5408
  }
5409
5409
  }
5410
5410
  });
5411
- const _hoisted_1$R = ["id"];
5412
- const _hoisted_2$B = {
5411
+ const _hoisted_1$T = ["id"];
5412
+ const _hoisted_2$C = {
5413
5413
  key: 0,
5414
5414
  ref: "errors",
5415
5415
  tabindex: "-1",
@@ -5430,19 +5430,19 @@ function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
5430
5430
  novalidate: "",
5431
5431
  autocomplete: "off",
5432
5432
  onSubmit: _cache[0] || (_cache[0] = vue.withModifiers((...args) => _ctx.onSubmit && _ctx.onSubmit(...args), ["prevent"]))
5433
- }), [_ctx.displayErrors ? (vue.openBlock(), vue.createElementBlock("nav", _hoisted_2$B, [vue.createVNode(_component_f_error_list, {
5433
+ }), [_ctx.displayErrors ? (vue.openBlock(), vue.createElementBlock("nav", _hoisted_2$C, [vue.createVNode(_component_f_error_list, {
5434
5434
  items: _ctx.errors,
5435
5435
  bullets: _ctx.errorListBullets,
5436
5436
  "before-navigate": _ctx.errorListBeforeNavigate
5437
5437
  }, {
5438
5438
  title: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "error-message")]),
5439
5439
  _: 3
5440
- }, 8, ["items", "bullets", "before-navigate"])], 512)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$R)]),
5440
+ }, 8, ["items", "bullets", "before-navigate"])], 512)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$T)]),
5441
5441
  _: 3
5442
5442
  }, 8, ["modelValue"]);
5443
5443
  }
5444
- const FValidationForm = /* @__PURE__ */ _export_sfc(_sfc_main$14, [["render", _sfc_render$K]]);
5445
- const _sfc_main$13 = vue.defineComponent({
5444
+ const FValidationForm = /* @__PURE__ */ _export_sfc(_sfc_main$16, [["render", _sfc_render$K]]);
5445
+ const _sfc_main$15 = vue.defineComponent({
5446
5446
  name: "FFormModal",
5447
5447
  components: {
5448
5448
  FModal,
@@ -5591,10 +5591,10 @@ const _sfc_main$13 = vue.defineComponent({
5591
5591
  }
5592
5592
  }
5593
5593
  });
5594
- const _hoisted_1$Q = {
5594
+ const _hoisted_1$S = {
5595
5595
  class: "button-group"
5596
5596
  };
5597
- const _hoisted_2$A = ["type", "form", "onClick"];
5597
+ const _hoisted_2$B = ["type", "form", "onClick"];
5598
5598
  const _hoisted_3$t = {
5599
5599
  key: 0,
5600
5600
  class: "sr-only"
@@ -5623,19 +5623,19 @@ function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
5623
5623
  default: vue.withCtx(() => [_cache[0] || (_cache[0] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "input-text-fields")]),
5624
5624
  _: 3
5625
5625
  }, 8, ["id", "before-submit", "before-validation", "use-error-list", "onSubmit", "onCancel"])]),
5626
- footer: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_1$Q, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.preparedButtons, (button) => {
5626
+ footer: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_1$S, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.preparedButtons, (button) => {
5627
5627
  return vue.openBlock(), vue.createElementBlock("button", {
5628
5628
  key: button.label,
5629
5629
  type: button.buttonType,
5630
5630
  class: vue.normalizeClass([button.classlist, "button-group__item"]),
5631
5631
  form: button.buttonType === "submit" ? _ctx.formId : void 0,
5632
5632
  onClick: ($event) => button.buttonType === "button" ? _ctx.onCancel() : false
5633
- }, [vue.createElementVNode("span", null, vue.toDisplayString(button.label), 1), _cache[2] || (_cache[2] = vue.createTextVNode()), button.screenreader ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$t, " " + vue.toDisplayString(button.screenreader), 1)) : vue.createCommentVNode("", true)], 10, _hoisted_2$A);
5633
+ }, [vue.createElementVNode("span", null, vue.toDisplayString(button.label), 1), _cache[2] || (_cache[2] = vue.createTextVNode()), button.screenreader ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$t, " " + vue.toDisplayString(button.screenreader), 1)) : vue.createCommentVNode("", true)], 10, _hoisted_2$B);
5634
5634
  }), 128))])]),
5635
5635
  _: 3
5636
5636
  }, 8, ["data-test", "fullscreen", "is-open", "size", "aria-close-text", "onClose"]);
5637
5637
  }
5638
- const FFormModal = /* @__PURE__ */ _export_sfc(_sfc_main$13, [["render", _sfc_render$J]]);
5638
+ const FFormModal = /* @__PURE__ */ _export_sfc(_sfc_main$15, [["render", _sfc_render$J]]);
5639
5639
  async function confirmModal(callingInstance, texts) {
5640
5640
  const buttons = [{
5641
5641
  label: texts.confirm,
@@ -5995,7 +5995,7 @@ const ErrorPlugin = {
5995
5995
  }
5996
5996
  }
5997
5997
  };
5998
- const _sfc_main$12 = vue.defineComponent({
5998
+ const _sfc_main$14 = vue.defineComponent({
5999
5999
  name: "FErrorPage",
6000
6000
  props: {
6001
6001
  payload: {
@@ -6005,16 +6005,16 @@ const _sfc_main$12 = vue.defineComponent({
6005
6005
  }
6006
6006
  }
6007
6007
  });
6008
- const _hoisted_1$P = {
6008
+ const _hoisted_1$R = {
6009
6009
  "data-test": "f-error-page"
6010
6010
  };
6011
6011
  function _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) {
6012
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$P, _cache[0] || (_cache[0] = [vue.createElementVNode("h1", null, "Fel", -1), vue.createTextVNode(), vue.createElementVNode("p", null, "Ett fel har uppstått.", -1), vue.createTextVNode(), vue.createElementVNode("a", {
6012
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$R, _cache[0] || (_cache[0] = [vue.createElementVNode("h1", null, "Fel", -1), vue.createTextVNode(), vue.createElementVNode("p", null, "Ett fel har uppstått.", -1), vue.createTextVNode(), vue.createElementVNode("a", {
6013
6013
  href: "/"
6014
6014
  }, "Gå till startsidan", -1)]));
6015
6015
  }
6016
- const FErrorPage = /* @__PURE__ */ _export_sfc(_sfc_main$12, [["render", _sfc_render$I]]);
6017
- const _sfc_main$11 = vue.defineComponent({
6016
+ const FErrorPage = /* @__PURE__ */ _export_sfc(_sfc_main$14, [["render", _sfc_render$I]]);
6017
+ const _sfc_main$13 = vue.defineComponent({
6018
6018
  name: "FErrorHandlingApp",
6019
6019
  props: {
6020
6020
  defaultComponent: {
@@ -6053,7 +6053,7 @@ function _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) {
6053
6053
  key: 2
6054
6054
  })]);
6055
6055
  }
6056
- const FErrorHandlingApp = /* @__PURE__ */ _export_sfc(_sfc_main$11, [["render", _sfc_render$H]]);
6056
+ const FErrorHandlingApp = /* @__PURE__ */ _export_sfc(_sfc_main$13, [["render", _sfc_render$H]]);
6057
6057
  function isMonthBefore(date2, minDate) {
6058
6058
  return Boolean(minDate && date2.isBefore(minDate.startOfMonth()));
6059
6059
  }
@@ -6094,7 +6094,7 @@ function getMessage($t2, date2, minDate, maxDate) {
6094
6094
  });
6095
6095
  }
6096
6096
  }
6097
- const _sfc_main$10 = vue.defineComponent({
6097
+ const _sfc_main$12 = vue.defineComponent({
6098
6098
  name: "ICalendarNavbar",
6099
6099
  components: {
6100
6100
  FIcon
@@ -6207,10 +6207,10 @@ const _sfc_main$10 = vue.defineComponent({
6207
6207
  }
6208
6208
  }
6209
6209
  });
6210
- const _hoisted_1$O = {
6210
+ const _hoisted_1$Q = {
6211
6211
  class: "calendar-navbar"
6212
6212
  };
6213
- const _hoisted_2$z = {
6213
+ const _hoisted_2$A = {
6214
6214
  class: "calendar-navbar__month",
6215
6215
  tabindex: "-1"
6216
6216
  };
@@ -6224,7 +6224,7 @@ const _hoisted_6$f = {
6224
6224
  };
6225
6225
  function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
6226
6226
  const _component_f_icon = vue.resolveComponent("f-icon");
6227
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$O, [vue.createElementVNode("div", _hoisted_2$z, vue.toDisplayString(_ctx.currentText), 1), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.createElementVNode("button", {
6227
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$Q, [vue.createElementVNode("div", _hoisted_2$A, vue.toDisplayString(_ctx.currentText), 1), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.createElementVNode("button", {
6228
6228
  ref: "previousButton",
6229
6229
  class: "calendar-navbar__arrow calendar-navbar__arrow--previous",
6230
6230
  type: "button",
@@ -6246,14 +6246,14 @@ function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
6246
6246
  name: "arrow-right"
6247
6247
  }, null, 8, ["class"])], 8, _hoisted_5$j)]);
6248
6248
  }
6249
- const ICalendarNavbar = /* @__PURE__ */ _export_sfc(_sfc_main$10, [["render", _sfc_render$G]]);
6249
+ const ICalendarNavbar = /* @__PURE__ */ _export_sfc(_sfc_main$12, [["render", _sfc_render$G]]);
6250
6250
  function getDayStartOffset(days) {
6251
6251
  return days[0].weekDay - 1;
6252
6252
  }
6253
6253
  function getDayEndOffset(days) {
6254
6254
  return 7 - days[days.length - 1].weekDay;
6255
6255
  }
6256
- const _sfc_main$$ = vue.defineComponent({
6256
+ const _sfc_main$11 = vue.defineComponent({
6257
6257
  name: "ICalendarMonthGrid",
6258
6258
  props: {
6259
6259
  /**
@@ -6327,8 +6327,8 @@ const _sfc_main$$ = vue.defineComponent({
6327
6327
  }
6328
6328
  }
6329
6329
  });
6330
- const _hoisted_1$N = ["aria-label"];
6331
- const _hoisted_2$y = {
6330
+ const _hoisted_1$P = ["aria-label"];
6331
+ const _hoisted_2$z = {
6332
6332
  key: 0,
6333
6333
  class: "calendar-month__col--week"
6334
6334
  };
@@ -6353,7 +6353,7 @@ const _hoisted_9$5 = {
6353
6353
  key: 0,
6354
6354
  "aria-hidden": "true"
6355
6355
  };
6356
- const _hoisted_10$3 = ["colspan"];
6356
+ const _hoisted_10$2 = ["colspan"];
6357
6357
  const _hoisted_11$2 = {
6358
6358
  key: 1,
6359
6359
  "aria-hidden": "true"
@@ -6366,7 +6366,7 @@ function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
6366
6366
  "aria-label": _ctx.ariaLabel,
6367
6367
  onFocusin: _cache[0] || (_cache[0] = (...args) => _ctx.onFocusin && _ctx.onFocusin(...args)),
6368
6368
  onFocusout: _cache[1] || (_cache[1] = (...args) => _ctx.onFocusout && _ctx.onFocusout(...args))
6369
- }, [vue.createElementVNode("colgroup", null, [!_ctx.internalHideWeekNumbers ? (vue.openBlock(), vue.createElementBlock("col", _hoisted_2$y)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), _cache[3] || (_cache[3] = vue.createElementVNode("col", {
6369
+ }, [vue.createElementVNode("colgroup", null, [!_ctx.internalHideWeekNumbers ? (vue.openBlock(), vue.createElementBlock("col", _hoisted_2$z)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), _cache[3] || (_cache[3] = vue.createElementVNode("col", {
6370
6370
  class: "calendar-month__col--day"
6371
6371
  }, null, -1)), _cache[4] || (_cache[4] = vue.createTextVNode()), _cache[5] || (_cache[5] = vue.createElementVNode("col", {
6372
6372
  class: "calendar-month__col--day"
@@ -6416,13 +6416,13 @@ function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
6416
6416
  class: "calendar-month__cell",
6417
6417
  colspan: _ctx.totalCols,
6418
6418
  "aria-hidden": "true"
6419
- }, null, 8, _hoisted_10$3)])) : vue.createCommentVNode("", true), _cache[21] || (_cache[21] = vue.createTextVNode()), _ctx.weeks.length < 6 ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_11$2, [vue.createElementVNode("td", {
6419
+ }, null, 8, _hoisted_10$2)])) : vue.createCommentVNode("", true), _cache[21] || (_cache[21] = vue.createTextVNode()), _ctx.weeks.length < 6 ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_11$2, [vue.createElementVNode("td", {
6420
6420
  class: "calendar-month__cell",
6421
6421
  colspan: _ctx.totalCols,
6422
6422
  "aria-hidden": "true"
6423
- }, null, 8, _hoisted_12$2)])) : vue.createCommentVNode("", true)])], 40, _hoisted_1$N);
6423
+ }, null, 8, _hoisted_12$2)])) : vue.createCommentVNode("", true)])], 40, _hoisted_1$P);
6424
6424
  }
6425
- const ICalendarMonthGrid = /* @__PURE__ */ _export_sfc(_sfc_main$$, [["render", _sfc_render$F]]);
6425
+ const ICalendarMonthGrid = /* @__PURE__ */ _export_sfc(_sfc_main$11, [["render", _sfc_render$F]]);
6426
6426
  const DayStep = {
6427
6427
  ArrowRight: 1,
6428
6428
  ArrowLeft: -1,
@@ -6446,7 +6446,7 @@ function getDayTabindex(date2, active, entry) {
6446
6446
  return date2.day === 1 ? 0 : -1;
6447
6447
  }
6448
6448
  }
6449
- const _sfc_main$_ = vue.defineComponent({
6449
+ const _sfc_main$10 = vue.defineComponent({
6450
6450
  name: "ICalendarMonth",
6451
6451
  components: {
6452
6452
  ICalendarMonthGrid
@@ -6536,7 +6536,7 @@ const _sfc_main$_ = vue.defineComponent({
6536
6536
  }
6537
6537
  }
6538
6538
  });
6539
- const _hoisted_1$M = ["data-date", "tabindex", "onClick", "onKeydown"];
6539
+ const _hoisted_1$O = ["data-date", "tabindex", "onClick", "onKeydown"];
6540
6540
  function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
6541
6541
  const _component_i_calendar_month_grid = vue.resolveComponent("i-calendar-month-grid");
6542
6542
  return vue.openBlock(), vue.createBlock(_component_i_calendar_month_grid, {
@@ -6556,12 +6556,12 @@ function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
6556
6556
  }, [vue.renderSlot(_ctx.$slots, "default", {
6557
6557
  date: date2,
6558
6558
  isFocused: _ctx.isDayFocused(date2)
6559
- })], 40, _hoisted_1$M)]),
6559
+ })], 40, _hoisted_1$O)]),
6560
6560
  _: 3
6561
6561
  }, 8, ["value"]);
6562
6562
  }
6563
- const ICalendarMonth = /* @__PURE__ */ _export_sfc(_sfc_main$_, [["render", _sfc_render$E]]);
6564
- const _sfc_main$Z = vue.defineComponent({
6563
+ const ICalendarMonth = /* @__PURE__ */ _export_sfc(_sfc_main$10, [["render", _sfc_render$E]]);
6564
+ const _sfc_main$$ = vue.defineComponent({
6565
6565
  name: "FCalendar",
6566
6566
  components: {
6567
6567
  ICalendarNavbar,
@@ -6612,13 +6612,13 @@ const _sfc_main$Z = vue.defineComponent({
6612
6612
  }
6613
6613
  }
6614
6614
  });
6615
- const _hoisted_1$L = {
6615
+ const _hoisted_1$N = {
6616
6616
  class: "calendar__wrapper"
6617
6617
  };
6618
6618
  function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {
6619
6619
  const _component_i_calendar_navbar = vue.resolveComponent("i-calendar-navbar");
6620
6620
  const _component_i_calendar_month = vue.resolveComponent("i-calendar-month");
6621
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$L, [vue.createVNode(_component_i_calendar_navbar, {
6621
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$N, [vue.createVNode(_component_i_calendar_navbar, {
6622
6622
  "model-value": _ctx.modelValue,
6623
6623
  "min-date": _ctx.minDate,
6624
6624
  "max-date": _ctx.maxDate,
@@ -6641,7 +6641,7 @@ function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {
6641
6641
  _: 3
6642
6642
  }, 8, ["model-value", "min-date", "max-date", "tab-date", "onClick", "onUpdate:modelValue"])]);
6643
6643
  }
6644
- const FCalendar = /* @__PURE__ */ _export_sfc(_sfc_main$Z, [["render", _sfc_render$D]]);
6644
+ const FCalendar = /* @__PURE__ */ _export_sfc(_sfc_main$$, [["render", _sfc_render$D]]);
6645
6645
  function getCalendarDaySrText(day, enabled, selected, t) {
6646
6646
  const parts = [];
6647
6647
  if (!enabled) {
@@ -6660,7 +6660,7 @@ function getCalendarDaySrText(day, enabled, selected, t) {
6660
6660
  parts.push(day.toString(date.DateFormat.FULL));
6661
6661
  return parts.join(" ");
6662
6662
  }
6663
- const _sfc_main$Y = vue.defineComponent({
6663
+ const _sfc_main$_ = vue.defineComponent({
6664
6664
  name: "FCalendarDay",
6665
6665
  mixins: [TranslationMixin],
6666
6666
  props: {
@@ -6725,19 +6725,19 @@ const _sfc_main$Y = vue.defineComponent({
6725
6725
  }
6726
6726
  }
6727
6727
  });
6728
- const _hoisted_1$K = {
6728
+ const _hoisted_1$M = {
6729
6729
  "aria-hidden": "true"
6730
6730
  };
6731
- const _hoisted_2$x = {
6731
+ const _hoisted_2$y = {
6732
6732
  class: "sr-only"
6733
6733
  };
6734
6734
  function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) {
6735
6735
  return vue.openBlock(), vue.createElementBlock("span", {
6736
6736
  class: vue.normalizeClass(_ctx.dayClasses)
6737
- }, [vue.createElementVNode("span", _hoisted_1$K, vue.toDisplayString(_ctx.day.day), 1), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_2$x, vue.toDisplayString(_ctx.srText), 1)], 2);
6737
+ }, [vue.createElementVNode("span", _hoisted_1$M, vue.toDisplayString(_ctx.day.day), 1), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_2$y, vue.toDisplayString(_ctx.srText), 1)], 2);
6738
6738
  }
6739
- const FCalendarDay = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [["render", _sfc_render$C]]);
6740
- function useEventListener(target, event, callback) {
6739
+ const FCalendarDay = /* @__PURE__ */ _export_sfc(_sfc_main$_, [["render", _sfc_render$C]]);
6740
+ function useEventListener$1(target, event, callback) {
6741
6741
  vue.onMounted(() => {
6742
6742
  var _a;
6743
6743
  (_a = vue.toValue(target)) == null ? void 0 : _a.addEventListener(event, callback);
@@ -6757,8 +6757,8 @@ function useSlotUtils() {
6757
6757
  }
6758
6758
  };
6759
6759
  }
6760
- const _hoisted_1$J = ["id"];
6761
- const _hoisted_2$w = {
6760
+ const _hoisted_1$L = ["id"];
6761
+ const _hoisted_2$x = {
6762
6762
  key: 0,
6763
6763
  class: "card__header"
6764
6764
  };
@@ -6769,7 +6769,7 @@ const _hoisted_4$m = {
6769
6769
  key: 1,
6770
6770
  class: "card__footer"
6771
6771
  };
6772
- const _sfc_main$X = /* @__PURE__ */ vue.defineComponent({
6772
+ const _sfc_main$Z = /* @__PURE__ */ vue.defineComponent({
6773
6773
  __name: "FCard",
6774
6774
  props: {
6775
6775
  /**
@@ -6827,7 +6827,7 @@ const _sfc_main$X = /* @__PURE__ */ vue.defineComponent({
6827
6827
  id: __props.id,
6828
6828
  class: vue.normalizeClass(cardClass.value),
6829
6829
  onValidity
6830
- }, [hasHeaderSlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$w, [vue.renderSlot(_ctx.$slots, "header", vue.normalizeProps(vue.guardReactiveProps({
6830
+ }, [hasHeaderSlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$x, [vue.renderSlot(_ctx.$slots, "header", vue.normalizeProps(vue.guardReactiveProps({
6831
6831
  headingSlotClass: "card__header-label"
6832
6832
  })))])) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "error-message", vue.normalizeProps(vue.guardReactiveProps({
6833
6833
  hasError: hasError.value,
@@ -6855,11 +6855,11 @@ const _sfc_main$X = /* @__PURE__ */ vue.defineComponent({
6855
6855
  })) : vue.createCommentVNode("", true)]), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_3$q, [vue.renderSlot(_ctx.$slots, "default")]), _cache[3] || (_cache[3] = vue.createTextVNode()), hasFooterSlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$m, [vue.renderSlot(_ctx.$slots, "footer", vue.normalizeProps(vue.guardReactiveProps({
6856
6856
  hasError: hasError.value,
6857
6857
  validationMessage: validationMessage.value
6858
- })))])) : vue.createCommentVNode("", true)], 42, _hoisted_1$J);
6858
+ })))])) : vue.createCommentVNode("", true)], 42, _hoisted_1$L);
6859
6859
  };
6860
6860
  }
6861
6861
  });
6862
- const _sfc_main$W = vue.defineComponent({
6862
+ const _sfc_main$Y = vue.defineComponent({
6863
6863
  name: "FExpand",
6864
6864
  data() {
6865
6865
  return {
@@ -6925,7 +6925,7 @@ function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
6925
6925
  _: 3
6926
6926
  }, 8, ["onEnter", "onAfterEnter", "onLeave"]);
6927
6927
  }
6928
- const FExpand = /* @__PURE__ */ _export_sfc(_sfc_main$W, [["render", _sfc_render$B]]);
6928
+ const FExpand = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [["render", _sfc_render$B]]);
6929
6929
  function offset(page, el) {
6930
6930
  const rect = el.getBoundingClientRect();
6931
6931
  return {
@@ -7210,7 +7210,7 @@ function isTeleportDisabled(options) {
7210
7210
  }
7211
7211
  return disableTeleport;
7212
7212
  }
7213
- const _sfc_main$V = vue.defineComponent({
7213
+ const _sfc_main$X = vue.defineComponent({
7214
7214
  name: "IPopup",
7215
7215
  inheritAttrs: false,
7216
7216
  props: {
@@ -7512,7 +7512,7 @@ function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
7512
7512
  placement: _ctx.placement
7513
7513
  })))], 544)], 16)], 8, ["to", "disabled"])) : vue.createCommentVNode("", true);
7514
7514
  }
7515
- const IPopup = /* @__PURE__ */ _export_sfc(_sfc_main$V, [["render", _sfc_render$A]]);
7515
+ const IPopup = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["render", _sfc_render$A]]);
7516
7516
  function computeArrowOffset(placement, inputIconRect, wrapperRect) {
7517
7517
  switch (placement) {
7518
7518
  case Placement.A: {
@@ -7576,7 +7576,7 @@ function computeArrowOffset(placement, inputIconRect, wrapperRect) {
7576
7576
  }
7577
7577
  }
7578
7578
  const POPUP_SPACING = 10;
7579
- const _sfc_main$U = vue.defineComponent({
7579
+ const _sfc_main$W = vue.defineComponent({
7580
7580
  name: "IPopupError",
7581
7581
  components: {
7582
7582
  FIcon
@@ -7714,7 +7714,7 @@ const _sfc_main$U = vue.defineComponent({
7714
7714
  }
7715
7715
  }
7716
7716
  });
7717
- const _hoisted_1$I = {
7717
+ const _hoisted_1$K = {
7718
7718
  ref: "wrapper",
7719
7719
  class: "popup-error__wrapper"
7720
7720
  };
@@ -7728,7 +7728,7 @@ function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
7728
7728
  ref: "popup",
7729
7729
  class: vue.normalizeClass(_ctx.popupClasses),
7730
7730
  "aria-hidden": "true"
7731
- }, [vue.createElementVNode("div", _hoisted_1$I, [vue.createElementVNode("div", {
7731
+ }, [vue.createElementVNode("div", _hoisted_1$K, [vue.createElementVNode("div", {
7732
7732
  class: vue.normalizeClass(_ctx.arrowClass),
7733
7733
  style: vue.normalizeStyle(_ctx.errorStyle)
7734
7734
  }, [vue.createElementVNode("span", null, vue.toDisplayString(_ctx.errorMessage), 1), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createElementVNode("button", {
@@ -7742,7 +7742,7 @@ function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
7742
7742
  class: "button__icon"
7743
7743
  })])], 6)], 512)], 2)], 8, ["to", "disabled"])) : vue.createCommentVNode("", true);
7744
7744
  }
7745
- const IPopupError = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["render", _sfc_render$z]]);
7745
+ const IPopupError = /* @__PURE__ */ _export_sfc(_sfc_main$W, [["render", _sfc_render$z]]);
7746
7746
  function numItems(itemHeight, availableHeight, verticalSpacing) {
7747
7747
  const itemsFit = Math.floor((availableHeight - verticalSpacing) / itemHeight);
7748
7748
  return Math.min(itemsFit, 7);
@@ -7809,12 +7809,12 @@ function computeListboxRect(anchor, options, root = document.documentElement, {
7809
7809
  }
7810
7810
  return void 0;
7811
7811
  }
7812
- const _hoisted_1$H = ["onKeyup"];
7813
- const _hoisted_2$v = {
7812
+ const _hoisted_1$J = ["onKeyup"];
7813
+ const _hoisted_2$w = {
7814
7814
  ref: "content"
7815
7815
  };
7816
7816
  const teleportDisabled = false;
7817
- const _sfc_main$T = /* @__PURE__ */ vue.defineComponent({
7817
+ const _sfc_main$V = /* @__PURE__ */ vue.defineComponent({
7818
7818
  __name: "IPopupListbox",
7819
7819
  props: {
7820
7820
  isOpen: {
@@ -7836,7 +7836,7 @@ const _sfc_main$T = /* @__PURE__ */ vue.defineComponent({
7836
7836
  const teleportTarget = vue.computed(() => config.teleportTarget);
7837
7837
  let guessedItemHeight = void 0;
7838
7838
  let verticalSpacing = void 0;
7839
- useEventListener(__props.anchor, "keyup", onKeyEsc);
7839
+ useEventListener$1(__props.anchor, "keyup", onKeyEsc);
7840
7840
  vue.watchEffect(() => {
7841
7841
  if (wrapperRef.value && __props.activeElement !== void 0) {
7842
7842
  const centerPosition = __props.activeElement.offsetTop - (wrapperRef.value.getBoundingClientRect().height - __props.activeElement.getBoundingClientRect().height) / 2;
@@ -7968,7 +7968,7 @@ const _sfc_main$T = /* @__PURE__ */ vue.defineComponent({
7968
7968
  onKeyup: vue.withKeys(vue.withModifiers(onKeyEsc, ["stop"]), ["esc"]),
7969
7969
  onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
7970
7970
  }, ["stop"]))
7971
- }), [vue.createElementVNode("div", _hoisted_2$v, [vue.renderSlot(_ctx.$slots, "default")], 512)], 16, _hoisted_1$H)], 512)], 8, ["to"])) : vue.createCommentVNode("", true);
7971
+ }), [vue.createElementVNode("div", _hoisted_2$w, [vue.renderSlot(_ctx.$slots, "default")], 512)], 16, _hoisted_1$J)], 512)], 8, ["to"])) : vue.createCommentVNode("", true);
7972
7972
  };
7973
7973
  }
7974
7974
  });
@@ -8012,7 +8012,7 @@ async function doMenuAction$2(action, target) {
8012
8012
  }
8013
8013
  }
8014
8014
  const preventKeys$2 = ["Tab", "Up", "Down", "ArrowUp", "ArrowDown", "Home", "End", " ", "Spacebar", "Enter"];
8015
- const _sfc_main$S = vue.defineComponent({
8015
+ const _sfc_main$U = vue.defineComponent({
8016
8016
  name: "IPopupMenu",
8017
8017
  components: {
8018
8018
  IPopup
@@ -8267,8 +8267,8 @@ const _sfc_main$S = vue.defineComponent({
8267
8267
  }
8268
8268
  }
8269
8269
  });
8270
- const _hoisted_1$G = ["aria-label"];
8271
- const _hoisted_2$u = {
8270
+ const _hoisted_1$I = ["aria-label"];
8271
+ const _hoisted_2$v = {
8272
8272
  role: "menu",
8273
8273
  class: "ipopupmenu__list"
8274
8274
  };
@@ -8293,7 +8293,7 @@ function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
8293
8293
  default: vue.withCtx(() => [vue.createElementVNode("nav", {
8294
8294
  class: "ipopupmenu ipopupmenu--vertical",
8295
8295
  "aria-label": _ctx.ariaLabel
8296
- }, [vue.createElementVNode("ul", _hoisted_2$u, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.items, (item, index) => {
8296
+ }, [vue.createElementVNode("ul", _hoisted_2$v, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.items, (item, index) => {
8297
8297
  return vue.openBlock(), vue.createElementBlock("li", {
8298
8298
  ref_for: true,
8299
8299
  ref: "items",
@@ -8310,17 +8310,17 @@ function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
8310
8310
  target: item.target,
8311
8311
  tabindex: "0"
8312
8312
  }, [_ctx.isSelected(index) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$h, [vue.createElementVNode("span", null, vue.toDisplayString(_ctx.selectedMenuItemScreenReaderText) + " ", 1)])) : vue.createCommentVNode("", true), vue.createTextVNode(" " + vue.toDisplayString(item.label), 1)], 8, _hoisted_4$l)], 10, _hoisted_3$p);
8313
- }), 128))])], 8, _hoisted_1$G)]),
8313
+ }), 128))])], 8, _hoisted_1$I)]),
8314
8314
  _: 1
8315
8315
  }, 8, ["is-open", "anchor", "focus-element", "onKeyup", "onKeydown"]);
8316
8316
  }
8317
- const IPopupMenu = /* @__PURE__ */ _export_sfc(_sfc_main$S, [["render", _sfc_render$y]]);
8317
+ const IPopupMenu = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["render", _sfc_render$y]]);
8318
8318
  const ANIMATION_DURATION = 500;
8319
8319
  const NO_CSS_CLASSES = "";
8320
8320
  const CLOSED_CSS_CLASS_OPACITY = "animate-expand animate-expand--opacity";
8321
8321
  const CLOSED_CSS_CLASS = "animate-expand";
8322
8322
  const ANIMATION_CSS_CLASSES = "animate-expand animate-expand--expanded";
8323
- const _sfc_main$R = vue.defineComponent({
8323
+ const _sfc_main$T = vue.defineComponent({
8324
8324
  name: "IAnimateExpand",
8325
8325
  props: {
8326
8326
  /**
@@ -8512,7 +8512,7 @@ const _sfc_main$R = vue.defineComponent({
8512
8512
  }
8513
8513
  }
8514
8514
  });
8515
- const _hoisted_1$F = {
8515
+ const _hoisted_1$H = {
8516
8516
  key: 0,
8517
8517
  ref: "content",
8518
8518
  "data-test": "animation-content"
@@ -8521,10 +8521,10 @@ function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
8521
8521
  return vue.openBlock(), vue.createElementBlock("div", {
8522
8522
  class: vue.normalizeClass(_ctx.animationClasses),
8523
8523
  style: vue.normalizeStyle(_ctx.heightStyle)
8524
- }, [_ctx.shouldVIf ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$F, [vue.renderSlot(_ctx.$slots, "default")], 512)), [[vue.vShow, _ctx.shouldVShow]]) : vue.createCommentVNode("", true)], 6);
8524
+ }, [_ctx.shouldVIf ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$H, [vue.renderSlot(_ctx.$slots, "default")], 512)), [[vue.vShow, _ctx.shouldVShow]]) : vue.createCommentVNode("", true)], 6);
8525
8525
  }
8526
- const IAnimateExpand = /* @__PURE__ */ _export_sfc(_sfc_main$R, [["render", _sfc_render$x]]);
8527
- const _sfc_main$Q = vue.defineComponent({
8526
+ const IAnimateExpand = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["render", _sfc_render$x]]);
8527
+ const _sfc_main$S = vue.defineComponent({
8528
8528
  name: "ISkipLink",
8529
8529
  mixins: [TranslationMixin],
8530
8530
  props: {
@@ -8538,14 +8538,14 @@ const _sfc_main$Q = vue.defineComponent({
8538
8538
  }
8539
8539
  }
8540
8540
  });
8541
- const _hoisted_1$E = ["href"];
8541
+ const _hoisted_1$G = ["href"];
8542
8542
  function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {
8543
8543
  return vue.openBlock(), vue.createElementBlock("a", {
8544
8544
  class: "iskiplink",
8545
8545
  href: _ctx.href
8546
- }, [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.skip-link.text", "Gå direkt till innehåll")), 1)])], 8, _hoisted_1$E);
8546
+ }, [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.skip-link.text", "Gå direkt till innehåll")), 1)])], 8, _hoisted_1$G);
8547
8547
  }
8548
- const ISkipLink = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [["render", _sfc_render$w]]);
8548
+ const ISkipLink = /* @__PURE__ */ _export_sfc(_sfc_main$S, [["render", _sfc_render$w]]);
8549
8549
  function filterOptions(options, filter2, selectMode) {
8550
8550
  if (logic.isEmpty(filter2) || selectMode) {
8551
8551
  return options;
@@ -8570,10 +8570,10 @@ function useCombobox(inputRef, options, onOptionSelected) {
8570
8570
  }
8571
8571
  };
8572
8572
  }
8573
- useEventListener(inputRef, "click", onInputClick);
8574
- useEventListener(inputRef, "focus", onInputFocus);
8575
- useEventListener(inputRef, "keydown", onInputKeyDown);
8576
- useEventListener(inputRef, "keyup", onInputKeyUp);
8573
+ useEventListener$1(inputRef, "click", onInputClick);
8574
+ useEventListener$1(inputRef, "focus", onInputFocus);
8575
+ useEventListener$1(inputRef, "keydown", onInputKeyDown);
8576
+ useEventListener$1(inputRef, "keyup", onInputKeyUp);
8577
8577
  const dropdownId = logic.ElementIdService.generateElementId();
8578
8578
  const dropdownIsOpen = vue.ref(false);
8579
8579
  const activeOptionId = logic.ElementIdService.generateElementId();
@@ -8791,12 +8791,12 @@ function useCombobox(inputRef, options, onOptionSelected) {
8791
8791
  }
8792
8792
  }
8793
8793
  }
8794
- const _hoisted_1$D = {
8794
+ const _hoisted_1$F = {
8795
8795
  class: "combobox"
8796
8796
  };
8797
- const _hoisted_2$t = ["id"];
8797
+ const _hoisted_2$u = ["id"];
8798
8798
  const _hoisted_3$o = ["id", "aria-selected", "onClick"];
8799
- const _sfc_main$P = /* @__PURE__ */ vue.defineComponent({
8799
+ const _sfc_main$R = /* @__PURE__ */ vue.defineComponent({
8800
8800
  __name: "IComboboxDropdown",
8801
8801
  props: {
8802
8802
  id: {},
@@ -8833,7 +8833,7 @@ const _sfc_main$P = /* @__PURE__ */ vue.defineComponent({
8833
8833
  }
8834
8834
  });
8835
8835
  return (_ctx, _cache) => {
8836
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$D, [vue.createVNode(vue.unref(_sfc_main$T), {
8836
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$F, [vue.createVNode(vue.unref(_sfc_main$V), {
8837
8837
  "is-open": _ctx.isOpen,
8838
8838
  anchor: _ctx.inputNode,
8839
8839
  "num-of-items": _ctx.options.length,
@@ -8858,14 +8858,14 @@ const _sfc_main$P = /* @__PURE__ */ vue.defineComponent({
8858
8858
  }]),
8859
8859
  onClick: vue.withModifiers(($event) => onOptionClick(item), ["stop", "prevent"])
8860
8860
  }, vue.toDisplayString(item), 11, _hoisted_3$o);
8861
- }), 128))], 8, _hoisted_2$t)]),
8861
+ }), 128))], 8, _hoisted_2$u)]),
8862
8862
  _: 1
8863
8863
  }, 8, ["is-open", "anchor", "num-of-items", "active-element"])]);
8864
8864
  };
8865
8865
  }
8866
8866
  });
8867
- const _hoisted_1$C = ["aria-label"];
8868
- const _sfc_main$O = /* @__PURE__ */ vue.defineComponent({
8867
+ const _hoisted_1$E = ["aria-label"];
8868
+ const _sfc_main$Q = /* @__PURE__ */ vue.defineComponent({
8869
8869
  __name: "IComboboxToggleButton",
8870
8870
  emits: ["toggle"],
8871
8871
  setup(__props, {
@@ -8884,7 +8884,7 @@ const _sfc_main$O = /* @__PURE__ */ vue.defineComponent({
8884
8884
  }, [vue.createVNode(vue.unref(FIcon), {
8885
8885
  name: "arrow-down",
8886
8886
  class: "text-field__icon"
8887
- })], 8, _hoisted_1$C);
8887
+ })], 8, _hoisted_1$E);
8888
8888
  };
8889
8889
  }
8890
8890
  });
@@ -8986,7 +8986,7 @@ function useHorizontalOffset(options) {
8986
8986
  }, 0);
8987
8987
  }
8988
8988
  }
8989
- const _sfc_main$N = vue.defineComponent({
8989
+ const _sfc_main$P = vue.defineComponent({
8990
8990
  name: "FTooltip",
8991
8991
  components: {
8992
8992
  FExpand,
@@ -9145,8 +9145,8 @@ const _sfc_main$N = vue.defineComponent({
9145
9145
  }
9146
9146
  }
9147
9147
  });
9148
- const _hoisted_1$B = ["aria-expanded"];
9149
- const _hoisted_2$s = {
9148
+ const _hoisted_1$D = ["aria-expanded"];
9149
+ const _hoisted_2$t = {
9150
9150
  class: "icon-stack icon-stack--tooltip"
9151
9151
  };
9152
9152
  const _hoisted_3$n = {
@@ -9174,11 +9174,11 @@ function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
9174
9174
  type: "button",
9175
9175
  "aria-expanded": _ctx.isOpen,
9176
9176
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClickToggle && _ctx.onClickToggle(...args))
9177
- }, [vue.createElementVNode("span", _hoisted_2$s, [vue.createVNode(_component_f_icon, {
9177
+ }, [vue.createElementVNode("span", _hoisted_2$t, [vue.createVNode(_component_f_icon, {
9178
9178
  name: "circle"
9179
9179
  }), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
9180
9180
  name: "i"
9181
- }), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_3$n, vue.toDisplayString(_ctx.screenReaderText), 1)])], 8, _hoisted_1$B)], 8, ["disabled", "to"])), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createElementVNode("div", vue.mergeProps({
9181
+ }), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_3$n, vue.toDisplayString(_ctx.screenReaderText), 1)])], 8, _hoisted_1$D)], 8, ["disabled", "to"])), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createElementVNode("div", vue.mergeProps({
9182
9182
  ref: "wrapper",
9183
9183
  class: "tooltip"
9184
9184
  }, _ctx.$attrs), [_ctx.ready ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$k, [_ctx.hasHeader ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.headerTag), {
@@ -9196,7 +9196,7 @@ function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
9196
9196
  name: "close"
9197
9197
  })])])])) : vue.createCommentVNode("", true)], 16)], 64);
9198
9198
  }
9199
- const FTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["render", _sfc_render$v]]);
9199
+ const FTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["render", _sfc_render$v]]);
9200
9200
  function* labelClasses(options) {
9201
9201
  const {
9202
9202
  labelClass
@@ -9237,7 +9237,7 @@ function isEqual(a, b) {
9237
9237
  }
9238
9238
  return a.every((_, i) => a[i] === b[i]);
9239
9239
  }
9240
- const _sfc_main$M = vue.defineComponent({
9240
+ const _sfc_main$O = vue.defineComponent({
9241
9241
  name: "FFieldset",
9242
9242
  components: {
9243
9243
  FIcon
@@ -9465,8 +9465,8 @@ const _sfc_main$M = vue.defineComponent({
9465
9465
  }
9466
9466
  }
9467
9467
  });
9468
- const _hoisted_1$A = ["id"];
9469
- const _hoisted_2$r = {
9468
+ const _hoisted_1$C = ["id"];
9469
+ const _hoisted_2$s = {
9470
9470
  key: 0,
9471
9471
  class: "sr-only"
9472
9472
  };
@@ -9506,7 +9506,7 @@ function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
9506
9506
  }, [(vue.openBlock(), vue.createElementBlock("legend", {
9507
9507
  key: _ctx.legendKey,
9508
9508
  class: vue.normalizeClass(["label", _ctx.legendClass])
9509
- }, [vue.renderSlot(_ctx.$slots, "label"), _cache[1] || (_cache[1] = vue.createTextVNode()), _ctx.hasCheckbox && _ctx.children.length > 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$r, [vue.createElementVNode("span", null, vue.toDisplayString(_ctx.numberOfCheckboxesScreenReaderText), 1)])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "description", {
9509
+ }, [vue.renderSlot(_ctx.$slots, "label"), _cache[1] || (_cache[1] = vue.createTextVNode()), _ctx.hasCheckbox && _ctx.children.length > 1 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$s, [vue.createElementVNode("span", null, vue.toDisplayString(_ctx.numberOfCheckboxesScreenReaderText), 1)])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "description", {
9510
9510
  descriptionClass: _ctx.descriptionClass,
9511
9511
  formatDescriptionClass: _ctx.formatDescriptionClass
9512
9512
  }), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "error-message", vue.normalizeProps(vue.guardReactiveProps({
@@ -9532,11 +9532,11 @@ function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
9532
9532
  name: "error"
9533
9533
  }), vue.createTextVNode(" " + vue.toDisplayString(_ctx.validity.validationMessage), 1)])) : vue.createCommentVNode("", true)])], 2)) : vue.createCommentVNode("", true)], 64)) : vue.createCommentVNode("", true), _cache[9] || (_cache[9] = vue.createTextVNode()), vue.createElementVNode("div", {
9534
9534
  class: vue.normalizeClass(_ctx.groupContentClass)
9535
- }, [vue.renderSlot(_ctx.$slots, "default")], 2)], 42, _hoisted_1$A);
9535
+ }, [vue.renderSlot(_ctx.$slots, "default")], 2)], 42, _hoisted_1$C);
9536
9536
  }
9537
- const FFieldset = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["render", _sfc_render$u]]);
9537
+ const FFieldset = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["render", _sfc_render$u]]);
9538
9538
  const anyType$1 = [String, Object, Array, Number, Date, Boolean];
9539
- const _sfc_main$L = vue.defineComponent({
9539
+ const _sfc_main$N = vue.defineComponent({
9540
9540
  name: "FCheckboxField",
9541
9541
  inheritAttrs: false,
9542
9542
  props: {
@@ -9722,8 +9722,8 @@ const _sfc_main$L = vue.defineComponent({
9722
9722
  }
9723
9723
  }
9724
9724
  });
9725
- const _hoisted_1$z = ["id", "disabled"];
9726
- const _hoisted_2$q = ["for"];
9725
+ const _hoisted_1$B = ["id", "disabled"];
9726
+ const _hoisted_2$r = ["for"];
9727
9727
  const _hoisted_3$l = {
9728
9728
  key: 0,
9729
9729
  class: "checkbox__details"
@@ -9745,7 +9745,7 @@ function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
9745
9745
  disabled: _ctx.disabled,
9746
9746
  onKeydown: _cache[0] || (_cache[0] = vue.withKeys((...args) => _ctx.onKeydown && _ctx.onKeydown(...args), ["space"])),
9747
9747
  onChange: _cache[1] || (_cache[1] = ($event) => _ctx.updateExpandedFlag())
9748
- }), null, 16, _hoisted_1$z), _cache[9] || (_cache[9] = vue.createTextVNode()), vue.createElementVNode("label", {
9748
+ }), null, 16, _hoisted_1$B), _cache[9] || (_cache[9] = vue.createTextVNode()), vue.createElementVNode("label", {
9749
9749
  class: vue.normalizeClass(_ctx.$slots.details ? "checkbox__label checkbox__width" : "checkbox__label"),
9750
9750
  for: _ctx.id
9751
9751
  }, [vue.renderSlot(_ctx.$slots, "default"), _cache[8] || (_cache[8] = vue.createTextVNode()), _ctx.$slots.details ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
@@ -9760,9 +9760,9 @@ function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
9760
9760
  height: _ctx.height
9761
9761
  })])) : vue.createCommentVNode("", true)]),
9762
9762
  _: 3
9763
- }, 8, ["onEnter", "onAfterEnter", "onLeave"])) : vue.createCommentVNode("", true)], 64)) : vue.createCommentVNode("", true)], 10, _hoisted_2$q)], 34);
9763
+ }, 8, ["onEnter", "onAfterEnter", "onLeave"])) : vue.createCommentVNode("", true)], 64)) : vue.createCommentVNode("", true)], 10, _hoisted_2$r)], 34);
9764
9764
  }
9765
- const FCheckboxField = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["render", _sfc_render$t]]);
9765
+ const FCheckboxField = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["render", _sfc_render$t]]);
9766
9766
  var es_iterator_some = {};
9767
9767
  var hasRequiredEs_iterator_some;
9768
9768
  function requireEs_iterator_some() {
@@ -9841,7 +9841,7 @@ async function doMenuAction$1(action, target) {
9841
9841
  }
9842
9842
  const preventKeys$1 = ["Tab", "Up", "Down", "ArrowUp", "ArrowDown", "Home", "End", " ", "Spacebar", "Enter", "Escape"];
9843
9843
  const keyUp = ["ArrowUp", "Up"];
9844
- const _sfc_main$K = vue.defineComponent({
9844
+ const _sfc_main$M = vue.defineComponent({
9845
9845
  name: "FContextMenu",
9846
9846
  components: {
9847
9847
  IPopup,
@@ -10005,8 +10005,8 @@ const _sfc_main$K = vue.defineComponent({
10005
10005
  }
10006
10006
  }
10007
10007
  });
10008
- const _hoisted_1$y = ["aria-label"];
10009
- const _hoisted_2$p = {
10008
+ const _hoisted_1$A = ["aria-label"];
10009
+ const _hoisted_2$q = {
10010
10010
  ref: "contextmenu",
10011
10011
  role: "menu",
10012
10012
  tabindex: "-1",
@@ -10035,7 +10035,7 @@ function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
10035
10035
  "aria-label": _ctx.ariaLabel,
10036
10036
  onKeyup: _cache[0] || (_cache[0] = (...args) => _ctx.onKeyUp && _ctx.onKeyUp(...args)),
10037
10037
  onKeydown: _cache[1] || (_cache[1] = (...args) => _ctx.onKeyDown && _ctx.onKeyDown(...args))
10038
- }, [vue.createElementVNode("ul", _hoisted_2$p, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.popupItems, (item, index) => {
10038
+ }, [vue.createElementVNode("ul", _hoisted_2$q, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.popupItems, (item, index) => {
10039
10039
  return vue.openBlock(), vue.createElementBlock("li", {
10040
10040
  key: item.key,
10041
10041
  role: "menuitem",
@@ -10054,11 +10054,11 @@ function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
10054
10054
  ref_for: true,
10055
10055
  ref: "anchors"
10056
10056
  }, vue.toDisplayString(item.label), 513)], 8, _hoisted_4$h), _cache[4] || (_cache[4] = vue.createTextVNode()), _ctx.hasSeparatorAfterItemAt(index) ? (vue.openBlock(), vue.createElementBlock("hr", _hoisted_5$e)) : vue.createCommentVNode("", true)], 8, _hoisted_3$k);
10057
- }), 128))], 512)], 40, _hoisted_1$y)]),
10057
+ }), 128))], 512)], 40, _hoisted_1$A)]),
10058
10058
  _: 1
10059
10059
  }, 8, ["is-open", "anchor", "focus-element"]);
10060
10060
  }
10061
- const FContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["render", _sfc_render$s]]);
10061
+ const FContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["render", _sfc_render$s]]);
10062
10062
  var Operation = /* @__PURE__ */ ((Operation2) => {
10063
10063
  Operation2[Operation2["ADD"] = 0] = "ADD";
10064
10064
  Operation2[Operation2["DELETE"] = 1] = "DELETE";
@@ -10066,13 +10066,13 @@ var Operation = /* @__PURE__ */ ((Operation2) => {
10066
10066
  Operation2[Operation2["NONE"] = 3] = "NONE";
10067
10067
  return Operation2;
10068
10068
  })(Operation || {});
10069
- const _hoisted_1$x = {
10069
+ const _hoisted_1$z = {
10070
10070
  class: "crud-dataset"
10071
10071
  };
10072
- const _hoisted_2$o = {
10072
+ const _hoisted_2$p = {
10073
10073
  key: 0
10074
10074
  };
10075
- const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
10075
+ const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
10076
10076
  __name: "FCrudDataset",
10077
10077
  props: {
10078
10078
  /**
@@ -10302,7 +10302,7 @@ const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
10302
10302
  isFormModalOpen.value = true;
10303
10303
  }
10304
10304
  return (_ctx, _cache) => {
10305
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [vue.renderSlot(_ctx.$slots, "default"), _cache[5] || (_cache[5] = vue.createTextVNode()), hasAddSlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$o, [vue.createElementVNode("button", {
10305
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$z, [vue.renderSlot(_ctx.$slots, "default"), _cache[5] || (_cache[5] = vue.createTextVNode()), hasAddSlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$p, [vue.createElementVNode("button", {
10306
10306
  "data-test": "f-crud-dataset-add-button",
10307
10307
  type: "button",
10308
10308
  class: "button button--tertiary crud-dataset__add-button",
@@ -10354,7 +10354,7 @@ function FCrudDatasetInjected() {
10354
10354
  modify: vue.inject("modify")
10355
10355
  };
10356
10356
  }
10357
- const _sfc_main$I = vue.defineComponent({
10357
+ const _sfc_main$K = vue.defineComponent({
10358
10358
  name: "FCrudButton",
10359
10359
  components: {
10360
10360
  FIcon
@@ -10410,7 +10410,7 @@ const _sfc_main$I = vue.defineComponent({
10410
10410
  }
10411
10411
  }
10412
10412
  });
10413
- const _hoisted_1$w = {
10413
+ const _hoisted_1$y = {
10414
10414
  key: 1,
10415
10415
  class: "sr-only"
10416
10416
  };
@@ -10424,17 +10424,582 @@ function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
10424
10424
  key: 0,
10425
10425
  class: "button__icon",
10426
10426
  name: _ctx.iconName
10427
- }, null, 8, ["name"])) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), !_ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$w, [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.buttonText), 1)])])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), _ctx.label ? vue.renderSlot(_ctx.$slots, "default", {
10427
+ }, null, 8, ["name"])) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), !_ctx.label ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$y, [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.buttonText), 1)])])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), _ctx.label ? vue.renderSlot(_ctx.$slots, "default", {
10428
10428
  key: 2
10429
10429
  }, () => [vue.createTextVNode(vue.toDisplayString(_ctx.buttonText), 1)]) : vue.createCommentVNode("", true)]);
10430
10430
  }
10431
- const FCrudButton = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["render", _sfc_render$r]]);
10431
+ const FCrudButton = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["render", _sfc_render$r]]);
10432
10432
  function ActivateItemInjected() {
10433
10433
  return {
10434
10434
  registerCallbackAfterItemAdd: vue.inject("registerCallbackAfterItemAdd", () => void 0),
10435
10435
  registerCallbackBeforeItemDelete: vue.inject("registerCallbackBeforeItemDelete", () => void 0)
10436
10436
  };
10437
10437
  }
10438
+ var es_set_difference_v2 = {};
10439
+ var setHelpers;
10440
+ var hasRequiredSetHelpers;
10441
+ function requireSetHelpers() {
10442
+ if (hasRequiredSetHelpers) return setHelpers;
10443
+ hasRequiredSetHelpers = 1;
10444
+ var uncurryThis = requireFunctionUncurryThis();
10445
+ var SetPrototype = Set.prototype;
10446
+ setHelpers = {
10447
+ // eslint-disable-next-line es/no-set -- safe
10448
+ Set,
10449
+ add: uncurryThis(SetPrototype.add),
10450
+ has: uncurryThis(SetPrototype.has),
10451
+ remove: uncurryThis(SetPrototype["delete"]),
10452
+ proto: SetPrototype
10453
+ };
10454
+ return setHelpers;
10455
+ }
10456
+ var aSet;
10457
+ var hasRequiredASet;
10458
+ function requireASet() {
10459
+ if (hasRequiredASet) return aSet;
10460
+ hasRequiredASet = 1;
10461
+ var has = requireSetHelpers().has;
10462
+ aSet = function(it) {
10463
+ has(it);
10464
+ return it;
10465
+ };
10466
+ return aSet;
10467
+ }
10468
+ var iterateSimple;
10469
+ var hasRequiredIterateSimple;
10470
+ function requireIterateSimple() {
10471
+ if (hasRequiredIterateSimple) return iterateSimple;
10472
+ hasRequiredIterateSimple = 1;
10473
+ var call = requireFunctionCall();
10474
+ iterateSimple = function(record, fn2, ITERATOR_INSTEAD_OF_RECORD) {
10475
+ var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;
10476
+ var next = record.next;
10477
+ var step, result;
10478
+ while (!(step = call(next, iterator)).done) {
10479
+ result = fn2(step.value);
10480
+ if (result !== void 0) return result;
10481
+ }
10482
+ };
10483
+ return iterateSimple;
10484
+ }
10485
+ var setIterate;
10486
+ var hasRequiredSetIterate;
10487
+ function requireSetIterate() {
10488
+ if (hasRequiredSetIterate) return setIterate;
10489
+ hasRequiredSetIterate = 1;
10490
+ var uncurryThis = requireFunctionUncurryThis();
10491
+ var iterateSimple2 = requireIterateSimple();
10492
+ var SetHelpers = requireSetHelpers();
10493
+ var Set2 = SetHelpers.Set;
10494
+ var SetPrototype = SetHelpers.proto;
10495
+ var forEach = uncurryThis(SetPrototype.forEach);
10496
+ var keys = uncurryThis(SetPrototype.keys);
10497
+ var next = keys(new Set2()).next;
10498
+ setIterate = function(set, fn2, interruptible) {
10499
+ return interruptible ? iterateSimple2({
10500
+ iterator: keys(set),
10501
+ next
10502
+ }, fn2) : forEach(set, fn2);
10503
+ };
10504
+ return setIterate;
10505
+ }
10506
+ var setClone;
10507
+ var hasRequiredSetClone;
10508
+ function requireSetClone() {
10509
+ if (hasRequiredSetClone) return setClone;
10510
+ hasRequiredSetClone = 1;
10511
+ var SetHelpers = requireSetHelpers();
10512
+ var iterate2 = requireSetIterate();
10513
+ var Set2 = SetHelpers.Set;
10514
+ var add = SetHelpers.add;
10515
+ setClone = function(set) {
10516
+ var result = new Set2();
10517
+ iterate2(set, function(it) {
10518
+ add(result, it);
10519
+ });
10520
+ return result;
10521
+ };
10522
+ return setClone;
10523
+ }
10524
+ var setSize;
10525
+ var hasRequiredSetSize;
10526
+ function requireSetSize() {
10527
+ if (hasRequiredSetSize) return setSize;
10528
+ hasRequiredSetSize = 1;
10529
+ var uncurryThisAccessor = requireFunctionUncurryThisAccessor();
10530
+ var SetHelpers = requireSetHelpers();
10531
+ setSize = uncurryThisAccessor(SetHelpers.proto, "size", "get") || function(set) {
10532
+ return set.size;
10533
+ };
10534
+ return setSize;
10535
+ }
10536
+ var getSetRecord;
10537
+ var hasRequiredGetSetRecord;
10538
+ function requireGetSetRecord() {
10539
+ if (hasRequiredGetSetRecord) return getSetRecord;
10540
+ hasRequiredGetSetRecord = 1;
10541
+ var aCallable2 = requireACallable();
10542
+ var anObject2 = requireAnObject();
10543
+ var call = requireFunctionCall();
10544
+ var toIntegerOrInfinity2 = requireToIntegerOrInfinity();
10545
+ var getIteratorDirect2 = requireGetIteratorDirect();
10546
+ var INVALID_SIZE = "Invalid size";
10547
+ var $RangeError = RangeError;
10548
+ var $TypeError = TypeError;
10549
+ var max = Math.max;
10550
+ var SetRecord = function(set, intSize) {
10551
+ this.set = set;
10552
+ this.size = max(intSize, 0);
10553
+ this.has = aCallable2(set.has);
10554
+ this.keys = aCallable2(set.keys);
10555
+ };
10556
+ SetRecord.prototype = {
10557
+ getIterator: function() {
10558
+ return getIteratorDirect2(anObject2(call(this.keys, this.set)));
10559
+ },
10560
+ includes: function(it) {
10561
+ return call(this.has, this.set, it);
10562
+ }
10563
+ };
10564
+ getSetRecord = function(obj) {
10565
+ anObject2(obj);
10566
+ var numSize = +obj.size;
10567
+ if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);
10568
+ var intSize = toIntegerOrInfinity2(numSize);
10569
+ if (intSize < 0) throw new $RangeError(INVALID_SIZE);
10570
+ return new SetRecord(obj, intSize);
10571
+ };
10572
+ return getSetRecord;
10573
+ }
10574
+ var setDifference;
10575
+ var hasRequiredSetDifference;
10576
+ function requireSetDifference() {
10577
+ if (hasRequiredSetDifference) return setDifference;
10578
+ hasRequiredSetDifference = 1;
10579
+ var aSet2 = requireASet();
10580
+ var SetHelpers = requireSetHelpers();
10581
+ var clone = requireSetClone();
10582
+ var size = requireSetSize();
10583
+ var getSetRecord2 = requireGetSetRecord();
10584
+ var iterateSet = requireSetIterate();
10585
+ var iterateSimple2 = requireIterateSimple();
10586
+ var has = SetHelpers.has;
10587
+ var remove = SetHelpers.remove;
10588
+ setDifference = function difference(other) {
10589
+ var O = aSet2(this);
10590
+ var otherRec = getSetRecord2(other);
10591
+ var result = clone(O);
10592
+ if (size(O) <= otherRec.size) iterateSet(O, function(e) {
10593
+ if (otherRec.includes(e)) remove(result, e);
10594
+ });
10595
+ else iterateSimple2(otherRec.getIterator(), function(e) {
10596
+ if (has(O, e)) remove(result, e);
10597
+ });
10598
+ return result;
10599
+ };
10600
+ return setDifference;
10601
+ }
10602
+ var setMethodAcceptSetLike;
10603
+ var hasRequiredSetMethodAcceptSetLike;
10604
+ function requireSetMethodAcceptSetLike() {
10605
+ if (hasRequiredSetMethodAcceptSetLike) return setMethodAcceptSetLike;
10606
+ hasRequiredSetMethodAcceptSetLike = 1;
10607
+ var getBuiltIn2 = requireGetBuiltIn();
10608
+ var createSetLike = function(size) {
10609
+ return {
10610
+ size,
10611
+ has: function() {
10612
+ return false;
10613
+ },
10614
+ keys: function() {
10615
+ return {
10616
+ next: function() {
10617
+ return {
10618
+ done: true
10619
+ };
10620
+ }
10621
+ };
10622
+ }
10623
+ };
10624
+ };
10625
+ var createSetLikeWithInfinitySize = function(size) {
10626
+ return {
10627
+ size,
10628
+ has: function() {
10629
+ return true;
10630
+ },
10631
+ keys: function() {
10632
+ throw new Error("e");
10633
+ }
10634
+ };
10635
+ };
10636
+ setMethodAcceptSetLike = function(name, callback) {
10637
+ var Set2 = getBuiltIn2("Set");
10638
+ try {
10639
+ new Set2()[name](createSetLike(0));
10640
+ try {
10641
+ new Set2()[name](createSetLike(-1));
10642
+ return false;
10643
+ } catch (error2) {
10644
+ if (!callback) return true;
10645
+ try {
10646
+ new Set2()[name](createSetLikeWithInfinitySize(-Infinity));
10647
+ return false;
10648
+ } catch (error) {
10649
+ var set = new Set2();
10650
+ set.add(1);
10651
+ set.add(2);
10652
+ return callback(set[name](createSetLikeWithInfinitySize(Infinity)));
10653
+ }
10654
+ }
10655
+ } catch (error) {
10656
+ return false;
10657
+ }
10658
+ };
10659
+ return setMethodAcceptSetLike;
10660
+ }
10661
+ var hasRequiredEs_set_difference_v2;
10662
+ function requireEs_set_difference_v2() {
10663
+ if (hasRequiredEs_set_difference_v2) return es_set_difference_v2;
10664
+ hasRequiredEs_set_difference_v2 = 1;
10665
+ var $ = require_export();
10666
+ var difference = requireSetDifference();
10667
+ var setMethodAcceptSetLike2 = requireSetMethodAcceptSetLike();
10668
+ var INCORRECT = !setMethodAcceptSetLike2("difference", function(result) {
10669
+ return result.size === 0;
10670
+ });
10671
+ $({
10672
+ target: "Set",
10673
+ proto: true,
10674
+ real: true,
10675
+ forced: INCORRECT
10676
+ }, {
10677
+ difference
10678
+ });
10679
+ return es_set_difference_v2;
10680
+ }
10681
+ requireEs_set_difference_v2();
10682
+ var es_set_intersection_v2 = {};
10683
+ var setIntersection;
10684
+ var hasRequiredSetIntersection;
10685
+ function requireSetIntersection() {
10686
+ if (hasRequiredSetIntersection) return setIntersection;
10687
+ hasRequiredSetIntersection = 1;
10688
+ var aSet2 = requireASet();
10689
+ var SetHelpers = requireSetHelpers();
10690
+ var size = requireSetSize();
10691
+ var getSetRecord2 = requireGetSetRecord();
10692
+ var iterateSet = requireSetIterate();
10693
+ var iterateSimple2 = requireIterateSimple();
10694
+ var Set2 = SetHelpers.Set;
10695
+ var add = SetHelpers.add;
10696
+ var has = SetHelpers.has;
10697
+ setIntersection = function intersection2(other) {
10698
+ var O = aSet2(this);
10699
+ var otherRec = getSetRecord2(other);
10700
+ var result = new Set2();
10701
+ if (size(O) > otherRec.size) {
10702
+ iterateSimple2(otherRec.getIterator(), function(e) {
10703
+ if (has(O, e)) add(result, e);
10704
+ });
10705
+ } else {
10706
+ iterateSet(O, function(e) {
10707
+ if (otherRec.includes(e)) add(result, e);
10708
+ });
10709
+ }
10710
+ return result;
10711
+ };
10712
+ return setIntersection;
10713
+ }
10714
+ var hasRequiredEs_set_intersection_v2;
10715
+ function requireEs_set_intersection_v2() {
10716
+ if (hasRequiredEs_set_intersection_v2) return es_set_intersection_v2;
10717
+ hasRequiredEs_set_intersection_v2 = 1;
10718
+ var $ = require_export();
10719
+ var fails2 = requireFails();
10720
+ var intersection2 = requireSetIntersection();
10721
+ var setMethodAcceptSetLike2 = requireSetMethodAcceptSetLike();
10722
+ var INCORRECT = !setMethodAcceptSetLike2("intersection", function(result) {
10723
+ return result.size === 2 && result.has(1) && result.has(2);
10724
+ }) || fails2(function() {
10725
+ return String(Array.from((/* @__PURE__ */ new Set([1, 2, 3])).intersection(/* @__PURE__ */ new Set([3, 2])))) !== "3,2";
10726
+ });
10727
+ $({
10728
+ target: "Set",
10729
+ proto: true,
10730
+ real: true,
10731
+ forced: INCORRECT
10732
+ }, {
10733
+ intersection: intersection2
10734
+ });
10735
+ return es_set_intersection_v2;
10736
+ }
10737
+ requireEs_set_intersection_v2();
10738
+ var es_set_isDisjointFrom_v2 = {};
10739
+ var setIsDisjointFrom;
10740
+ var hasRequiredSetIsDisjointFrom;
10741
+ function requireSetIsDisjointFrom() {
10742
+ if (hasRequiredSetIsDisjointFrom) return setIsDisjointFrom;
10743
+ hasRequiredSetIsDisjointFrom = 1;
10744
+ var aSet2 = requireASet();
10745
+ var has = requireSetHelpers().has;
10746
+ var size = requireSetSize();
10747
+ var getSetRecord2 = requireGetSetRecord();
10748
+ var iterateSet = requireSetIterate();
10749
+ var iterateSimple2 = requireIterateSimple();
10750
+ var iteratorClose2 = requireIteratorClose();
10751
+ setIsDisjointFrom = function isDisjointFrom(other) {
10752
+ var O = aSet2(this);
10753
+ var otherRec = getSetRecord2(other);
10754
+ if (size(O) <= otherRec.size) return iterateSet(O, function(e) {
10755
+ if (otherRec.includes(e)) return false;
10756
+ }, true) !== false;
10757
+ var iterator = otherRec.getIterator();
10758
+ return iterateSimple2(iterator, function(e) {
10759
+ if (has(O, e)) return iteratorClose2(iterator, "normal", false);
10760
+ }) !== false;
10761
+ };
10762
+ return setIsDisjointFrom;
10763
+ }
10764
+ var hasRequiredEs_set_isDisjointFrom_v2;
10765
+ function requireEs_set_isDisjointFrom_v2() {
10766
+ if (hasRequiredEs_set_isDisjointFrom_v2) return es_set_isDisjointFrom_v2;
10767
+ hasRequiredEs_set_isDisjointFrom_v2 = 1;
10768
+ var $ = require_export();
10769
+ var isDisjointFrom = requireSetIsDisjointFrom();
10770
+ var setMethodAcceptSetLike2 = requireSetMethodAcceptSetLike();
10771
+ var INCORRECT = !setMethodAcceptSetLike2("isDisjointFrom", function(result) {
10772
+ return !result;
10773
+ });
10774
+ $({
10775
+ target: "Set",
10776
+ proto: true,
10777
+ real: true,
10778
+ forced: INCORRECT
10779
+ }, {
10780
+ isDisjointFrom
10781
+ });
10782
+ return es_set_isDisjointFrom_v2;
10783
+ }
10784
+ requireEs_set_isDisjointFrom_v2();
10785
+ var es_set_isSubsetOf_v2 = {};
10786
+ var setIsSubsetOf;
10787
+ var hasRequiredSetIsSubsetOf;
10788
+ function requireSetIsSubsetOf() {
10789
+ if (hasRequiredSetIsSubsetOf) return setIsSubsetOf;
10790
+ hasRequiredSetIsSubsetOf = 1;
10791
+ var aSet2 = requireASet();
10792
+ var size = requireSetSize();
10793
+ var iterate2 = requireSetIterate();
10794
+ var getSetRecord2 = requireGetSetRecord();
10795
+ setIsSubsetOf = function isSubsetOf(other) {
10796
+ var O = aSet2(this);
10797
+ var otherRec = getSetRecord2(other);
10798
+ if (size(O) > otherRec.size) return false;
10799
+ return iterate2(O, function(e) {
10800
+ if (!otherRec.includes(e)) return false;
10801
+ }, true) !== false;
10802
+ };
10803
+ return setIsSubsetOf;
10804
+ }
10805
+ var hasRequiredEs_set_isSubsetOf_v2;
10806
+ function requireEs_set_isSubsetOf_v2() {
10807
+ if (hasRequiredEs_set_isSubsetOf_v2) return es_set_isSubsetOf_v2;
10808
+ hasRequiredEs_set_isSubsetOf_v2 = 1;
10809
+ var $ = require_export();
10810
+ var isSubsetOf = requireSetIsSubsetOf();
10811
+ var setMethodAcceptSetLike2 = requireSetMethodAcceptSetLike();
10812
+ var INCORRECT = !setMethodAcceptSetLike2("isSubsetOf", function(result) {
10813
+ return result;
10814
+ });
10815
+ $({
10816
+ target: "Set",
10817
+ proto: true,
10818
+ real: true,
10819
+ forced: INCORRECT
10820
+ }, {
10821
+ isSubsetOf
10822
+ });
10823
+ return es_set_isSubsetOf_v2;
10824
+ }
10825
+ requireEs_set_isSubsetOf_v2();
10826
+ var es_set_isSupersetOf_v2 = {};
10827
+ var setIsSupersetOf;
10828
+ var hasRequiredSetIsSupersetOf;
10829
+ function requireSetIsSupersetOf() {
10830
+ if (hasRequiredSetIsSupersetOf) return setIsSupersetOf;
10831
+ hasRequiredSetIsSupersetOf = 1;
10832
+ var aSet2 = requireASet();
10833
+ var has = requireSetHelpers().has;
10834
+ var size = requireSetSize();
10835
+ var getSetRecord2 = requireGetSetRecord();
10836
+ var iterateSimple2 = requireIterateSimple();
10837
+ var iteratorClose2 = requireIteratorClose();
10838
+ setIsSupersetOf = function isSupersetOf(other) {
10839
+ var O = aSet2(this);
10840
+ var otherRec = getSetRecord2(other);
10841
+ if (size(O) < otherRec.size) return false;
10842
+ var iterator = otherRec.getIterator();
10843
+ return iterateSimple2(iterator, function(e) {
10844
+ if (!has(O, e)) return iteratorClose2(iterator, "normal", false);
10845
+ }) !== false;
10846
+ };
10847
+ return setIsSupersetOf;
10848
+ }
10849
+ var hasRequiredEs_set_isSupersetOf_v2;
10850
+ function requireEs_set_isSupersetOf_v2() {
10851
+ if (hasRequiredEs_set_isSupersetOf_v2) return es_set_isSupersetOf_v2;
10852
+ hasRequiredEs_set_isSupersetOf_v2 = 1;
10853
+ var $ = require_export();
10854
+ var isSupersetOf = requireSetIsSupersetOf();
10855
+ var setMethodAcceptSetLike2 = requireSetMethodAcceptSetLike();
10856
+ var INCORRECT = !setMethodAcceptSetLike2("isSupersetOf", function(result) {
10857
+ return !result;
10858
+ });
10859
+ $({
10860
+ target: "Set",
10861
+ proto: true,
10862
+ real: true,
10863
+ forced: INCORRECT
10864
+ }, {
10865
+ isSupersetOf
10866
+ });
10867
+ return es_set_isSupersetOf_v2;
10868
+ }
10869
+ requireEs_set_isSupersetOf_v2();
10870
+ var es_set_symmetricDifference_v2 = {};
10871
+ var setSymmetricDifference;
10872
+ var hasRequiredSetSymmetricDifference;
10873
+ function requireSetSymmetricDifference() {
10874
+ if (hasRequiredSetSymmetricDifference) return setSymmetricDifference;
10875
+ hasRequiredSetSymmetricDifference = 1;
10876
+ var aSet2 = requireASet();
10877
+ var SetHelpers = requireSetHelpers();
10878
+ var clone = requireSetClone();
10879
+ var getSetRecord2 = requireGetSetRecord();
10880
+ var iterateSimple2 = requireIterateSimple();
10881
+ var add = SetHelpers.add;
10882
+ var has = SetHelpers.has;
10883
+ var remove = SetHelpers.remove;
10884
+ setSymmetricDifference = function symmetricDifference(other) {
10885
+ var O = aSet2(this);
10886
+ var keysIter = getSetRecord2(other).getIterator();
10887
+ var result = clone(O);
10888
+ iterateSimple2(keysIter, function(e) {
10889
+ if (has(O, e)) remove(result, e);
10890
+ else add(result, e);
10891
+ });
10892
+ return result;
10893
+ };
10894
+ return setSymmetricDifference;
10895
+ }
10896
+ var hasRequiredEs_set_symmetricDifference_v2;
10897
+ function requireEs_set_symmetricDifference_v2() {
10898
+ if (hasRequiredEs_set_symmetricDifference_v2) return es_set_symmetricDifference_v2;
10899
+ hasRequiredEs_set_symmetricDifference_v2 = 1;
10900
+ var $ = require_export();
10901
+ var symmetricDifference = requireSetSymmetricDifference();
10902
+ var setMethodAcceptSetLike2 = requireSetMethodAcceptSetLike();
10903
+ $({
10904
+ target: "Set",
10905
+ proto: true,
10906
+ real: true,
10907
+ forced: !setMethodAcceptSetLike2("symmetricDifference")
10908
+ }, {
10909
+ symmetricDifference
10910
+ });
10911
+ return es_set_symmetricDifference_v2;
10912
+ }
10913
+ requireEs_set_symmetricDifference_v2();
10914
+ var es_set_union_v2 = {};
10915
+ var setUnion;
10916
+ var hasRequiredSetUnion;
10917
+ function requireSetUnion() {
10918
+ if (hasRequiredSetUnion) return setUnion;
10919
+ hasRequiredSetUnion = 1;
10920
+ var aSet2 = requireASet();
10921
+ var add = requireSetHelpers().add;
10922
+ var clone = requireSetClone();
10923
+ var getSetRecord2 = requireGetSetRecord();
10924
+ var iterateSimple2 = requireIterateSimple();
10925
+ setUnion = function union(other) {
10926
+ var O = aSet2(this);
10927
+ var keysIter = getSetRecord2(other).getIterator();
10928
+ var result = clone(O);
10929
+ iterateSimple2(keysIter, function(it) {
10930
+ add(result, it);
10931
+ });
10932
+ return result;
10933
+ };
10934
+ return setUnion;
10935
+ }
10936
+ var hasRequiredEs_set_union_v2;
10937
+ function requireEs_set_union_v2() {
10938
+ if (hasRequiredEs_set_union_v2) return es_set_union_v2;
10939
+ hasRequiredEs_set_union_v2 = 1;
10940
+ var $ = require_export();
10941
+ var union = requireSetUnion();
10942
+ var setMethodAcceptSetLike2 = requireSetMethodAcceptSetLike();
10943
+ $({
10944
+ target: "Set",
10945
+ proto: true,
10946
+ real: true,
10947
+ forced: !setMethodAcceptSetLike2("union")
10948
+ }, {
10949
+ union
10950
+ });
10951
+ return es_set_union_v2;
10952
+ }
10953
+ requireEs_set_union_v2();
10954
+ const internalKey = Symbol("internal-key");
10955
+ let internalIndex = 0;
10956
+ function getInternalKey() {
10957
+ return internalKey;
10958
+ }
10959
+ function setInternalKey(item, value) {
10960
+ if (item[internalKey]) {
10961
+ return;
10962
+ }
10963
+ Object.defineProperty(item, internalKey, {
10964
+ value: value !== null && value !== void 0 ? value : String(internalIndex++),
10965
+ enumerable: false,
10966
+ writable: true
10967
+ });
10968
+ }
10969
+ function setInternalKeys(items, key, nestedKey, seenValues = /* @__PURE__ */ new Set()) {
10970
+ if (key === void 0) {
10971
+ return items.map((item) => {
10972
+ setInternalKey(item);
10973
+ if (nestedKey !== void 0) {
10974
+ const nestedItem = item[nestedKey];
10975
+ if (Array.isArray(nestedItem)) {
10976
+ setInternalKeys(nestedItem);
10977
+ }
10978
+ }
10979
+ return item;
10980
+ });
10981
+ }
10982
+ return items.map((item, index) => {
10983
+ const value = item[key];
10984
+ const keyString = String(key);
10985
+ const invalidValue = value === void 0 || value === null || String(value).length === 0;
10986
+ if (invalidValue) {
10987
+ throw new Error(`Key [${keyString}] is missing or has invalid value in item index ${index}`);
10988
+ }
10989
+ if (seenValues.has(value)) {
10990
+ throw new Error(`Expected each item to have key [${keyString}] with unique value but encountered duplicate of "${value}" in item index ${index}.`);
10991
+ }
10992
+ setInternalKey(item, String(value));
10993
+ seenValues.add(value);
10994
+ if (nestedKey !== void 0) {
10995
+ const nestedItem = item[nestedKey];
10996
+ if (Array.isArray(nestedItem)) {
10997
+ setInternalKeys(nestedItem, key, void 0, seenValues);
10998
+ }
10999
+ }
11000
+ return item;
11001
+ });
11002
+ }
10438
11003
  var FTableColumnType = /* @__PURE__ */ ((FTableColumnType2) => {
10439
11004
  FTableColumnType2["TEXT"] = "text";
10440
11005
  FTableColumnType2["DATE"] = "date";
@@ -10512,7 +11077,7 @@ function FTableInjected() {
10512
11077
  renderColumns: vue.inject("renderColumns", false)
10513
11078
  };
10514
11079
  }
10515
- const _sfc_main$H = vue.defineComponent({
11080
+ const _sfc_main$J = vue.defineComponent({
10516
11081
  name: "FTableColumn",
10517
11082
  inheritAttrs: false,
10518
11083
  props: {
@@ -10665,7 +11230,7 @@ function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
10665
11230
  _: 3
10666
11231
  }, 16, ["class", "scope"])) : vue.createCommentVNode("", true);
10667
11232
  }
10668
- const FTableColumn = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["render", _sfc_render$q]]);
11233
+ const FTableColumn = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["render", _sfc_render$q]]);
10669
11234
  function FSortFilterDatasetInjected() {
10670
11235
  return {
10671
11236
  sort: vue.inject("sort", () => void 0),
@@ -10673,7 +11238,7 @@ function FSortFilterDatasetInjected() {
10673
11238
  registerCallbackOnMount: vue.inject("registerCallbackOnMount", () => void 0)
10674
11239
  };
10675
11240
  }
10676
- const _sfc_main$G = vue.defineComponent({
11241
+ const _sfc_main$I = vue.defineComponent({
10677
11242
  name: "FLabel",
10678
11243
  components: {
10679
11244
  FIcon
@@ -10712,10 +11277,10 @@ const _sfc_main$G = vue.defineComponent({
10712
11277
  }
10713
11278
  }
10714
11279
  });
10715
- const _hoisted_1$v = {
11280
+ const _hoisted_1$x = {
10716
11281
  key: 0
10717
11282
  };
10718
- const _hoisted_2$n = {
11283
+ const _hoisted_2$o = {
10719
11284
  key: 0,
10720
11285
  ref: "tooltipAttachTo"
10721
11286
  };
@@ -10732,7 +11297,7 @@ const _hoisted_7$a = {
10732
11297
  };
10733
11298
  function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {
10734
11299
  const _component_f_icon = vue.resolveComponent("f-icon");
10735
- return _ctx.$slots.tooltip ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$v, [_ctx.hasDefaultSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$n, [vue.createElementVNode("label", {
11300
+ return _ctx.$slots.tooltip ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$x, [_ctx.hasDefaultSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$o, [vue.createElementVNode("label", {
10736
11301
  class: "label",
10737
11302
  for: _ctx.forProperty
10738
11303
  }, [vue.renderSlot(_ctx.$slots, "default")], 8, _hoisted_3$j)], 512)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "tooltip"), _cache[3] || (_cache[3] = vue.createTextVNode()), _ctx.hasDescriptionSlot || _ctx.hasErrorMessageSlot ? (vue.openBlock(), vue.createElementBlock("label", {
@@ -10757,11 +11322,11 @@ function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {
10757
11322
  name: "error"
10758
11323
  }), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "error-message")])) : vue.createCommentVNode("", true)], 8, _hoisted_6$b));
10759
11324
  }
10760
- const FLabel = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["render", _sfc_render$p]]);
11325
+ const FLabel = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["render", _sfc_render$p]]);
10761
11326
  function resolveWidthClass$1(words, inline) {
10762
11327
  return inline ? void 0 : words.split(" ").map((word) => `i-width-${word}`).join(" ");
10763
11328
  }
10764
- const _sfc_main$F = vue.defineComponent({
11329
+ const _sfc_main$H = vue.defineComponent({
10765
11330
  name: "FSelectField",
10766
11331
  components: {
10767
11332
  FIcon,
@@ -10892,7 +11457,7 @@ const _sfc_main$F = vue.defineComponent({
10892
11457
  }
10893
11458
  }
10894
11459
  });
10895
- const _hoisted_1$u = ["id"];
11460
+ const _hoisted_1$w = ["id"];
10896
11461
  function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {
10897
11462
  const _component_f_label = vue.resolveComponent("f-label");
10898
11463
  const _component_f_icon = vue.resolveComponent("f-icon");
@@ -10930,7 +11495,7 @@ function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {
10930
11495
  id: _ctx.id,
10931
11496
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.vModel = $event),
10932
11497
  class: "select-field__select"
10933
- }, _ctx.attrs), [vue.renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$u), [[vue.vModelSelect, _ctx.vModel]]), _cache[5] || (_cache[5] = vue.createTextVNode()), _ctx.hasError && _ctx.textFieldTableMode ? (vue.openBlock(), vue.createBlock(_component_f_icon, {
11498
+ }, _ctx.attrs), [vue.renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$w), [[vue.vModelSelect, _ctx.vModel]]), _cache[5] || (_cache[5] = vue.createTextVNode()), _ctx.hasError && _ctx.textFieldTableMode ? (vue.openBlock(), vue.createBlock(_component_f_icon, {
10934
11499
  key: 0,
10935
11500
  ref: "icon",
10936
11501
  class: "text-field__icon input-icon select-field__error-popup-icon",
@@ -10940,7 +11505,7 @@ function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {
10940
11505
  name: "arrow-down"
10941
11506
  })], 2)], 34);
10942
11507
  }
10943
- const FSelectField = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["render", _sfc_render$o]]);
11508
+ const FSelectField = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["render", _sfc_render$o]]);
10944
11509
  function resolveWidthClass(words, inline) {
10945
11510
  return inline ? void 0 : words.split(" ").map((word) => `i-width-${word}`).join(" ");
10946
11511
  }
@@ -10984,14 +11549,14 @@ function useTextFieldSetup(props) {
10984
11549
  closeDropdown
10985
11550
  };
10986
11551
  }
10987
- const _sfc_main$E = vue.defineComponent({
11552
+ const _sfc_main$G = vue.defineComponent({
10988
11553
  name: "FTextField",
10989
11554
  components: {
10990
11555
  FLabel,
10991
11556
  FIcon,
10992
11557
  IPopupError,
10993
- IComboboxDropdown: _sfc_main$P,
10994
- IComboboxToggleButton: _sfc_main$O
11558
+ IComboboxDropdown: _sfc_main$R,
11559
+ IComboboxToggleButton: _sfc_main$Q
10995
11560
  },
10996
11561
  inheritAttrs: false,
10997
11562
  props: {
@@ -11015,11 +11580,12 @@ const _sfc_main$E = vue.defineComponent({
11015
11580
  },
11016
11581
  /**
11017
11582
  * The value for the input.
11018
- * If the prop is not set undefined will be used.
11583
+ * If the prop is not used or set to undefined
11584
+ * or null then the default value will be used.
11019
11585
  * @model
11020
11586
  */
11021
11587
  modelValue: {
11022
- type: [String, Number],
11588
+ type: [String, Number, null],
11023
11589
  required: false,
11024
11590
  default: ""
11025
11591
  },
@@ -11322,10 +11888,10 @@ const _sfc_main$E = vue.defineComponent({
11322
11888
  }
11323
11889
  }
11324
11890
  });
11325
- const _hoisted_1$t = {
11891
+ const _hoisted_1$v = {
11326
11892
  key: 0
11327
11893
  };
11328
- const _hoisted_2$m = {
11894
+ const _hoisted_2$n = {
11329
11895
  key: 0,
11330
11896
  class: "sr-only"
11331
11897
  };
@@ -11359,7 +11925,7 @@ function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {
11359
11925
  for: _ctx.id,
11360
11926
  class: vue.normalizeClass(_ctx.labelClass)
11361
11927
  }, vue.createSlots({
11362
- default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default", {}, () => [_ctx.defaultText !== "" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$t, vue.toDisplayString(_ctx.defaultText), 1)) : vue.createCommentVNode("", true)])]),
11928
+ default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default", {}, () => [_ctx.defaultText !== "" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$v, vue.toDisplayString(_ctx.defaultText), 1)) : vue.createCommentVNode("", true)])]),
11363
11929
  description: vue.withCtx(({
11364
11930
  descriptionClass,
11365
11931
  formatDescriptionClass
@@ -11369,7 +11935,7 @@ function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {
11369
11935
  }, () => [_ctx.descriptionText ? (vue.openBlock(), vue.createElementBlock("span", {
11370
11936
  key: 0,
11371
11937
  class: vue.normalizeClass(descriptionClass)
11372
- }, [_ctx.descriptionScreenReaderText ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$m, vue.toDisplayString(_ctx.descriptionScreenReaderText), 1)) : vue.createCommentVNode("", true), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createElementVNode("span", null, vue.toDisplayString(_ctx.descriptionText), 1)], 2)) : vue.createCommentVNode("", true), _cache[9] || (_cache[9] = vue.createTextVNode()), _ctx.discreteDescriptionText ? (vue.openBlock(), vue.createElementBlock("span", {
11938
+ }, [_ctx.descriptionScreenReaderText ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$n, vue.toDisplayString(_ctx.descriptionScreenReaderText), 1)) : vue.createCommentVNode("", true), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createElementVNode("span", null, vue.toDisplayString(_ctx.descriptionText), 1)], 2)) : vue.createCommentVNode("", true), _cache[9] || (_cache[9] = vue.createTextVNode()), _ctx.discreteDescriptionText ? (vue.openBlock(), vue.createElementBlock("span", {
11373
11939
  key: 1,
11374
11940
  class: vue.normalizeClass(formatDescriptionClass)
11375
11941
  }, [_ctx.discreteDescriptionScreenReaderText ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$i, vue.toDisplayString(_ctx.discreteDescriptionScreenReaderText), 1)) : vue.createCommentVNode("", true), _cache[8] || (_cache[8] = vue.createTextVNode()), vue.createElementVNode("span", null, vue.toDisplayString(_ctx.discreteDescriptionText), 1)], 2)) : vue.createCommentVNode("", true)])]),
@@ -11428,8 +11994,8 @@ function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {
11428
11994
  onClose: _ctx.onDropdownClose
11429
11995
  }, null, 8, ["id", "is-open", "options", "active-option", "active-option-id", "input-node", "onSelect", "onClose"])) : vue.createCommentVNode("", true)], 2);
11430
11996
  }
11431
- const FTextField = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["render", _sfc_render$n]]);
11432
- const _sfc_main$D = vue.defineComponent({
11997
+ const FTextField = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["render", _sfc_render$n]]);
11998
+ const _sfc_main$F = vue.defineComponent({
11433
11999
  name: "FEmailTextField",
11434
12000
  components: {
11435
12001
  FTextField
@@ -11453,7 +12019,7 @@ const _sfc_main$D = vue.defineComponent({
11453
12019
  * @model
11454
12020
  */
11455
12021
  modelValue: {
11456
- type: String,
12022
+ type: [String, null],
11457
12023
  required: false,
11458
12024
  default: void 0
11459
12025
  },
@@ -11545,7 +12111,7 @@ const _sfc_main$D = vue.defineComponent({
11545
12111
  }
11546
12112
  }
11547
12113
  });
11548
- const _hoisted_1$s = {
12114
+ const _hoisted_1$u = {
11549
12115
  key: 0
11550
12116
  };
11551
12117
  function _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {
@@ -11562,7 +12128,7 @@ function _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {
11562
12128
  onValidity: _ctx.onValidity,
11563
12129
  onPendingValidity: _ctx.onPendingValidity
11564
12130
  }), {
11565
- "error-message": vue.withCtx(() => [_ctx.showPasteErrorMessage ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$s, vue.toDisplayString(_ctx.pasteErrorText), 1)) : vue.createCommentVNode("", true)]),
12131
+ "error-message": vue.withCtx(() => [_ctx.showPasteErrorMessage ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$u, vue.toDisplayString(_ctx.pasteErrorText), 1)) : vue.createCommentVNode("", true)]),
11566
12132
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.defaultText), 1)]), _cache[2] || (_cache[2] = vue.createTextVNode())]),
11567
12133
  _: 3
11568
12134
  }, 16, ["id", "maxlength", "model-value", "onChange", "onBlur", "onUpdate:modelValue", "onValidity", "onPendingValidity"]), _cache[3] || (_cache[3] = vue.createTextVNode()), _ctx.extendedValidation ? (vue.openBlock(), vue.createBlock(_component_f_text_field, {
@@ -11578,8 +12144,8 @@ function _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {
11578
12144
  _: 3
11579
12145
  }, 8, ["modelValue", "maxlength", "onPaste"])) : vue.createCommentVNode("", true)]);
11580
12146
  }
11581
- const FEmailTextField = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["render", _sfc_render$m]]);
11582
- const _sfc_main$C = vue.defineComponent({
12147
+ const FEmailTextField = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["render", _sfc_render$m]]);
12148
+ const _sfc_main$E = vue.defineComponent({
11583
12149
  name: "FPhoneTextField",
11584
12150
  components: {
11585
12151
  FTextField
@@ -11599,11 +12165,12 @@ const _sfc_main$C = vue.defineComponent({
11599
12165
  },
11600
12166
  /**
11601
12167
  * The value for the input.
11602
- * If the prop is not set undefined will be used.
12168
+ * If the prop is not used or set to undefined
12169
+ * or null then the default value will be used.
11603
12170
  * @model
11604
12171
  */
11605
12172
  modelValue: {
11606
- type: String,
12173
+ type: [String, null],
11607
12174
  required: false,
11608
12175
  default: void 0
11609
12176
  },
@@ -11706,8 +12273,8 @@ function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {
11706
12273
  _: 3
11707
12274
  }, 8, ["modelValue", "maxlength"])) : vue.createCommentVNode("", true)]);
11708
12275
  }
11709
- const FPhoneTextField = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$l]]);
11710
- const _sfc_main$B = vue.defineComponent({
12276
+ const FPhoneTextField = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["render", _sfc_render$l]]);
12277
+ const _sfc_main$D = vue.defineComponent({
11711
12278
  name: "FCurrencyTextField",
11712
12279
  extends: FTextField,
11713
12280
  mixins: [TranslationMixin],
@@ -11742,7 +12309,7 @@ const _sfc_main$B = vue.defineComponent({
11742
12309
  logic.ValidationService.validateElement(inputElement);
11743
12310
  }
11744
12311
  });
11745
- const _sfc_main$A = vue.defineComponent({
12312
+ const _sfc_main$C = vue.defineComponent({
11746
12313
  name: "FSearchTextField",
11747
12314
  components: {
11748
12315
  FTextField,
@@ -11755,7 +12322,7 @@ const _sfc_main$A = vue.defineComponent({
11755
12322
  default: () => logic.ElementIdService.generateElementId()
11756
12323
  },
11757
12324
  modelValue: {
11758
- type: String,
12325
+ type: [String, null],
11759
12326
  required: false,
11760
12327
  default: ""
11761
12328
  },
@@ -11777,7 +12344,8 @@ const _sfc_main$A = vue.defineComponent({
11777
12344
  },
11778
12345
  computed: {
11779
12346
  canClear() {
11780
- return this.modelValue !== "";
12347
+ const isEmpty = this.modelValue === void 0 || this.modelValue === null || this.modelValue === "";
12348
+ return !isEmpty;
11781
12349
  }
11782
12350
  },
11783
12351
  methods: {
@@ -11802,7 +12370,7 @@ const _sfc_main$A = vue.defineComponent({
11802
12370
  }
11803
12371
  }
11804
12372
  });
11805
- const _hoisted_1$r = {
12373
+ const _hoisted_1$t = {
11806
12374
  class: "sr-only"
11807
12375
  };
11808
12376
  function _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {
@@ -11851,12 +12419,12 @@ function _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {
11851
12419
  }, [vue.createVNode(_component_f_icon, {
11852
12420
  name: "cross",
11853
12421
  class: "clear-button__icon"
11854
- }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_1$r, vue.toDisplayString(_ctx.clearableScreenReaderText), 1)])]),
12422
+ }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_1$t, vue.toDisplayString(_ctx.clearableScreenReaderText), 1)])]),
11855
12423
  key: "1"
11856
12424
  } : void 0]), 1040, ["id", "maxlength", "model-value", "onChange", "onInput", "onBlur", "onUpdate"])]);
11857
12425
  }
11858
- const FSearchTextField = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["render", _sfc_render$k]]);
11859
- const _sfc_main$z = vue.defineComponent({
12426
+ const FSearchTextField = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$k]]);
12427
+ const _sfc_main$B = vue.defineComponent({
11860
12428
  name: "FBankAccountNumberTextField",
11861
12429
  extends: FTextField,
11862
12430
  mixins: [TranslationMixin],
@@ -11885,7 +12453,7 @@ const _sfc_main$z = vue.defineComponent({
11885
12453
  logic.ValidationService.validateElement(inputElement);
11886
12454
  }
11887
12455
  });
11888
- const _sfc_main$y = vue.defineComponent({
12456
+ const _sfc_main$A = vue.defineComponent({
11889
12457
  name: "FBankgiroTextField",
11890
12458
  extends: FTextField,
11891
12459
  mixins: [TranslationMixin],
@@ -11917,7 +12485,7 @@ const _sfc_main$y = vue.defineComponent({
11917
12485
  logic.ValidationService.validateElement(inputElement);
11918
12486
  }
11919
12487
  });
11920
- const _sfc_main$x = vue.defineComponent({
12488
+ const _sfc_main$z = vue.defineComponent({
11921
12489
  name: "FClearingnumberTextField",
11922
12490
  extends: FTextField,
11923
12491
  mixins: [TranslationMixin],
@@ -11949,7 +12517,7 @@ const _sfc_main$x = vue.defineComponent({
11949
12517
  function defaultFormatter$1(modelValue) {
11950
12518
  return logic.formatNumber(modelValue, this.decimals);
11951
12519
  }
11952
- const _sfc_main$w = vue.defineComponent({
12520
+ const _sfc_main$y = vue.defineComponent({
11953
12521
  name: "FNumericTextField",
11954
12522
  extends: FTextField,
11955
12523
  props: {
@@ -11986,7 +12554,7 @@ const _sfc_main$w = vue.defineComponent({
11986
12554
  logic.ValidationService.validateElement(inputElement);
11987
12555
  }
11988
12556
  });
11989
- const _sfc_main$v = vue.defineComponent({
12557
+ const _sfc_main$x = vue.defineComponent({
11990
12558
  name: "FPersonnummerTextField",
11991
12559
  extends: FTextField,
11992
12560
  mixins: [TranslationMixin],
@@ -12026,7 +12594,7 @@ const _sfc_main$v = vue.defineComponent({
12026
12594
  logic.ValidationService.validateElement(inputElement);
12027
12595
  }
12028
12596
  });
12029
- const _sfc_main$u = vue.defineComponent({
12597
+ const _sfc_main$w = vue.defineComponent({
12030
12598
  name: "FPlusgiroTextField",
12031
12599
  extends: FTextField,
12032
12600
  mixins: [TranslationMixin],
@@ -12058,7 +12626,7 @@ const _sfc_main$u = vue.defineComponent({
12058
12626
  logic.ValidationService.validateElement(inputElement);
12059
12627
  }
12060
12628
  });
12061
- const _sfc_main$t = vue.defineComponent({
12629
+ const _sfc_main$v = vue.defineComponent({
12062
12630
  name: "FPostalCodeTextField",
12063
12631
  extends: FTextField,
12064
12632
  mixins: [TranslationMixin],
@@ -12095,7 +12663,7 @@ const _sfc_main$t = vue.defineComponent({
12095
12663
  function defaultFormatter(modelValue) {
12096
12664
  return logic.formatPercent(modelValue, this.decimals);
12097
12665
  }
12098
- const _sfc_main$s = vue.defineComponent({
12666
+ const _sfc_main$u = vue.defineComponent({
12099
12667
  name: "FPercentTextField",
12100
12668
  extends: FTextField,
12101
12669
  mixins: [TranslationMixin],
@@ -12143,7 +12711,7 @@ const _sfc_main$s = vue.defineComponent({
12143
12711
  logic.ValidationService.validateElement(inputElement);
12144
12712
  }
12145
12713
  });
12146
- const _sfc_main$r = vue.defineComponent({
12714
+ const _sfc_main$t = vue.defineComponent({
12147
12715
  name: "FOrganisationsnummerTextField",
12148
12716
  extends: FTextField,
12149
12717
  mixins: [TranslationMixin],
@@ -12251,10 +12819,10 @@ function filter(list, filterAttributes, searchString) {
12251
12819
  const searchTerms = searchString.split(/\s+/).map((word) => word.toLocaleLowerCase());
12252
12820
  return list.filter((item) => includesAllSearchTerms(item, filterAttributes, searchTerms));
12253
12821
  }
12254
- const _hoisted_1$q = {
12822
+ const _hoisted_1$s = {
12255
12823
  class: "sort-filter-dataset"
12256
12824
  };
12257
- const _hoisted_2$l = {
12825
+ const _hoisted_2$m = {
12258
12826
  class: "sort-filter-dataset__search"
12259
12827
  };
12260
12828
  const _hoisted_3$h = {
@@ -12271,7 +12839,7 @@ const _hoisted_6$9 = {
12271
12839
  }
12272
12840
  };
12273
12841
  const _hoisted_7$8 = ["value"];
12274
- const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
12842
+ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
12275
12843
  __name: "FSortFilterDataset",
12276
12844
  props: {
12277
12845
  /**
@@ -12457,7 +13025,7 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
12457
13025
  }
12458
13026
  }
12459
13027
  return (_ctx, _cache) => {
12460
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [vue.createVNode(vue.unref(IFlex), {
13028
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$s, [vue.createVNode(vue.unref(IFlex), {
12461
13029
  collapse: "",
12462
13030
  gap: "3x",
12463
13031
  wrap: ""
@@ -12482,7 +13050,7 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
12482
13050
  shrink: "",
12483
13051
  align: "center"
12484
13052
  }, {
12485
- default: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_2$l, [vue.createVNode(vue.unref(FIcon), {
13053
+ default: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_2$m, [vue.createVNode(vue.unref(FIcon), {
12486
13054
  name: "search",
12487
13055
  class: "sort-filter-dataset__search__magnify-icon"
12488
13056
  }), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.createVNode(vue.unref(FTextField), {
@@ -12540,8 +13108,8 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
12540
13108
  };
12541
13109
  }
12542
13110
  });
12543
- const _hoisted_1$p = ["tabindex"];
12544
- const _hoisted_2$k = {
13111
+ const _hoisted_1$r = ["tabindex"];
13112
+ const _hoisted_2$l = {
12545
13113
  key: 0
12546
13114
  };
12547
13115
  const _hoisted_3$g = {
@@ -12559,7 +13127,7 @@ const _hoisted_7$7 = {
12559
13127
  key: 1
12560
13128
  };
12561
13129
  const _hoisted_8$5 = ["colspan"];
12562
- const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
13130
+ const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
12563
13131
  ...{
12564
13132
  inheritAttrs: false
12565
13133
  },
@@ -12578,7 +13146,8 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
12578
13146
  */
12579
13147
  keyAttribute: {
12580
13148
  type: String,
12581
- required: true
13149
+ required: false,
13150
+ default: void 0
12582
13151
  },
12583
13152
  /**
12584
13153
  * If `true` alternating rows will use a different background color.
@@ -12616,6 +13185,7 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
12616
13185
  registerCallbackOnSort,
12617
13186
  registerCallbackOnMount
12618
13187
  } = FSortFilterDatasetInjected();
13188
+ const internalKey2 = getInternalKey();
12619
13189
  const columns = vue.ref([]);
12620
13190
  const props = __props;
12621
13191
  const hasCaption = vue.computed(() => {
@@ -12631,7 +13201,7 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
12631
13201
  return classes;
12632
13202
  });
12633
13203
  const isEmpty = vue.computed(() => {
12634
- return props.rows.length === 0;
13204
+ return internalRows.value.length === 0;
12635
13205
  });
12636
13206
  const visibleColumns = vue.computed(() => {
12637
13207
  return columns.value.filter((col) => col.visible);
@@ -12642,6 +13212,15 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
12642
13212
  const tabindex = vue.computed(() => {
12643
13213
  return props.scroll !== TableScroll.NONE ? 0 : void 0;
12644
13214
  });
13215
+ const internalRows = vue.computed(() => {
13216
+ const {
13217
+ keyAttribute
13218
+ } = props;
13219
+ if (keyAttribute) {
13220
+ return setInternalKeys(props.rows, keyAttribute);
13221
+ }
13222
+ return setInternalKeys(props.rows);
13223
+ });
12645
13224
  vue.provide("addColumn", (column) => {
12646
13225
  if (column.type === FTableColumnType.ACTION) {
12647
13226
  throw new Error("Cannot use action column in FDataTable component");
@@ -12653,18 +13232,14 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
12653
13232
  });
12654
13233
  vue.provide("textFieldTableMode", true);
12655
13234
  vue.provide("renderColumns", vue.computed(() => {
12656
- return props.rows.length > 0;
13235
+ return internalRows.value.length > 0;
12657
13236
  }));
12658
13237
  vue.onMounted(() => {
12659
13238
  registerCallbackOnSort(callbackOnSort);
12660
13239
  registerCallbackOnMount(callbackSortableColumns);
12661
13240
  });
12662
13241
  function rowKey(item) {
12663
- const key = item[props.keyAttribute];
12664
- if (typeof key === "undefined") {
12665
- throw new Error(`Key attribute [${props.keyAttribute}]' is missing in row`);
12666
- }
12667
- return String(key);
13242
+ return String(item[internalKey2]);
12668
13243
  }
12669
13244
  function columnClasses(column) {
12670
13245
  const classes = ["table__column", `table__column--${column.type}`, column.size];
@@ -12705,7 +13280,7 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
12705
13280
  }, [vue.createElementVNode("table", vue.mergeProps({
12706
13281
  class: ["table", tableClasses.value],
12707
13282
  tabindex: tabindex.value
12708
- }, _ctx.$attrs), [hasCaption.value ? (vue.openBlock(), vue.createElementBlock("caption", _hoisted_2$k, [vue.renderSlot(_ctx.$slots, "caption")])) : vue.createCommentVNode("", true), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.createElementVNode("colgroup", null, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(columns.value, (column) => {
13283
+ }, _ctx.$attrs), [hasCaption.value ? (vue.openBlock(), vue.createElementBlock("caption", _hoisted_2$l, [vue.renderSlot(_ctx.$slots, "caption")])) : vue.createCommentVNode("", true), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.createElementVNode("colgroup", null, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(columns.value, (column) => {
12709
13284
  return vue.openBlock(), vue.createElementBlock("col", {
12710
13285
  key: column.id,
12711
13286
  class: vue.normalizeClass(column.size)
@@ -12729,7 +13304,7 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
12729
13304
  })))])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), isEmpty.value ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_7$7, [vue.createElementVNode("td", {
12730
13305
  class: "table__column table__column--action",
12731
13306
  colspan: columns.value.length
12732
- }, [vue.renderSlot(_ctx.$slots, "empty", {}, () => [vue.createTextVNode(vue.toDisplayString(vue.unref($t2)("fkui.data-table.empty", "Tabellen är tom")), 1)])], 8, _hoisted_8$5)])) : vue.createCommentVNode("", true), _cache[3] || (_cache[3] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.rows, (row) => {
13307
+ }, [vue.renderSlot(_ctx.$slots, "empty", {}, () => [vue.createTextVNode(vue.toDisplayString(vue.unref($t2)("fkui.data-table.empty", "Tabellen är tom")), 1)])], 8, _hoisted_8$5)])) : vue.createCommentVNode("", true), _cache[3] || (_cache[3] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(internalRows.value, (row) => {
12733
13308
  return vue.openBlock(), vue.createElementBlock("tr", {
12734
13309
  key: rowKey(row),
12735
13310
  class: "table__row"
@@ -12738,7 +13313,7 @@ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
12738
13313
  }, {
12739
13314
  row
12740
13315
  }))]);
12741
- }), 128))])], 16, _hoisted_1$p)], 2);
13316
+ }), 128))])], 16, _hoisted_1$r)], 2);
12742
13317
  };
12743
13318
  }
12744
13319
  });
@@ -12817,7 +13392,7 @@ function getDisplayMonth(minDate, maxDate, selectedDate, initialMonth) {
12817
13392
  }
12818
13393
  return month || date.FDate.now().startOfMonth();
12819
13394
  }
12820
- const _sfc_main$o = vue.defineComponent({
13395
+ const _sfc_main$q = vue.defineComponent({
12821
13396
  name: "FDatepickerField",
12822
13397
  components: {
12823
13398
  FCalendar,
@@ -13075,11 +13650,11 @@ const _sfc_main$o = vue.defineComponent({
13075
13650
  }
13076
13651
  }
13077
13652
  });
13078
- const _hoisted_1$o = {
13653
+ const _hoisted_1$q = {
13079
13654
  ref: "component",
13080
13655
  class: "datepicker-field"
13081
13656
  };
13082
- const _hoisted_2$j = ["disabled", "aria-expanded"];
13657
+ const _hoisted_2$k = ["disabled", "aria-expanded"];
13083
13658
  const _hoisted_3$f = {
13084
13659
  class: "sr-only"
13085
13660
  };
@@ -13092,7 +13667,7 @@ function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {
13092
13667
  const _component_f_calendar_day = vue.resolveComponent("f-calendar-day");
13093
13668
  const _component_f_calendar = vue.resolveComponent("f-calendar");
13094
13669
  const _component_i_popup = vue.resolveComponent("i-popup");
13095
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$o, [vue.createElementVNode("div", {
13670
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$q, [vue.createElementVNode("div", {
13096
13671
  ref: "calendarInputs",
13097
13672
  onFocusout: _cache[2] || (_cache[2] = (...args) => _ctx.onFocusoutTextFieldButton && _ctx.onFocusoutTextFieldButton(...args))
13098
13673
  }, [vue.createVNode(_component_f_text_field, vue.mergeProps(_ctx.$attrs, {
@@ -13131,7 +13706,7 @@ function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {
13131
13706
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.onClickCalendarButton())
13132
13707
  }, [vue.createVNode(_component_f_icon, {
13133
13708
  name: "calendar"
13134
- }), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_3$f, vue.toDisplayString(_ctx.calendarButtonText), 1)], 8, _hoisted_2$j)]),
13709
+ }), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_3$f, vue.toDisplayString(_ctx.calendarButtonText), 1)], 8, _hoisted_2$k)]),
13135
13710
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.datepicker-field.label", "Datum")), 1)]), _cache[7] || (_cache[7] = vue.createTextVNode()), _cache[8] || (_cache[8] = vue.createTextVNode()), _cache[9] || (_cache[9] = vue.createTextVNode()), _cache[10] || (_cache[10] = vue.createTextVNode())]),
13136
13711
  _: 2
13137
13712
  }, [_ctx.$slots.tooltip ? {
@@ -13182,11 +13757,11 @@ function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {
13182
13757
  _: 1
13183
13758
  }, 8, ["is-open", "anchor", "inline", "onOpen", "onClose"])], 512);
13184
13759
  }
13185
- const FDatepickerField = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render$j]]);
13760
+ const FDatepickerField = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["render", _sfc_render$j]]);
13186
13761
  function isDialogueTreeEndQuestion(value) {
13187
13762
  return Boolean(value.userData);
13188
13763
  }
13189
- const _sfc_main$n = vue.defineComponent({
13764
+ const _sfc_main$p = vue.defineComponent({
13190
13765
  name: "FDialogueTree",
13191
13766
  components: {
13192
13767
  FIcon
@@ -13264,17 +13839,17 @@ const _sfc_main$n = vue.defineComponent({
13264
13839
  }
13265
13840
  }
13266
13841
  });
13267
- const _hoisted_1$n = {
13842
+ const _hoisted_1$p = {
13268
13843
  class: "dialogue-tree"
13269
13844
  };
13270
- const _hoisted_2$i = {
13845
+ const _hoisted_2$j = {
13271
13846
  key: 0,
13272
13847
  class: "dialogue-tree__list"
13273
13848
  };
13274
13849
  const _hoisted_3$e = ["onClick"];
13275
13850
  function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
13276
13851
  const _component_f_icon = vue.resolveComponent("f-icon");
13277
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$n, [_ctx.options.length > 0 ? (vue.openBlock(), vue.createElementBlock("ul", _hoisted_2$i, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.options, (option, index) => {
13852
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [_ctx.options.length > 0 ? (vue.openBlock(), vue.createElementBlock("ul", _hoisted_2$j, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.options, (option, index) => {
13278
13853
  return vue.openBlock(), vue.createElementBlock("li", {
13279
13854
  key: option.label,
13280
13855
  class: "dialogue-tree__list-item"
@@ -13292,8 +13867,8 @@ function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
13292
13867
  userData: _ctx.userData
13293
13868
  })))]);
13294
13869
  }
13295
- const FDialogueTree = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["render", _sfc_render$i]]);
13296
- const _sfc_main$m = vue.defineComponent({
13870
+ const FDialogueTree = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$i]]);
13871
+ const _sfc_main$o = vue.defineComponent({
13297
13872
  name: "FExpandablePanel",
13298
13873
  components: {
13299
13874
  FIcon,
@@ -13367,8 +13942,8 @@ const _sfc_main$m = vue.defineComponent({
13367
13942
  }
13368
13943
  }
13369
13944
  });
13370
- const _hoisted_1$m = ["aria-expanded", "aria-controls"];
13371
- const _hoisted_2$h = {
13945
+ const _hoisted_1$o = ["aria-expanded", "aria-controls"];
13946
+ const _hoisted_2$i = {
13372
13947
  class: "expandable-panel__icon"
13373
13948
  };
13374
13949
  const _hoisted_3$d = {
@@ -13400,7 +13975,7 @@ function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {
13400
13975
  "aria-controls": _ctx.id
13401
13976
  }, _ctx.$attrs, {
13402
13977
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClickHeadingButton && _ctx.onClickHeadingButton(...args))
13403
- }), [vue.createElementVNode("span", _hoisted_2$h, [vue.createElementVNode("span", _hoisted_3$d, [vue.createVNode(_component_f_icon, {
13978
+ }), [vue.createElementVNode("span", _hoisted_2$i, [vue.createElementVNode("span", _hoisted_3$d, [vue.createVNode(_component_f_icon, {
13404
13979
  name: "dash"
13405
13980
  }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
13406
13981
  name: "dash"
@@ -13413,7 +13988,7 @@ function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {
13413
13988
  })
13414
13989
  }, [vue.createElementVNode("span", _hoisted_5$9, vue.toDisplayString(_ctx.screenReaderNotificationText), 1), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
13415
13990
  name: "bell"
13416
- })], 8, _hoisted_4$b)) : vue.createCommentVNode("", true)], 16, _hoisted_1$m)]),
13991
+ })], 8, _hoisted_4$b)) : vue.createCommentVNode("", true)], 16, _hoisted_1$o)]),
13417
13992
  _: 3
13418
13993
  })), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createVNode(_component_f_expand, null, {
13419
13994
  default: vue.withCtx(() => [vue.withDirectives(vue.createElementVNode("div", {
@@ -13423,8 +13998,8 @@ function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {
13423
13998
  _: 3
13424
13999
  })], 2);
13425
14000
  }
13426
- const FExpandablePanel = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", _sfc_render$h]]);
13427
- const _sfc_main$l = vue.defineComponent({
14001
+ const FExpandablePanel = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render$h]]);
14002
+ const _sfc_main$n = vue.defineComponent({
13428
14003
  name: "FExpandableParagraph",
13429
14004
  components: {
13430
14005
  FIcon,
@@ -13506,8 +14081,8 @@ const _sfc_main$l = vue.defineComponent({
13506
14081
  }
13507
14082
  }
13508
14083
  });
13509
- const _hoisted_1$l = ["aria-expanded", "aria-controls"];
13510
- const _hoisted_2$g = {
14084
+ const _hoisted_1$n = ["aria-expanded", "aria-controls"];
14085
+ const _hoisted_2$h = {
13511
14086
  class: "expandable-paragraph__icon"
13512
14087
  };
13513
14088
  const _hoisted_3$c = {
@@ -13542,11 +14117,11 @@ function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
13542
14117
  "aria-controls": _ctx.id
13543
14118
  }, _ctx.$attrs, {
13544
14119
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClickMinimize && _ctx.onClickMinimize(...args))
13545
- }), [vue.createElementVNode("span", _hoisted_2$g, [vue.createElementVNode("span", _hoisted_3$c, [vue.createVNode(_component_f_icon, {
14120
+ }), [vue.createElementVNode("span", _hoisted_2$h, [vue.createElementVNode("span", _hoisted_3$c, [vue.createVNode(_component_f_icon, {
13546
14121
  name: "dash"
13547
14122
  }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createVNode(_component_f_icon, {
13548
14123
  name: "dash"
13549
- })])]), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "title")], 16, _hoisted_1$l)]),
14124
+ })])]), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "title")], 16, _hoisted_1$n)]),
13550
14125
  _: 3
13551
14126
  }, 8, ["class"])), _cache[3] || (_cache[3] = vue.createTextVNode()), _ctx.hasRelatedSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$a, [vue.renderSlot(_ctx.$slots, "related")])) : vue.createCommentVNode("", true)], 2), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createVNode(_component_f_expand, null, {
13552
14127
  default: vue.withCtx(() => [vue.withDirectives(vue.createElementVNode("div", {
@@ -13556,7 +14131,7 @@ function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
13556
14131
  _: 3
13557
14132
  })], 2);
13558
14133
  }
13559
- const FExpandableParagraph = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$g]]);
14134
+ const FExpandableParagraph = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["render", _sfc_render$g]]);
13560
14135
  const DEFAULT_ICON = "file";
13561
14136
  const iconMap = {
13562
14137
  "image/*": "pic",
@@ -13565,7 +14140,7 @@ const iconMap = {
13565
14140
  "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "doc",
13566
14141
  "application/vnd.openxmlformats-officedocument.wordprocessingml.template": "doc"
13567
14142
  };
13568
- const _sfc_main$k = vue.defineComponent({
14143
+ const _sfc_main$m = vue.defineComponent({
13569
14144
  name: "FFileItem",
13570
14145
  components: {
13571
14146
  FIcon
@@ -13644,10 +14219,10 @@ const _sfc_main$k = vue.defineComponent({
13644
14219
  }
13645
14220
  }
13646
14221
  });
13647
- const _hoisted_1$k = {
14222
+ const _hoisted_1$m = {
13648
14223
  class: "file-item"
13649
14224
  };
13650
- const _hoisted_2$f = {
14225
+ const _hoisted_2$g = {
13651
14226
  class: "file-item__row"
13652
14227
  };
13653
14228
  const _hoisted_3$b = ["id"];
@@ -13666,7 +14241,7 @@ const _hoisted_7$4 = {
13666
14241
  };
13667
14242
  function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
13668
14243
  const _component_f_icon = vue.resolveComponent("f-icon");
13669
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$k, [vue.createElementVNode("div", _hoisted_2$f, [vue.createElementVNode("a", vue.mergeProps({
14244
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [vue.createElementVNode("div", _hoisted_2$g, [vue.createElementVNode("a", vue.mergeProps({
13670
14245
  id: _ctx.id,
13671
14246
  class: "file-item__file-open"
13672
14247
  }, _ctx.$attrs), [vue.createElementVNode("div", _hoisted_4$9, [vue.createVNode(_component_f_icon, {
@@ -13677,8 +14252,8 @@ function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
13677
14252
  class: "file-item__separator"
13678
14253
  }, null, -1))]);
13679
14254
  }
13680
- const FFileItem = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["render", _sfc_render$f]]);
13681
- const _sfc_main$j = vue.defineComponent({
14255
+ const FFileItem = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", _sfc_render$f]]);
14256
+ const _sfc_main$l = vue.defineComponent({
13682
14257
  name: "FFileSelector",
13683
14258
  components: {
13684
14259
  FIcon
@@ -13739,14 +14314,14 @@ const _sfc_main$j = vue.defineComponent({
13739
14314
  }
13740
14315
  }
13741
14316
  });
13742
- const _hoisted_1$j = {
14317
+ const _hoisted_1$l = {
13743
14318
  class: "file-selector"
13744
14319
  };
13745
- const _hoisted_2$e = ["id", "aria-labelledby", "aria-disabled"];
14320
+ const _hoisted_2$f = ["id", "aria-labelledby", "aria-disabled"];
13746
14321
  const _hoisted_3$a = ["id", "for"];
13747
14322
  function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
13748
14323
  const _component_f_icon = vue.resolveComponent("f-icon");
13749
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [vue.createElementVNode("input", vue.mergeProps({
14324
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$l, [vue.createElementVNode("input", vue.mergeProps({
13750
14325
  id: _ctx.id,
13751
14326
  ref: "file-selector",
13752
14327
  type: "file",
@@ -13754,7 +14329,7 @@ function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
13754
14329
  "aria-disabled": _ctx.ariaDisabled ? "true" : void 0
13755
14330
  }, _ctx.attrs, {
13756
14331
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))
13757
- }), null, 16, _hoisted_2$e), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("label", {
14332
+ }), null, 16, _hoisted_2$f), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("label", {
13758
14333
  id: _ctx.labelId,
13759
14334
  role: "button",
13760
14335
  class: vue.normalizeClass([_ctx.labelClass, "button button--tertiary button--medium"]),
@@ -13765,7 +14340,7 @@ function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
13765
14340
  name: "paper-clip"
13766
14341
  }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default")], 10, _hoisted_3$a)]);
13767
14342
  }
13768
- const FFileSelector = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", _sfc_render$e]]);
14343
+ const FFileSelector = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$e]]);
13769
14344
  const keybindings = {
13770
14345
  Up: focusTrAbove,
13771
14346
  Down: focusTrBelow,
@@ -13851,11 +14426,14 @@ function useExpandableTable(expandableAttribute, keyAttribute, describedby, emit
13851
14426
  }
13852
14427
  function expandableRows(row) {
13853
14428
  const expandableRows2 = row[expandableAttribute];
13854
- if (typeof expandableRows2 === "undefined") {
14429
+ if (expandableRows2 === void 0 || expandableRows2 === null) {
13855
14430
  return void 0;
13856
14431
  }
13857
14432
  if (!Array.isArray(expandableRows2)) {
13858
- throw new Error(`Expandable rows must be a ListArray`);
14433
+ throw new Error(`Expandable rows must be an array`);
14434
+ }
14435
+ if (expandableRows2.length === 0) {
14436
+ return void 0;
13859
14437
  }
13860
14438
  return expandableRows2;
13861
14439
  }
@@ -13874,8 +14452,8 @@ function useExpandableTable(expandableAttribute, keyAttribute, describedby, emit
13874
14452
  hasExpandableContent
13875
14453
  };
13876
14454
  }
13877
- const _hoisted_1$i = ["role"];
13878
- const _hoisted_2$d = {
14455
+ const _hoisted_1$k = ["role"];
14456
+ const _hoisted_2$e = {
13879
14457
  key: 0
13880
14458
  };
13881
14459
  const _hoisted_3$9 = {
@@ -13903,7 +14481,7 @@ const _hoisted_8$3 = {
13903
14481
  const _hoisted_9$3 = {
13904
14482
  class: "sr-only"
13905
14483
  };
13906
- const _hoisted_10$2 = ["innerHTML"];
14484
+ const _hoisted_10$1 = ["innerHTML"];
13907
14485
  const _hoisted_11$1 = {
13908
14486
  key: 1,
13909
14487
  class: "table__column__description"
@@ -13939,7 +14517,7 @@ const _hoisted_21 = {
13939
14517
  key: 1
13940
14518
  };
13941
14519
  const _hoisted_22 = ["colspan"];
13942
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14520
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
13943
14521
  ...{
13944
14522
  inheritAttrs: false
13945
14523
  },
@@ -13965,7 +14543,8 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
13965
14543
  */
13966
14544
  keyAttribute: {
13967
14545
  type: String,
13968
- required: true
14546
+ required: false,
14547
+ default: void 0
13969
14548
  },
13970
14549
  /**
13971
14550
  * Attribute of expandable content in rows.
@@ -14016,7 +14595,8 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14016
14595
  }
14017
14596
  },
14018
14597
  /**
14019
- * V-model will bind to value containing selected rows.
14598
+ * Currently selected rows.
14599
+ * Requires `selectable` to be set.
14020
14600
  */
14021
14601
  modelValue: {
14022
14602
  type: Array,
@@ -14058,6 +14638,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14058
14638
  registerCallbackAfterItemAdd,
14059
14639
  registerCallbackBeforeItemDelete
14060
14640
  } = ActivateItemInjected();
14641
+ const internalKey2 = getInternalKey();
14061
14642
  const activeRow = vue.ref(void 0);
14062
14643
  const columns = vue.ref([]);
14063
14644
  const selectedRows = vue.ref([]);
@@ -14065,7 +14646,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14065
14646
  const tbodyKey = vue.ref(0);
14066
14647
  const props = __props;
14067
14648
  const emit = __emit;
14068
- const expandableTable = useExpandableTable(props.expandableAttribute, props.keyAttribute, props.expandableDescribedby, emit, slots);
14649
+ const expandableTable = useExpandableTable(props.expandableAttribute, internalKey2, props.expandableDescribedby, emit, slots);
14069
14650
  const {
14070
14651
  isExpandableTable,
14071
14652
  hasExpandableSlot,
@@ -14077,19 +14658,20 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14077
14658
  expandableRows,
14078
14659
  hasExpandableContent
14079
14660
  } = expandableTable;
14661
+ const tbodyElement = vue.useTemplateRef("tbodyElement");
14080
14662
  const hasCaption = vue.computed(() => {
14081
14663
  return hasSlot2("caption", {}, {
14082
14664
  stripClasses: []
14083
14665
  });
14084
14666
  });
14085
14667
  const hasCheckboxDescription = vue.computed(() => {
14086
- const firstRow = props.rows[0];
14668
+ const firstRow = internalRows.value[0];
14087
14669
  return hasSlot2("checkbox-description", {
14088
14670
  row: firstRow
14089
14671
  });
14090
14672
  });
14091
14673
  const isEmpty = vue.computed(() => {
14092
- return props.rows.length === 0;
14674
+ return internalRows.value.length === 0;
14093
14675
  });
14094
14676
  const visibleColumns = vue.computed(() => {
14095
14677
  return columns.value.filter((col) => col.visible);
@@ -14120,6 +14702,16 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14120
14702
  }
14121
14703
  return columnCount;
14122
14704
  });
14705
+ const internalRows = vue.computed(() => {
14706
+ const {
14707
+ keyAttribute,
14708
+ expandableAttribute
14709
+ } = props;
14710
+ if (isExpandableTable) {
14711
+ return setInternalKeys(props.rows, keyAttribute, expandableAttribute);
14712
+ }
14713
+ return setInternalKeys(props.rows, keyAttribute);
14714
+ });
14123
14715
  vue.provide("addColumn", (column) => {
14124
14716
  columns.value = addColumn(columns.value, column);
14125
14717
  });
@@ -14127,14 +14719,8 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14127
14719
  setVisibilityColumn(columns.value, id, visible);
14128
14720
  });
14129
14721
  vue.provide("textFieldTableMode", true);
14130
- vue.provide("renderColumns", vue.computed(() => props.rows.length > 0));
14131
- vue.watch(() => props.rows, () => {
14132
- if (props.modelValue) {
14133
- selectedRows.value = props.modelValue.filter((row) => {
14134
- return includeItem(row, props.rows, props.keyAttribute);
14135
- });
14136
- }
14137
- }, {
14722
+ vue.provide("renderColumns", vue.computed(() => internalRows.value.length > 0));
14723
+ vue.watch(() => props.rows, () => setSelectedRows(), {
14138
14724
  immediate: true,
14139
14725
  deep: true
14140
14726
  });
@@ -14150,21 +14736,23 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14150
14736
  }, {
14151
14737
  immediate: true
14152
14738
  });
14153
- function updateTr(tbodyElement) {
14154
- const trElements = [].slice.call(tbodyElement.children);
14739
+ vue.watch(() => props.modelValue, () => setSelectedRows(), {
14740
+ immediate: true,
14741
+ deep: true
14742
+ });
14743
+ function updateTr(tbodyElement2) {
14744
+ const trElements = [].slice.call(tbodyElement2.children);
14155
14745
  const trInteractableElements = trElements.filter((tr2) => {
14156
14746
  return tr2.tabIndex === 0;
14157
14747
  });
14158
14748
  tr.value = trInteractableElements;
14159
14749
  }
14160
14750
  vue.onUpdated(() => {
14161
- const tbodyElement = vue.useTemplateRef("tbodyElement");
14162
14751
  if (tbodyElement.value) {
14163
14752
  updateTr(tbodyElement.value);
14164
14753
  }
14165
14754
  });
14166
14755
  vue.onMounted(() => {
14167
- const tbodyElement = vue.useTemplateRef("tbodyElement");
14168
14756
  if (tbodyElement.value) {
14169
14757
  updateTr(tbodyElement.value);
14170
14758
  }
@@ -14184,14 +14772,14 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14184
14772
  if (!props.showActive) {
14185
14773
  return false;
14186
14774
  }
14187
- return itemEquals(row, activeRow.value, props.keyAttribute);
14775
+ return itemEquals(row, activeRow.value, internalKey2);
14188
14776
  }
14189
14777
  function isSelected(row) {
14190
- return includeItem(row, selectedRows.value, props.keyAttribute);
14778
+ return includeItem(row, selectedRows.value, internalKey2);
14191
14779
  }
14192
14780
  function onKeydown$1(event, index) {
14193
14781
  onKeydown({
14194
- rows: props.rows,
14782
+ rows: internalRows.value,
14195
14783
  tr,
14196
14784
  activate
14197
14785
  }, event, index);
@@ -14211,7 +14799,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14211
14799
  if (isExpandableTable.value && hasExpandableContent(row)) {
14212
14800
  toggleExpanded(row);
14213
14801
  }
14214
- if (!itemEquals(row, activeRow.value, props.keyAttribute)) {
14802
+ if (!itemEquals(row, activeRow.value, internalKey2)) {
14215
14803
  emit("change", row);
14216
14804
  setActiveRow(row);
14217
14805
  if (tr2) {
@@ -14229,8 +14817,8 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14229
14817
  }
14230
14818
  function onSelect(row) {
14231
14819
  var _a, _b;
14232
- if (includeItem(row, selectedRows.value, props.keyAttribute)) {
14233
- selectedRows.value = selectedRows.value.filter((i) => !itemEquals(i, row, props.keyAttribute));
14820
+ if (includeItem(row, selectedRows.value, internalKey2)) {
14821
+ selectedRows.value = selectedRows.value.filter((i) => !itemEquals(i, row, internalKey2));
14234
14822
  emit("unselect", row);
14235
14823
  } else {
14236
14824
  selectedRows.value.push(row);
@@ -14239,6 +14827,15 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14239
14827
  updateVModelWithSelectedRows();
14240
14828
  (_b = (_a = vue.getCurrentInstance()) == null ? void 0 : _a.proxy) == null ? void 0 : _b.$forceUpdate();
14241
14829
  }
14830
+ function setSelectedRows() {
14831
+ if (!props.modelValue || !props.modelValue.length) {
14832
+ selectedRows.value = [];
14833
+ return;
14834
+ }
14835
+ selectedRows.value = props.modelValue.filter((row) => {
14836
+ return includeItem(row, internalRows.value, internalKey2);
14837
+ });
14838
+ }
14242
14839
  function updateVModelWithSelectedRows() {
14243
14840
  if (props.modelValue) {
14244
14841
  emit("update:modelValue", selectedRows.value);
@@ -14254,11 +14851,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14254
14851
  return ["table__row", ...active, ...selected, ...striped, ...expandable, ...expanded];
14255
14852
  }
14256
14853
  function rowKey(row) {
14257
- const key = row[props.keyAttribute];
14258
- if (typeof key === "undefined") {
14259
- throw new Error(`Key attribute [${props.keyAttribute}]' is missing in row`);
14260
- }
14261
- return String(key);
14854
+ return String(row[internalKey2]);
14262
14855
  }
14263
14856
  function columnClasses(column) {
14264
14857
  const sortable = column.sortable ? ["table__column--sortable"] : [];
@@ -14291,16 +14884,16 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14291
14884
  activate(item, null);
14292
14885
  }
14293
14886
  function callbackBeforeItemDelete(item) {
14294
- if (props.rows.length === 0) {
14887
+ if (internalRows.value.length === 0) {
14295
14888
  return;
14296
14889
  }
14297
- let targetIndex = props.rows.indexOf(item) - 1;
14298
- if (targetIndex < 0 && props.rows.length > 1) {
14890
+ let targetIndex = internalRows.value.indexOf(item) - 1;
14891
+ if (targetIndex < 0 && internalRows.value.length > 1) {
14299
14892
  targetIndex = 1;
14300
14893
  } else if (targetIndex < 0) {
14301
14894
  targetIndex = 0;
14302
14895
  }
14303
- activate(props.rows[targetIndex], tr.value[targetIndex]);
14896
+ activate(internalRows.value[targetIndex], tr.value[targetIndex]);
14304
14897
  }
14305
14898
  function escapeNewlines(value) {
14306
14899
  return value.replace(/\n/g, "<br/>");
@@ -14308,7 +14901,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14308
14901
  function updateActiveRowFromVModel() {
14309
14902
  if (props.active === void 0) {
14310
14903
  setActiveRow(void 0);
14311
- } else if (!itemEquals(props.active, activeRow.value, props.keyAttribute)) {
14904
+ } else if (!itemEquals(props.active, activeRow.value, internalKey2)) {
14312
14905
  setActiveRow(props.active);
14313
14906
  }
14314
14907
  }
@@ -14322,7 +14915,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14322
14915
  }, [vue.createCommentVNode("", true), _cache[18] || (_cache[18] = vue.createTextVNode()), vue.createElementVNode("table", vue.mergeProps({
14323
14916
  class: ["table", tableClasses.value],
14324
14917
  role: tableRole.value
14325
- }, _ctx.$attrs), [hasCaption.value ? (vue.openBlock(), vue.createElementBlock("caption", _hoisted_2$d, [vue.renderSlot(_ctx.$slots, "caption")])) : vue.createCommentVNode("", true), _cache[15] || (_cache[15] = vue.createTextVNode()), vue.createElementVNode("colgroup", null, [vue.unref(isExpandableTable) ? (vue.openBlock(), vue.createElementBlock("col", _hoisted_3$9)) : vue.createCommentVNode("", true), _cache[0] || (_cache[0] = vue.createTextVNode()), __props.selectable ? (vue.openBlock(), vue.createElementBlock("col", _hoisted_4$8)) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(columns.value, (column) => {
14918
+ }, _ctx.$attrs), [hasCaption.value ? (vue.openBlock(), vue.createElementBlock("caption", _hoisted_2$e, [vue.renderSlot(_ctx.$slots, "caption")])) : vue.createCommentVNode("", true), _cache[15] || (_cache[15] = vue.createTextVNode()), vue.createElementVNode("colgroup", null, [vue.unref(isExpandableTable) ? (vue.openBlock(), vue.createElementBlock("col", _hoisted_3$9)) : vue.createCommentVNode("", true), _cache[0] || (_cache[0] = vue.createTextVNode()), __props.selectable ? (vue.openBlock(), vue.createElementBlock("col", _hoisted_4$8)) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(columns.value, (column) => {
14326
14919
  return vue.openBlock(), vue.createElementBlock("col", {
14327
14920
  key: column.id,
14328
14921
  class: vue.normalizeClass(column.size)
@@ -14336,15 +14929,16 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14336
14929
  click: () => onClickColumnHeader(column)
14337
14930
  } : {}, true)), [vue.createElementVNode("span", {
14338
14931
  innerHTML: escapeNewlines(column.title)
14339
- }, null, 8, _hoisted_10$2), _cache[2] || (_cache[2] = vue.createTextVNode()), column.sortable ? (vue.openBlock(), vue.createBlock(vue.unref(FIcon), {
14932
+ }, null, 8, _hoisted_10$1), _cache[2] || (_cache[2] = vue.createTextVNode()), column.sortable ? (vue.openBlock(), vue.createBlock(vue.unref(FIcon), {
14340
14933
  key: 0,
14341
14934
  class: vue.normalizeClass(iconClasses2(column)),
14342
14935
  name: iconName(column)
14343
14936
  }, null, 8, ["class", "name"])) : vue.createCommentVNode("", true), _cache[3] || (_cache[3] = vue.createTextVNode()), column.description ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_11$1, vue.toDisplayString(column.description), 1)) : vue.createCommentVNode("", true)], 16);
14344
14937
  }), 128))])]), _cache[17] || (_cache[17] = vue.createTextVNode()), (vue.openBlock(), vue.createElementBlock("tbody", {
14345
- ref: "tbodyElement",
14938
+ ref_key: "tbodyElement",
14939
+ ref: tbodyElement,
14346
14940
  key: tbodyKey.value
14347
- }, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.rows, (row, index) => {
14941
+ }, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(internalRows.value, (row, index) => {
14348
14942
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, {
14349
14943
  key: rowKey(row)
14350
14944
  }, [vue.createElementVNode("tr", {
@@ -14406,11 +15000,11 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
14406
15000
  colspan: nbOfColumns.value
14407
15001
  }, [vue.renderSlot(_ctx.$slots, "empty", {}, () => [vue.createTextVNode(vue.toDisplayString(vue.unref($t2)("fkui.interactive-table.empty", "Tabellen är tom")), 1)])], 8, _hoisted_22), _cache[12] || (_cache[12] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.guardReactiveProps({
14408
15002
  row: {}
14409
- })))])) : vue.createCommentVNode("", true)]))], 16, _hoisted_1$i)], 2);
15003
+ })))])) : vue.createCommentVNode("", true)]))], 16, _hoisted_1$k)], 2);
14410
15004
  };
14411
15005
  }
14412
15006
  });
14413
- const _sfc_main$h = vue.defineComponent({
15007
+ const _sfc_main$j = vue.defineComponent({
14414
15008
  name: "FLayoutApplicationTemplate",
14415
15009
  computed: {
14416
15010
  showHeader() {
@@ -14435,10 +15029,10 @@ const _sfc_main$h = vue.defineComponent({
14435
15029
  }
14436
15030
  }
14437
15031
  });
14438
- const _hoisted_1$h = {
15032
+ const _hoisted_1$j = {
14439
15033
  class: "layout-application-template"
14440
15034
  };
14441
- const _hoisted_2$c = {
15035
+ const _hoisted_2$d = {
14442
15036
  key: 0,
14443
15037
  ref: "header",
14444
15038
  class: "layout-application-template__header"
@@ -14455,11 +15049,11 @@ const _hoisted_5$5 = {
14455
15049
  class: "layout-application-template__footer"
14456
15050
  };
14457
15051
  function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
14458
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [_ctx.showHeader || _ctx.showTopNavigation ? (vue.openBlock(), vue.createElementBlock("header", _hoisted_2$c, [_ctx.showHeader ? vue.renderSlot(_ctx.$slots, "header", {
15052
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [_ctx.showHeader || _ctx.showTopNavigation ? (vue.openBlock(), vue.createElementBlock("header", _hoisted_2$d, [_ctx.showHeader ? vue.renderSlot(_ctx.$slots, "header", {
14459
15053
  key: 0
14460
15054
  }) : vue.createCommentVNode("", true), _cache[0] || (_cache[0] = vue.createTextVNode()), _ctx.showTopNavigation ? (vue.openBlock(), vue.createElementBlock("nav", _hoisted_3$8, [vue.renderSlot(_ctx.$slots, "top-navigation")])) : vue.createCommentVNode("", true)], 512)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("main", _hoisted_4$7, [vue.renderSlot(_ctx.$slots, "default"), _cache[1] || (_cache[1] = vue.createTextVNode()), _ctx.showFooter ? (vue.openBlock(), vue.createElementBlock("footer", _hoisted_5$5, [vue.renderSlot(_ctx.$slots, "footer")])) : vue.createCommentVNode("", true)], 512)]);
14461
15055
  }
14462
- const FLayoutApplicationTemplate = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["render", _sfc_render$d]]);
15056
+ const FLayoutApplicationTemplate = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", _sfc_render$d]]);
14463
15057
  function getGridClasses(target) {
14464
15058
  if (target === null) {
14465
15059
  return {};
@@ -14560,7 +15154,7 @@ function useLayoutPanel(options) {
14560
15154
  rightPrimaryClasses
14561
15155
  };
14562
15156
  }
14563
- const _sfc_main$g = vue.defineComponent({
15157
+ const _sfc_main$i = vue.defineComponent({
14564
15158
  name: "FLayoutLeftPanel",
14565
15159
  components: {
14566
15160
  FIcon
@@ -14645,10 +15239,10 @@ const _sfc_main$g = vue.defineComponent({
14645
15239
  }
14646
15240
  }
14647
15241
  });
14648
- const _hoisted_1$g = {
15242
+ const _hoisted_1$i = {
14649
15243
  class: "layout-navigation"
14650
15244
  };
14651
- const _hoisted_2$b = ["aria-expanded"];
15245
+ const _hoisted_2$c = ["aria-expanded"];
14652
15246
  const _hoisted_3$7 = {
14653
15247
  class: "layout-navigation__navigation__inner"
14654
15248
  };
@@ -14658,7 +15252,7 @@ const _hoisted_4$6 = {
14658
15252
  };
14659
15253
  function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
14660
15254
  const _component_f_icon = vue.resolveComponent("f-icon");
14661
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$g, [vue.createElementVNode("nav", {
15255
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [vue.createElementVNode("nav", {
14662
15256
  id: "layout-navigation__navigation",
14663
15257
  class: "layout-navigation__navigation",
14664
15258
  style: vue.normalizeStyle(_ctx.navigationStyle),
@@ -14701,13 +15295,13 @@ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
14701
15295
  class: "layout-navigation__navigation__border__dot"
14702
15296
  }, null, -1), vue.createTextVNode(), vue.createElementVNode("div", {
14703
15297
  class: "layout-navigation__navigation__border__dot"
14704
- }, null, -1)]), 32)) : vue.createCommentVNode("", true)], 12, _hoisted_2$b), _cache[14] || (_cache[14] = vue.createTextVNode()), vue.createElementVNode("div", {
15298
+ }, null, -1)]), 32)) : vue.createCommentVNode("", true)], 12, _hoisted_2$c), _cache[14] || (_cache[14] = vue.createTextVNode()), vue.createElementVNode("div", {
14705
15299
  id: "layout-navigation__primary",
14706
15300
  class: vue.normalizeClass(["layout-navigation__primary", _ctx.leftPrimaryClasses]),
14707
15301
  style: vue.normalizeStyle(_ctx.primaryStyle)
14708
15302
  }, [vue.renderSlot(_ctx.$slots, "default")], 6)]);
14709
15303
  }
14710
- const FLayoutLeftPanel = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["render", _sfc_render$c]]);
15304
+ const FLayoutLeftPanel = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["render", _sfc_render$c]]);
14711
15305
  class FRightPanelServiceImpl {
14712
15306
  constructor() {
14713
15307
  _defineProperty(this, "focusedElementBeforeOpenining", null);
@@ -14737,7 +15331,7 @@ class FRightPanelServiceImpl {
14737
15331
  }
14738
15332
  }
14739
15333
  const FLayoutRightPanelService = new FRightPanelServiceImpl();
14740
- const _sfc_main$f = vue.defineComponent({
15334
+ const _sfc_main$h = vue.defineComponent({
14741
15335
  name: "FLayoutRightPanel",
14742
15336
  components: {
14743
15337
  FIcon
@@ -14854,15 +15448,15 @@ const _sfc_main$f = vue.defineComponent({
14854
15448
  }
14855
15449
  }
14856
15450
  });
14857
- const _hoisted_1$f = {
15451
+ const _hoisted_1$h = {
14858
15452
  class: "layout-secondary"
14859
15453
  };
14860
- const _hoisted_2$a = {
15454
+ const _hoisted_2$b = {
14861
15455
  class: "layout-secondary__secondary__inner"
14862
15456
  };
14863
15457
  function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
14864
15458
  const _component_f_icon = vue.resolveComponent("f-icon");
14865
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [vue.createElementVNode("div", {
15459
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [vue.createElementVNode("div", {
14866
15460
  id: "layout-secondary__primary",
14867
15461
  class: vue.normalizeClass(["layout-secondary__primary", _ctx.rightPrimaryClasses]),
14868
15462
  style: vue.normalizeStyle(_ctx.primaryStyle)
@@ -14879,7 +15473,7 @@ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
14879
15473
  class: "layout-secondary__secondary__border__dot"
14880
15474
  }, null, -1), vue.createTextVNode(), vue.createElementVNode("div", {
14881
15475
  class: "layout-secondary__secondary__border__dot"
14882
- }, null, -1)]), 32), _cache[9] || (_cache[9] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_2$a, [vue.createElementVNode("div", {
15476
+ }, null, -1)]), 32), _cache[9] || (_cache[9] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_2$b, [vue.createElementVNode("div", {
14883
15477
  ref: "title",
14884
15478
  class: "layout-secondary__secondary__inner__title",
14885
15479
  style: vue.normalizeStyle(_ctx.contentStyle)
@@ -14899,33 +15493,32 @@ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
14899
15493
  name: "close"
14900
15494
  })])], 6)])], 4)) : vue.createCommentVNode("", true)]);
14901
15495
  }
14902
- const FLayoutRightPanel = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["render", _sfc_render$b]]);
14903
- const _hoisted_1$e = {
15496
+ const FLayoutRightPanel = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["render", _sfc_render$b]]);
15497
+ const _hoisted_1$g = {
14904
15498
  key: 0,
14905
15499
  class: "list"
14906
15500
  };
14907
- const _hoisted_2$9 = {
15501
+ const _hoisted_2$a = {
14908
15502
  key: 0,
14909
15503
  class: "list__item"
14910
15504
  };
14911
15505
  const _hoisted_3$6 = {
14912
15506
  class: "list__item__itempane"
14913
15507
  };
14914
- const _hoisted_4$5 = ["tabindex"];
14915
- const _hoisted_5$4 = ["id", "aria-labelledby", "tabindex", "onKeydown"];
14916
- const _hoisted_6$3 = ["onClick"];
14917
- const _hoisted_7$2 = {
15508
+ const _hoisted_4$5 = ["id", "aria-labelledby", "tabindex", "onKeydown"];
15509
+ const _hoisted_5$4 = ["onClick"];
15510
+ const _hoisted_6$3 = {
14918
15511
  class: "list__item__selectpane__input"
14919
15512
  };
14920
- const _hoisted_8$2 = ["id"];
14921
- const _hoisted_9$2 = {
15513
+ const _hoisted_7$2 = ["id"];
15514
+ const _hoisted_8$2 = {
14922
15515
  key: 0,
14923
15516
  class: "list__item"
14924
15517
  };
14925
- const _hoisted_10$1 = {
15518
+ const _hoisted_9$2 = {
14926
15519
  class: "list__item__itempane"
14927
15520
  };
14928
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
15521
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
14929
15522
  __name: "FList",
14930
15523
  props: {
14931
15524
  /**
@@ -14943,7 +15536,8 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14943
15536
  */
14944
15537
  keyAttribute: {
14945
15538
  type: String,
14946
- required: true
15539
+ required: false,
15540
+ default: void 0
14947
15541
  },
14948
15542
  /**
14949
15543
  * If `true` the list will be selectable.
@@ -14996,13 +15590,23 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
14996
15590
  registerCallbackAfterItemAdd,
14997
15591
  registerCallbackBeforeItemDelete
14998
15592
  } = ActivateItemInjected();
15593
+ const internalKey2 = getInternalKey();
14999
15594
  const selectedItems = vue.ref([]);
15000
15595
  const activeItem = vue.ref(void 0);
15001
15596
  const ulElement = vue.ref();
15002
15597
  const props = __props;
15003
15598
  const emit = __emit;
15004
15599
  const isEmpty = vue.computed(() => {
15005
- return props.items.length === 0;
15600
+ return internalItems.value.length === 0;
15601
+ });
15602
+ const internalItems = vue.computed(() => {
15603
+ const {
15604
+ keyAttribute
15605
+ } = props;
15606
+ if (keyAttribute) {
15607
+ return setInternalKeys(props.items, keyAttribute);
15608
+ }
15609
+ return setInternalKeys(props.items);
15006
15610
  });
15007
15611
  vue.watch(() => props.items, () => {
15008
15612
  updateSelectedItemsFromVModel();
@@ -15035,14 +15639,10 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
15035
15639
  return Array.from(element.children);
15036
15640
  }
15037
15641
  function itemKey(item) {
15038
- const key = item[props.keyAttribute];
15039
- if (typeof key === "undefined") {
15040
- throw new Error(`Key attribute [${props.keyAttribute}]' is missing in item`);
15041
- }
15042
- return String(key);
15642
+ return String(item[internalKey2]);
15043
15643
  }
15044
15644
  function isSelected(item) {
15045
- return includeItem(item, selectedItems.value, props.keyAttribute);
15645
+ return includeItem(item, selectedItems.value, internalKey2);
15046
15646
  }
15047
15647
  function itemClasses(item) {
15048
15648
  return {
@@ -15052,8 +15652,8 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
15052
15652
  }
15053
15653
  function onSelect(item) {
15054
15654
  var _a, _b;
15055
- if (includeItem(item, selectedItems.value, props.keyAttribute)) {
15056
- selectedItems.value = selectedItems.value.filter((i) => !itemEquals(i, item, props.keyAttribute));
15655
+ if (includeItem(item, selectedItems.value, internalKey2)) {
15656
+ selectedItems.value = selectedItems.value.filter((i) => !itemEquals(i, item, internalKey2));
15057
15657
  emit("unselect", item);
15058
15658
  } else {
15059
15659
  selectedItems.value.push(item);
@@ -15064,7 +15664,7 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
15064
15664
  }
15065
15665
  function setActiveItem(item) {
15066
15666
  emit("click", item);
15067
- if (!itemEquals(item, activeItem.value, props.keyAttribute)) {
15667
+ if (!itemEquals(item, activeItem.value, internalKey2)) {
15068
15668
  emit("change", item);
15069
15669
  activeItem.value = item;
15070
15670
  emit("update:active", activeItem.value);
@@ -15081,7 +15681,7 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
15081
15681
  function updateSelectedItemsFromVModel() {
15082
15682
  if (Array.isArray(props.modelValue)) {
15083
15683
  selectedItems.value = props.modelValue.filter((item) => {
15084
- return includeItem(item, props.items, props.keyAttribute);
15684
+ return includeItem(item, internalItems.value, internalKey2);
15085
15685
  });
15086
15686
  } else {
15087
15687
  selectedItems.value = [];
@@ -15090,7 +15690,7 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
15090
15690
  function updateActiveItemFromVModel() {
15091
15691
  if (props.active === void 0) {
15092
15692
  activeItem.value = void 0;
15093
- } else if (!itemEquals(props.active, activeItem.value, props.keyAttribute)) {
15693
+ } else if (!itemEquals(props.active, activeItem.value, internalKey2)) {
15094
15694
  activeItem.value = props.active;
15095
15695
  }
15096
15696
  }
@@ -15130,26 +15730,26 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
15130
15730
  setActiveItem(item);
15131
15731
  }
15132
15732
  function callbackBeforeItemDelete(item) {
15133
- if (props.items.length === 0) {
15733
+ if (internalItems.value.length === 0) {
15134
15734
  return;
15135
15735
  }
15136
- let targetIndex = props.items.indexOf(item) - 1;
15137
- if (targetIndex < 0 && props.items.length > 1) {
15736
+ let targetIndex = internalItems.value.indexOf(item) - 1;
15737
+ if (targetIndex < 0 && internalItems.value.length > 1) {
15138
15738
  targetIndex = 1;
15139
15739
  } else if (targetIndex < 0) {
15140
15740
  targetIndex = 0;
15141
15741
  }
15142
- setActiveItem(props.items[targetIndex]);
15742
+ setActiveItem(internalItems.value[targetIndex]);
15143
15743
  const targetElement = getLiElements()[targetIndex];
15144
15744
  if (targetElement) {
15145
15745
  targetElement.focus();
15146
15746
  }
15147
15747
  }
15148
15748
  function isActive(item) {
15149
- return props.checkbox && itemEquals(activeItem.value, item, props.keyAttribute);
15749
+ return props.checkbox && itemEquals(activeItem.value, item, internalKey2);
15150
15750
  }
15151
15751
  return (_ctx, _cache) => {
15152
- return !__props.selectable ? (vue.openBlock(), vue.createElementBlock("ul", _hoisted_1$e, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item) => {
15752
+ return !__props.selectable ? (vue.openBlock(), vue.createElementBlock("ul", _hoisted_1$g, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(internalItems.value, (item) => {
15153
15753
  return vue.openBlock(), vue.createElementBlock("li", {
15154
15754
  key: itemKey(item),
15155
15755
  class: "list__item"
@@ -15162,13 +15762,12 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
15162
15762
  }, {
15163
15763
  item
15164
15764
  }))], 512)]);
15165
- }), 128)), _cache[0] || (_cache[0] = vue.createTextVNode()), isEmpty.value ? (vue.openBlock(), vue.createElementBlock("li", _hoisted_2$9, [vue.createElementVNode("div", _hoisted_3$6, [vue.renderSlot(_ctx.$slots, "empty", {}, () => [vue.createElementVNode("em", null, vue.toDisplayString(vue.unref($t2)("fkui.list.empty", "Listan är tom")), 1)])])])) : vue.createCommentVNode("", true)])) : (vue.openBlock(), vue.createElementBlock("ul", {
15765
+ }), 128)), _cache[0] || (_cache[0] = vue.createTextVNode()), isEmpty.value ? (vue.openBlock(), vue.createElementBlock("li", _hoisted_2$a, [vue.createElementVNode("div", _hoisted_3$6, [vue.renderSlot(_ctx.$slots, "empty", {}, () => [vue.createElementVNode("em", null, vue.toDisplayString(vue.unref($t2)("fkui.list.empty", "Listan är tom")), 1)])])])) : vue.createCommentVNode("", true)])) : (vue.openBlock(), vue.createElementBlock("ul", {
15166
15766
  key: 1,
15167
15767
  ref_key: "ulElement",
15168
15768
  ref: ulElement,
15169
- class: "list list--hover",
15170
- tabindex: __props.checkbox ? 0 : void 0
15171
- }, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index) => {
15769
+ class: "list list--hover"
15770
+ }, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(internalItems.value, (item, index) => {
15172
15771
  return vue.openBlock(), vue.createElementBlock("li", {
15173
15772
  id: getItemId(item),
15174
15773
  key: itemKey(item),
@@ -15182,7 +15781,7 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
15182
15781
  key: 0,
15183
15782
  class: "list__item__selectpane",
15184
15783
  onClick: vue.withModifiers(($event) => onSelect(item), ["self"])
15185
- }, [vue.createElementVNode("div", _hoisted_7$2, [vue.createVNode(vue.unref(FCheckboxField), {
15784
+ }, [vue.createElementVNode("div", _hoisted_6$3, [vue.createVNode(vue.unref(FCheckboxField), {
15186
15785
  value: true,
15187
15786
  "model-value": isSelected(item),
15188
15787
  onClick: vue.withModifiers(($event) => onSelect(item), ["self"])
@@ -15194,9 +15793,9 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
15194
15793
  ref_for: true
15195
15794
  }, {
15196
15795
  item
15197
- }))], 8, _hoisted_8$2)]),
15796
+ }))], 8, _hoisted_7$2)]),
15198
15797
  _: 2
15199
- }, 1032, ["model-value", "onClick"])])], 8, _hoisted_6$3)) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(__props.checkbox ? "div" : "a"), {
15798
+ }, 1032, ["model-value", "onClick"])])], 8, _hoisted_5$4)) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(__props.checkbox ? "div" : "a"), {
15200
15799
  ref_for: true,
15201
15800
  ref: "listItemPanes",
15202
15801
  href: !__props.checkbox ? "javascript:" : void 0,
@@ -15209,12 +15808,12 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
15209
15808
  item
15210
15809
  }))]),
15211
15810
  _: 2
15212
- }, 1032, ["href", "onClick"]))], 42, _hoisted_5$4);
15213
- }), 128)), _cache[2] || (_cache[2] = vue.createTextVNode()), isEmpty.value ? (vue.openBlock(), vue.createElementBlock("li", _hoisted_9$2, [vue.createElementVNode("div", _hoisted_10$1, [vue.renderSlot(_ctx.$slots, "empty", {}, () => [vue.createElementVNode("em", null, vue.toDisplayString(vue.unref($t2)("fkui.list.empty", "Listan är tom")), 1)])])])) : vue.createCommentVNode("", true)], 8, _hoisted_4$5));
15811
+ }, 1032, ["href", "onClick"]))], 42, _hoisted_4$5);
15812
+ }), 128)), _cache[2] || (_cache[2] = vue.createTextVNode()), isEmpty.value ? (vue.openBlock(), vue.createElementBlock("li", _hoisted_8$2, [vue.createElementVNode("div", _hoisted_9$2, [vue.renderSlot(_ctx.$slots, "empty", {}, () => [vue.createElementVNode("em", null, vue.toDisplayString(vue.unref($t2)("fkui.list.empty", "Listan är tom")), 1)])])])) : vue.createCommentVNode("", true)], 512));
15214
15813
  };
15215
15814
  }
15216
15815
  });
15217
- const _sfc_main$d = vue.defineComponent({
15816
+ const _sfc_main$f = vue.defineComponent({
15218
15817
  name: "FLoader",
15219
15818
  mixins: [TranslationMixin],
15220
15819
  inheritAttrs: false,
@@ -15326,10 +15925,10 @@ const _sfc_main$d = vue.defineComponent({
15326
15925
  }
15327
15926
  }
15328
15927
  });
15329
- const _hoisted_1$d = {
15928
+ const _hoisted_1$f = {
15330
15929
  class: "loader__backdrop"
15331
15930
  };
15332
- const _hoisted_2$8 = {
15931
+ const _hoisted_2$9 = {
15333
15932
  role: "alert"
15334
15933
  };
15335
15934
  function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
@@ -15338,7 +15937,7 @@ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
15338
15937
  disabled: _ctx.teleportDisabled
15339
15938
  }, [vue.withDirectives(vue.createElementVNode("div", vue.mergeProps(_ctx.$attrs, {
15340
15939
  class: ["loader", _ctx.classes]
15341
- }), [vue.createElementVNode("div", _hoisted_1$d, [_cache[0] || (_cache[0] = vue.createElementVNode("div", {
15940
+ }), [vue.createElementVNode("div", _hoisted_1$f, [_cache[0] || (_cache[0] = vue.createElementVNode("div", {
15342
15941
  class: "loader__wrapper"
15343
15942
  }, [vue.createElementVNode("div", {
15344
15943
  class: "loader__spinner-1 loader__spinner"
@@ -15376,10 +15975,10 @@ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
15376
15975
  "loader--delay": _ctx.delay
15377
15976
  }]),
15378
15977
  tabindex: "-1"
15379
- }, [vue.createElementVNode("span", _hoisted_2$8, [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.loader.wait.text", _ctx.defaultLoadingText)), 1)])])], 2)])], 16), [[vue.vShow, _ctx.show]])], 8, ["to", "disabled"]);
15978
+ }, [vue.createElementVNode("span", _hoisted_2$9, [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.loader.wait.text", _ctx.defaultLoadingText)), 1)])])], 2)])], 16), [[vue.vShow, _ctx.show]])], 8, ["to", "disabled"]);
15380
15979
  }
15381
- const FLoader = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$a]]);
15382
- const _hoisted_1$c = ["aria-label"];
15980
+ const FLoader = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["render", _sfc_render$a]]);
15981
+ const _hoisted_1$e = ["aria-label"];
15383
15982
  const __default__ = vue.defineComponent({
15384
15983
  computed: {
15385
15984
  ariaLabel() {
@@ -15391,7 +15990,7 @@ const __default__ = vue.defineComponent({
15391
15990
  }
15392
15991
  }
15393
15992
  });
15394
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
15993
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
15395
15994
  ...__default__,
15396
15995
  __name: "FLogo",
15397
15996
  props: {
@@ -15415,7 +16014,7 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
15415
16014
  class: vue.normalizeClass(`logo logo--${props.size}`),
15416
16015
  "aria-label": _ctx.ariaLabel,
15417
16016
  role: "img"
15418
- }, null, 10, _hoisted_1$c);
16017
+ }, null, 10, _hoisted_1$e);
15419
16018
  };
15420
16019
  }
15421
16020
  });
@@ -15445,7 +16044,7 @@ const iconClasses = {
15445
16044
  screenReaderContextDefault: "Informationsmeddelande"
15446
16045
  }
15447
16046
  };
15448
- const _sfc_main$b = vue.defineComponent({
16047
+ const _sfc_main$d = vue.defineComponent({
15449
16048
  name: "FMessageBox",
15450
16049
  components: {
15451
16050
  FIcon,
@@ -15535,7 +16134,7 @@ const _sfc_main$b = vue.defineComponent({
15535
16134
  }
15536
16135
  }
15537
16136
  });
15538
- const _hoisted_1$b = {
16137
+ const _hoisted_1$d = {
15539
16138
  key: 0,
15540
16139
  class: "sr-only"
15541
16140
  };
@@ -15545,7 +16144,7 @@ function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
15545
16144
  const _component_i_flex = vue.resolveComponent("i-flex");
15546
16145
  return vue.openBlock(), vue.createElementBlock("div", {
15547
16146
  class: vue.normalizeClass(["message-box", [_ctx.messageBoxType, _ctx.bannerType]])
15548
- }, [_ctx.provideScreenReaderContext ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$b, vue.toDisplayString(_ctx.screenReaderContext()), 1)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createVNode(_component_i_flex, {
16147
+ }, [_ctx.provideScreenReaderContext ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$d, vue.toDisplayString(_ctx.screenReaderContext()), 1)) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createVNode(_component_i_flex, {
15549
16148
  gap: "2x"
15550
16149
  }, {
15551
16150
  default: vue.withCtx(() => [_ctx.layout === "short" ? (vue.openBlock(), vue.createBlock(_component_i_flex_item, {
@@ -15577,7 +16176,7 @@ function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
15577
16176
  _: 3
15578
16177
  })], 2);
15579
16178
  }
15580
- const FMessageBox = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["render", _sfc_render$9]]);
16179
+ const FMessageBox = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$9]]);
15581
16180
  function findOverflowIndex(totalWidth, elements) {
15582
16181
  let sum = 0;
15583
16182
  const index = elements.findIndex((element) => {
@@ -15627,7 +16226,7 @@ const upKeys = ["Up", "ArrowUp"];
15627
16226
  const downKeys = ["Down", "ArrowDown"];
15628
16227
  const verticalKeys = [...upKeys, ...downKeys];
15629
16228
  const preventKeys = ["Tab", "Left", "Right", "ArrowLeft", "ArrowRight", "Home", "End", " ", "Spacebar", "Enter", ...verticalKeys];
15630
- const _sfc_main$a = vue.defineComponent({
16229
+ const _sfc_main$c = vue.defineComponent({
15631
16230
  name: "FNavigationMenu",
15632
16231
  components: {
15633
16232
  FIcon,
@@ -15960,8 +16559,8 @@ const _sfc_main$a = vue.defineComponent({
15960
16559
  }
15961
16560
  }
15962
16561
  });
15963
- const _hoisted_1$a = ["aria-label"];
15964
- const _hoisted_2$7 = ["data-ref-index", "onClick"];
16562
+ const _hoisted_1$c = ["aria-label"];
16563
+ const _hoisted_2$8 = ["data-ref-index", "onClick"];
15965
16564
  const _hoisted_3$5 = {
15966
16565
  class: "imenu__list__anchor-container"
15967
16566
  };
@@ -16012,7 +16611,7 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
16012
16611
  target: item.target,
16013
16612
  class: "imenu__list__anchor",
16014
16613
  role: "menuitem"
16015
- }, [_ctx.showItemSrText(index) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$3, [vue.createElementVNode("span", null, vue.toDisplayString(_ctx.selectedItemSrText) + " ", 1)])) : vue.createCommentVNode("", true), vue.createTextVNode(" " + vue.toDisplayString(item.label), 1)], 8, _hoisted_4$4)])], 10, _hoisted_2$7);
16614
+ }, [_ctx.showItemSrText(index) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$3, [vue.createElementVNode("span", null, vue.toDisplayString(_ctx.selectedItemSrText) + " ", 1)])) : vue.createCommentVNode("", true), vue.createTextVNode(" " + vue.toDisplayString(item.label), 1)], 8, _hoisted_4$4)])], 10, _hoisted_2$8);
16016
16615
  }), 128)), _cache[6] || (_cache[6] = vue.createTextVNode()), _ctx.hasOverflow ? (vue.openBlock(), vue.createElementBlock("li", _hoisted_6$2, [vue.createElementVNode("div", {
16017
16616
  ref: "popup-item",
16018
16617
  class: vue.normalizeClass(_ctx.popupItemClasses),
@@ -16041,11 +16640,11 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
16041
16640
  "enable-keyboard-navigation": "",
16042
16641
  onSelect: _ctx.onPopupMenuItemSelected,
16043
16642
  onClose: _cache[5] || (_cache[5] = ($event) => _ctx.togglePopup(false))
16044
- }, null, 8, ["modelValue", "focused-item", "items", "is-open", "anchor", "selected-menu-item-screen-reader-text", "aria-label", "onSelect"])], 10, _hoisted_1$a);
16643
+ }, null, 8, ["modelValue", "focused-item", "items", "is-open", "anchor", "selected-menu-item-screen-reader-text", "aria-label", "onSelect"])], 10, _hoisted_1$c);
16045
16644
  }
16046
- const FNavigationMenu = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$8]]);
16645
+ const FNavigationMenu = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", _sfc_render$8]]);
16047
16646
  const EVENTS = ["online", "offline"];
16048
- const _sfc_main$9 = vue.defineComponent({
16647
+ const _sfc_main$b = vue.defineComponent({
16049
16648
  name: "FOffline",
16050
16649
  components: {
16051
16650
  FIcon,
@@ -16093,8 +16692,8 @@ const _sfc_main$9 = vue.defineComponent({
16093
16692
  }
16094
16693
  }
16095
16694
  });
16096
- const _hoisted_1$9 = ["role"];
16097
- const _hoisted_2$6 = {
16695
+ const _hoisted_1$b = ["role"];
16696
+ const _hoisted_2$7 = {
16098
16697
  key: 0,
16099
16698
  class: "offline"
16100
16699
  };
@@ -16113,7 +16712,7 @@ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
16113
16712
  ref: "offline",
16114
16713
  class: "offline__wrapper",
16115
16714
  role: _ctx.role
16116
- }, [!_ctx.isOnline ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$6, [vue.createVNode(_component_i_flex, {
16715
+ }, [!_ctx.isOnline ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$7, [vue.createVNode(_component_i_flex, {
16117
16716
  gap: "2x"
16118
16717
  }, {
16119
16718
  default: vue.withCtx(() => [vue.createVNode(_component_i_flex_item, {
@@ -16139,10 +16738,10 @@ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
16139
16738
  })])) : vue.createCommentVNode("", true), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.withDirectives(vue.createElementVNode("span", {
16140
16739
  class: "sr-only",
16141
16740
  "aria-hidden": _ctx.shouldNotRead ? "true" : void 0
16142
- }, "\n Din internetuppkoppling fungerar igen\n ", 8, _hoisted_5$2), [[vue.vShow, _ctx.isOnline]])], 8, _hoisted_1$9);
16741
+ }, "\n Din internetuppkoppling fungerar igen\n ", 8, _hoisted_5$2), [[vue.vShow, _ctx.isOnline]])], 8, _hoisted_1$b);
16143
16742
  }
16144
- const FOffline = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$7]]);
16145
- const _sfc_main$8 = vue.defineComponent({
16743
+ const FOffline = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["render", _sfc_render$7]]);
16744
+ const _sfc_main$a = vue.defineComponent({
16146
16745
  name: "FOutputField",
16147
16746
  components: {
16148
16747
  FLabel
@@ -16175,13 +16774,13 @@ const _sfc_main$8 = vue.defineComponent({
16175
16774
  }
16176
16775
  }
16177
16776
  });
16178
- const _hoisted_1$8 = {
16777
+ const _hoisted_1$a = {
16179
16778
  class: "output-field"
16180
16779
  };
16181
- const _hoisted_2$5 = ["id", "for"];
16780
+ const _hoisted_2$6 = ["id", "for"];
16182
16781
  function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
16183
16782
  const _component_f_label = vue.resolveComponent("f-label");
16184
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$8, [vue.createVNode(_component_f_label, {
16783
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [vue.createVNode(_component_f_label, {
16185
16784
  for: _ctx.id
16186
16785
  }, vue.createSlots({
16187
16786
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "label")]),
@@ -16194,10 +16793,10 @@ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
16194
16793
  id: _ctx.id,
16195
16794
  for: _ctx.htmlFor,
16196
16795
  class: "output-field__output"
16197
- }, _ctx.$attrs), [vue.renderSlot(_ctx.$slots, "default")], 16, _hoisted_2$5)]);
16796
+ }, _ctx.$attrs), [vue.renderSlot(_ctx.$slots, "default")], 16, _hoisted_2$6)]);
16198
16797
  }
16199
- const FOutputField = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$6]]);
16200
- const _sfc_main$7 = vue.defineComponent({
16798
+ const FOutputField = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$6]]);
16799
+ const _sfc_main$9 = vue.defineComponent({
16201
16800
  name: "FPageHeader",
16202
16801
  components: {
16203
16802
  ISkipLink
@@ -16244,10 +16843,10 @@ const _sfc_main$7 = vue.defineComponent({
16244
16843
  }
16245
16844
  }
16246
16845
  });
16247
- const _hoisted_1$7 = {
16846
+ const _hoisted_1$9 = {
16248
16847
  class: "page-header__root"
16249
16848
  };
16250
- const _hoisted_2$4 = {
16849
+ const _hoisted_2$5 = {
16251
16850
  key: 0
16252
16851
  };
16253
16852
  const _hoisted_3$3 = {
@@ -16266,7 +16865,7 @@ const _hoisted_6$1 = {
16266
16865
  };
16267
16866
  function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
16268
16867
  const _component_i_skip_link = vue.resolveComponent("i-skip-link");
16269
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [_ctx.skipLinkAnchor ? (vue.openBlock(), vue.createElementBlock("nav", _hoisted_2$4, [vue.createVNode(_component_i_skip_link, {
16868
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [_ctx.skipLinkAnchor ? (vue.openBlock(), vue.createElementBlock("nav", _hoisted_2$5, [vue.createVNode(_component_i_skip_link, {
16270
16869
  href: _ctx.skipLinkAnchor
16271
16870
  }, {
16272
16871
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "skip-link-text")]),
@@ -16278,7 +16877,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
16278
16877
  _: 3
16279
16878
  })), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_5$1, [vue.createElementVNode("div", _hoisted_6$1, [vue.renderSlot(_ctx.$slots, "right")])])], 512)]);
16280
16879
  }
16281
- const FPageHeader = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$5]]);
16880
+ const FPageHeader = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$5]]);
16282
16881
  const layoutRegister = {};
16283
16882
  function getLayout(name) {
16284
16883
  var _layoutRegister$name;
@@ -16416,7 +17015,7 @@ registerLayout({
16416
17015
  }
16417
17016
  }
16418
17017
  });
16419
- const styleContent = '.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\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\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\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}\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';
17018
+ 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';
16420
17019
  const stubLayout = defineLayout({
16421
17020
  name: "",
16422
17021
  areas: {}
@@ -16518,40 +17117,128 @@ class PageLayout extends HTMLElement {
16518
17117
  _classPrivateFieldGet2(_elements, this)[slot] = element;
16519
17118
  }
16520
17119
  }
17120
+ setTimeout(() => {
17121
+ this.dispatchEvent(new CustomEvent("update"));
17122
+ }, 0);
16521
17123
  }
16522
17124
  }
16523
- const _hoisted_1$6 = ["slot"];
16524
- const tagName = `ce-page-layout`;
16525
- const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
17125
+ const _hoisted_1$8 = ["slot"];
17126
+ const tagName$1 = `ce-page-layout`;
17127
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
16526
17128
  __name: "FPageLayout",
16527
17129
  props: {
16528
17130
  layout: {}
16529
17131
  },
16530
- setup(__props) {
17132
+ emits: ["update"],
17133
+ setup(__props, {
17134
+ emit: __emit
17135
+ }) {
17136
+ const emit = __emit;
16531
17137
  const slots = vue.useSlots();
16532
17138
  const slotNames = vue.computed(() => {
16533
17139
  return Object.keys(slots);
16534
17140
  });
16535
17141
  vue.onMounted(() => {
16536
- if (!customElements.get(tagName)) {
16537
- customElements.define(tagName, PageLayout);
17142
+ if (!customElements.get(tagName$1)) {
17143
+ customElements.define(tagName$1, PageLayout);
16538
17144
  }
16539
17145
  });
17146
+ function onUpdate() {
17147
+ emit("update");
17148
+ }
16540
17149
  return (_ctx, _cache) => {
16541
- return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(tagName), {
16542
- layout: _ctx.layout
17150
+ return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(tagName$1), {
17151
+ layout: _ctx.layout,
17152
+ onUpdate
16543
17153
  }, {
16544
17154
  default: vue.withCtx(() => [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(slotNames.value, (slot) => {
16545
17155
  return vue.openBlock(), vue.createElementBlock("div", {
16546
17156
  key: slot,
16547
17157
  slot
16548
- }, [vue.renderSlot(_ctx.$slots, slot)], 8, _hoisted_1$6);
17158
+ }, [vue.renderSlot(_ctx.$slots, slot)], 8, _hoisted_1$8);
16549
17159
  }), 128))]),
16550
17160
  _: 3
16551
- }, 8, ["layout"]);
17161
+ }, 40, ["layout"]);
16552
17162
  };
16553
17163
  }
16554
17164
  });
17165
+ function tryOnScopeDispose(fn2) {
17166
+ if (vue.getCurrentScope()) {
17167
+ vue.onScopeDispose(fn2);
17168
+ return true;
17169
+ }
17170
+ return false;
17171
+ }
17172
+ const isClient = typeof window !== "undefined" && typeof document !== "undefined";
17173
+ typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope;
17174
+ const toString = Object.prototype.toString;
17175
+ const isObject = (val) => toString.call(val) === "[object Object]";
17176
+ function toArray(value) {
17177
+ return Array.isArray(value) ? value : [value];
17178
+ }
17179
+ function watchImmediate(source, cb, options) {
17180
+ return vue.watch(
17181
+ source,
17182
+ cb,
17183
+ {
17184
+ ...options,
17185
+ immediate: true
17186
+ }
17187
+ );
17188
+ }
17189
+ const defaultWindow = isClient ? window : void 0;
17190
+ function unrefElement(elRef) {
17191
+ var _a;
17192
+ const plain = vue.toValue(elRef);
17193
+ return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
17194
+ }
17195
+ function useEventListener(...args) {
17196
+ const cleanups = [];
17197
+ const cleanup = () => {
17198
+ cleanups.forEach((fn2) => fn2());
17199
+ cleanups.length = 0;
17200
+ };
17201
+ const register = (el, event, listener, options) => {
17202
+ el.addEventListener(event, listener, options);
17203
+ return () => el.removeEventListener(event, listener, options);
17204
+ };
17205
+ const firstParamTargets = vue.computed(() => {
17206
+ const test = toArray(vue.toValue(args[0])).filter((e) => e != null);
17207
+ return test.every((e) => typeof e !== "string") ? test : void 0;
17208
+ });
17209
+ const stopWatch = watchImmediate(
17210
+ () => {
17211
+ var _a, _b;
17212
+ return [
17213
+ (_b = (_a = firstParamTargets.value) == null ? void 0 : _a.map((e) => unrefElement(e))) != null ? _b : [defaultWindow].filter((e) => e != null),
17214
+ toArray(vue.toValue(firstParamTargets.value ? args[1] : args[0])),
17215
+ toArray(vue.unref(firstParamTargets.value ? args[2] : args[1])),
17216
+ // @ts-expect-error - TypeScript gets the correct types, but somehow still complains
17217
+ vue.toValue(firstParamTargets.value ? args[3] : args[2])
17218
+ ];
17219
+ },
17220
+ ([raw_targets, raw_events, raw_listeners, raw_options]) => {
17221
+ cleanup();
17222
+ 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))
17223
+ return;
17224
+ const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;
17225
+ cleanups.push(
17226
+ ...raw_targets.flatMap(
17227
+ (el) => raw_events.flatMap(
17228
+ (event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))
17229
+ )
17230
+ )
17231
+ );
17232
+ },
17233
+ { flush: "post" }
17234
+ );
17235
+ const stop = () => {
17236
+ stopWatch();
17237
+ cleanup();
17238
+ };
17239
+ tryOnScopeDispose(cleanup);
17240
+ return stop;
17241
+ }
16555
17242
  function getProperty(style, key) {
16556
17243
  const value = style.getPropertyValue(key);
16557
17244
  if (value === "") {
@@ -16560,16 +17247,33 @@ function getProperty(style, key) {
16560
17247
  return JSON.parse(value);
16561
17248
  }
16562
17249
  }
17250
+ function findLayoutElement(element) {
17251
+ if (!element) {
17252
+ return null;
17253
+ }
17254
+ const parent = element.closest("ce-page-layout");
17255
+ if (parent) {
17256
+ return parent;
17257
+ }
17258
+ const root = element.getRootNode();
17259
+ if (root instanceof ShadowRoot) {
17260
+ return findLayoutElement(root.host);
17261
+ }
17262
+ return null;
17263
+ }
16563
17264
  function useAreaData(element) {
16564
17265
  const area = vue.ref(null);
16565
17266
  const attachPanel = vue.ref(null);
16566
17267
  const direction = vue.ref(null);
17268
+ const layoutElement = vue.computed(() => findLayoutElement(vue.toValue(element)));
17269
+ useEventListener(layoutElement, "update", () => {
17270
+ if (element.value) {
17271
+ update(element.value);
17272
+ }
17273
+ });
16567
17274
  vue.watchEffect(() => {
16568
17275
  if (element.value) {
16569
- const style = getComputedStyle(element.value);
16570
- area.value = getProperty(style, VAR_NAME_AREA);
16571
- attachPanel.value = getProperty(style, VAR_NAME_ATTACH_PANEL);
16572
- direction.value = getProperty(style, VAR_NAME_DIRECTION);
17276
+ update(element.value);
16573
17277
  }
16574
17278
  });
16575
17279
  return {
@@ -16577,17 +17281,23 @@ function useAreaData(element) {
16577
17281
  attachPanel,
16578
17282
  direction
16579
17283
  };
17284
+ function update(element2) {
17285
+ const style = getComputedStyle(element2);
17286
+ area.value = getProperty(style, VAR_NAME_AREA);
17287
+ attachPanel.value = getProperty(style, VAR_NAME_ATTACH_PANEL);
17288
+ direction.value = getProperty(style, VAR_NAME_DIRECTION);
17289
+ }
16580
17290
  }
16581
- const _hoisted_1$5 = {
17291
+ const _hoisted_1$7 = {
16582
17292
  class: "progress"
16583
17293
  };
16584
- const _hoisted_2$3 = ["aria-label", "aria-valuenow", "aria-valuetext"];
17294
+ const _hoisted_2$4 = ["aria-label", "aria-valuenow", "aria-valuetext"];
16585
17295
  const _hoisted_3$2 = {
16586
17296
  class: "sr-only"
16587
17297
  };
16588
17298
  const MIN_VALUE = 0;
16589
17299
  const MAX_VALUE = 100;
16590
- const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17300
+ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
16591
17301
  __name: "FProgressbar",
16592
17302
  props: {
16593
17303
  /**
@@ -16626,10 +17336,10 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
16626
17336
  setup(__props) {
16627
17337
  const props = __props;
16628
17338
  const ariaLabel = props.ariaLabel;
16629
- function clamp(val) {
17339
+ function clamp2(val) {
16630
17340
  return Math.round(Math.min(Math.max(val || 0, MIN_VALUE), MAX_VALUE));
16631
17341
  }
16632
- const progressValueNow = vue.computed(() => clamp(props.value));
17342
+ const progressValueNow = vue.computed(() => clamp2(props.value));
16633
17343
  const cssWidth = vue.computed(() => `width: ${progressValueNow.value}%`);
16634
17344
  const progressBarClass = vue.computed(() => {
16635
17345
  if (progressValueNow.value === MIN_VALUE) {
@@ -16644,7 +17354,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
16644
17354
  return `${props.valueText.replace("%VALUE%", progressValueNow.value.toString())}`;
16645
17355
  });
16646
17356
  return (_ctx, _cache) => {
16647
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [vue.createElementVNode("span", {
17357
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [vue.createElementVNode("span", {
16648
17358
  class: vue.normalizeClass(["progress__meter", progressBarClass.value]),
16649
17359
  role: "progressbar",
16650
17360
  "aria-label": vue.unref(ariaLabel),
@@ -16653,12 +17363,12 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
16653
17363
  "aria-valuenow": progressValueNow.value,
16654
17364
  "aria-valuetext": progressText.value,
16655
17365
  style: vue.normalizeStyle(cssWidth.value)
16656
- }, [vue.createElementVNode("span", _hoisted_3$2, vue.toDisplayString(progressText.value), 1)], 14, _hoisted_2$3)]);
17366
+ }, [vue.createElementVNode("span", _hoisted_3$2, vue.toDisplayString(progressText.value), 1)], 14, _hoisted_2$4)]);
16657
17367
  };
16658
17368
  }
16659
17369
  });
16660
17370
  const anyType = [String, Object, Array, Number, Date, Boolean];
16661
- const _sfc_main$4 = vue.defineComponent({
17371
+ const _sfc_main$6 = vue.defineComponent({
16662
17372
  name: "FRadioField",
16663
17373
  inheritAttrs: false,
16664
17374
  props: {
@@ -16814,8 +17524,8 @@ const _sfc_main$4 = vue.defineComponent({
16814
17524
  }
16815
17525
  }
16816
17526
  });
16817
- const _hoisted_1$4 = ["id", "disabled"];
16818
- const _hoisted_2$2 = ["for"];
17527
+ const _hoisted_1$6 = ["id", "disabled"];
17528
+ const _hoisted_2$3 = ["for"];
16819
17529
  const _hoisted_3$1 = {
16820
17530
  key: 0,
16821
17531
  class: "radio-button__details"
@@ -16833,7 +17543,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
16833
17543
  type: "radio",
16834
17544
  class: "radio-button__input",
16835
17545
  disabled: _ctx.disabled
16836
- }, _ctx.attrs), null, 16, _hoisted_1$4), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createElementVNode("label", {
17546
+ }, _ctx.attrs), null, 16, _hoisted_1$6), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createElementVNode("label", {
16837
17547
  class: vue.normalizeClass(_ctx.$slots.details ? "radio-button__label radio-button__width" : "radio-button__label"),
16838
17548
  for: _ctx.id
16839
17549
  }, [vue.renderSlot(_ctx.$slots, "default"), _cache[6] || (_cache[6] = vue.createTextVNode()), _ctx.$slots.details ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, {
@@ -16848,9 +17558,386 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
16848
17558
  height: _ctx.height
16849
17559
  })])) : vue.createCommentVNode("", true)]),
16850
17560
  _: 3
16851
- }, 8, ["onEnter", "onAfterEnter", "onLeave"])) : vue.createCommentVNode("", true)], 64)) : vue.createCommentVNode("", true)], 10, _hoisted_2$2)], 34);
17561
+ }, 8, ["onEnter", "onAfterEnter", "onLeave"])) : vue.createCommentVNode("", true)], 64)) : vue.createCommentVNode("", true)], 10, _hoisted_2$3)], 34);
17562
+ }
17563
+ const FRadioField = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$4]]);
17564
+ const keymap = {
17565
+ left: {
17566
+ ArrowLeft: "decrease",
17567
+ ArrowRight: "increase",
17568
+ Home: "minimize",
17569
+ End: "maximize"
17570
+ },
17571
+ right: {
17572
+ ArrowLeft: "increase",
17573
+ ArrowRight: "decrease",
17574
+ Home: "minimize",
17575
+ End: "maximize"
17576
+ },
17577
+ top: {
17578
+ ArrowUp: "decrease",
17579
+ ArrowDown: "increase",
17580
+ Home: "minimize",
17581
+ End: "maximize"
17582
+ },
17583
+ bottom: {
17584
+ ArrowUp: "increase",
17585
+ ArrowDown: "decrease",
17586
+ Home: "minimize",
17587
+ End: "maximize"
17588
+ },
17589
+ none: {}
17590
+ };
17591
+ function useKeyboardHandler(options) {
17592
+ const {
17593
+ attachment,
17594
+ separator
17595
+ } = options;
17596
+ useEventListener(separator, "keydown", (event) => {
17597
+ if (!attachment.value) {
17598
+ return;
17599
+ }
17600
+ const action = keymap[attachment.value][event.key];
17601
+ if (action) {
17602
+ event.preventDefault();
17603
+ options[action]();
17604
+ }
17605
+ });
17606
+ }
17607
+ function clamp(value, min, max) {
17608
+ return Math.min(Math.max(value, min), max);
17609
+ }
17610
+ function usePointerHandler(options) {
17611
+ const {
17612
+ separator,
17613
+ attachment
17614
+ } = options;
17615
+ const invert = vue.computed(() => {
17616
+ if (attachment.value === "right" || attachment.value === "bottom") {
17617
+ return -1;
17618
+ }
17619
+ return 1;
17620
+ });
17621
+ const orientation = vue.computed(() => {
17622
+ if (attachment.value === "top" || attachment.value === "bottom") {
17623
+ return "horizontal";
17624
+ } else {
17625
+ return "vertical";
17626
+ }
17627
+ });
17628
+ useEventListener(separator, "pointerdown", (event) => {
17629
+ const {
17630
+ isPrimary,
17631
+ button,
17632
+ target,
17633
+ pointerId
17634
+ } = event;
17635
+ if (!separator.value) {
17636
+ return;
17637
+ }
17638
+ if (!isPrimary || button !== 0 || target !== separator.value) {
17639
+ return;
17640
+ }
17641
+ const separatorElement = separator.value;
17642
+ const property = orientation.value === "horizontal" ? "clientY" : "clientX";
17643
+ const reference = event[property];
17644
+ const resize = createResizer();
17645
+ function onPointerMove(event2) {
17646
+ if (event2.pointerId === pointerId) {
17647
+ resize(event2[property] - reference);
17648
+ }
17649
+ }
17650
+ function onLostPointerCapture(event2) {
17651
+ if (event2.pointerId === pointerId) {
17652
+ separatorElement.removeEventListener("pointermove", onPointerMove);
17653
+ separatorElement.removeEventListener("lostpointercapture", onLostPointerCapture);
17654
+ }
17655
+ }
17656
+ onPointerMove(event);
17657
+ separatorElement.addEventListener("lostpointercapture", onLostPointerCapture);
17658
+ separatorElement.addEventListener("pointermove", onPointerMove);
17659
+ separatorElement.setPointerCapture(pointerId);
17660
+ event.preventDefault();
17661
+ });
17662
+ function createResizer() {
17663
+ const {
17664
+ min,
17665
+ max,
17666
+ current: value
17667
+ } = options.state.value;
17668
+ return (amount) => {
17669
+ options.movement(clamp(value + amount * invert.value, min, max));
17670
+ };
17671
+ }
17672
+ }
17673
+ function computeCssValue(raw, total, auto) {
17674
+ if (raw.endsWith("px")) {
17675
+ return parseInt(raw.slice(0, -2), 10);
17676
+ } else if (raw.endsWith("%")) {
17677
+ const value = parseInt(raw.slice(0, -1), 10);
17678
+ const percent = value / 100;
17679
+ return percent * total;
17680
+ } else if (raw === "0") {
17681
+ return 0;
17682
+ } else if (raw === "auto") {
17683
+ return auto;
17684
+ } else {
17685
+ throw new Error(`Cant parse size from "${raw}"`);
17686
+ }
17687
+ }
17688
+ function aggregateCssValue(raw, total, auto, take) {
17689
+ if (raw === "auto") {
17690
+ return auto;
17691
+ }
17692
+ const parts = raw.split(/\s+/).map((it) => it.trim());
17693
+ const parsed = parts.map((it) => computeCssValue(it, total, auto));
17694
+ return take(...parsed);
17695
+ }
17696
+ function useStorage(options) {
17697
+ const {
17698
+ state,
17699
+ storageKey
17700
+ } = options;
17701
+ const loaded = vue.ref(false);
17702
+ let last = -1;
17703
+ vue.watchEffect(() => {
17704
+ if (!loaded.value) {
17705
+ return;
17706
+ }
17707
+ if (!storageKey.value) {
17708
+ return;
17709
+ }
17710
+ if (state.value.current < 0 || state.value.current === last) {
17711
+ return;
17712
+ }
17713
+ const json = JSON.stringify(state.value.current);
17714
+ window.localStorage.setItem(storageKey.value, json);
17715
+ last = state.value.current;
17716
+ });
17717
+ vue.watchEffect(() => {
17718
+ if (!storageKey.value) {
17719
+ return;
17720
+ }
17721
+ const json = window.localStorage.getItem(storageKey.value);
17722
+ if (json) {
17723
+ const value = JSON.parse(json);
17724
+ state.value.current = clamp(value, state.value.min, state.value.max);
17725
+ last = value;
17726
+ }
17727
+ loaded.value = true;
17728
+ });
16852
17729
  }
16853
- const FRadioField = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4]]);
17730
+ const _hoisted_1$5 = ["aria-orientation"];
17731
+ const _hoisted_2$2 = ["aria-orientation"];
17732
+ const STEP_SIZE = 10;
17733
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
17734
+ __name: "FResizePane.ce",
17735
+ props: {
17736
+ disabled: {
17737
+ type: Boolean,
17738
+ default: false
17739
+ },
17740
+ min: {
17741
+ default: "0",
17742
+ type: String
17743
+ },
17744
+ max: {
17745
+ default: "100%",
17746
+ type: String
17747
+ },
17748
+ initial: {
17749
+ default: "50%",
17750
+ type: String
17751
+ }
17752
+ },
17753
+ setup(__props) {
17754
+ const props = __props;
17755
+ const root = vue.shallowRef();
17756
+ const content = vue.ref();
17757
+ const separator = vue.ref();
17758
+ const state = vue.ref({
17759
+ min: -1,
17760
+ max: -1,
17761
+ current: -1
17762
+ });
17763
+ const separatorSize = vue.ref(0);
17764
+ const layoutSize = vue.ref(0);
17765
+ const storageKey = vue.computed(() => area.value ? `layout/${area.value}/size` : null);
17766
+ const {
17767
+ attachPanel: attachment,
17768
+ area
17769
+ } = useAreaData(root);
17770
+ useKeyboardHandler({
17771
+ increase() {
17772
+ state.value.current = Math.min(state.value.current + STEP_SIZE, state.value.max);
17773
+ },
17774
+ decrease() {
17775
+ state.value.current = Math.max(state.value.current - STEP_SIZE, state.value.min);
17776
+ },
17777
+ maximize() {
17778
+ state.value.current = state.value.max;
17779
+ },
17780
+ minimize() {
17781
+ state.value.current = state.value.min;
17782
+ },
17783
+ attachment,
17784
+ separator
17785
+ });
17786
+ useStorage({
17787
+ state,
17788
+ storageKey
17789
+ });
17790
+ usePointerHandler({
17791
+ movement(value) {
17792
+ state.value.current = value;
17793
+ },
17794
+ separator,
17795
+ state,
17796
+ attachment
17797
+ });
17798
+ const minSize = vue.computed(() => {
17799
+ const total = layoutSize.value;
17800
+ return Math.floor(aggregateCssValue(props.min, total, 0, Math.max) + separatorSize.value);
17801
+ });
17802
+ const maxSize = vue.computed(() => {
17803
+ const total = layoutSize.value;
17804
+ return Math.floor(aggregateCssValue(props.max, total, total, Math.min) + separatorSize.value);
17805
+ });
17806
+ const initialSize = vue.computed(() => {
17807
+ const total = layoutSize.value;
17808
+ return Math.floor(computeCssValue(props.initial, total, total * 0.5));
17809
+ });
17810
+ const orientation = vue.computed(() => {
17811
+ if (attachment.value === "top" || attachment.value === "bottom") {
17812
+ return "horizontal";
17813
+ } else {
17814
+ return "vertical";
17815
+ }
17816
+ });
17817
+ const layoutElement = vue.computed(() => {
17818
+ var _host$closest;
17819
+ if (!root.value) {
17820
+ return void 0;
17821
+ }
17822
+ const shadow = root.value.getRootNode();
17823
+ const host = shadow.host;
17824
+ return (_host$closest = host.closest("ce-page-layout")) !== null && _host$closest !== void 0 ? _host$closest : void 0;
17825
+ });
17826
+ vue.watchEffect(() => {
17827
+ const {
17828
+ min,
17829
+ max,
17830
+ current: value
17831
+ } = state.value;
17832
+ if (root.value) {
17833
+ root.value.style.setProperty("--size", `${String(value)}px`);
17834
+ root.value.style.setProperty("--min", `${min}px`);
17835
+ root.value.style.setProperty("--max", `${max}px`);
17836
+ }
17837
+ if (separator.value) {
17838
+ separator.value.setAttribute("aria-valuemin", String(Math.floor(min)));
17839
+ separator.value.setAttribute("aria-valuemax", String(Math.floor(max)));
17840
+ separator.value.setAttribute("aria-valuenow", String(Math.floor(value)));
17841
+ }
17842
+ });
17843
+ vue.onMounted(() => {
17844
+ if (separator.value) {
17845
+ const {
17846
+ flexBasis
17847
+ } = getComputedStyle(separator.value);
17848
+ separatorSize.value = computeCssValue(flexBasis, 0, 0);
17849
+ }
17850
+ layoutSize.value = getLayoutSize();
17851
+ state.value = {
17852
+ min: minSize.value,
17853
+ max: maxSize.value,
17854
+ current: clamp(initialSize.value, minSize.value, maxSize.value)
17855
+ };
17856
+ });
17857
+ useEventListener$1(window, "resize", logic.debounce(onResize, 20));
17858
+ function onResize() {
17859
+ layoutSize.value = getLayoutSize();
17860
+ state.value = {
17861
+ min: minSize.value,
17862
+ max: maxSize.value,
17863
+ current: initialSize.value
17864
+ };
17865
+ }
17866
+ function getLayoutSize() {
17867
+ if (!layoutElement.value) {
17868
+ return 0;
17869
+ }
17870
+ switch (orientation.value) {
17871
+ case "horizontal": {
17872
+ return layoutElement.value.offsetHeight;
17873
+ }
17874
+ case "vertical": {
17875
+ return layoutElement.value.offsetWidth;
17876
+ }
17877
+ }
17878
+ }
17879
+ return (_ctx, _cache) => {
17880
+ return vue.openBlock(), vue.createElementBlock("div", {
17881
+ ref_key: "root",
17882
+ ref: root,
17883
+ class: vue.normalizeClass(["resize", `resize--${vue.unref(attachment)}`])
17884
+ }, [vue.createElementVNode("div", {
17885
+ ref_key: "content",
17886
+ ref: content,
17887
+ class: "resize__content"
17888
+ }, [vue.renderSlot(_ctx.$slots, "content")], 512), _cache[0] || (_cache[0] = vue.createTextVNode()), !props.disabled ? (vue.openBlock(), vue.createElementBlock("div", {
17889
+ key: 0,
17890
+ ref_key: "separator",
17891
+ ref: separator,
17892
+ role: "separator",
17893
+ class: "resize__handle",
17894
+ tabindex: "0",
17895
+ "aria-orientation": orientation.value
17896
+ }, null, 8, _hoisted_1$5)) : (vue.openBlock(), vue.createElementBlock("div", {
17897
+ key: 1,
17898
+ role: "separator",
17899
+ class: "resize__handle disabled",
17900
+ "aria-orientation": orientation.value
17901
+ }, null, 8, _hoisted_2$2))], 2);
17902
+ };
17903
+ }
17904
+ });
17905
+ 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}';
17906
+ const FResizePane = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["styles", [_style_0]]]);
17907
+ const _hoisted_1$4 = {
17908
+ slot: "content"
17909
+ };
17910
+ const tagName = "ce-resize-pane";
17911
+ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
17912
+ __name: "FResizePane",
17913
+ props: {
17914
+ disabled: {
17915
+ type: Boolean,
17916
+ default: false
17917
+ },
17918
+ min: {
17919
+ default: "0"
17920
+ },
17921
+ max: {
17922
+ default: "100%"
17923
+ },
17924
+ initial: {
17925
+ default: "50%"
17926
+ }
17927
+ },
17928
+ setup(__props) {
17929
+ if (!customElements.get(tagName)) {
17930
+ customElements.define(tagName, vue.defineCustomElement(FResizePane));
17931
+ }
17932
+ const props = __props;
17933
+ return (_ctx, _cache) => {
17934
+ return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(tagName), vue.normalizeProps(vue.guardReactiveProps(props)), {
17935
+ default: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_1$4, [vue.renderSlot(_ctx.$slots, "default")])]),
17936
+ _: 3
17937
+ }, 16);
17938
+ };
17939
+ }
17940
+ });
16854
17941
  const _sfc_main$3 = vue.defineComponent({
16855
17942
  name: "FStaticField",
16856
17943
  components: {
@@ -17622,20 +18709,20 @@ exports.ErrorData = ErrorData;
17622
18709
  exports.ErrorPlugin = ErrorPlugin;
17623
18710
  exports.ErrorViewData = ErrorViewData;
17624
18711
  exports.EventBus = EventBus;
17625
- exports.FBadge = _sfc_main$1c;
17626
- exports.FBankAccountNumberTextField = _sfc_main$z;
17627
- exports.FBankgiroTextField = _sfc_main$y;
18712
+ exports.FBadge = _sfc_main$1e;
18713
+ exports.FBankAccountNumberTextField = _sfc_main$B;
18714
+ exports.FBankgiroTextField = _sfc_main$A;
17628
18715
  exports.FCalendar = FCalendar;
17629
18716
  exports.FCalendarDay = FCalendarDay;
17630
- exports.FCard = _sfc_main$X;
18717
+ exports.FCard = _sfc_main$Z;
17631
18718
  exports.FCheckboxField = FCheckboxField;
17632
- exports.FClearingnumberTextField = _sfc_main$x;
18719
+ exports.FClearingnumberTextField = _sfc_main$z;
17633
18720
  exports.FConfirmModal = FConfirmModal;
17634
18721
  exports.FContextMenu = FContextMenu;
17635
18722
  exports.FCrudButton = FCrudButton;
17636
- exports.FCrudDataset = _sfc_main$J;
17637
- exports.FCurrencyTextField = _sfc_main$B;
17638
- exports.FDataTable = _sfc_main$p;
18723
+ exports.FCrudDataset = _sfc_main$L;
18724
+ exports.FCurrencyTextField = _sfc_main$D;
18725
+ exports.FDataTable = _sfc_main$r;
17639
18726
  exports.FDatepickerField = FDatepickerField;
17640
18727
  exports.FDialogueTree = FDialogueTree;
17641
18728
  exports.FEmailTextField = FEmailTextField;
@@ -17650,35 +18737,36 @@ exports.FFileSelector = FFileSelector;
17650
18737
  exports.FFormModal = FFormModal;
17651
18738
  exports.FFormModalAction = FValidationFormAction;
17652
18739
  exports.FIcon = FIcon;
17653
- exports.FInteractiveTable = _sfc_main$i;
18740
+ exports.FInteractiveTable = _sfc_main$k;
17654
18741
  exports.FKUIConfigButtonOrder = FKUIConfigButtonOrder;
17655
18742
  exports.FLabel = FLabel;
17656
18743
  exports.FLayoutApplicationTemplate = FLayoutApplicationTemplate;
17657
18744
  exports.FLayoutLeftPanel = FLayoutLeftPanel;
17658
18745
  exports.FLayoutRightPanel = FLayoutRightPanel;
17659
18746
  exports.FLayoutRightPanelService = FLayoutRightPanelService;
17660
- exports.FList = _sfc_main$e;
18747
+ exports.FList = _sfc_main$g;
17661
18748
  exports.FLoader = FLoader;
17662
- exports.FLogo = _sfc_main$c;
18749
+ exports.FLogo = _sfc_main$e;
17663
18750
  exports.FMessageBox = FMessageBox;
17664
18751
  exports.FModal = FModal;
17665
18752
  exports.FNavigationMenu = FNavigationMenu;
17666
- exports.FNumericTextField = _sfc_main$w;
18753
+ exports.FNumericTextField = _sfc_main$y;
17667
18754
  exports.FOffline = FOffline;
17668
- exports.FOrganisationsnummerTextField = _sfc_main$r;
18755
+ exports.FOrganisationsnummerTextField = _sfc_main$t;
17669
18756
  exports.FOutputField = FOutputField;
17670
18757
  exports.FPageHeader = FPageHeader;
17671
- exports.FPageLayout = _sfc_main$6;
17672
- exports.FPercentTextField = _sfc_main$s;
17673
- exports.FPersonnummerTextField = _sfc_main$v;
18758
+ exports.FPageLayout = _sfc_main$8;
18759
+ exports.FPercentTextField = _sfc_main$u;
18760
+ exports.FPersonnummerTextField = _sfc_main$x;
17674
18761
  exports.FPhoneTextField = FPhoneTextField;
17675
- exports.FPlusgiroTextField = _sfc_main$u;
17676
- exports.FPostalCodeTextField = _sfc_main$t;
17677
- exports.FProgressbar = _sfc_main$5;
18762
+ exports.FPlusgiroTextField = _sfc_main$w;
18763
+ exports.FPostalCodeTextField = _sfc_main$v;
18764
+ exports.FProgressbar = _sfc_main$7;
17678
18765
  exports.FRadioField = FRadioField;
18766
+ exports.FResizePane = _sfc_main$4;
17679
18767
  exports.FSearchTextField = FSearchTextField;
17680
18768
  exports.FSelectField = FSelectField;
17681
- exports.FSortFilterDataset = _sfc_main$q;
18769
+ exports.FSortFilterDataset = _sfc_main$s;
17682
18770
  exports.FSortFilterDatasetInjected = FSortFilterDatasetInjected;
17683
18771
  exports.FStaticField = FStaticField;
17684
18772
  exports.FTableColumn = FTableColumn;
@@ -17699,13 +18787,13 @@ exports.IAnimateExpand = IAnimateExpand;
17699
18787
  exports.ICalendarMonth = ICalendarMonth;
17700
18788
  exports.ICalendarMonthGrid = ICalendarMonthGrid;
17701
18789
  exports.ICalendarNavbar = ICalendarNavbar;
17702
- exports.IComboboxDropdown = _sfc_main$P;
17703
- exports.IComboboxToggleButton = _sfc_main$O;
18790
+ exports.IComboboxDropdown = _sfc_main$R;
18791
+ exports.IComboboxToggleButton = _sfc_main$Q;
17704
18792
  exports.IFlex = IFlex;
17705
18793
  exports.IFlexItem = IFlexItem;
17706
18794
  exports.IPopup = IPopup;
17707
18795
  exports.IPopupError = IPopupError;
17708
- exports.IPopupListbox = _sfc_main$T;
18796
+ exports.IPopupListbox = _sfc_main$V;
17709
18797
  exports.IPopupMenu = IPopupMenu;
17710
18798
  exports.ISkipLink = ISkipLink;
17711
18799
  exports.IValidationForm = FValidationForm;