@fkui/vue 6.0.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,11 +37,7 @@ const _sfc_main$1b = /* @__PURE__ */ vue.defineComponent({
37
37
  };
38
38
  }
39
39
  });
40
- var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
41
- function getDefaultExportFromCjs(x) {
42
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
43
- }
44
- var es_array_push = {};
40
+ var es_iterator_constructor = {};
45
41
  var globalThis_1;
46
42
  var hasRequiredGlobalThis;
47
43
  function requireGlobalThis() {
@@ -180,13 +176,13 @@ function requireIndexedObject() {
180
176
  hasRequiredIndexedObject = 1;
181
177
  var uncurryThis = requireFunctionUncurryThis();
182
178
  var fails2 = requireFails();
183
- var classof = requireClassofRaw();
179
+ var classof2 = requireClassofRaw();
184
180
  var $Object = Object;
185
181
  var split = uncurryThis("".split);
186
182
  indexedObject = fails2(function() {
187
183
  return !$Object("z").propertyIsEnumerable(0);
188
184
  }) ? function(it) {
189
- return classof(it) === "String" ? split(it, "") : $Object(it);
185
+ return classof2(it) === "String" ? split(it, "") : $Object(it);
190
186
  } : $Object;
191
187
  return indexedObject;
192
188
  }
@@ -1219,14 +1215,579 @@ function require_export() {
1219
1215
  };
1220
1216
  return _export;
1221
1217
  }
1218
+ var anInstance;
1219
+ var hasRequiredAnInstance;
1220
+ function requireAnInstance() {
1221
+ if (hasRequiredAnInstance) return anInstance;
1222
+ hasRequiredAnInstance = 1;
1223
+ var isPrototypeOf = requireObjectIsPrototypeOf();
1224
+ var $TypeError = TypeError;
1225
+ anInstance = function(it, Prototype) {
1226
+ if (isPrototypeOf(Prototype, it)) return it;
1227
+ throw new $TypeError("Incorrect invocation");
1228
+ };
1229
+ return anInstance;
1230
+ }
1231
+ var correctPrototypeGetter;
1232
+ var hasRequiredCorrectPrototypeGetter;
1233
+ function requireCorrectPrototypeGetter() {
1234
+ if (hasRequiredCorrectPrototypeGetter) return correctPrototypeGetter;
1235
+ hasRequiredCorrectPrototypeGetter = 1;
1236
+ var fails2 = requireFails();
1237
+ correctPrototypeGetter = !fails2(function() {
1238
+ function F() {
1239
+ }
1240
+ F.prototype.constructor = null;
1241
+ return Object.getPrototypeOf(new F()) !== F.prototype;
1242
+ });
1243
+ return correctPrototypeGetter;
1244
+ }
1245
+ var objectGetPrototypeOf;
1246
+ var hasRequiredObjectGetPrototypeOf;
1247
+ function requireObjectGetPrototypeOf() {
1248
+ if (hasRequiredObjectGetPrototypeOf) return objectGetPrototypeOf;
1249
+ hasRequiredObjectGetPrototypeOf = 1;
1250
+ var hasOwn = requireHasOwnProperty();
1251
+ var isCallable2 = requireIsCallable();
1252
+ var toObject2 = requireToObject();
1253
+ var sharedKey2 = requireSharedKey();
1254
+ var CORRECT_PROTOTYPE_GETTER = requireCorrectPrototypeGetter();
1255
+ var IE_PROTO = sharedKey2("IE_PROTO");
1256
+ var $Object = Object;
1257
+ var ObjectPrototype = $Object.prototype;
1258
+ objectGetPrototypeOf = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function(O) {
1259
+ var object = toObject2(O);
1260
+ if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];
1261
+ var constructor = object.constructor;
1262
+ if (isCallable2(constructor) && object instanceof constructor) {
1263
+ return constructor.prototype;
1264
+ }
1265
+ return object instanceof $Object ? ObjectPrototype : null;
1266
+ };
1267
+ return objectGetPrototypeOf;
1268
+ }
1269
+ var defineBuiltInAccessor;
1270
+ var hasRequiredDefineBuiltInAccessor;
1271
+ function requireDefineBuiltInAccessor() {
1272
+ if (hasRequiredDefineBuiltInAccessor) return defineBuiltInAccessor;
1273
+ hasRequiredDefineBuiltInAccessor = 1;
1274
+ var makeBuiltIn2 = requireMakeBuiltIn();
1275
+ var defineProperty = requireObjectDefineProperty();
1276
+ defineBuiltInAccessor = function(target, name, descriptor) {
1277
+ if (descriptor.get) makeBuiltIn2(descriptor.get, name, {
1278
+ getter: true
1279
+ });
1280
+ if (descriptor.set) makeBuiltIn2(descriptor.set, name, {
1281
+ setter: true
1282
+ });
1283
+ return defineProperty.f(target, name, descriptor);
1284
+ };
1285
+ return defineBuiltInAccessor;
1286
+ }
1287
+ var createProperty;
1288
+ var hasRequiredCreateProperty;
1289
+ function requireCreateProperty() {
1290
+ if (hasRequiredCreateProperty) return createProperty;
1291
+ hasRequiredCreateProperty = 1;
1292
+ var DESCRIPTORS = requireDescriptors();
1293
+ var definePropertyModule = requireObjectDefineProperty();
1294
+ var createPropertyDescriptor2 = requireCreatePropertyDescriptor();
1295
+ createProperty = function(object, key, value) {
1296
+ if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor2(0, value));
1297
+ else object[key] = value;
1298
+ };
1299
+ return createProperty;
1300
+ }
1301
+ var objectDefineProperties = {};
1302
+ var objectKeys;
1303
+ var hasRequiredObjectKeys;
1304
+ function requireObjectKeys() {
1305
+ if (hasRequiredObjectKeys) return objectKeys;
1306
+ hasRequiredObjectKeys = 1;
1307
+ var internalObjectKeys = requireObjectKeysInternal();
1308
+ var enumBugKeys2 = requireEnumBugKeys();
1309
+ objectKeys = Object.keys || function keys(O) {
1310
+ return internalObjectKeys(O, enumBugKeys2);
1311
+ };
1312
+ return objectKeys;
1313
+ }
1314
+ var hasRequiredObjectDefineProperties;
1315
+ function requireObjectDefineProperties() {
1316
+ if (hasRequiredObjectDefineProperties) return objectDefineProperties;
1317
+ hasRequiredObjectDefineProperties = 1;
1318
+ var DESCRIPTORS = requireDescriptors();
1319
+ var V8_PROTOTYPE_DEFINE_BUG = requireV8PrototypeDefineBug();
1320
+ var definePropertyModule = requireObjectDefineProperty();
1321
+ var anObject2 = requireAnObject();
1322
+ var toIndexedObject2 = requireToIndexedObject();
1323
+ var objectKeys2 = requireObjectKeys();
1324
+ objectDefineProperties.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {
1325
+ anObject2(O);
1326
+ var props = toIndexedObject2(Properties);
1327
+ var keys = objectKeys2(Properties);
1328
+ var length = keys.length;
1329
+ var index = 0;
1330
+ var key;
1331
+ while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);
1332
+ return O;
1333
+ };
1334
+ return objectDefineProperties;
1335
+ }
1336
+ var html;
1337
+ var hasRequiredHtml;
1338
+ function requireHtml() {
1339
+ if (hasRequiredHtml) return html;
1340
+ hasRequiredHtml = 1;
1341
+ var getBuiltIn2 = requireGetBuiltIn();
1342
+ html = getBuiltIn2("document", "documentElement");
1343
+ return html;
1344
+ }
1345
+ var objectCreate;
1346
+ var hasRequiredObjectCreate;
1347
+ function requireObjectCreate() {
1348
+ if (hasRequiredObjectCreate) return objectCreate;
1349
+ hasRequiredObjectCreate = 1;
1350
+ var anObject2 = requireAnObject();
1351
+ var definePropertiesModule = requireObjectDefineProperties();
1352
+ var enumBugKeys2 = requireEnumBugKeys();
1353
+ var hiddenKeys2 = requireHiddenKeys();
1354
+ var html2 = requireHtml();
1355
+ var documentCreateElement2 = requireDocumentCreateElement();
1356
+ var sharedKey2 = requireSharedKey();
1357
+ var GT = ">";
1358
+ var LT = "<";
1359
+ var PROTOTYPE = "prototype";
1360
+ var SCRIPT = "script";
1361
+ var IE_PROTO = sharedKey2("IE_PROTO");
1362
+ var EmptyConstructor = function() {
1363
+ };
1364
+ var scriptTag = function(content) {
1365
+ return LT + SCRIPT + GT + content + LT + "/" + SCRIPT + GT;
1366
+ };
1367
+ var NullProtoObjectViaActiveX = function(activeXDocument2) {
1368
+ activeXDocument2.write(scriptTag(""));
1369
+ activeXDocument2.close();
1370
+ var temp = activeXDocument2.parentWindow.Object;
1371
+ activeXDocument2 = null;
1372
+ return temp;
1373
+ };
1374
+ var NullProtoObjectViaIFrame = function() {
1375
+ var iframe = documentCreateElement2("iframe");
1376
+ var JS = "java" + SCRIPT + ":";
1377
+ var iframeDocument;
1378
+ iframe.style.display = "none";
1379
+ html2.appendChild(iframe);
1380
+ iframe.src = String(JS);
1381
+ iframeDocument = iframe.contentWindow.document;
1382
+ iframeDocument.open();
1383
+ iframeDocument.write(scriptTag("document.F=Object"));
1384
+ iframeDocument.close();
1385
+ return iframeDocument.F;
1386
+ };
1387
+ var activeXDocument;
1388
+ var NullProtoObject = function() {
1389
+ try {
1390
+ activeXDocument = new ActiveXObject("htmlfile");
1391
+ } catch (error) {
1392
+ }
1393
+ NullProtoObject = typeof document != "undefined" ? document.domain && activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame() : NullProtoObjectViaActiveX(activeXDocument);
1394
+ var length = enumBugKeys2.length;
1395
+ while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys2[length]];
1396
+ return NullProtoObject();
1397
+ };
1398
+ hiddenKeys2[IE_PROTO] = true;
1399
+ objectCreate = Object.create || function create(O, Properties) {
1400
+ var result;
1401
+ if (O !== null) {
1402
+ EmptyConstructor[PROTOTYPE] = anObject2(O);
1403
+ result = new EmptyConstructor();
1404
+ EmptyConstructor[PROTOTYPE] = null;
1405
+ result[IE_PROTO] = O;
1406
+ } else result = NullProtoObject();
1407
+ return Properties === void 0 ? result : definePropertiesModule.f(result, Properties);
1408
+ };
1409
+ return objectCreate;
1410
+ }
1411
+ var iteratorsCore;
1412
+ var hasRequiredIteratorsCore;
1413
+ function requireIteratorsCore() {
1414
+ if (hasRequiredIteratorsCore) return iteratorsCore;
1415
+ hasRequiredIteratorsCore = 1;
1416
+ var fails2 = requireFails();
1417
+ var isCallable2 = requireIsCallable();
1418
+ var isObject2 = requireIsObject$1();
1419
+ var create = requireObjectCreate();
1420
+ var getPrototypeOf = requireObjectGetPrototypeOf();
1421
+ var defineBuiltIn2 = requireDefineBuiltIn();
1422
+ var wellKnownSymbol2 = requireWellKnownSymbol();
1423
+ var IS_PURE = requireIsPure();
1424
+ var ITERATOR = wellKnownSymbol2("iterator");
1425
+ var BUGGY_SAFARI_ITERATORS = false;
1426
+ var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
1427
+ if ([].keys) {
1428
+ arrayIterator = [].keys();
1429
+ if (!("next" in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
1430
+ else {
1431
+ PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
1432
+ if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
1433
+ }
1434
+ }
1435
+ var NEW_ITERATOR_PROTOTYPE = !isObject2(IteratorPrototype) || fails2(function() {
1436
+ var test = {};
1437
+ return IteratorPrototype[ITERATOR].call(test) !== test;
1438
+ });
1439
+ if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};
1440
+ else if (IS_PURE) IteratorPrototype = create(IteratorPrototype);
1441
+ if (!isCallable2(IteratorPrototype[ITERATOR])) {
1442
+ defineBuiltIn2(IteratorPrototype, ITERATOR, function() {
1443
+ return this;
1444
+ });
1445
+ }
1446
+ iteratorsCore = {
1447
+ IteratorPrototype,
1448
+ BUGGY_SAFARI_ITERATORS
1449
+ };
1450
+ return iteratorsCore;
1451
+ }
1452
+ var hasRequiredEs_iterator_constructor;
1453
+ function requireEs_iterator_constructor() {
1454
+ if (hasRequiredEs_iterator_constructor) return es_iterator_constructor;
1455
+ hasRequiredEs_iterator_constructor = 1;
1456
+ var $ = require_export();
1457
+ var globalThis2 = requireGlobalThis();
1458
+ var anInstance2 = requireAnInstance();
1459
+ var anObject2 = requireAnObject();
1460
+ var isCallable2 = requireIsCallable();
1461
+ var getPrototypeOf = requireObjectGetPrototypeOf();
1462
+ var defineBuiltInAccessor2 = requireDefineBuiltInAccessor();
1463
+ var createProperty2 = requireCreateProperty();
1464
+ var fails2 = requireFails();
1465
+ var hasOwn = requireHasOwnProperty();
1466
+ var wellKnownSymbol2 = requireWellKnownSymbol();
1467
+ var IteratorPrototype = requireIteratorsCore().IteratorPrototype;
1468
+ var DESCRIPTORS = requireDescriptors();
1469
+ var IS_PURE = requireIsPure();
1470
+ var CONSTRUCTOR = "constructor";
1471
+ var ITERATOR = "Iterator";
1472
+ var TO_STRING_TAG = wellKnownSymbol2("toStringTag");
1473
+ var $TypeError = TypeError;
1474
+ var NativeIterator = globalThis2[ITERATOR];
1475
+ var FORCED = IS_PURE || !isCallable2(NativeIterator) || NativeIterator.prototype !== IteratorPrototype || !fails2(function() {
1476
+ NativeIterator({});
1477
+ });
1478
+ var IteratorConstructor = function Iterator() {
1479
+ anInstance2(this, IteratorPrototype);
1480
+ if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError("Abstract class Iterator not directly constructable");
1481
+ };
1482
+ var defineIteratorPrototypeAccessor = function(key, value) {
1483
+ if (DESCRIPTORS) {
1484
+ defineBuiltInAccessor2(IteratorPrototype, key, {
1485
+ configurable: true,
1486
+ get: function() {
1487
+ return value;
1488
+ },
1489
+ set: function(replacement) {
1490
+ anObject2(this);
1491
+ if (this === IteratorPrototype) throw new $TypeError("You can't redefine this property");
1492
+ if (hasOwn(this, key)) this[key] = replacement;
1493
+ else createProperty2(this, key, replacement);
1494
+ }
1495
+ });
1496
+ } else IteratorPrototype[key] = value;
1497
+ };
1498
+ if (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);
1499
+ if (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {
1500
+ defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);
1501
+ }
1502
+ IteratorConstructor.prototype = IteratorPrototype;
1503
+ $({
1504
+ global: true,
1505
+ constructor: true,
1506
+ forced: FORCED
1507
+ }, {
1508
+ Iterator: IteratorConstructor
1509
+ });
1510
+ return es_iterator_constructor;
1511
+ }
1512
+ requireEs_iterator_constructor();
1513
+ var es_iterator_forEach = {};
1514
+ var functionUncurryThisClause;
1515
+ var hasRequiredFunctionUncurryThisClause;
1516
+ function requireFunctionUncurryThisClause() {
1517
+ if (hasRequiredFunctionUncurryThisClause) return functionUncurryThisClause;
1518
+ hasRequiredFunctionUncurryThisClause = 1;
1519
+ var classofRaw2 = requireClassofRaw();
1520
+ var uncurryThis = requireFunctionUncurryThis();
1521
+ functionUncurryThisClause = function(fn2) {
1522
+ if (classofRaw2(fn2) === "Function") return uncurryThis(fn2);
1523
+ };
1524
+ return functionUncurryThisClause;
1525
+ }
1526
+ var functionBindContext;
1527
+ var hasRequiredFunctionBindContext;
1528
+ function requireFunctionBindContext() {
1529
+ if (hasRequiredFunctionBindContext) return functionBindContext;
1530
+ hasRequiredFunctionBindContext = 1;
1531
+ var uncurryThis = requireFunctionUncurryThisClause();
1532
+ var aCallable2 = requireACallable();
1533
+ var NATIVE_BIND = requireFunctionBindNative();
1534
+ var bind = uncurryThis(uncurryThis.bind);
1535
+ functionBindContext = function(fn2, that) {
1536
+ aCallable2(fn2);
1537
+ return that === void 0 ? fn2 : NATIVE_BIND ? bind(fn2, that) : function() {
1538
+ return fn2.apply(that, arguments);
1539
+ };
1540
+ };
1541
+ return functionBindContext;
1542
+ }
1543
+ var iterators;
1544
+ var hasRequiredIterators;
1545
+ function requireIterators() {
1546
+ if (hasRequiredIterators) return iterators;
1547
+ hasRequiredIterators = 1;
1548
+ iterators = {};
1549
+ return iterators;
1550
+ }
1551
+ var isArrayIteratorMethod;
1552
+ var hasRequiredIsArrayIteratorMethod;
1553
+ function requireIsArrayIteratorMethod() {
1554
+ if (hasRequiredIsArrayIteratorMethod) return isArrayIteratorMethod;
1555
+ hasRequiredIsArrayIteratorMethod = 1;
1556
+ var wellKnownSymbol2 = requireWellKnownSymbol();
1557
+ var Iterators = requireIterators();
1558
+ var ITERATOR = wellKnownSymbol2("iterator");
1559
+ var ArrayPrototype = Array.prototype;
1560
+ isArrayIteratorMethod = function(it) {
1561
+ return it !== void 0 && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);
1562
+ };
1563
+ return isArrayIteratorMethod;
1564
+ }
1565
+ var toStringTagSupport;
1566
+ var hasRequiredToStringTagSupport;
1567
+ function requireToStringTagSupport() {
1568
+ if (hasRequiredToStringTagSupport) return toStringTagSupport;
1569
+ hasRequiredToStringTagSupport = 1;
1570
+ var wellKnownSymbol2 = requireWellKnownSymbol();
1571
+ var TO_STRING_TAG = wellKnownSymbol2("toStringTag");
1572
+ var test = {};
1573
+ test[TO_STRING_TAG] = "z";
1574
+ toStringTagSupport = String(test) === "[object z]";
1575
+ return toStringTagSupport;
1576
+ }
1577
+ var classof;
1578
+ var hasRequiredClassof;
1579
+ function requireClassof() {
1580
+ if (hasRequiredClassof) return classof;
1581
+ hasRequiredClassof = 1;
1582
+ var TO_STRING_TAG_SUPPORT = requireToStringTagSupport();
1583
+ var isCallable2 = requireIsCallable();
1584
+ var classofRaw2 = requireClassofRaw();
1585
+ var wellKnownSymbol2 = requireWellKnownSymbol();
1586
+ var TO_STRING_TAG = wellKnownSymbol2("toStringTag");
1587
+ var $Object = Object;
1588
+ var CORRECT_ARGUMENTS = classofRaw2(/* @__PURE__ */ function() {
1589
+ return arguments;
1590
+ }()) === "Arguments";
1591
+ var tryGet = function(it, key) {
1592
+ try {
1593
+ return it[key];
1594
+ } catch (error) {
1595
+ }
1596
+ };
1597
+ classof = TO_STRING_TAG_SUPPORT ? classofRaw2 : function(it) {
1598
+ var O, tag, result;
1599
+ return it === void 0 ? "Undefined" : it === null ? "Null" : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == "string" ? tag : CORRECT_ARGUMENTS ? classofRaw2(O) : (result = classofRaw2(O)) === "Object" && isCallable2(O.callee) ? "Arguments" : result;
1600
+ };
1601
+ return classof;
1602
+ }
1603
+ var getIteratorMethod;
1604
+ var hasRequiredGetIteratorMethod;
1605
+ function requireGetIteratorMethod() {
1606
+ if (hasRequiredGetIteratorMethod) return getIteratorMethod;
1607
+ hasRequiredGetIteratorMethod = 1;
1608
+ var classof2 = requireClassof();
1609
+ var getMethod2 = requireGetMethod();
1610
+ var isNullOrUndefined2 = requireIsNullOrUndefined();
1611
+ var Iterators = requireIterators();
1612
+ var wellKnownSymbol2 = requireWellKnownSymbol();
1613
+ var ITERATOR = wellKnownSymbol2("iterator");
1614
+ getIteratorMethod = function(it) {
1615
+ if (!isNullOrUndefined2(it)) return getMethod2(it, ITERATOR) || getMethod2(it, "@@iterator") || Iterators[classof2(it)];
1616
+ };
1617
+ return getIteratorMethod;
1618
+ }
1619
+ var getIterator;
1620
+ var hasRequiredGetIterator;
1621
+ function requireGetIterator() {
1622
+ if (hasRequiredGetIterator) return getIterator;
1623
+ hasRequiredGetIterator = 1;
1624
+ var call = requireFunctionCall();
1625
+ var aCallable2 = requireACallable();
1626
+ var anObject2 = requireAnObject();
1627
+ var tryToString2 = requireTryToString();
1628
+ var getIteratorMethod2 = requireGetIteratorMethod();
1629
+ var $TypeError = TypeError;
1630
+ getIterator = function(argument, usingIterator) {
1631
+ var iteratorMethod = arguments.length < 2 ? getIteratorMethod2(argument) : usingIterator;
1632
+ if (aCallable2(iteratorMethod)) return anObject2(call(iteratorMethod, argument));
1633
+ throw new $TypeError(tryToString2(argument) + " is not iterable");
1634
+ };
1635
+ return getIterator;
1636
+ }
1637
+ var iteratorClose;
1638
+ var hasRequiredIteratorClose;
1639
+ function requireIteratorClose() {
1640
+ if (hasRequiredIteratorClose) return iteratorClose;
1641
+ hasRequiredIteratorClose = 1;
1642
+ var call = requireFunctionCall();
1643
+ var anObject2 = requireAnObject();
1644
+ var getMethod2 = requireGetMethod();
1645
+ iteratorClose = function(iterator, kind, value) {
1646
+ var innerResult, innerError;
1647
+ anObject2(iterator);
1648
+ try {
1649
+ innerResult = getMethod2(iterator, "return");
1650
+ if (!innerResult) {
1651
+ if (kind === "throw") throw value;
1652
+ return value;
1653
+ }
1654
+ innerResult = call(innerResult, iterator);
1655
+ } catch (error) {
1656
+ innerError = true;
1657
+ innerResult = error;
1658
+ }
1659
+ if (kind === "throw") throw value;
1660
+ if (innerError) throw innerResult;
1661
+ anObject2(innerResult);
1662
+ return value;
1663
+ };
1664
+ return iteratorClose;
1665
+ }
1666
+ var iterate;
1667
+ var hasRequiredIterate;
1668
+ function requireIterate() {
1669
+ if (hasRequiredIterate) return iterate;
1670
+ hasRequiredIterate = 1;
1671
+ var bind = requireFunctionBindContext();
1672
+ var call = requireFunctionCall();
1673
+ var anObject2 = requireAnObject();
1674
+ var tryToString2 = requireTryToString();
1675
+ var isArrayIteratorMethod2 = requireIsArrayIteratorMethod();
1676
+ var lengthOfArrayLike2 = requireLengthOfArrayLike();
1677
+ var isPrototypeOf = requireObjectIsPrototypeOf();
1678
+ var getIterator2 = requireGetIterator();
1679
+ var getIteratorMethod2 = requireGetIteratorMethod();
1680
+ var iteratorClose2 = requireIteratorClose();
1681
+ var $TypeError = TypeError;
1682
+ var Result = function(stopped, result) {
1683
+ this.stopped = stopped;
1684
+ this.result = result;
1685
+ };
1686
+ var ResultPrototype = Result.prototype;
1687
+ iterate = function(iterable, unboundFunction, options) {
1688
+ var that = options && options.that;
1689
+ var AS_ENTRIES = !!(options && options.AS_ENTRIES);
1690
+ var IS_RECORD = !!(options && options.IS_RECORD);
1691
+ var IS_ITERATOR = !!(options && options.IS_ITERATOR);
1692
+ var INTERRUPTED = !!(options && options.INTERRUPTED);
1693
+ var fn2 = bind(unboundFunction, that);
1694
+ var iterator, iterFn, index, length, result, next, step;
1695
+ var stop = function(condition) {
1696
+ if (iterator) iteratorClose2(iterator, "normal", condition);
1697
+ return new Result(true, condition);
1698
+ };
1699
+ var callFn = function(value) {
1700
+ if (AS_ENTRIES) {
1701
+ anObject2(value);
1702
+ return INTERRUPTED ? fn2(value[0], value[1], stop) : fn2(value[0], value[1]);
1703
+ }
1704
+ return INTERRUPTED ? fn2(value, stop) : fn2(value);
1705
+ };
1706
+ if (IS_RECORD) {
1707
+ iterator = iterable.iterator;
1708
+ } else if (IS_ITERATOR) {
1709
+ iterator = iterable;
1710
+ } else {
1711
+ iterFn = getIteratorMethod2(iterable);
1712
+ if (!iterFn) throw new $TypeError(tryToString2(iterable) + " is not iterable");
1713
+ if (isArrayIteratorMethod2(iterFn)) {
1714
+ for (index = 0, length = lengthOfArrayLike2(iterable); length > index; index++) {
1715
+ result = callFn(iterable[index]);
1716
+ if (result && isPrototypeOf(ResultPrototype, result)) return result;
1717
+ }
1718
+ return new Result(false);
1719
+ }
1720
+ iterator = getIterator2(iterable, iterFn);
1721
+ }
1722
+ next = IS_RECORD ? iterable.next : iterator.next;
1723
+ while (!(step = call(next, iterator)).done) {
1724
+ try {
1725
+ result = callFn(step.value);
1726
+ } catch (error) {
1727
+ iteratorClose2(iterator, "throw", error);
1728
+ }
1729
+ if (typeof result == "object" && result && isPrototypeOf(ResultPrototype, result)) return result;
1730
+ }
1731
+ return new Result(false);
1732
+ };
1733
+ return iterate;
1734
+ }
1735
+ var getIteratorDirect;
1736
+ var hasRequiredGetIteratorDirect;
1737
+ function requireGetIteratorDirect() {
1738
+ if (hasRequiredGetIteratorDirect) return getIteratorDirect;
1739
+ hasRequiredGetIteratorDirect = 1;
1740
+ getIteratorDirect = function(obj) {
1741
+ return {
1742
+ iterator: obj,
1743
+ next: obj.next,
1744
+ done: false
1745
+ };
1746
+ };
1747
+ return getIteratorDirect;
1748
+ }
1749
+ var hasRequiredEs_iterator_forEach;
1750
+ function requireEs_iterator_forEach() {
1751
+ if (hasRequiredEs_iterator_forEach) return es_iterator_forEach;
1752
+ hasRequiredEs_iterator_forEach = 1;
1753
+ var $ = require_export();
1754
+ var iterate2 = requireIterate();
1755
+ var aCallable2 = requireACallable();
1756
+ var anObject2 = requireAnObject();
1757
+ var getIteratorDirect2 = requireGetIteratorDirect();
1758
+ $({
1759
+ target: "Iterator",
1760
+ proto: true,
1761
+ real: true
1762
+ }, {
1763
+ forEach: function forEach(fn2) {
1764
+ anObject2(this);
1765
+ aCallable2(fn2);
1766
+ var record = getIteratorDirect2(this);
1767
+ var counter = 0;
1768
+ iterate2(record, function(value) {
1769
+ fn2(value, counter++);
1770
+ }, {
1771
+ IS_RECORD: true
1772
+ });
1773
+ }
1774
+ });
1775
+ return es_iterator_forEach;
1776
+ }
1777
+ requireEs_iterator_forEach();
1778
+ var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
1779
+ function getDefaultExportFromCjs(x) {
1780
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
1781
+ }
1782
+ var es_array_push = {};
1222
1783
  var isArray;
1223
1784
  var hasRequiredIsArray$1;
1224
1785
  function requireIsArray$1() {
1225
1786
  if (hasRequiredIsArray$1) return isArray;
1226
1787
  hasRequiredIsArray$1 = 1;
1227
- var classof = requireClassofRaw();
1788
+ var classof2 = requireClassofRaw();
1228
1789
  isArray = Array.isArray || function isArray2(argument) {
1229
- return classof(argument) === "Array";
1790
+ return classof2(argument) === "Array";
1230
1791
  };
1231
1792
  return isArray;
1232
1793
  }
@@ -1412,7 +1973,7 @@ const _export_sfc = (sfc, props) => {
1412
1973
  };
1413
1974
  const _hoisted_1$U = ["aria-hidden"];
1414
1975
  const _hoisted_2$F = ["xlink:href"];
1415
- function _sfc_render$W(_ctx, _cache, $props, $setup, $data, $options) {
1976
+ function _sfc_render$R(_ctx, _cache, $props, $setup, $data, $options) {
1416
1977
  return vue.openBlock(), vue.createElementBlock("svg", vue.mergeProps(_ctx.$attrs, {
1417
1978
  focusable: "false",
1418
1979
  class: ["icon", [_ctx.spriteKey, ..._ctx.modifiers]],
@@ -1421,7 +1982,7 @@ function _sfc_render$W(_ctx, _cache, $props, $setup, $data, $options) {
1421
1982
  "xlink:href": _ctx.spriteId
1422
1983
  }, null, 8, _hoisted_2$F)], 16, _hoisted_1$U);
1423
1984
  }
1424
- const FIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1a, [["render", _sfc_render$W]]);
1985
+ const FIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1a, [["render", _sfc_render$R]]);
1425
1986
  const DATA_TEST_ATTRIBUTE_NAME = "data-test";
1426
1987
  function throwErrorIfEmpty(value) {
1427
1988
  if (!value) {
@@ -1996,6 +2557,165 @@ function require_mapCacheClear() {
1996
2557
  _mapCacheClear = mapCacheClear;
1997
2558
  return _mapCacheClear;
1998
2559
  }
2560
+ var es_iterator_map = {};
2561
+ var defineBuiltIns;
2562
+ var hasRequiredDefineBuiltIns;
2563
+ function requireDefineBuiltIns() {
2564
+ if (hasRequiredDefineBuiltIns) return defineBuiltIns;
2565
+ hasRequiredDefineBuiltIns = 1;
2566
+ var defineBuiltIn2 = requireDefineBuiltIn();
2567
+ defineBuiltIns = function(target, src, options) {
2568
+ for (var key in src) defineBuiltIn2(target, key, src[key], options);
2569
+ return target;
2570
+ };
2571
+ return defineBuiltIns;
2572
+ }
2573
+ var createIterResultObject;
2574
+ var hasRequiredCreateIterResultObject;
2575
+ function requireCreateIterResultObject() {
2576
+ if (hasRequiredCreateIterResultObject) return createIterResultObject;
2577
+ hasRequiredCreateIterResultObject = 1;
2578
+ createIterResultObject = function(value, done) {
2579
+ return {
2580
+ value,
2581
+ done
2582
+ };
2583
+ };
2584
+ return createIterResultObject;
2585
+ }
2586
+ var iteratorCreateProxy;
2587
+ var hasRequiredIteratorCreateProxy;
2588
+ function requireIteratorCreateProxy() {
2589
+ if (hasRequiredIteratorCreateProxy) return iteratorCreateProxy;
2590
+ hasRequiredIteratorCreateProxy = 1;
2591
+ var call = requireFunctionCall();
2592
+ var create = requireObjectCreate();
2593
+ var createNonEnumerableProperty2 = requireCreateNonEnumerableProperty();
2594
+ var defineBuiltIns2 = requireDefineBuiltIns();
2595
+ var wellKnownSymbol2 = requireWellKnownSymbol();
2596
+ var InternalStateModule = requireInternalState();
2597
+ var getMethod2 = requireGetMethod();
2598
+ var IteratorPrototype = requireIteratorsCore().IteratorPrototype;
2599
+ var createIterResultObject2 = requireCreateIterResultObject();
2600
+ var iteratorClose2 = requireIteratorClose();
2601
+ var TO_STRING_TAG = wellKnownSymbol2("toStringTag");
2602
+ var ITERATOR_HELPER = "IteratorHelper";
2603
+ var WRAP_FOR_VALID_ITERATOR = "WrapForValidIterator";
2604
+ var setInternalState = InternalStateModule.set;
2605
+ var createIteratorProxyPrototype = function(IS_ITERATOR) {
2606
+ var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);
2607
+ return defineBuiltIns2(create(IteratorPrototype), {
2608
+ next: function next() {
2609
+ var state = getInternalState(this);
2610
+ if (IS_ITERATOR) return state.nextHandler();
2611
+ if (state.done) return createIterResultObject2(void 0, true);
2612
+ try {
2613
+ var result = state.nextHandler();
2614
+ return state.returnHandlerResult ? result : createIterResultObject2(result, state.done);
2615
+ } catch (error) {
2616
+ state.done = true;
2617
+ throw error;
2618
+ }
2619
+ },
2620
+ "return": function() {
2621
+ var state = getInternalState(this);
2622
+ var iterator = state.iterator;
2623
+ state.done = true;
2624
+ if (IS_ITERATOR) {
2625
+ var returnMethod = getMethod2(iterator, "return");
2626
+ return returnMethod ? call(returnMethod, iterator) : createIterResultObject2(void 0, true);
2627
+ }
2628
+ if (state.inner) try {
2629
+ iteratorClose2(state.inner.iterator, "normal");
2630
+ } catch (error) {
2631
+ return iteratorClose2(iterator, "throw", error);
2632
+ }
2633
+ if (iterator) iteratorClose2(iterator, "normal");
2634
+ return createIterResultObject2(void 0, true);
2635
+ }
2636
+ });
2637
+ };
2638
+ var WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);
2639
+ var IteratorHelperPrototype = createIteratorProxyPrototype(false);
2640
+ createNonEnumerableProperty2(IteratorHelperPrototype, TO_STRING_TAG, "Iterator Helper");
2641
+ iteratorCreateProxy = function(nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {
2642
+ var IteratorProxy = function Iterator(record, state) {
2643
+ if (state) {
2644
+ state.iterator = record.iterator;
2645
+ state.next = record.next;
2646
+ } else state = record;
2647
+ state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;
2648
+ state.returnHandlerResult = !!RETURN_HANDLER_RESULT;
2649
+ state.nextHandler = nextHandler;
2650
+ state.counter = 0;
2651
+ state.done = false;
2652
+ setInternalState(this, state);
2653
+ };
2654
+ IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;
2655
+ return IteratorProxy;
2656
+ };
2657
+ return iteratorCreateProxy;
2658
+ }
2659
+ var callWithSafeIterationClosing;
2660
+ var hasRequiredCallWithSafeIterationClosing;
2661
+ function requireCallWithSafeIterationClosing() {
2662
+ if (hasRequiredCallWithSafeIterationClosing) return callWithSafeIterationClosing;
2663
+ hasRequiredCallWithSafeIterationClosing = 1;
2664
+ var anObject2 = requireAnObject();
2665
+ var iteratorClose2 = requireIteratorClose();
2666
+ callWithSafeIterationClosing = function(iterator, fn2, value, ENTRIES) {
2667
+ try {
2668
+ return ENTRIES ? fn2(anObject2(value)[0], value[1]) : fn2(value);
2669
+ } catch (error) {
2670
+ iteratorClose2(iterator, "throw", error);
2671
+ }
2672
+ };
2673
+ return callWithSafeIterationClosing;
2674
+ }
2675
+ var iteratorMap;
2676
+ var hasRequiredIteratorMap;
2677
+ function requireIteratorMap() {
2678
+ if (hasRequiredIteratorMap) return iteratorMap;
2679
+ hasRequiredIteratorMap = 1;
2680
+ var call = requireFunctionCall();
2681
+ var aCallable2 = requireACallable();
2682
+ var anObject2 = requireAnObject();
2683
+ var getIteratorDirect2 = requireGetIteratorDirect();
2684
+ var createIteratorProxy = requireIteratorCreateProxy();
2685
+ var callWithSafeIterationClosing2 = requireCallWithSafeIterationClosing();
2686
+ var IteratorProxy = createIteratorProxy(function() {
2687
+ var iterator = this.iterator;
2688
+ var result = anObject2(call(this.next, iterator));
2689
+ var done = this.done = !!result.done;
2690
+ if (!done) return callWithSafeIterationClosing2(iterator, this.mapper, [result.value, this.counter++], true);
2691
+ });
2692
+ iteratorMap = function map(mapper) {
2693
+ anObject2(this);
2694
+ aCallable2(mapper);
2695
+ return new IteratorProxy(getIteratorDirect2(this), {
2696
+ mapper
2697
+ });
2698
+ };
2699
+ return iteratorMap;
2700
+ }
2701
+ var hasRequiredEs_iterator_map;
2702
+ function requireEs_iterator_map() {
2703
+ if (hasRequiredEs_iterator_map) return es_iterator_map;
2704
+ hasRequiredEs_iterator_map = 1;
2705
+ var $ = require_export();
2706
+ var map = requireIteratorMap();
2707
+ var IS_PURE = requireIsPure();
2708
+ $({
2709
+ target: "Iterator",
2710
+ proto: true,
2711
+ real: true,
2712
+ forced: IS_PURE
2713
+ }, {
2714
+ map
2715
+ });
2716
+ return es_iterator_map;
2717
+ }
2718
+ requireEs_iterator_map();
1999
2719
  var _isKeyable;
2000
2720
  var hasRequired_isKeyable;
2001
2721
  function require_isKeyable() {
@@ -2806,24 +3526,6 @@ function require_equalObjects() {
2806
3526
  return _equalObjects;
2807
3527
  }
2808
3528
  var es_arrayBuffer_detached = {};
2809
- var defineBuiltInAccessor;
2810
- var hasRequiredDefineBuiltInAccessor;
2811
- function requireDefineBuiltInAccessor() {
2812
- if (hasRequiredDefineBuiltInAccessor) return defineBuiltInAccessor;
2813
- hasRequiredDefineBuiltInAccessor = 1;
2814
- var makeBuiltIn2 = requireMakeBuiltIn();
2815
- var defineProperty = requireObjectDefineProperty();
2816
- defineBuiltInAccessor = function(target, name, descriptor) {
2817
- if (descriptor.get) makeBuiltIn2(descriptor.get, name, {
2818
- getter: true
2819
- });
2820
- if (descriptor.set) makeBuiltIn2(descriptor.set, name, {
2821
- setter: true
2822
- });
2823
- return defineProperty.f(target, name, descriptor);
2824
- };
2825
- return defineBuiltInAccessor;
2826
- }
2827
3529
  var arrayBufferBasicDetection;
2828
3530
  var hasRequiredArrayBufferBasicDetection;
2829
3531
  function requireArrayBufferBasicDetection() {
@@ -2854,11 +3556,11 @@ function requireArrayBufferByteLength() {
2854
3556
  hasRequiredArrayBufferByteLength = 1;
2855
3557
  var globalThis2 = requireGlobalThis();
2856
3558
  var uncurryThisAccessor = requireFunctionUncurryThisAccessor();
2857
- var classof = requireClassofRaw();
3559
+ var classof2 = requireClassofRaw();
2858
3560
  var ArrayBuffer2 = globalThis2.ArrayBuffer;
2859
3561
  var TypeError2 = globalThis2.TypeError;
2860
3562
  arrayBufferByteLength = ArrayBuffer2 && uncurryThisAccessor(ArrayBuffer2.prototype, "byteLength", "get") || function(O) {
2861
- if (classof(O) !== "ArrayBuffer") throw new TypeError2("ArrayBuffer expected");
3563
+ if (classof2(O) !== "ArrayBuffer") throw new TypeError2("ArrayBuffer expected");
2862
3564
  return O.byteLength;
2863
3565
  };
2864
3566
  return arrayBufferByteLength;
@@ -2940,7 +3642,7 @@ function requireEnvironment() {
2940
3642
  hasRequiredEnvironment = 1;
2941
3643
  var globalThis2 = requireGlobalThis();
2942
3644
  var userAgent = requireEnvironmentUserAgent();
2943
- var classof = requireClassofRaw();
3645
+ var classof2 = requireClassofRaw();
2944
3646
  var userAgentStartsWith = function(string) {
2945
3647
  return userAgent.slice(0, string.length) === string;
2946
3648
  };
@@ -2951,7 +3653,7 @@ function requireEnvironment() {
2951
3653
  if (userAgentStartsWith("Node.js/")) return "NODE";
2952
3654
  if (globalThis2.Bun && typeof Bun.version == "string") return "BUN";
2953
3655
  if (globalThis2.Deno && typeof Deno.version == "object") return "DENO";
2954
- if (classof(globalThis2.process) === "process") return "NODE";
3656
+ if (classof2(globalThis2.process) === "process") return "NODE";
2955
3657
  if (globalThis2.window && globalThis2.document) return "BROWSER";
2956
3658
  return "REST";
2957
3659
  }();
@@ -3283,15 +3985,46 @@ function requireIsEqual() {
3283
3985
  }
3284
3986
  var isEqualExports = requireIsEqual();
3285
3987
  const isEqual$1 = /* @__PURE__ */ getDefaultExportFromCjs(isEqualExports);
3286
- function itemEquals(item1, item2, compareAttribute) {
3287
- if (!logic.isSet(item1) || !logic.isSet(item2)) {
3288
- return false;
3289
- }
3290
- if (item1 === item2) {
3291
- return true;
3292
- }
3293
- return item1[compareAttribute] === item2[compareAttribute];
3294
- }
3988
+ var es_iterator_find = {};
3989
+ var hasRequiredEs_iterator_find;
3990
+ function requireEs_iterator_find() {
3991
+ if (hasRequiredEs_iterator_find) return es_iterator_find;
3992
+ hasRequiredEs_iterator_find = 1;
3993
+ var $ = require_export();
3994
+ var iterate2 = requireIterate();
3995
+ var aCallable2 = requireACallable();
3996
+ var anObject2 = requireAnObject();
3997
+ var getIteratorDirect2 = requireGetIteratorDirect();
3998
+ $({
3999
+ target: "Iterator",
4000
+ proto: true,
4001
+ real: true
4002
+ }, {
4003
+ find: function find(predicate) {
4004
+ anObject2(this);
4005
+ aCallable2(predicate);
4006
+ var record = getIteratorDirect2(this);
4007
+ var counter = 0;
4008
+ return iterate2(record, function(value, stop) {
4009
+ if (predicate(value, counter++)) return stop(value);
4010
+ }, {
4011
+ IS_RECORD: true,
4012
+ INTERRUPTED: true
4013
+ }).result;
4014
+ }
4015
+ });
4016
+ return es_iterator_find;
4017
+ }
4018
+ requireEs_iterator_find();
4019
+ function itemEquals(item1, item2, compareAttribute) {
4020
+ if (!logic.isSet(item1) || !logic.isSet(item2)) {
4021
+ return false;
4022
+ }
4023
+ if (item1 === item2) {
4024
+ return true;
4025
+ }
4026
+ return item1[compareAttribute] === item2[compareAttribute];
4027
+ }
3295
4028
  function includeItem(item, itemList, compareAttribute) {
3296
4029
  if (!logic.isSet(item) || !logic.isSet(itemList)) {
3297
4030
  return false;
@@ -3901,7 +4634,7 @@ const _hoisted_10$4 = {
3901
4634
  class: "modal__shelf"
3902
4635
  };
3903
4636
  const _hoisted_11$3 = ["aria-label"];
3904
- function _sfc_render$V(_ctx, _cache, $props, $setup, $data, $options) {
4637
+ function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
3905
4638
  const _component_f_icon = vue.resolveComponent("f-icon");
3906
4639
  return _ctx.isOpen ? (vue.openBlock(), vue.createElementBlock("div", {
3907
4640
  key: 0,
@@ -3931,7 +4664,7 @@ function _sfc_render$V(_ctx, _cache, $props, $setup, $data, $options) {
3931
4664
  onFocus: _cache[2] || (_cache[2] = (...args) => _ctx.onFocusLast && _ctx.onFocusLast(...args))
3932
4665
  }, null, 32)])])], 2)])], 32)])], 10, _hoisted_1$T)) : vue.createCommentVNode("", true);
3933
4666
  }
3934
- const FModal = /* @__PURE__ */ _export_sfc(_sfc_main$19, [["render", _sfc_render$V]]);
4667
+ const FModal = /* @__PURE__ */ _export_sfc(_sfc_main$19, [["render", _sfc_render$Q]]);
3935
4668
  function prepareButtonList(src, buttonOrder = config.buttonOrder) {
3936
4669
  const list = src.map((it) => {
3937
4670
  var _it$event, _ref, _it$reason, _it$type;
@@ -4072,7 +4805,7 @@ const _hoisted_3$v = {
4072
4805
  key: 0,
4073
4806
  class: "sr-only"
4074
4807
  };
4075
- function _sfc_render$U(_ctx, _cache, $props, $setup, $data, $options) {
4808
+ function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) {
4076
4809
  const _component_f_modal = vue.resolveComponent("f-modal");
4077
4810
  return vue.openBlock(), vue.createBlock(_component_f_modal, {
4078
4811
  fullscreen: _ctx.fullscreen,
@@ -4096,7 +4829,7 @@ function _sfc_render$U(_ctx, _cache, $props, $setup, $data, $options) {
4096
4829
  _: 3
4097
4830
  }, 8, ["fullscreen", "is-open", "aria-close-text", "size", "focus", "onClose"]);
4098
4831
  }
4099
- const FConfirmModal = /* @__PURE__ */ _export_sfc(_sfc_main$18, [["render", _sfc_render$U]]);
4832
+ const FConfirmModal = /* @__PURE__ */ _export_sfc(_sfc_main$18, [["render", _sfc_render$P]]);
4100
4833
  const GAP = ["1x", "2x", "3x", "4x", "5x", "6x", "7x", "8x"];
4101
4834
  const ALIGNMENT = ["top", "center", "bottom"];
4102
4835
  const FLOAT = ["left", "center", "right"];
@@ -4175,12 +4908,12 @@ const _sfc_main$17 = vue.defineComponent({
4175
4908
  }
4176
4909
  }
4177
4910
  });
4178
- function _sfc_render$T(_ctx, _cache, $props, $setup, $data, $options) {
4911
+ function _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) {
4179
4912
  return vue.openBlock(), vue.createElementBlock("div", {
4180
4913
  class: vue.normalizeClass(["iflex", _ctx.classList])
4181
4914
  }, [vue.renderSlot(_ctx.$slots, "default")], 2);
4182
4915
  }
4183
- const IFlex = /* @__PURE__ */ _export_sfc(_sfc_main$17, [["render", _sfc_render$T]]);
4916
+ const IFlex = /* @__PURE__ */ _export_sfc(_sfc_main$17, [["render", _sfc_render$O]]);
4184
4917
  const _sfc_main$16 = vue.defineComponent({
4185
4918
  name: "IFlexItem",
4186
4919
  inheritAttrs: true,
@@ -4228,12 +4961,12 @@ const _sfc_main$16 = vue.defineComponent({
4228
4961
  }
4229
4962
  }
4230
4963
  });
4231
- function _sfc_render$S(_ctx, _cache, $props, $setup, $data, $options) {
4964
+ function _sfc_render$N(_ctx, _cache, $props, $setup, $data, $options) {
4232
4965
  return vue.openBlock(), vue.createElementBlock("div", {
4233
4966
  class: vue.normalizeClass(["iflex__item", _ctx.classList])
4234
4967
  }, [vue.renderSlot(_ctx.$slots, "default")], 2);
4235
4968
  }
4236
- const IFlexItem = /* @__PURE__ */ _export_sfc(_sfc_main$16, [["render", _sfc_render$S]]);
4969
+ const IFlexItem = /* @__PURE__ */ _export_sfc(_sfc_main$16, [["render", _sfc_render$N]]);
4237
4970
  function focusError(item) {
4238
4971
  const element = document.querySelector(`#${item.id}`);
4239
4972
  if (!element) {
@@ -4312,7 +5045,7 @@ const _hoisted_4$p = ["onClick"];
4312
5045
  const _hoisted_5$k = {
4313
5046
  class: "error-list__link"
4314
5047
  };
4315
- function _sfc_render$R(_ctx, _cache, $props, $setup, $data, $options) {
5048
+ function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
4316
5049
  const _component_f_icon = vue.resolveComponent("f-icon");
4317
5050
  const _component_i_flex_item = vue.resolveComponent("i-flex-item");
4318
5051
  const _component_i_flex = vue.resolveComponent("i-flex");
@@ -4366,7 +5099,81 @@ function _sfc_render$R(_ctx, _cache, $props, $setup, $data, $options) {
4366
5099
  _: 3
4367
5100
  })]);
4368
5101
  }
4369
- const FErrorList = /* @__PURE__ */ _export_sfc(_sfc_main$15, [["render", _sfc_render$R]]);
5102
+ const FErrorList = /* @__PURE__ */ _export_sfc(_sfc_main$15, [["render", _sfc_render$M]]);
5103
+ var es_iterator_every = {};
5104
+ var hasRequiredEs_iterator_every;
5105
+ function requireEs_iterator_every() {
5106
+ if (hasRequiredEs_iterator_every) return es_iterator_every;
5107
+ hasRequiredEs_iterator_every = 1;
5108
+ var $ = require_export();
5109
+ var iterate2 = requireIterate();
5110
+ var aCallable2 = requireACallable();
5111
+ var anObject2 = requireAnObject();
5112
+ var getIteratorDirect2 = requireGetIteratorDirect();
5113
+ $({
5114
+ target: "Iterator",
5115
+ proto: true,
5116
+ real: true
5117
+ }, {
5118
+ every: function every(predicate) {
5119
+ anObject2(this);
5120
+ aCallable2(predicate);
5121
+ var record = getIteratorDirect2(this);
5122
+ var counter = 0;
5123
+ return !iterate2(record, function(value, stop) {
5124
+ if (!predicate(value, counter++)) return stop();
5125
+ }, {
5126
+ IS_RECORD: true,
5127
+ INTERRUPTED: true
5128
+ }).stopped;
5129
+ }
5130
+ });
5131
+ return es_iterator_every;
5132
+ }
5133
+ requireEs_iterator_every();
5134
+ var es_iterator_filter = {};
5135
+ var hasRequiredEs_iterator_filter;
5136
+ function requireEs_iterator_filter() {
5137
+ if (hasRequiredEs_iterator_filter) return es_iterator_filter;
5138
+ hasRequiredEs_iterator_filter = 1;
5139
+ var $ = require_export();
5140
+ var call = requireFunctionCall();
5141
+ var aCallable2 = requireACallable();
5142
+ var anObject2 = requireAnObject();
5143
+ var getIteratorDirect2 = requireGetIteratorDirect();
5144
+ var createIteratorProxy = requireIteratorCreateProxy();
5145
+ var callWithSafeIterationClosing2 = requireCallWithSafeIterationClosing();
5146
+ var IS_PURE = requireIsPure();
5147
+ var IteratorProxy = createIteratorProxy(function() {
5148
+ var iterator = this.iterator;
5149
+ var predicate = this.predicate;
5150
+ var next = this.next;
5151
+ var result, done, value;
5152
+ while (true) {
5153
+ result = anObject2(call(next, iterator));
5154
+ done = this.done = !!result.done;
5155
+ if (done) return;
5156
+ value = result.value;
5157
+ if (callWithSafeIterationClosing2(iterator, predicate, [value, this.counter++], true)) return value;
5158
+ }
5159
+ });
5160
+ $({
5161
+ target: "Iterator",
5162
+ proto: true,
5163
+ real: true,
5164
+ forced: IS_PURE
5165
+ }, {
5166
+ filter: function filter2(predicate) {
5167
+ anObject2(this);
5168
+ aCallable2(predicate);
5169
+ return new IteratorProxy(getIteratorDirect2(this), {
5170
+ predicate
5171
+ });
5172
+ }
5173
+ });
5174
+ return es_iterator_filter;
5175
+ }
5176
+ requireEs_iterator_filter();
4370
5177
  function cleanUpElements(vm) {
4371
5178
  return new Promise((resolve) => {
4372
5179
  window.setTimeout(() => {
@@ -4450,13 +5257,13 @@ const _sfc_main$14 = vue.defineComponent({
4450
5257
  }
4451
5258
  }
4452
5259
  });
4453
- function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
5260
+ function _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) {
4454
5261
  return vue.openBlock(), vue.createElementBlock("div", {
4455
5262
  onComponentValidity: _cache[0] || (_cache[0] = (...args) => _ctx.onComponentValidity && _ctx.onComponentValidity(...args)),
4456
5263
  onComponentUnmount: _cache[1] || (_cache[1] = (...args) => _ctx.onComponentUnmount && _ctx.onComponentUnmount(...args))
4457
5264
  }, [vue.renderSlot(_ctx.$slots, "default")], 32);
4458
5265
  }
4459
- const FValidationGroup = /* @__PURE__ */ _export_sfc(_sfc_main$14, [["render", _sfc_render$Q]]);
5266
+ const FValidationGroup = /* @__PURE__ */ _export_sfc(_sfc_main$14, [["render", _sfc_render$L]]);
4460
5267
  var FValidationFormAction = /* @__PURE__ */ ((FValidationFormAction2) => {
4461
5268
  FValidationFormAction2[FValidationFormAction2["CONTINUE"] = 0] = "CONTINUE";
4462
5269
  FValidationFormAction2[FValidationFormAction2["CANCEL"] = 1] = "CANCEL";
@@ -4608,7 +5415,7 @@ const _hoisted_2$B = {
4608
5415
  tabindex: "-1",
4609
5416
  role: "group"
4610
5417
  };
4611
- function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) {
5418
+ function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
4612
5419
  const _component_f_error_list = vue.resolveComponent("f-error-list");
4613
5420
  const _component_f_validation_group = vue.resolveComponent("f-validation-group");
4614
5421
  return vue.openBlock(), vue.createBlock(_component_f_validation_group, {
@@ -4634,7 +5441,7 @@ function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) {
4634
5441
  _: 3
4635
5442
  }, 8, ["modelValue"]);
4636
5443
  }
4637
- const FValidationForm = /* @__PURE__ */ _export_sfc(_sfc_main$13, [["render", _sfc_render$P]]);
5444
+ const FValidationForm = /* @__PURE__ */ _export_sfc(_sfc_main$13, [["render", _sfc_render$K]]);
4638
5445
  const _sfc_main$12 = vue.defineComponent({
4639
5446
  name: "FFormModal",
4640
5447
  components: {
@@ -4792,7 +5599,7 @@ const _hoisted_3$t = {
4792
5599
  key: 0,
4793
5600
  class: "sr-only"
4794
5601
  };
4795
- function _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) {
5602
+ function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
4796
5603
  const _component_f_validation_form = vue.resolveComponent("f-validation-form");
4797
5604
  const _component_f_modal = vue.resolveComponent("f-modal");
4798
5605
  return vue.openBlock(), vue.createBlock(_component_f_modal, {
@@ -4828,7 +5635,7 @@ function _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) {
4828
5635
  _: 3
4829
5636
  }, 8, ["data-test", "fullscreen", "is-open", "size", "aria-close-text", "onClose"]);
4830
5637
  }
4831
- const FFormModal = /* @__PURE__ */ _export_sfc(_sfc_main$12, [["render", _sfc_render$O]]);
5638
+ const FFormModal = /* @__PURE__ */ _export_sfc(_sfc_main$12, [["render", _sfc_render$J]]);
4832
5639
  async function confirmModal(callingInstance, texts) {
4833
5640
  const buttons = [{
4834
5641
  label: texts.confirm,
@@ -5201,12 +6008,12 @@ const _sfc_main$11 = vue.defineComponent({
5201
6008
  const _hoisted_1$O = {
5202
6009
  "data-test": "f-error-page"
5203
6010
  };
5204
- function _sfc_render$N(_ctx, _cache, $props, $setup, $data, $options) {
6011
+ function _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) {
5205
6012
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$O, _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", {
5206
6013
  href: "/"
5207
6014
  }, "Gå till startsidan", -1)]));
5208
6015
  }
5209
- const FErrorPage = /* @__PURE__ */ _export_sfc(_sfc_main$11, [["render", _sfc_render$N]]);
6016
+ const FErrorPage = /* @__PURE__ */ _export_sfc(_sfc_main$11, [["render", _sfc_render$I]]);
5210
6017
  const _sfc_main$10 = vue.defineComponent({
5211
6018
  name: "FErrorHandlingApp",
5212
6019
  props: {
@@ -5236,7 +6043,7 @@ const _sfc_main$10 = vue.defineComponent({
5236
6043
  });
5237
6044
  }
5238
6045
  });
5239
- function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
6046
+ function _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) {
5240
6047
  return vue.openBlock(), vue.createElementBlock("div", null, [_ctx.hasError ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.errorComponent), {
5241
6048
  key: 0,
5242
6049
  payload: _ctx.payload
@@ -5246,7 +6053,7 @@ function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
5246
6053
  key: 2
5247
6054
  })]);
5248
6055
  }
5249
- const FErrorHandlingApp = /* @__PURE__ */ _export_sfc(_sfc_main$10, [["render", _sfc_render$M]]);
6056
+ const FErrorHandlingApp = /* @__PURE__ */ _export_sfc(_sfc_main$10, [["render", _sfc_render$H]]);
5250
6057
  function isMonthBefore(date2, minDate) {
5251
6058
  return Boolean(minDate && date2.isBefore(minDate.startOfMonth()));
5252
6059
  }
@@ -5415,7 +6222,7 @@ const _hoisted_5$j = ["aria-disabled", "aria-live"];
5415
6222
  const _hoisted_6$f = {
5416
6223
  class: "sr-only"
5417
6224
  };
5418
- function _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) {
6225
+ function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
5419
6226
  const _component_f_icon = vue.resolveComponent("f-icon");
5420
6227
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$N, [vue.createElementVNode("div", _hoisted_2$z, vue.toDisplayString(_ctx.currentText), 1), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.createElementVNode("button", {
5421
6228
  ref: "previousButton",
@@ -5439,7 +6246,7 @@ function _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) {
5439
6246
  name: "arrow-right"
5440
6247
  }, null, 8, ["class"])], 8, _hoisted_5$j)]);
5441
6248
  }
5442
- const ICalendarNavbar = /* @__PURE__ */ _export_sfc(_sfc_main$$, [["render", _sfc_render$L]]);
6249
+ const ICalendarNavbar = /* @__PURE__ */ _export_sfc(_sfc_main$$, [["render", _sfc_render$G]]);
5443
6250
  function getDayStartOffset(days) {
5444
6251
  return days[0].weekDay - 1;
5445
6252
  }
@@ -5533,23 +6340,26 @@ const _hoisted_3$r = {
5533
6340
  };
5534
6341
  const _hoisted_4$n = ["title"];
5535
6342
  const _hoisted_5$i = {
6343
+ key: 1
6344
+ };
6345
+ const _hoisted_6$e = {
5536
6346
  key: 0,
5537
6347
  class: "calendar-month__cell calendar-month__cell--week-number",
5538
6348
  "aria-hidden": "true"
5539
6349
  };
5540
- const _hoisted_6$e = ["colspan"];
5541
6350
  const _hoisted_7$c = ["colspan"];
5542
- const _hoisted_8$7 = {
6351
+ const _hoisted_8$7 = ["colspan"];
6352
+ const _hoisted_9$5 = {
5543
6353
  key: 0,
5544
6354
  "aria-hidden": "true"
5545
6355
  };
5546
- const _hoisted_9$5 = ["colspan"];
5547
- const _hoisted_10$3 = {
6356
+ const _hoisted_10$3 = ["colspan"];
6357
+ const _hoisted_11$2 = {
5548
6358
  key: 1,
5549
6359
  "aria-hidden": "true"
5550
6360
  };
5551
- const _hoisted_11$2 = ["colspan"];
5552
- function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
6361
+ const _hoisted_12$2 = ["colspan"];
6362
+ function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
5553
6363
  return vue.openBlock(), vue.createElementBlock("table", {
5554
6364
  class: "calendar-month__table",
5555
6365
  role: "grid",
@@ -5574,19 +6384,20 @@ function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
5574
6384
  return vue.openBlock(), vue.createElementBlock("th", {
5575
6385
  key: weekday.name,
5576
6386
  scope: "col",
6387
+ "aria-hidden": "true",
5577
6388
  class: "calendar-month__header-cell"
5578
- }, [vue.createElementVNode("abbr", {
6389
+ }, [_ctx.showShortWeekdays ? (vue.openBlock(), vue.createElementBlock("abbr", {
6390
+ key: 0,
5579
6391
  title: weekday.name
5580
- }, vue.toDisplayString(_ctx.showShortWeekdays ? weekday.shortName : weekday.name), 9, _hoisted_4$n)]);
6392
+ }, vue.toDisplayString(weekday.shortName), 9, _hoisted_4$n)) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$i, vue.toDisplayString(weekday.name), 1))]);
5581
6393
  }), 128))])]), _cache[23] || (_cache[23] = vue.createTextVNode()), vue.createElementVNode("tbody", null, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.weeks, (week) => {
5582
6394
  return vue.openBlock(), vue.createElementBlock("tr", {
5583
6395
  key: week.week
5584
- }, [!_ctx.internalHideWeekNumbers ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_5$i, vue.toDisplayString(week.week), 1)) : vue.createCommentVNode("", true), _cache[17] || (_cache[17] = vue.createTextVNode()), _ctx.getDayStartOffset(week.days) ? (vue.openBlock(), vue.createElementBlock("td", {
6396
+ }, [!_ctx.internalHideWeekNumbers ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_6$e, vue.toDisplayString(week.week), 1)) : vue.createCommentVNode("", true), _cache[17] || (_cache[17] = vue.createTextVNode()), _ctx.getDayStartOffset(week.days) ? (vue.openBlock(), vue.createElementBlock("td", {
5585
6397
  key: 1,
5586
6398
  class: "calendar-month__cell",
5587
- colspan: _ctx.getDayStartOffset(week.days),
5588
- "aria-hidden": "true"
5589
- }, null, 8, _hoisted_6$e)) : vue.createCommentVNode("", true), _cache[18] || (_cache[18] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(week.days, (day) => {
6399
+ colspan: _ctx.getDayStartOffset(week.days)
6400
+ }, null, 8, _hoisted_7$c)) : vue.createCommentVNode("", true), _cache[18] || (_cache[18] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(week.days, (day) => {
5590
6401
  return vue.openBlock(), vue.createElementBlock("td", {
5591
6402
  key: day.toString(),
5592
6403
  class: "calendar-month__cell",
@@ -5600,18 +6411,18 @@ function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
5600
6411
  class: "calendar-month__cell",
5601
6412
  colspan: _ctx.getDayEndOffset(week.days),
5602
6413
  "aria-hidden": "true"
5603
- }, null, 8, _hoisted_7$c)) : vue.createCommentVNode("", true)]);
5604
- }), 128)), _cache[20] || (_cache[20] = vue.createTextVNode()), _ctx.weeks.length < 5 ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_8$7, [vue.createElementVNode("td", {
6414
+ }, null, 8, _hoisted_8$7)) : vue.createCommentVNode("", true)]);
6415
+ }), 128)), _cache[20] || (_cache[20] = vue.createTextVNode()), _ctx.weeks.length < 5 ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_9$5, [vue.createElementVNode("td", {
5605
6416
  class: "calendar-month__cell",
5606
6417
  colspan: _ctx.totalCols,
5607
6418
  "aria-hidden": "true"
5608
- }, null, 8, _hoisted_9$5)])) : vue.createCommentVNode("", true), _cache[21] || (_cache[21] = vue.createTextVNode()), _ctx.weeks.length < 6 ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_10$3, [vue.createElementVNode("td", {
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", {
5609
6420
  class: "calendar-month__cell",
5610
6421
  colspan: _ctx.totalCols,
5611
6422
  "aria-hidden": "true"
5612
- }, null, 8, _hoisted_11$2)])) : vue.createCommentVNode("", true)])], 40, _hoisted_1$M);
6423
+ }, null, 8, _hoisted_12$2)])) : vue.createCommentVNode("", true)])], 40, _hoisted_1$M);
5613
6424
  }
5614
- const ICalendarMonthGrid = /* @__PURE__ */ _export_sfc(_sfc_main$_, [["render", _sfc_render$K]]);
6425
+ const ICalendarMonthGrid = /* @__PURE__ */ _export_sfc(_sfc_main$_, [["render", _sfc_render$F]]);
5615
6426
  const DayStep = {
5616
6427
  ArrowRight: 1,
5617
6428
  ArrowLeft: -1,
@@ -5726,7 +6537,7 @@ const _sfc_main$Z = vue.defineComponent({
5726
6537
  }
5727
6538
  });
5728
6539
  const _hoisted_1$L = ["data-date", "tabindex", "onClick", "onKeydown"];
5729
- function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
6540
+ function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
5730
6541
  const _component_i_calendar_month_grid = vue.resolveComponent("i-calendar-month-grid");
5731
6542
  return vue.openBlock(), vue.createBlock(_component_i_calendar_month_grid, {
5732
6543
  value: _ctx.modelValue
@@ -5749,7 +6560,7 @@ function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
5749
6560
  _: 3
5750
6561
  }, 8, ["value"]);
5751
6562
  }
5752
- const ICalendarMonth = /* @__PURE__ */ _export_sfc(_sfc_main$Z, [["render", _sfc_render$J]]);
6563
+ const ICalendarMonth = /* @__PURE__ */ _export_sfc(_sfc_main$Z, [["render", _sfc_render$E]]);
5753
6564
  const _sfc_main$Y = vue.defineComponent({
5754
6565
  name: "FCalendar",
5755
6566
  components: {
@@ -5804,7 +6615,7 @@ const _sfc_main$Y = vue.defineComponent({
5804
6615
  const _hoisted_1$K = {
5805
6616
  class: "calendar__wrapper"
5806
6617
  };
5807
- function _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) {
6618
+ function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {
5808
6619
  const _component_i_calendar_navbar = vue.resolveComponent("i-calendar-navbar");
5809
6620
  const _component_i_calendar_month = vue.resolveComponent("i-calendar-month");
5810
6621
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$K, [vue.createVNode(_component_i_calendar_navbar, {
@@ -5830,7 +6641,7 @@ function _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) {
5830
6641
  _: 3
5831
6642
  }, 8, ["model-value", "min-date", "max-date", "tab-date", "onClick", "onUpdate:modelValue"])]);
5832
6643
  }
5833
- const FCalendar = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [["render", _sfc_render$I]]);
6644
+ const FCalendar = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [["render", _sfc_render$D]]);
5834
6645
  function getCalendarDaySrText(day, enabled, selected, t) {
5835
6646
  const parts = [];
5836
6647
  if (!enabled) {
@@ -5920,12 +6731,12 @@ const _hoisted_1$J = {
5920
6731
  const _hoisted_2$x = {
5921
6732
  class: "sr-only"
5922
6733
  };
5923
- function _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) {
6734
+ function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) {
5924
6735
  return vue.openBlock(), vue.createElementBlock("span", {
5925
6736
  class: vue.normalizeClass(_ctx.dayClasses)
5926
6737
  }, [vue.createElementVNode("span", _hoisted_1$J, vue.toDisplayString(_ctx.day.day), 1), _cache[0] || (_cache[0] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_2$x, vue.toDisplayString(_ctx.srText), 1)], 2);
5927
6738
  }
5928
- const FCalendarDay = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["render", _sfc_render$H]]);
6739
+ const FCalendarDay = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["render", _sfc_render$C]]);
5929
6740
  function useEventListener(target, event, callback) {
5930
6741
  vue.onMounted(() => {
5931
6742
  var _a;
@@ -5939,10 +6750,10 @@ function useEventListener(target, event, callback) {
5939
6750
  function useSlotUtils() {
5940
6751
  const $slots = vue.useSlots();
5941
6752
  return {
5942
- hasSlot(name) {
6753
+ hasSlot(...args) {
5943
6754
  return hasSlot({
5944
6755
  $slots
5945
- }, name);
6756
+ }, ...args);
5946
6757
  }
5947
6758
  };
5948
6759
  }
@@ -6102,7 +6913,7 @@ const _sfc_main$V = vue.defineComponent({
6102
6913
  }
6103
6914
  }
6104
6915
  });
6105
- function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
6916
+ function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
6106
6917
  return vue.openBlock(), vue.createBlock(vue.Transition, {
6107
6918
  onEnter: _ctx.enter,
6108
6919
  onAfterEnter: _ctx.afterEnter,
@@ -6114,7 +6925,7 @@ function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
6114
6925
  _: 3
6115
6926
  }, 8, ["onEnter", "onAfterEnter", "onLeave"]);
6116
6927
  }
6117
- const FExpand = /* @__PURE__ */ _export_sfc(_sfc_main$V, [["render", _sfc_render$G]]);
6928
+ const FExpand = /* @__PURE__ */ _export_sfc(_sfc_main$V, [["render", _sfc_render$B]]);
6118
6929
  function offset(page, el) {
6119
6930
  const rect = el.getBoundingClientRect();
6120
6931
  return {
@@ -6680,7 +7491,7 @@ const _sfc_main$U = vue.defineComponent({
6680
7491
  }
6681
7492
  }
6682
7493
  });
6683
- function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
7494
+ function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
6684
7495
  return _ctx.isOpen ? (vue.openBlock(), vue.createBlock(vue.Teleport, {
6685
7496
  key: 0,
6686
7497
  to: _ctx.teleportTarget,
@@ -6701,7 +7512,7 @@ function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
6701
7512
  placement: _ctx.placement
6702
7513
  })))], 544)], 16)], 8, ["to", "disabled"])) : vue.createCommentVNode("", true);
6703
7514
  }
6704
- const IPopup = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["render", _sfc_render$F]]);
7515
+ const IPopup = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["render", _sfc_render$A]]);
6705
7516
  function computeArrowOffset(placement, inputIconRect, wrapperRect) {
6706
7517
  switch (placement) {
6707
7518
  case Placement.A: {
@@ -6816,6 +7627,9 @@ const _sfc_main$T = vue.defineComponent({
6816
7627
  },
6817
7628
  errorStyle() {
6818
7629
  return `--i-popup-error-offset: ${this.arrowOffset}px`;
7630
+ },
7631
+ teleportTarget() {
7632
+ return config.teleportTarget;
6819
7633
  }
6820
7634
  },
6821
7635
  watch: {
@@ -6904,11 +7718,11 @@ const _hoisted_1$H = {
6904
7718
  ref: "wrapper",
6905
7719
  class: "popup-error__wrapper"
6906
7720
  };
6907
- function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
7721
+ function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
6908
7722
  const _component_f_icon = vue.resolveComponent("f-icon");
6909
7723
  return _ctx.isOpen ? (vue.openBlock(), vue.createBlock(vue.Teleport, {
6910
7724
  key: 0,
6911
- to: "body",
7725
+ to: _ctx.teleportTarget,
6912
7726
  disabled: _ctx.teleportDisabled
6913
7727
  }, [vue.createElementVNode("div", {
6914
7728
  ref: "popup",
@@ -6926,9 +7740,9 @@ function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
6926
7740
  }, [vue.createVNode(_component_f_icon, {
6927
7741
  name: "close",
6928
7742
  class: "button__icon"
6929
- })])], 6)], 512)], 2)], 8, ["disabled"])) : vue.createCommentVNode("", true);
7743
+ })])], 6)], 512)], 2)], 8, ["to", "disabled"])) : vue.createCommentVNode("", true);
6930
7744
  }
6931
- const IPopupError = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["render", _sfc_render$E]]);
7745
+ const IPopupError = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["render", _sfc_render$z]]);
6932
7746
  function numItems(itemHeight, availableHeight, verticalSpacing) {
6933
7747
  const itemsFit = Math.floor((availableHeight - verticalSpacing) / itemHeight);
6934
7748
  return Math.min(itemsFit, 7);
@@ -7459,7 +8273,7 @@ const _hoisted_5$h = {
7459
8273
  key: 0,
7460
8274
  class: "sr-only"
7461
8275
  };
7462
- function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {
8276
+ function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
7463
8277
  const _component_i_popup = vue.resolveComponent("i-popup");
7464
8278
  return vue.openBlock(), vue.createBlock(_component_i_popup, {
7465
8279
  class: "ipopupmenu",
@@ -7495,7 +8309,7 @@ function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {
7495
8309
  _: 1
7496
8310
  }, 8, ["is-open", "anchor", "focus-element", "onKeyup", "onKeydown"]);
7497
8311
  }
7498
- const IPopupMenu = /* @__PURE__ */ _export_sfc(_sfc_main$R, [["render", _sfc_render$D]]);
8312
+ const IPopupMenu = /* @__PURE__ */ _export_sfc(_sfc_main$R, [["render", _sfc_render$y]]);
7499
8313
  const ANIMATION_DURATION = 500;
7500
8314
  const NO_CSS_CLASSES = "";
7501
8315
  const CLOSED_CSS_CLASS_OPACITY = "animate-expand animate-expand--opacity";
@@ -7698,13 +8512,13 @@ const _hoisted_1$E = {
7698
8512
  ref: "content",
7699
8513
  "data-test": "animation-content"
7700
8514
  };
7701
- function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) {
8515
+ function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
7702
8516
  return vue.openBlock(), vue.createElementBlock("div", {
7703
8517
  class: vue.normalizeClass(_ctx.animationClasses),
7704
8518
  style: vue.normalizeStyle(_ctx.heightStyle)
7705
8519
  }, [_ctx.shouldVIf ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$E, [vue.renderSlot(_ctx.$slots, "default")], 512)), [[vue.vShow, _ctx.shouldVShow]]) : vue.createCommentVNode("", true)], 6);
7706
8520
  }
7707
- const IAnimateExpand = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [["render", _sfc_render$C]]);
8521
+ const IAnimateExpand = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [["render", _sfc_render$x]]);
7708
8522
  const _sfc_main$P = vue.defineComponent({
7709
8523
  name: "ISkipLink",
7710
8524
  mixins: [TranslationMixin],
@@ -7720,13 +8534,13 @@ const _sfc_main$P = vue.defineComponent({
7720
8534
  }
7721
8535
  });
7722
8536
  const _hoisted_1$D = ["href"];
7723
- function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
8537
+ function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {
7724
8538
  return vue.openBlock(), vue.createElementBlock("a", {
7725
8539
  class: "iskiplink",
7726
8540
  href: _ctx.href
7727
8541
  }, [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.skip-link.text", "Gå direkt till innehåll")), 1)])], 8, _hoisted_1$D);
7728
8542
  }
7729
- const ISkipLink = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["render", _sfc_render$B]]);
8543
+ const ISkipLink = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["render", _sfc_render$w]]);
7730
8544
  function filterOptions(options, filter2, selectMode) {
7731
8545
  if (logic.isEmpty(filter2) || selectMode) {
7732
8546
  return options;
@@ -8344,7 +9158,7 @@ const _hoisted_5$g = {
8344
9158
  const _hoisted_6$d = {
8345
9159
  class: "tooltip__footer"
8346
9160
  };
8347
- function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
9161
+ function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
8348
9162
  const _component_f_icon = vue.resolveComponent("f-icon");
8349
9163
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [(vue.openBlock(), vue.createBlock(vue.Teleport, {
8350
9164
  disabled: _ctx.iconTarget === null,
@@ -8377,7 +9191,7 @@ function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
8377
9191
  name: "close"
8378
9192
  })])])])) : vue.createCommentVNode("", true)], 16)], 64);
8379
9193
  }
8380
- const FTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["render", _sfc_render$A]]);
9194
+ const FTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["render", _sfc_render$v]]);
8381
9195
  function* labelClasses(options) {
8382
9196
  const {
8383
9197
  labelClass
@@ -8678,7 +9492,7 @@ const _hoisted_9$4 = {
8678
9492
  key: 0,
8679
9493
  class: "label__message label__message--error"
8680
9494
  };
8681
- function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
9495
+ function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
8682
9496
  const _component_f_icon = vue.resolveComponent("f-icon");
8683
9497
  return vue.openBlock(), vue.createElementBlock("fieldset", {
8684
9498
  id: _ctx.id,
@@ -8715,7 +9529,7 @@ function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
8715
9529
  class: vue.normalizeClass(_ctx.groupContentClass)
8716
9530
  }, [vue.renderSlot(_ctx.$slots, "default")], 2)], 42, _hoisted_1$z);
8717
9531
  }
8718
- const FFieldset = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["render", _sfc_render$z]]);
9532
+ const FFieldset = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["render", _sfc_render$u]]);
8719
9533
  const anyType$1 = [String, Object, Array, Number, Date, Boolean];
8720
9534
  const _sfc_main$K = vue.defineComponent({
8721
9535
  name: "FCheckboxField",
@@ -8913,7 +9727,7 @@ const _hoisted_4$i = {
8913
9727
  key: 0,
8914
9728
  class: "checkbox__details"
8915
9729
  };
8916
- function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
9730
+ function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
8917
9731
  return vue.openBlock(), vue.createElementBlock("div", {
8918
9732
  class: vue.normalizeClass(["checkbox", _ctx.disabledClass]),
8919
9733
  onValidity: _cache[2] || (_cache[2] = (...args) => _ctx.onValidity && _ctx.onValidity(...args))
@@ -8943,7 +9757,38 @@ function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
8943
9757
  _: 3
8944
9758
  }, 8, ["onEnter", "onAfterEnter", "onLeave"])) : vue.createCommentVNode("", true)], 64)) : vue.createCommentVNode("", true)], 10, _hoisted_2$q)], 34);
8945
9759
  }
8946
- const FCheckboxField = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["render", _sfc_render$y]]);
9760
+ const FCheckboxField = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["render", _sfc_render$t]]);
9761
+ var es_iterator_some = {};
9762
+ var hasRequiredEs_iterator_some;
9763
+ function requireEs_iterator_some() {
9764
+ if (hasRequiredEs_iterator_some) return es_iterator_some;
9765
+ hasRequiredEs_iterator_some = 1;
9766
+ var $ = require_export();
9767
+ var iterate2 = requireIterate();
9768
+ var aCallable2 = requireACallable();
9769
+ var anObject2 = requireAnObject();
9770
+ var getIteratorDirect2 = requireGetIteratorDirect();
9771
+ $({
9772
+ target: "Iterator",
9773
+ proto: true,
9774
+ real: true
9775
+ }, {
9776
+ some: function some(predicate) {
9777
+ anObject2(this);
9778
+ aCallable2(predicate);
9779
+ var record = getIteratorDirect2(this);
9780
+ var counter = 0;
9781
+ return iterate2(record, function(value, stop) {
9782
+ if (predicate(value, counter++)) return stop();
9783
+ }, {
9784
+ IS_RECORD: true,
9785
+ INTERRUPTED: true
9786
+ }).stopped;
9787
+ }
9788
+ });
9789
+ return es_iterator_some;
9790
+ }
9791
+ requireEs_iterator_some();
8947
9792
  function isContextMenuTextItem(value) {
8948
9793
  return typeof value.key === "string";
8949
9794
  }
@@ -9168,7 +10013,7 @@ const _hoisted_5$e = {
9168
10013
  key: 0,
9169
10014
  class: "contextmenu__separator"
9170
10015
  };
9171
- function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
10016
+ function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
9172
10017
  const _component_f_icon = vue.resolveComponent("f-icon");
9173
10018
  const _component_i_popup = vue.resolveComponent("i-popup");
9174
10019
  return vue.openBlock(), vue.createBlock(_component_i_popup, {
@@ -9208,7 +10053,7 @@ function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
9208
10053
  _: 1
9209
10054
  }, 8, ["is-open", "anchor", "focus-element"]);
9210
10055
  }
9211
- const FContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["render", _sfc_render$x]]);
10056
+ const FContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["render", _sfc_render$s]]);
9212
10057
  var Operation = /* @__PURE__ */ ((Operation2) => {
9213
10058
  Operation2[Operation2["ADD"] = 0] = "ADD";
9214
10059
  Operation2[Operation2["DELETE"] = 1] = "DELETE";
@@ -9216,30 +10061,14 @@ var Operation = /* @__PURE__ */ ((Operation2) => {
9216
10061
  Operation2[Operation2["NONE"] = 3] = "NONE";
9217
10062
  return Operation2;
9218
10063
  })(Operation || {});
9219
- const _sfc_main$I = vue.defineComponent({
9220
- name: "FCrudDataset",
9221
- components: {
9222
- FFormModal,
9223
- FConfirmModal,
9224
- FIcon
9225
- },
9226
- mixins: [TranslationMixin],
9227
- provide() {
9228
- return {
9229
- delete: (item) => {
9230
- this.deleteItem(item);
9231
- },
9232
- modify: (item) => {
9233
- this.updateItem(item);
9234
- },
9235
- registerCallbackAfterItemAdd: (callback) => {
9236
- this.callbackAfterItemAdd = callback;
9237
- },
9238
- registerCallbackBeforeItemDelete: (callback) => {
9239
- this.callbackBeforeItemDelete = callback;
9240
- }
9241
- };
9242
- },
10064
+ const _hoisted_1$w = {
10065
+ class: "crud-dataset"
10066
+ };
10067
+ const _hoisted_2$o = {
10068
+ key: 0
10069
+ };
10070
+ const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
10071
+ __name: "FCrudDataset",
9243
10072
  props: {
9244
10073
  /**
9245
10074
  * The list of items that should be deleted, modified or added to.
@@ -9323,25 +10152,24 @@ const _sfc_main$I = vue.defineComponent({
9323
10152
  }
9324
10153
  },
9325
10154
  emits: ["created", "deleted", "updated", "update:modelValue"],
9326
- data() {
9327
- return {
9328
- result: [],
9329
- Operation,
9330
- operation: Operation.NONE,
9331
- item: null,
9332
- originalItemToUpdate: null,
9333
- isFormModalOpen: false,
9334
- isConfirmModalOpen: false,
9335
- callbackAfterItemAdd() {
9336
- },
9337
- callbackBeforeItemDelete() {
9338
- }
9339
- };
9340
- },
9341
- computed: {
9342
- formModalButtons() {
9343
- const confirmButtonText = this.operation === Operation.ADD ? this.$t("fkui.crud-dataset.modal.confirm.add", "Lägg till") : this.$t("fkui.crud-dataset.modal.confirm.modify", "Spara");
9344
- const cancelButtonText = this.operation === Operation.ADD ? this.$t("fkui.crud-dataset.modal.cancel.add", "Avbryt") : this.$t("fkui.crud-dataset.modal.cancel.modify", "Avbryt");
10155
+ setup(__props, {
10156
+ emit: __emit
10157
+ }) {
10158
+ const $t2 = useTranslate();
10159
+ const slots = vue.useSlots();
10160
+ const result = vue.ref([]);
10161
+ const operation = vue.ref(Operation.NONE);
10162
+ const item = vue.ref(null);
10163
+ const originalItemToUpdate = vue.ref(null);
10164
+ const isFormModalOpen = vue.ref(false);
10165
+ const isConfirmModalOpen = vue.ref(false);
10166
+ const callbackAfterItemAdd = vue.ref(() => ({}));
10167
+ const callbackBeforeItemDelete = vue.ref(() => ({}));
10168
+ const props = __props;
10169
+ const emit = __emit;
10170
+ const formModalButtons = vue.computed(() => {
10171
+ const confirmButtonText = operation.value === Operation.ADD ? $t2("fkui.crud-dataset.modal.confirm.add", "Lägg till") : $t2("fkui.crud-dataset.modal.confirm.modify", "Spara");
10172
+ const cancelButtonText = operation.value === Operation.ADD ? $t2("fkui.crud-dataset.modal.cancel.add", "Avbryt") : $t2("fkui.crud-dataset.modal.cancel.modify", "Avbryt");
9345
10173
  return [{
9346
10174
  label: confirmButtonText,
9347
10175
  event: "confirm",
@@ -9353,175 +10181,168 @@ const _sfc_main$I = vue.defineComponent({
9353
10181
  type: "secondary",
9354
10182
  submitButton: false
9355
10183
  }];
9356
- },
9357
- confirmDeleteButtons() {
10184
+ });
10185
+ const confirmDeleteButtons = vue.computed(() => {
9358
10186
  return [{
9359
- label: this.$t("fkui.crud-dataset.modal.confirm.delete", "Ja, ta bort"),
10187
+ label: $t2("fkui.crud-dataset.modal.confirm.delete", "Ja, ta bort"),
9360
10188
  type: "primary",
9361
10189
  event: "confirm"
9362
10190
  }, {
9363
- label: this.$t("fkui.crud-dataset.modal.cancel.delete", "Nej, avbryt"),
10191
+ label: $t2("fkui.crud-dataset.modal.cancel.delete", "Nej, avbryt"),
9364
10192
  type: "secondary"
9365
10193
  }];
9366
- },
9367
- hasAddSlot() {
9368
- return Boolean(this.$slots.add);
9369
- },
9370
- hasDeleteSlot() {
9371
- return Boolean(this.$slots.delete);
9372
- },
9373
- hasModifySlot() {
9374
- return Boolean(this.$slots.modify);
9375
- },
9376
- formModalHeader() {
9377
- return this.operation === Operation.ADD ? this.addNewModalHeader : this.modifyModalHeader;
9378
- }
9379
- },
9380
- watch: {
9381
- modelValue: {
9382
- immediate: true,
9383
- deep: true,
9384
- handler(data) {
9385
- this.result = [...data];
10194
+ });
10195
+ const hasAddSlot = vue.computed(() => {
10196
+ return Boolean(slots.add);
10197
+ });
10198
+ const hasDeleteSlot = vue.computed(() => {
10199
+ return Boolean(slots.delete);
10200
+ });
10201
+ const hasModifySlot = vue.computed(() => {
10202
+ return Boolean(slots.modify);
10203
+ });
10204
+ const formModalHeader = vue.computed(() => {
10205
+ return operation.value === Operation.ADD ? props.addNewModalHeader : props.modifyModalHeader;
10206
+ });
10207
+ vue.provide("delete", deleteItem);
10208
+ vue.provide("modify", updateItem);
10209
+ vue.provide("registerCallbackAfterItemAdd", (callback) => {
10210
+ callbackAfterItemAdd.value = callback;
10211
+ });
10212
+ vue.provide("registerCallbackBeforeItemDelete", (callback) => {
10213
+ callbackBeforeItemDelete.value = callback;
10214
+ });
10215
+ vue.onMounted(() => {
10216
+ if (!hasAddSlot.value && !hasDeleteSlot.value && !hasModifySlot.value) {
10217
+ throw Error("At least one template of the following must be defined. #add, #delete or #modify");
9386
10218
  }
9387
- }
9388
- },
9389
- mounted() {
9390
- if (!this.hasAddSlot && !this.hasDeleteSlot && !this.hasModifySlot) {
9391
- throw Error("Atleast one template of the following must be defined. #add, #delete or #modify");
9392
- }
9393
- },
9394
- methods: {
9395
- createItem() {
9396
- if (!this.hasAddSlot) {
10219
+ });
10220
+ vue.watch(() => props.modelValue, (data) => {
10221
+ result.value = [...data];
10222
+ }, {
10223
+ immediate: true,
10224
+ deep: true
10225
+ });
10226
+ function createItem() {
10227
+ if (!hasAddSlot.value) {
9397
10228
  throw Error("No template is defined for #add");
9398
10229
  }
9399
- this.operation = Operation.ADD;
9400
- this.item = this.beforeCreate ? this.beforeCreate() : {};
9401
- this.isFormModalOpen = true;
9402
- },
9403
- deleteItem(item) {
9404
- if (!this.hasDeleteSlot) {
10230
+ operation.value = Operation.ADD;
10231
+ item.value = props.beforeCreate ? props.beforeCreate() : {};
10232
+ isFormModalOpen.value = true;
10233
+ }
10234
+ function deleteItem(current) {
10235
+ if (!hasDeleteSlot.value) {
9405
10236
  throw Error("No template is defined for #delete");
9406
10237
  }
9407
- this.operation = Operation.DELETE;
9408
- this.item = item;
9409
- this.isConfirmModalOpen = true;
9410
- },
9411
- onDeleteConfirm() {
9412
- if (!this.item) {
10238
+ operation.value = Operation.DELETE;
10239
+ item.value = current;
10240
+ isConfirmModalOpen.value = true;
10241
+ }
10242
+ function onDeleteConfirm() {
10243
+ if (!item.value) {
9413
10244
  return;
9414
10245
  }
9415
- this.callbackBeforeItemDelete(this.item);
9416
- this.result = this.result.filter((item) => item !== this.item);
9417
- this.$emit("deleted", this.item);
9418
- this.$emit("update:modelValue", this.result);
9419
- logic.alertScreenReader(this.$t("fkui.crud-dataset.aria-live.delete", "Raden har tagits bort"), {
10246
+ callbackBeforeItemDelete.value(item.value);
10247
+ result.value = result.value.filter((it) => it !== item.value);
10248
+ emit("deleted", item.value);
10249
+ emit("update:modelValue", result.value);
10250
+ logic.alertScreenReader($t2("fkui.crud-dataset.aria-live.delete", "Raden har tagits bort"), {
9420
10251
  assertive: true
9421
10252
  });
9422
- },
9423
- onDeleteClose(e) {
9424
- this.onModalClose();
9425
- if (e.reason === "close" && this.onCancel) {
9426
- this.onCancel();
10253
+ }
10254
+ function onDeleteClose(e) {
10255
+ onModalClose();
10256
+ if (e.reason === "close" && props.onCancel) {
10257
+ props.onCancel();
9427
10258
  }
9428
- },
9429
- onModalClose() {
9430
- this.isFormModalOpen = false;
9431
- this.isConfirmModalOpen = false;
9432
- },
9433
- onFormModalSubmit() {
9434
- if (!this.item) {
10259
+ }
10260
+ function onModalClose() {
10261
+ isFormModalOpen.value = false;
10262
+ isConfirmModalOpen.value = false;
10263
+ }
10264
+ function onFormModalSubmit() {
10265
+ if (!item.value) {
9435
10266
  return;
9436
10267
  }
9437
- if (this.operation === Operation.ADD) {
9438
- this.result.push(this.item);
9439
- this.$emit("created", this.item);
9440
- this.$emit("update:modelValue", this.result);
9441
- this.callbackAfterItemAdd(this.item);
9442
- logic.alertScreenReader(this.$t("fkui.crud-dataset.aria-live.add", "En rad har lagts till"), {
10268
+ if (operation.value === Operation.ADD) {
10269
+ result.value.push(item.value);
10270
+ emit("created", item.value);
10271
+ emit("update:modelValue", result.value);
10272
+ callbackAfterItemAdd.value(item.value);
10273
+ logic.alertScreenReader($t2("fkui.crud-dataset.aria-live.add", "En rad har lagts till"), {
9443
10274
  assertive: true
9444
10275
  });
9445
- } else if (this.operation === Operation.MODIFY) {
9446
- if (this.originalItemToUpdate) {
9447
- Object.assign(this.originalItemToUpdate, this.item);
10276
+ } else if (operation.value === Operation.MODIFY) {
10277
+ if (originalItemToUpdate.value) {
10278
+ Object.assign(originalItemToUpdate.value, item.value);
9448
10279
  } else {
9449
- this.originalItemToUpdate = this.item;
10280
+ originalItemToUpdate.value = item.value;
9450
10281
  }
9451
- this.$emit("updated", this.originalItemToUpdate);
9452
- this.$emit("update:modelValue", this.result);
9453
- logic.alertScreenReader(this.$t("fkui.crud-dataset.aria-live.modify", "Raden har ändrats"), {
10282
+ emit("updated", originalItemToUpdate.value);
10283
+ emit("update:modelValue", result.value);
10284
+ logic.alertScreenReader($t2("fkui.crud-dataset.aria-live.modify", "Raden har ändrats"), {
9454
10285
  assertive: true
9455
10286
  });
9456
10287
  }
9457
- this.isFormModalOpen = false;
9458
- },
9459
- updateItem(item) {
9460
- if (!this.hasModifySlot) {
10288
+ isFormModalOpen.value = false;
10289
+ }
10290
+ function updateItem(current) {
10291
+ if (!hasModifySlot.value) {
9461
10292
  throw Error("No template is defined for #modify");
9462
10293
  }
9463
- this.operation = Operation.MODIFY;
9464
- this.originalItemToUpdate = item;
9465
- this.item = logic.deepClone(item);
9466
- this.isFormModalOpen = true;
10294
+ operation.value = Operation.MODIFY;
10295
+ originalItemToUpdate.value = current;
10296
+ item.value = logic.deepClone(current);
10297
+ isFormModalOpen.value = true;
9467
10298
  }
10299
+ return (_ctx, _cache) => {
10300
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$w, [vue.renderSlot(_ctx.$slots, "default"), _cache[5] || (_cache[5] = vue.createTextVNode()), hasAddSlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$o, [vue.createElementVNode("button", {
10301
+ "data-test": "f-crud-dataset-add-button",
10302
+ type: "button",
10303
+ class: "button button--tertiary crud-dataset__add-button",
10304
+ onClick: _cache[0] || (_cache[0] = ($event) => createItem())
10305
+ }, [vue.createVNode(vue.unref(FIcon), {
10306
+ class: "button__icon",
10307
+ name: "plus"
10308
+ }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "add-button", {}, () => [vue.createTextVNode(vue.toDisplayString(vue.unref($t2)("fkui.crud-dataset.button.add", "Lägg till ny")), 1)])])])) : vue.createCommentVNode("", true), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createVNode(vue.unref(FFormModal), {
10309
+ "is-open": isFormModalOpen.value,
10310
+ "aria-close-text": vue.unref($t2)("fkui.crud-dataset.modal.close", "Stäng"),
10311
+ buttons: formModalButtons.value,
10312
+ "use-error-list": false,
10313
+ "before-submit": __props.beforeSubmit,
10314
+ "before-validation": __props.beforeValidation,
10315
+ "on-cancel": __props.onCancel,
10316
+ onClose: onModalClose,
10317
+ onCancel: __props.onCancel,
10318
+ onSubmit: onFormModalSubmit
10319
+ }, {
10320
+ header: vue.withCtx(() => [vue.createTextVNode(vue.toDisplayString(formModalHeader.value), 1)]),
10321
+ "input-text-fields": vue.withCtx(() => [operation.value === vue.unref(Operation).ADD ? vue.renderSlot(_ctx.$slots, "add", vue.normalizeProps(vue.mergeProps({
10322
+ key: 0
10323
+ }, {
10324
+ item: item.value
10325
+ }))) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), operation.value === vue.unref(Operation).MODIFY ? vue.renderSlot(_ctx.$slots, "modify", vue.normalizeProps(vue.mergeProps({
10326
+ key: 1
10327
+ }, {
10328
+ item: item.value
10329
+ }))) : vue.createCommentVNode("", true)]),
10330
+ _: 3
10331
+ }, 8, ["is-open", "aria-close-text", "buttons", "before-submit", "before-validation", "on-cancel", "onCancel"]), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createVNode(vue.unref(FConfirmModal), {
10332
+ "is-open": isConfirmModalOpen.value,
10333
+ buttons: confirmDeleteButtons.value,
10334
+ onConfirm: onDeleteConfirm,
10335
+ onClose: onDeleteClose
10336
+ }, {
10337
+ heading: vue.withCtx(() => [vue.createTextVNode(vue.toDisplayString(__props.deleteModalHeader), 1)]),
10338
+ content: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "delete", vue.normalizeProps(vue.guardReactiveProps({
10339
+ item: item.value
10340
+ })))]),
10341
+ _: 3
10342
+ }, 8, ["is-open", "buttons"])]);
10343
+ };
9468
10344
  }
9469
10345
  });
9470
- const _hoisted_1$w = {
9471
- class: "crud-dataset"
9472
- };
9473
- const _hoisted_2$o = {
9474
- key: 0
9475
- };
9476
- function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {
9477
- const _component_f_icon = vue.resolveComponent("f-icon");
9478
- const _component_f_form_modal = vue.resolveComponent("f-form-modal");
9479
- const _component_f_confirm_modal = vue.resolveComponent("f-confirm-modal");
9480
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$w, [vue.renderSlot(_ctx.$slots, "default"), _cache[5] || (_cache[5] = vue.createTextVNode()), _ctx.hasAddSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$o, [vue.createElementVNode("button", {
9481
- "data-test": "f-crud-dataset-add-button",
9482
- type: "button",
9483
- class: "button button--tertiary crud-dataset__add-button",
9484
- onClick: _cache[0] || (_cache[0] = ($event) => _ctx.createItem())
9485
- }, [vue.createVNode(_component_f_icon, {
9486
- class: "button__icon",
9487
- name: "plus"
9488
- }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "add-button", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.crud-dataset.button.add", "Lägg till ny")), 1)])])])) : vue.createCommentVNode("", true), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createVNode(_component_f_form_modal, {
9489
- "is-open": _ctx.isFormModalOpen,
9490
- "aria-close-text": _ctx.$t("fkui.crud-dataset.modal.close", "Stäng"),
9491
- buttons: _ctx.formModalButtons,
9492
- "use-error-list": false,
9493
- "before-submit": _ctx.beforeSubmit,
9494
- "before-validation": _ctx.beforeValidation,
9495
- "on-cancel": _ctx.onCancel,
9496
- onClose: _ctx.onModalClose,
9497
- onCancel: _ctx.onCancel,
9498
- onSubmit: _ctx.onFormModalSubmit
9499
- }, {
9500
- header: vue.withCtx(() => [vue.createTextVNode(vue.toDisplayString(_ctx.formModalHeader), 1)]),
9501
- "input-text-fields": vue.withCtx(() => [_ctx.operation === _ctx.Operation.ADD ? vue.renderSlot(_ctx.$slots, "add", vue.normalizeProps(vue.mergeProps({
9502
- key: 0
9503
- }, {
9504
- item: _ctx.item
9505
- }))) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), _ctx.operation === _ctx.Operation.MODIFY ? vue.renderSlot(_ctx.$slots, "modify", vue.normalizeProps(vue.mergeProps({
9506
- key: 1
9507
- }, {
9508
- item: _ctx.item
9509
- }))) : vue.createCommentVNode("", true)]),
9510
- _: 3
9511
- }, 8, ["is-open", "aria-close-text", "buttons", "before-submit", "before-validation", "on-cancel", "onClose", "onCancel", "onSubmit"]), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.createVNode(_component_f_confirm_modal, {
9512
- "is-open": _ctx.isConfirmModalOpen,
9513
- buttons: _ctx.confirmDeleteButtons,
9514
- onConfirm: _ctx.onDeleteConfirm,
9515
- onClose: _ctx.onDeleteClose
9516
- }, {
9517
- heading: vue.withCtx(() => [vue.createTextVNode(vue.toDisplayString(_ctx.deleteModalHeader), 1)]),
9518
- content: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "delete", vue.normalizeProps(vue.guardReactiveProps({
9519
- item: _ctx.item
9520
- })))]),
9521
- _: 3
9522
- }, 8, ["is-open", "buttons", "onConfirm", "onClose"])]);
9523
- }
9524
- const FCrudDataset = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["render", _sfc_render$w]]);
9525
10346
  function FCrudDatasetInjected() {
9526
10347
  return {
9527
10348
  delete: vue.inject("delete"),
@@ -9588,7 +10409,7 @@ const _hoisted_1$v = {
9588
10409
  key: 1,
9589
10410
  class: "sr-only"
9590
10411
  };
9591
- function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
10412
+ function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
9592
10413
  const _component_f_icon = vue.resolveComponent("f-icon");
9593
10414
  return vue.openBlock(), vue.createElementBlock("button", {
9594
10415
  type: "button",
@@ -9602,7 +10423,7 @@ function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
9602
10423
  key: 2
9603
10424
  }, () => [vue.createTextVNode(vue.toDisplayString(_ctx.buttonText), 1)]) : vue.createCommentVNode("", true)]);
9604
10425
  }
9605
- const FCrudButton = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["render", _sfc_render$v]]);
10426
+ const FCrudButton = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["render", _sfc_render$r]]);
9606
10427
  function ActivateItemInjected() {
9607
10428
  return {
9608
10429
  registerCallbackAfterItemAdd: vue.inject("registerCallbackAfterItemAdd", () => void 0),
@@ -9827,7 +10648,7 @@ const _sfc_main$G = vue.defineComponent({
9827
10648
  });
9828
10649
  }
9829
10650
  });
9830
- function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
10651
+ function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
9831
10652
  return _ctx.renderColumns && _ctx.visible ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tagName), vue.mergeProps({
9832
10653
  key: 0,
9833
10654
  class: _ctx.classes,
@@ -9839,7 +10660,7 @@ function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
9839
10660
  _: 3
9840
10661
  }, 16, ["class", "scope"])) : vue.createCommentVNode("", true);
9841
10662
  }
9842
- const FTableColumn = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["render", _sfc_render$u]]);
10663
+ const FTableColumn = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["render", _sfc_render$q]]);
9843
10664
  function FSortFilterDatasetInjected() {
9844
10665
  return {
9845
10666
  sort: vue.inject("sort", () => void 0),
@@ -9904,7 +10725,7 @@ const _hoisted_7$a = {
9904
10725
  key: 0,
9905
10726
  class: "label__message label__message--error"
9906
10727
  };
9907
- function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
10728
+ function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {
9908
10729
  const _component_f_icon = vue.resolveComponent("f-icon");
9909
10730
  return _ctx.$slots.tooltip ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$u, [_ctx.hasDefaultSlot ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$n, [vue.createElementVNode("label", {
9910
10731
  class: "label",
@@ -9931,7 +10752,7 @@ function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
9931
10752
  name: "error"
9932
10753
  }), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "error-message")])) : vue.createCommentVNode("", true)], 8, _hoisted_6$b));
9933
10754
  }
9934
- const FLabel = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["render", _sfc_render$t]]);
10755
+ const FLabel = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["render", _sfc_render$p]]);
9935
10756
  function resolveWidthClass$1(words, inline) {
9936
10757
  return inline ? void 0 : words.split(" ").map((word) => `i-width-${word}`).join(" ");
9937
10758
  }
@@ -10067,7 +10888,7 @@ const _sfc_main$E = vue.defineComponent({
10067
10888
  }
10068
10889
  });
10069
10890
  const _hoisted_1$t = ["id"];
10070
- function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
10891
+ function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {
10071
10892
  const _component_f_label = vue.resolveComponent("f-label");
10072
10893
  const _component_f_icon = vue.resolveComponent("f-icon");
10073
10894
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -10114,7 +10935,7 @@ function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
10114
10935
  name: "arrow-down"
10115
10936
  })], 2)], 34);
10116
10937
  }
10117
- const FSelectField = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["render", _sfc_render$s]]);
10938
+ const FSelectField = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["render", _sfc_render$o]]);
10118
10939
  function resolveWidthClass(words, inline) {
10119
10940
  return inline ? void 0 : words.split(" ").map((word) => `i-width-${word}`).join(" ");
10120
10941
  }
@@ -10519,7 +11340,7 @@ const _hoisted_7$9 = {
10519
11340
  key: 3,
10520
11341
  class: "text-field__append-inner"
10521
11342
  };
10522
- function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
11343
+ function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {
10523
11344
  const _component_f_label = vue.resolveComponent("f-label");
10524
11345
  const _component_f_icon = vue.resolveComponent("f-icon");
10525
11346
  const _component_i_popup_error = vue.resolveComponent("i-popup-error");
@@ -10602,7 +11423,7 @@ function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
10602
11423
  onClose: _ctx.onDropdownClose
10603
11424
  }, null, 8, ["id", "is-open", "options", "active-option", "active-option-id", "input-node", "onSelect", "onClose"])) : vue.createCommentVNode("", true)], 2);
10604
11425
  }
10605
- const FTextField = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["render", _sfc_render$r]]);
11426
+ const FTextField = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["render", _sfc_render$n]]);
10606
11427
  const _sfc_main$C = vue.defineComponent({
10607
11428
  name: "FEmailTextField",
10608
11429
  components: {
@@ -10722,7 +11543,7 @@ const _sfc_main$C = vue.defineComponent({
10722
11543
  const _hoisted_1$r = {
10723
11544
  key: 0
10724
11545
  };
10725
- function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
11546
+ function _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {
10726
11547
  const _component_f_text_field = vue.resolveComponent("f-text-field");
10727
11548
  return vue.openBlock(), vue.createElementBlock("div", null, [vue.createVNode(_component_f_text_field, vue.mergeProps({
10728
11549
  id: _ctx.id,
@@ -10752,7 +11573,7 @@ function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
10752
11573
  _: 3
10753
11574
  }, 8, ["modelValue", "maxlength", "onPaste"])) : vue.createCommentVNode("", true)]);
10754
11575
  }
10755
- const FEmailTextField = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$q]]);
11576
+ const FEmailTextField = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$m]]);
10756
11577
  const _sfc_main$B = vue.defineComponent({
10757
11578
  name: "FPhoneTextField",
10758
11579
  components: {
@@ -10853,7 +11674,7 @@ const _sfc_main$B = vue.defineComponent({
10853
11674
  }
10854
11675
  }
10855
11676
  });
10856
- function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {
11677
+ function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {
10857
11678
  const _component_f_text_field = vue.resolveComponent("f-text-field");
10858
11679
  return vue.openBlock(), vue.createElementBlock("div", null, [vue.createVNode(_component_f_text_field, vue.mergeProps({
10859
11680
  id: _ctx.id,
@@ -10880,7 +11701,7 @@ function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {
10880
11701
  _: 3
10881
11702
  }, 8, ["modelValue", "maxlength"])) : vue.createCommentVNode("", true)]);
10882
11703
  }
10883
- const FPhoneTextField = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["render", _sfc_render$p]]);
11704
+ const FPhoneTextField = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["render", _sfc_render$l]]);
10884
11705
  const _sfc_main$A = vue.defineComponent({
10885
11706
  name: "FCurrencyTextField",
10886
11707
  extends: FTextField,
@@ -10979,7 +11800,7 @@ const _sfc_main$z = vue.defineComponent({
10979
11800
  const _hoisted_1$q = {
10980
11801
  class: "sr-only"
10981
11802
  };
10982
- function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {
11803
+ function _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {
10983
11804
  const _component_f_icon = vue.resolveComponent("f-icon");
10984
11805
  const _component_f_text_field = vue.resolveComponent("f-text-field");
10985
11806
  return vue.openBlock(), vue.createElementBlock("div", null, [vue.createVNode(_component_f_text_field, vue.mergeProps({
@@ -11029,7 +11850,7 @@ function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {
11029
11850
  key: "1"
11030
11851
  } : void 0]), 1040, ["id", "maxlength", "model-value", "onChange", "onInput", "onBlur", "onUpdate"])]);
11031
11852
  }
11032
- const FSearchTextField = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["render", _sfc_render$o]]);
11853
+ const FSearchTextField = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["render", _sfc_render$k]]);
11033
11854
  const _sfc_main$y = vue.defineComponent({
11034
11855
  name: "FBankAccountNumberTextField",
11035
11856
  extends: FTextField,
@@ -11425,51 +12246,40 @@ function filter(list, filterAttributes, searchString) {
11425
12246
  const searchTerms = searchString.split(/\s+/).map((word) => word.toLocaleLowerCase());
11426
12247
  return list.filter((item) => includesAllSearchTerms(item, filterAttributes, searchTerms));
11427
12248
  }
11428
- const _sfc_main$p = vue.defineComponent({
11429
- name: "FSortFilterDataset",
11430
- components: {
11431
- FSelectField,
11432
- FTextField,
11433
- FIcon,
11434
- IFlex,
11435
- IFlexItem
11436
- },
11437
- mixins: [TranslationMixin],
11438
- provide() {
11439
- return {
11440
- sort: (attribute, ascending) => {
11441
- const foundAttribute = this.sortOrders.find((item) => item.attribute === attribute && item.ascending === ascending);
11442
- if (foundAttribute) {
11443
- this.sortAttribute = foundAttribute;
11444
- } else {
11445
- this.sortAttribute = {
11446
- attribute: "",
11447
- ascending: false
11448
- };
11449
- }
11450
- this.sortFilterData();
11451
- this.$emit("usedSortAttributes", this.sortAttribute);
11452
- },
11453
- registerCallbackOnSort: (callback) => {
11454
- this.tableCallbackOnSort = callback;
11455
- },
11456
- registerCallbackOnMount: (callback) => {
11457
- this.tableCallbackSortableColumns = callback;
11458
- }
11459
- };
11460
- },
11461
- props: {
11462
- /**
11463
- * The data that you wish to sort or filter.
11464
- */
11465
- data: {
11466
- type: Array,
11467
- required: true,
11468
- default: () => []
11469
- },
11470
- /**
11471
- * All the attributes you want to enable sorting for and the corresponding name to display in the dropdown.
11472
- * Structured as `{attributeName: "Name for dropdown", secondAttributeName: "Name for dropdown"}`
12249
+ const _hoisted_1$p = {
12250
+ class: "sort-filter-dataset"
12251
+ };
12252
+ const _hoisted_2$l = {
12253
+ class: "sort-filter-dataset__search"
12254
+ };
12255
+ const _hoisted_3$h = {
12256
+ class: "sr-only"
12257
+ };
12258
+ const _hoisted_4$e = ["title"];
12259
+ const _hoisted_5$b = {
12260
+ class: "sr-only"
12261
+ };
12262
+ const _hoisted_6$9 = {
12263
+ value: {
12264
+ attribute: "",
12265
+ ascending: false
12266
+ }
12267
+ };
12268
+ const _hoisted_7$8 = ["value"];
12269
+ const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
12270
+ __name: "FSortFilterDataset",
12271
+ props: {
12272
+ /**
12273
+ * The data that you wish to sort or filter.
12274
+ */
12275
+ data: {
12276
+ type: Array,
12277
+ required: true,
12278
+ default: () => []
12279
+ },
12280
+ /**
12281
+ * All the attributes you want to enable sorting for and the corresponding name to display in the dropdown.
12282
+ * Structured as `{attributeName: "Name for dropdown", secondAttributeName: "Name for dropdown"}`
11473
12283
  */
11474
12284
  sortableAttributes: {
11475
12285
  type: Object,
@@ -11506,7 +12316,7 @@ const _sfc_main$p = vue.defineComponent({
11506
12316
  placeholderFilter: {
11507
12317
  type: String,
11508
12318
  required: false,
11509
- default: TranslationMixin.methods.$t("fkui.sort-filter-dataset.placeholder.filter", "Sök")
12319
+ default: logic.TranslationService.provider.translate("fkui.sort-filter-dataset.placeholder.filter", "Sök")
11510
12320
  },
11511
12321
  /**
11512
12322
  * The order the data will be sorted by if defaultSortAttribute has been set.
@@ -11518,243 +12328,237 @@ const _sfc_main$p = vue.defineComponent({
11518
12328
  }
11519
12329
  },
11520
12330
  emits: ["datasetSorted", "usedSortAttributes"],
11521
- data() {
11522
- return {
11523
- searchString: "",
11524
- sortAttribute: {
11525
- attribute: "",
11526
- ascending: false
11527
- },
11528
- sortFilterResult: [],
11529
- tableCallbackOnSort: () => {
11530
- return;
11531
- },
11532
- tableCallbackSortableColumns: () => {
11533
- return;
11534
- }
12331
+ setup(__props, {
12332
+ emit: __emit
12333
+ }) {
12334
+ const $t2 = useTranslate();
12335
+ const searchString = vue.ref("");
12336
+ const sortAttribute = vue.ref({
12337
+ attribute: "",
12338
+ name: "",
12339
+ ascendingName: "",
12340
+ ascending: false,
12341
+ id: 0
12342
+ });
12343
+ const sortFilterResult = vue.ref([]);
12344
+ const debouncedFilterResultset = logic.debounce(filterResultset, 250);
12345
+ let tableCallbackOnSort = () => {
11535
12346
  };
11536
- },
11537
- computed: {
11538
- showClearButton() {
11539
- return this.searchString.length > 0;
11540
- },
11541
- sortOrders() {
12347
+ let tableCallbackSortableColumns = () => {
12348
+ };
12349
+ const props = __props;
12350
+ const emit = __emit;
12351
+ const showClearButton = vue.computed(() => {
12352
+ return searchString.value.length > 0;
12353
+ });
12354
+ const sortOrders = vue.computed(() => {
11542
12355
  const arr = [];
11543
12356
  let id = 0;
11544
- Object.keys(this.sortableAttributes).forEach((key) => {
12357
+ Object.keys(props.sortableAttributes).forEach((key) => {
11545
12358
  arr.push({
11546
12359
  attribute: key,
11547
- name: this.sortableAttributes[key],
11548
- ascendingName: this.$t("fkui.sort-filter-dataset.label.ascending", "stigande"),
12360
+ name: props.sortableAttributes[key],
12361
+ ascendingName: $t2("fkui.sort-filter-dataset.label.ascending", "stigande"),
11549
12362
  ascending: true,
11550
12363
  id: id++
11551
12364
  });
11552
12365
  arr.push({
11553
12366
  attribute: key,
11554
- name: this.sortableAttributes[key],
11555
- ascendingName: this.$t("fkui.sort-filter-dataset.label.descending", "fallande"),
12367
+ name: props.sortableAttributes[key],
12368
+ ascendingName: $t2("fkui.sort-filter-dataset.label.descending", "fallande"),
11556
12369
  ascending: false,
11557
12370
  id: id++
11558
12371
  });
11559
12372
  });
11560
12373
  return arr;
11561
- },
11562
- filterAttributes() {
11563
- return Object.keys(this.sortableAttributes);
11564
- }
11565
- },
11566
- watch: {
11567
- data: {
11568
- immediate: true,
11569
- deep: true,
11570
- handler: function() {
11571
- if (this.defaultSortAttribute !== "") {
11572
- const foundAttribute = this.sortOrders.find((item) => item.attribute === this.defaultSortAttribute && item.ascending === this.defaultSortAscending);
11573
- if (foundAttribute) {
11574
- this.sortAttribute = foundAttribute;
11575
- }
12374
+ });
12375
+ const filterAttributes = vue.computed(() => {
12376
+ return Object.keys(props.sortableAttributes);
12377
+ });
12378
+ vue.provide("sort", (attribute, ascending) => {
12379
+ const foundAttribute = sortOrders.value.find((item) => {
12380
+ return item.attribute === attribute && item.ascending === ascending;
12381
+ });
12382
+ if (foundAttribute) {
12383
+ sortAttribute.value = foundAttribute;
12384
+ } else {
12385
+ sortAttribute.value = {
12386
+ attribute: "",
12387
+ ascending: false
12388
+ };
12389
+ }
12390
+ sortFilterData();
12391
+ emit("usedSortAttributes", sortAttribute.value);
12392
+ });
12393
+ vue.provide("registerCallbackOnSort", (callback) => {
12394
+ tableCallbackOnSort = callback;
12395
+ });
12396
+ vue.provide("registerCallbackOnMount", (callback) => {
12397
+ tableCallbackSortableColumns = callback;
12398
+ });
12399
+ vue.onMounted(() => {
12400
+ tableCallbackSortableColumns(Object.keys(props.sortableAttributes));
12401
+ });
12402
+ vue.watch(() => props.data, () => {
12403
+ if (props.defaultSortAttribute !== "") {
12404
+ const foundAttribute = sortOrders.value.find((item) => {
12405
+ return item.attribute === props.defaultSortAttribute && item.ascending === props.defaultSortAscending;
12406
+ });
12407
+ if (foundAttribute) {
12408
+ sortAttribute.value = foundAttribute;
11576
12409
  }
11577
- this.sortFilterData();
11578
12410
  }
11579
- }
11580
- },
11581
- created() {
11582
- this.debouncedFilterResultset = logic.debounce(this.filterResultset, 250).bind(this);
11583
- },
11584
- mounted() {
11585
- this.tableCallbackSortableColumns(Object.keys(this.sortableAttributes));
11586
- },
11587
- methods: {
11588
- sortFilterData() {
11589
- const filteredData = filter(this.data, this.filterAttributes, this.searchString);
11590
- if (this.sortAttribute.attribute === "") {
11591
- this.sortFilterResult = filteredData;
12411
+ sortFilterData();
12412
+ }, {
12413
+ immediate: true,
12414
+ deep: true
12415
+ });
12416
+ function sortFilterData() {
12417
+ const filteredData = filter(props.data, filterAttributes.value, searchString.value);
12418
+ if (sortAttribute.value.attribute === "") {
12419
+ sortFilterResult.value = filteredData;
11592
12420
  } else {
11593
- this.sortFilterResult = sort([...filteredData], this.sortAttribute.attribute, this.sortAttribute.ascending);
12421
+ sortFilterResult.value = sort([...filteredData], sortAttribute.value.attribute, sortAttribute.value.ascending);
11594
12422
  }
11595
- this.$nextTick(() => {
11596
- this.tableCallbackOnSort(this.sortAttribute.attribute, this.sortAttribute.ascending);
12423
+ vue.nextTick(() => {
12424
+ tableCallbackOnSort(sortAttribute.value.attribute, sortAttribute.value.ascending);
11597
12425
  });
11598
- this.$emit("datasetSorted", this.sortFilterResult);
11599
- },
11600
- onChangeSortAttribute() {
11601
- this.sortFilterData();
11602
- this.$emit("usedSortAttributes", this.sortAttribute);
11603
- },
11604
- onSearchInput(event) {
11605
- this.searchString = event.target.value;
11606
- this.debouncedFilterResultset();
11607
- },
11608
- onClickClearSearch() {
11609
- this.searchString = "";
11610
- this.sortFilterData();
11611
- const input = this.$el.querySelector(".text-field--inline input");
12426
+ emit("datasetSorted", sortFilterResult.value);
12427
+ }
12428
+ function onChangeSortAttribute() {
12429
+ sortFilterData();
12430
+ emit("usedSortAttributes", sortAttribute.value);
12431
+ }
12432
+ function onSearchInput(event) {
12433
+ searchString.value = event.target.value;
12434
+ debouncedFilterResultset();
12435
+ }
12436
+ function onClickClearSearch() {
12437
+ searchString.value = "";
12438
+ sortFilterData();
12439
+ const input = vue.useTemplateRef("search-field").value;
11612
12440
  logic.focus(input);
11613
- },
11614
- debouncedFilterResultset() {
11615
- },
11616
- filterResultset() {
11617
- this.sortFilterData();
11618
- if (this.searchString === "") {
11619
- logic.alertScreenReader(this.$t("fkui.sort-filter-dataset.aria-live.empty", "Sök redigera Sök tom"));
12441
+ }
12442
+ function filterResultset() {
12443
+ sortFilterData();
12444
+ if (searchString.value === "") {
12445
+ logic.alertScreenReader($t2("fkui.sort-filter-dataset.aria-live.empty", "Sök redigera Sök tom"));
11620
12446
  } else {
11621
- const searchAriaLive = this.$t("fkui.sort-filter-dataset.aria-live.search", `Din sökning på "{{ search }}" gav {{ result }} träffar.`, {
11622
- result: this.sortFilterResult.length,
11623
- search: this.searchString
12447
+ const searchAriaLive = $t2("fkui.sort-filter-dataset.aria-live.search", `Din sökning på "{{ search }}" gav {{ result }} träffar.`, {
12448
+ result: sortFilterResult.value.length,
12449
+ search: searchString.value
11624
12450
  });
11625
12451
  logic.alertScreenReader(searchAriaLive);
11626
12452
  }
11627
12453
  }
11628
- }
11629
- });
11630
- const _hoisted_1$p = {
11631
- class: "sort-filter-dataset"
11632
- };
11633
- const _hoisted_2$l = {
11634
- class: "sort-filter-dataset__search"
11635
- };
11636
- const _hoisted_3$h = {
11637
- class: "sr-only"
11638
- };
11639
- const _hoisted_4$e = ["title"];
11640
- const _hoisted_5$b = {
11641
- class: "sr-only"
11642
- };
11643
- const _hoisted_6$9 = {
11644
- value: {
11645
- attribute: "",
11646
- ascending: false
11647
- }
11648
- };
11649
- const _hoisted_7$8 = ["value"];
11650
- function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {
11651
- const _component_i_flex_item = vue.resolveComponent("i-flex-item");
11652
- const _component_f_icon = vue.resolveComponent("f-icon");
11653
- const _component_f_text_field = vue.resolveComponent("f-text-field");
11654
- const _component_f_select_field = vue.resolveComponent("f-select-field");
11655
- const _component_i_flex = vue.resolveComponent("i-flex");
11656
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [vue.createVNode(_component_i_flex, {
11657
- collapse: "",
11658
- gap: "3x",
11659
- wrap: ""
11660
- }, {
11661
- default: vue.withCtx(() => [vue.createVNode(_component_i_flex_item, {
11662
- shrink: "",
11663
- align: "center"
11664
- }, {
11665
- default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "header", vue.normalizeProps(vue.guardReactiveProps({
11666
- slotClass: "sort-filter-dataset__toolbar__header"
11667
- })))]),
11668
- _: 3
11669
- }), _cache[9] || (_cache[9] = vue.createTextVNode()), vue.createVNode(_component_i_flex_item, {
11670
- grow: ""
11671
- }, {
11672
- default: vue.withCtx(() => [vue.createVNode(_component_i_flex, {
12454
+ return (_ctx, _cache) => {
12455
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$p, [vue.createVNode(vue.unref(IFlex), {
11673
12456
  collapse: "",
11674
- float: "right"
12457
+ gap: "3x",
12458
+ wrap: ""
11675
12459
  }, {
11676
- default: vue.withCtx(() => [_ctx.showFilter ? (vue.openBlock(), vue.createBlock(_component_i_flex_item, {
11677
- key: 0,
12460
+ default: vue.withCtx(() => [vue.createVNode(vue.unref(IFlexItem), {
11678
12461
  shrink: "",
11679
12462
  align: "center"
11680
12463
  }, {
11681
- default: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_2$l, [vue.createVNode(_component_f_icon, {
11682
- name: "search",
11683
- class: "sort-filter-dataset__search__magnify-icon"
11684
- }), _cache[4] || (_cache[4] = vue.createTextVNode()), vue.createVNode(_component_f_text_field, {
11685
- modelValue: _ctx.searchString,
11686
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.searchString = $event),
11687
- inline: "",
11688
- placeholder: _ctx.placeholderFilter,
11689
- maxlength: "64",
11690
- onInput: _ctx.onSearchInput
11691
- }, {
11692
- default: vue.withCtx(() => [vue.createElementVNode("span", _hoisted_3$h, vue.toDisplayString(_ctx.placeholderFilter), 1)]),
11693
- _: 1
11694
- }, 8, ["modelValue", "placeholder", "onInput"]), _cache[5] || (_cache[5] = vue.createTextVNode()), _ctx.showClearButton ? (vue.openBlock(), vue.createElementBlock("button", {
11695
- key: 0,
11696
- type: "button",
11697
- class: "button button--discrete sort-filter-dataset__search__close-icon",
11698
- title: _ctx.$t("fkui.sort-filter-dataset.clear.filter", "Rensa sökfält"),
11699
- onClick: _cache[1] || (_cache[1] = (...args) => _ctx.onClickClearSearch && _ctx.onClickClearSearch(...args))
11700
- }, [vue.createVNode(_component_f_icon, {
11701
- name: "close"
11702
- }), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_5$b, vue.toDisplayString(_ctx.$t("fkui.sort-filter-dataset.clear.filter", "Rensa sökfält")), 1)], 8, _hoisted_4$e)) : vue.createCommentVNode("", true)])]),
11703
- _: 1
11704
- })) : vue.createCommentVNode("", true), _cache[8] || (_cache[8] = vue.createTextVNode()), _ctx.showSort ? (vue.openBlock(), vue.createBlock(_component_i_flex_item, {
11705
- key: 1,
11706
- shrink: "",
11707
- align: "center"
12464
+ default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "header", vue.normalizeProps(vue.guardReactiveProps({
12465
+ slotClass: "sort-filter-dataset__toolbar__header"
12466
+ })))]),
12467
+ _: 3
12468
+ }), _cache[8] || (_cache[8] = vue.createTextVNode()), vue.createVNode(vue.unref(IFlexItem), {
12469
+ grow: ""
11708
12470
  }, {
11709
- default: vue.withCtx(() => [vue.createVNode(_component_f_select_field, {
11710
- modelValue: _ctx.sortAttribute,
11711
- "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => _ctx.sortAttribute = $event),
11712
- class: "sort-filter-dataset__sort",
11713
- inline: "",
11714
- onChange: _ctx.onChangeSortAttribute
12471
+ default: vue.withCtx(() => [vue.createVNode(vue.unref(IFlex), {
12472
+ collapse: "",
12473
+ float: "right"
11715
12474
  }, {
11716
- label: vue.withCtx(() => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.sort-filter-dataset.label.sort", "Sortera på")), 1)]),
11717
- default: vue.withCtx(() => [_cache[6] || (_cache[6] = vue.createTextVNode()), vue.createElementVNode("option", _hoisted_6$9, vue.toDisplayString(_ctx.$t("fkui.sort-filter-dataset.label.unsorted", "Välj")), 1), _cache[7] || (_cache[7] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.sortOrders, (sortOrder) => {
11718
- return vue.openBlock(), vue.createElementBlock("option", {
11719
- key: sortOrder.id,
11720
- value: sortOrder
11721
- }, vue.toDisplayString(sortOrder.name) + " (" + vue.toDisplayString(sortOrder.ascendingName) + ")\n ", 9, _hoisted_7$8);
11722
- }), 128))]),
12475
+ default: vue.withCtx(() => [__props.showFilter ? (vue.openBlock(), vue.createBlock(vue.unref(IFlexItem), {
12476
+ key: 0,
12477
+ shrink: "",
12478
+ align: "center"
12479
+ }, {
12480
+ default: vue.withCtx(() => [vue.createElementVNode("div", _hoisted_2$l, [vue.createVNode(vue.unref(FIcon), {
12481
+ name: "search",
12482
+ class: "sort-filter-dataset__search__magnify-icon"
12483
+ }), _cache[3] || (_cache[3] = vue.createTextVNode()), vue.createVNode(vue.unref(FTextField), {
12484
+ ref: "search-field",
12485
+ modelValue: searchString.value,
12486
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchString.value = $event),
12487
+ inline: "",
12488
+ placeholder: __props.placeholderFilter,
12489
+ maxlength: "64",
12490
+ onInput: onSearchInput
12491
+ }, {
12492
+ default: vue.withCtx(() => [vue.createElementVNode("span", _hoisted_3$h, vue.toDisplayString(__props.placeholderFilter), 1)]),
12493
+ _: 1
12494
+ }, 8, ["modelValue", "placeholder"]), _cache[4] || (_cache[4] = vue.createTextVNode()), showClearButton.value ? (vue.openBlock(), vue.createElementBlock("button", {
12495
+ key: 0,
12496
+ type: "button",
12497
+ class: "button button--discrete sort-filter-dataset__search__close-icon",
12498
+ title: vue.unref($t2)("fkui.sort-filter-dataset.clear.filter", "Rensa sökfält"),
12499
+ onClick: onClickClearSearch
12500
+ }, [vue.createVNode(vue.unref(FIcon), {
12501
+ name: "close"
12502
+ }), _cache[2] || (_cache[2] = vue.createTextVNode()), vue.createElementVNode("span", _hoisted_5$b, vue.toDisplayString(vue.unref($t2)("fkui.sort-filter-dataset.clear.filter", "Rensa sökfält")), 1)], 8, _hoisted_4$e)) : vue.createCommentVNode("", true)])]),
12503
+ _: 1
12504
+ })) : vue.createCommentVNode("", true), _cache[7] || (_cache[7] = vue.createTextVNode()), __props.showSort ? (vue.openBlock(), vue.createBlock(vue.unref(IFlexItem), {
12505
+ key: 1,
12506
+ shrink: "",
12507
+ align: "center"
12508
+ }, {
12509
+ default: vue.withCtx(() => [vue.createVNode(vue.unref(FSelectField), {
12510
+ modelValue: sortAttribute.value,
12511
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => sortAttribute.value = $event),
12512
+ class: "sort-filter-dataset__sort",
12513
+ inline: "",
12514
+ onChange: onChangeSortAttribute
12515
+ }, {
12516
+ label: vue.withCtx(() => [vue.createTextVNode(vue.toDisplayString(vue.unref($t2)("fkui.sort-filter-dataset.label.sort", "Sortera på")), 1)]),
12517
+ default: vue.withCtx(() => [_cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("option", _hoisted_6$9, vue.toDisplayString(vue.unref($t2)("fkui.sort-filter-dataset.label.unsorted", "Välj")), 1), _cache[6] || (_cache[6] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(sortOrders.value, (sortOrder) => {
12518
+ return vue.openBlock(), vue.createElementBlock("option", {
12519
+ key: sortOrder.id,
12520
+ value: sortOrder
12521
+ }, vue.toDisplayString(sortOrder.name) + " (" + vue.toDisplayString(sortOrder.ascendingName) + ")\n ", 9, _hoisted_7$8);
12522
+ }), 128))]),
12523
+ _: 1
12524
+ }, 8, ["modelValue"])]),
12525
+ _: 1
12526
+ })) : vue.createCommentVNode("", true)]),
11723
12527
  _: 1
11724
- }, 8, ["modelValue", "onChange"])]),
12528
+ })]),
11725
12529
  _: 1
11726
- })) : vue.createCommentVNode("", true)]),
11727
- _: 1
11728
- })]),
11729
- _: 1
11730
- })]),
11731
- _: 3
11732
- }), _cache[10] || (_cache[10] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.guardReactiveProps({
11733
- sortFilterResult: _ctx.sortFilterResult
11734
- })))]);
11735
- }
11736
- const FSortFilterDataset = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$n]]);
11737
- const _sfc_main$o = vue.defineComponent({
11738
- name: "FDataTable",
11739
- components: {
11740
- FIcon
11741
- },
11742
- mixins: [TranslationMixin],
11743
- provide() {
11744
- return {
11745
- addColumn: (column) => {
11746
- if (column.type === FTableColumnType.ACTION) {
11747
- throw new Error("Cannot use action column in FDataTable component");
11748
- }
11749
- this.columns = addColumn(this.columns, column);
11750
- },
11751
- setVisibilityColumn: (id, visible) => {
11752
- setVisibilityColumn(this.columns, id, visible);
11753
- },
11754
- textFieldTableMode: true
12530
+ })]),
12531
+ _: 3
12532
+ }), _cache[9] || (_cache[9] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.guardReactiveProps({
12533
+ sortFilterResult: sortFilterResult.value
12534
+ })))]);
11755
12535
  };
12536
+ }
12537
+ });
12538
+ const _hoisted_1$o = ["tabindex"];
12539
+ const _hoisted_2$k = {
12540
+ key: 0
12541
+ };
12542
+ const _hoisted_3$g = {
12543
+ class: "table__row"
12544
+ };
12545
+ const _hoisted_4$d = ["innerHTML"];
12546
+ const _hoisted_5$a = {
12547
+ key: 1,
12548
+ class: "table__column__description"
12549
+ };
12550
+ const _hoisted_6$8 = {
12551
+ key: 0
12552
+ };
12553
+ const _hoisted_7$7 = {
12554
+ key: 1
12555
+ };
12556
+ const _hoisted_8$5 = ["colspan"];
12557
+ const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
12558
+ ...{
12559
+ inheritAttrs: false
11756
12560
  },
11757
- inheritAttrs: false,
12561
+ __name: "FDataTable",
11758
12562
  props: {
11759
12563
  /**
11760
12564
  * The rows to be listed.
@@ -11797,67 +12601,80 @@ const _sfc_main$o = vue.defineComponent({
11797
12601
  }
11798
12602
  }
11799
12603
  },
11800
- setup(props) {
11801
- vue.provide("renderColumns", vue.computed(() => props.rows.length > 0));
11802
- return FSortFilterDatasetInjected();
11803
- },
11804
- data() {
11805
- return {
11806
- columns: []
11807
- };
11808
- },
11809
- computed: {
11810
- hasCaption() {
11811
- return hasSlot(this, "caption", {}, {
12604
+ setup(__props) {
12605
+ const $t2 = useTranslate();
12606
+ const {
12607
+ hasSlot: hasSlot2
12608
+ } = useSlotUtils();
12609
+ const {
12610
+ sort: sort2,
12611
+ registerCallbackOnSort,
12612
+ registerCallbackOnMount
12613
+ } = FSortFilterDatasetInjected();
12614
+ const columns = vue.ref([]);
12615
+ const props = __props;
12616
+ const hasCaption = vue.computed(() => {
12617
+ return hasSlot2("caption", {}, {
11812
12618
  stripClasses: []
11813
12619
  });
11814
- },
11815
- tableClasses() {
12620
+ });
12621
+ const tableClasses = vue.computed(() => {
11816
12622
  const classes = [];
11817
- if (this.striped) {
12623
+ if (props.striped) {
11818
12624
  classes.push("table--striped");
11819
12625
  }
11820
12626
  return classes;
11821
- },
11822
- isEmpty() {
11823
- return this.rows.length === 0;
11824
- },
11825
- visibleColumns() {
11826
- return this.columns.filter((col) => col.visible);
11827
- },
11828
- wrapperClasses() {
11829
- return tableScrollClasses(this.scroll);
11830
- },
11831
- tabindex() {
11832
- return this.scroll !== TableScroll.NONE ? 0 : void 0;
11833
- }
11834
- },
11835
- mounted() {
11836
- this.registerCallbackOnSort(this.callbackOnSort);
11837
- this.registerCallbackOnMount(this.callbackSortableColumns);
11838
- },
11839
- methods: {
11840
- rowKey(item) {
11841
- const key = item[this.keyAttribute];
12627
+ });
12628
+ const isEmpty = vue.computed(() => {
12629
+ return props.rows.length === 0;
12630
+ });
12631
+ const visibleColumns = vue.computed(() => {
12632
+ return columns.value.filter((col) => col.visible);
12633
+ });
12634
+ const wrapperClasses = vue.computed(() => {
12635
+ return tableScrollClasses(props.scroll);
12636
+ });
12637
+ const tabindex = vue.computed(() => {
12638
+ return props.scroll !== TableScroll.NONE ? 0 : void 0;
12639
+ });
12640
+ vue.provide("addColumn", (column) => {
12641
+ if (column.type === FTableColumnType.ACTION) {
12642
+ throw new Error("Cannot use action column in FDataTable component");
12643
+ }
12644
+ columns.value = addColumn(columns.value, column);
12645
+ });
12646
+ vue.provide("setVisibilityColumn", (id, visible) => {
12647
+ setVisibilityColumn(columns.value, id, visible);
12648
+ });
12649
+ vue.provide("textFieldTableMode", true);
12650
+ vue.provide("renderColumns", vue.computed(() => {
12651
+ return props.rows.length > 0;
12652
+ }));
12653
+ vue.onMounted(() => {
12654
+ registerCallbackOnSort(callbackOnSort);
12655
+ registerCallbackOnMount(callbackSortableColumns);
12656
+ });
12657
+ function rowKey(item) {
12658
+ const key = item[props.keyAttribute];
11842
12659
  if (typeof key === "undefined") {
11843
- throw new Error(`Key attribute [${this.keyAttribute}]' is missing in row`);
12660
+ throw new Error(`Key attribute [${props.keyAttribute}]' is missing in row`);
11844
12661
  }
11845
12662
  return String(key);
11846
- },
11847
- columnClasses(column) {
12663
+ }
12664
+ function columnClasses(column) {
11848
12665
  const classes = ["table__column", `table__column--${column.type}`, column.size];
11849
12666
  if (column.sortable) {
11850
12667
  classes.push("table__column--sortable");
11851
12668
  }
11852
12669
  return classes;
11853
- },
11854
- iconClasses(column) {
12670
+ }
12671
+ function iconClasses2(column) {
11855
12672
  return getSortableIconClasses(column);
11856
- },
11857
- iconName(column) {
12673
+ }
12674
+ function iconName(column) {
11858
12675
  return getSortableIconName(column);
11859
- },
11860
- onClickColumnHeader(column) {
12676
+ }
12677
+ function onClickColumnHeader(column) {
11861
12678
  if (!column.sortable) {
11862
12679
  return;
11863
12680
  }
@@ -11866,81 +12683,60 @@ const _sfc_main$o = vue.defineComponent({
11866
12683
  columnName = "";
11867
12684
  column.sort = FTableColumnSort.UNSORTED;
11868
12685
  }
11869
- this.sort(columnName, column.sort !== FTableColumnSort.ASCENDING);
11870
- },
11871
- callbackOnSort(columnName, ascending) {
11872
- updateSortOrder(this.columns, columnName, ascending);
11873
- },
11874
- callbackSortableColumns(columnNames) {
11875
- setSortableColumns(this.columns, columnNames);
11876
- },
11877
- escapeNewlines(value) {
12686
+ sort2(columnName, column.sort !== FTableColumnSort.ASCENDING);
12687
+ }
12688
+ function callbackOnSort(columnName, ascending) {
12689
+ updateSortOrder(columns.value, columnName, ascending);
12690
+ }
12691
+ function callbackSortableColumns(columnNames) {
12692
+ setSortableColumns(columns.value, columnNames);
12693
+ }
12694
+ function escapeNewlines(value) {
11878
12695
  return value.replace(/\n/g, "<br/>");
11879
12696
  }
12697
+ return (_ctx, _cache) => {
12698
+ return vue.openBlock(), vue.createElementBlock("div", {
12699
+ class: vue.normalizeClass(wrapperClasses.value)
12700
+ }, [vue.createElementVNode("table", vue.mergeProps({
12701
+ class: ["table", tableClasses.value],
12702
+ tabindex: tabindex.value
12703
+ }, _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) => {
12704
+ return vue.openBlock(), vue.createElementBlock("col", {
12705
+ key: column.id,
12706
+ class: vue.normalizeClass(column.size)
12707
+ }, null, 2);
12708
+ }), 128))]), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("thead", null, [vue.createElementVNode("tr", _hoisted_3$g, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(visibleColumns.value, (column) => {
12709
+ return vue.openBlock(), vue.createElementBlock("th", vue.mergeProps({
12710
+ key: column.id,
12711
+ scope: "col",
12712
+ class: columnClasses(column)
12713
+ }, vue.toHandlers(column.sortable ? {
12714
+ click: () => onClickColumnHeader(column)
12715
+ } : {}, true)), [vue.createElementVNode("span", {
12716
+ innerHTML: escapeNewlines(column.title)
12717
+ }, null, 8, _hoisted_4$d), _cache[0] || (_cache[0] = vue.createTextVNode()), column.sortable ? (vue.openBlock(), vue.createBlock(vue.unref(FIcon), {
12718
+ key: 0,
12719
+ class: vue.normalizeClass(iconClasses2(column)),
12720
+ name: iconName(column)
12721
+ }, null, 8, ["class", "name"])) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), column.description ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$a, vue.toDisplayString(column.description), 1)) : vue.createCommentVNode("", true)], 16);
12722
+ }), 128))])]), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createElementVNode("tbody", null, [isEmpty.value && columns.value.length === 0 ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_6$8, [vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.guardReactiveProps({
12723
+ row: {}
12724
+ })))])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), isEmpty.value ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_7$7, [vue.createElementVNode("td", {
12725
+ class: "table__column table__column--action",
12726
+ colspan: columns.value.length
12727
+ }, [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) => {
12728
+ return vue.openBlock(), vue.createElementBlock("tr", {
12729
+ key: rowKey(row),
12730
+ class: "table__row"
12731
+ }, [vue.renderSlot(_ctx.$slots, "default", vue.mergeProps({
12732
+ ref_for: true
12733
+ }, {
12734
+ row
12735
+ }))]);
12736
+ }), 128))])], 16, _hoisted_1$o)], 2);
12737
+ };
11880
12738
  }
11881
12739
  });
11882
- const _hoisted_1$o = ["tabindex"];
11883
- const _hoisted_2$k = {
11884
- key: 0
11885
- };
11886
- const _hoisted_3$g = {
11887
- class: "table__row"
11888
- };
11889
- const _hoisted_4$d = ["innerHTML"];
11890
- const _hoisted_5$a = {
11891
- key: 1,
11892
- class: "table__column__description"
11893
- };
11894
- const _hoisted_6$8 = {
11895
- key: 0
11896
- };
11897
- const _hoisted_7$7 = {
11898
- key: 1
11899
- };
11900
- const _hoisted_8$5 = ["colspan"];
11901
- function _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {
11902
- const _component_f_icon = vue.resolveComponent("f-icon");
11903
- return vue.openBlock(), vue.createElementBlock("div", {
11904
- class: vue.normalizeClass(_ctx.wrapperClasses)
11905
- }, [vue.createElementVNode("table", vue.mergeProps({
11906
- class: ["table", _ctx.tableClasses],
11907
- tabindex: _ctx.tabindex
11908
- }, _ctx.$attrs), [_ctx.hasCaption ? (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(_ctx.columns, (column) => {
11909
- return vue.openBlock(), vue.createElementBlock("col", {
11910
- key: column.id,
11911
- class: vue.normalizeClass(column.size)
11912
- }, null, 2);
11913
- }), 128))]), _cache[5] || (_cache[5] = vue.createTextVNode()), vue.createElementVNode("thead", null, [vue.createElementVNode("tr", _hoisted_3$g, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.visibleColumns, (column) => {
11914
- return vue.openBlock(), vue.createElementBlock("th", vue.mergeProps({
11915
- key: column.id,
11916
- scope: "col",
11917
- class: _ctx.columnClasses(column)
11918
- }, vue.toHandlers(column.sortable ? {
11919
- click: () => _ctx.onClickColumnHeader(column)
11920
- } : {}, true)), [vue.createElementVNode("span", {
11921
- innerHTML: _ctx.escapeNewlines(column.title)
11922
- }, null, 8, _hoisted_4$d), _cache[0] || (_cache[0] = vue.createTextVNode()), column.sortable ? (vue.openBlock(), vue.createBlock(_component_f_icon, {
11923
- key: 0,
11924
- class: vue.normalizeClass(_ctx.iconClasses(column)),
11925
- name: _ctx.iconName(column)
11926
- }, null, 8, ["class", "name"])) : vue.createCommentVNode("", true), _cache[1] || (_cache[1] = vue.createTextVNode()), column.description ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$a, vue.toDisplayString(column.description), 1)) : vue.createCommentVNode("", true)], 16);
11927
- }), 128))])]), _cache[6] || (_cache[6] = vue.createTextVNode()), vue.createElementVNode("tbody", null, [_ctx.isEmpty && _ctx.columns.length === 0 ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_6$8, [vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.guardReactiveProps({
11928
- row: {}
11929
- })))])) : vue.createCommentVNode("", true), _cache[2] || (_cache[2] = vue.createTextVNode()), _ctx.isEmpty ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_7$7, [vue.createElementVNode("td", {
11930
- class: "table__column table__column--action",
11931
- colspan: _ctx.columns.length
11932
- }, [vue.renderSlot(_ctx.$slots, "empty", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("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(_ctx.rows, (row) => {
11933
- return vue.openBlock(), vue.createElementBlock("tr", {
11934
- key: _ctx.rowKey(row),
11935
- class: "table__row"
11936
- }, [vue.renderSlot(_ctx.$slots, "default", vue.mergeProps({
11937
- ref_for: true
11938
- }, {
11939
- row
11940
- }))]);
11941
- }), 128))])], 16, _hoisted_1$o)], 2);
11942
- }
11943
- const FDataTable = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render$m]]);
11944
12740
  function isDayEnabled(day, config2) {
11945
12741
  return passesMinDate(day, config2.minDate) && passesMaxDate(day, config2.maxDate) && passesInvalidDates(day, config2.invalidDates) && passesInvalidWeekdays(day, config2.invalidWeekdays);
11946
12742
  }
@@ -12285,7 +13081,7 @@ const _hoisted_3$f = {
12285
13081
  const _hoisted_4$c = {
12286
13082
  class: "datepicker-field__close"
12287
13083
  };
12288
- function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {
13084
+ function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {
12289
13085
  const _component_f_icon = vue.resolveComponent("f-icon");
12290
13086
  const _component_f_text_field = vue.resolveComponent("f-text-field");
12291
13087
  const _component_f_calendar_day = vue.resolveComponent("f-calendar-day");
@@ -12355,7 +13151,7 @@ function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {
12355
13151
  "min-date": _ctx.minDate,
12356
13152
  "max-date": _ctx.maxDate,
12357
13153
  onClick: _ctx.onSelectCalendarDay,
12358
- onKeyup: vue.withKeys(vue.withModifiers(_ctx.onKeyupEsc, ["stop"]), ["esc", "native"])
13154
+ onKeyup: vue.withKeys(vue.withModifiers(_ctx.onKeyupEsc, ["stop"]), ["esc"])
12359
13155
  }, {
12360
13156
  default: vue.withCtx(({
12361
13157
  date: date2,
@@ -12381,7 +13177,7 @@ function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {
12381
13177
  _: 1
12382
13178
  }, 8, ["is-open", "anchor", "inline", "onOpen", "onClose"])], 512);
12383
13179
  }
12384
- const FDatepickerField = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["render", _sfc_render$l]]);
13180
+ const FDatepickerField = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["render", _sfc_render$j]]);
12385
13181
  function isDialogueTreeEndQuestion(value) {
12386
13182
  return Boolean(value.userData);
12387
13183
  }
@@ -12471,7 +13267,7 @@ const _hoisted_2$i = {
12471
13267
  class: "dialogue-tree__list"
12472
13268
  };
12473
13269
  const _hoisted_3$e = ["onClick"];
12474
- function _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {
13270
+ function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
12475
13271
  const _component_f_icon = vue.resolveComponent("f-icon");
12476
13272
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [_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) => {
12477
13273
  return vue.openBlock(), vue.createElementBlock("li", {
@@ -12491,7 +13287,7 @@ function _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {
12491
13287
  userData: _ctx.userData
12492
13288
  })))]);
12493
13289
  }
12494
- const FDialogueTree = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", _sfc_render$k]]);
13290
+ const FDialogueTree = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", _sfc_render$i]]);
12495
13291
  const _sfc_main$l = vue.defineComponent({
12496
13292
  name: "FExpandablePanel",
12497
13293
  components: {
@@ -12585,7 +13381,7 @@ const _hoisted_8$4 = {
12585
13381
  key: 0,
12586
13382
  class: "expandable-panel__outside"
12587
13383
  };
12588
- function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {
13384
+ function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {
12589
13385
  const _component_f_icon = vue.resolveComponent("f-icon");
12590
13386
  const _component_f_expand = vue.resolveComponent("f-expand");
12591
13387
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -12622,7 +13418,7 @@ function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {
12622
13418
  _: 3
12623
13419
  })], 2);
12624
13420
  }
12625
- const FExpandablePanel = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$j]]);
13421
+ const FExpandablePanel = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$h]]);
12626
13422
  const _sfc_main$k = vue.defineComponent({
12627
13423
  name: "FExpandableParagraph",
12628
13424
  components: {
@@ -12724,7 +13520,7 @@ const _hoisted_7$5 = {
12724
13520
  key: 0,
12725
13521
  class: "expandable-paragraph__separator"
12726
13522
  };
12727
- function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
13523
+ function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
12728
13524
  const _component_f_icon = vue.resolveComponent("f-icon");
12729
13525
  const _component_f_expand = vue.resolveComponent("f-expand");
12730
13526
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -12755,7 +13551,7 @@ function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
12755
13551
  _: 3
12756
13552
  })], 2);
12757
13553
  }
12758
- const FExpandableParagraph = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["render", _sfc_render$i]]);
13554
+ const FExpandableParagraph = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["render", _sfc_render$g]]);
12759
13555
  const DEFAULT_ICON = "file";
12760
13556
  const iconMap = {
12761
13557
  "image/*": "pic",
@@ -12863,7 +13659,7 @@ const _hoisted_7$4 = {
12863
13659
  key: 0,
12864
13660
  class: "file-item__change-info"
12865
13661
  };
12866
- function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {
13662
+ function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
12867
13663
  const _component_f_icon = vue.resolveComponent("f-icon");
12868
13664
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$j, [vue.createElementVNode("div", _hoisted_2$f, [vue.createElementVNode("a", vue.mergeProps({
12869
13665
  id: _ctx.id,
@@ -12876,7 +13672,7 @@ function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {
12876
13672
  class: "file-item__separator"
12877
13673
  }, null, -1))]);
12878
13674
  }
12879
- const FFileItem = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", _sfc_render$h]]);
13675
+ const FFileItem = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", _sfc_render$f]]);
12880
13676
  const _sfc_main$i = vue.defineComponent({
12881
13677
  name: "FFileSelector",
12882
13678
  components: {
@@ -12943,7 +13739,7 @@ const _hoisted_1$i = {
12943
13739
  };
12944
13740
  const _hoisted_2$e = ["id", "aria-labelledby", "aria-disabled"];
12945
13741
  const _hoisted_3$a = ["id", "for"];
12946
- function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
13742
+ function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
12947
13743
  const _component_f_icon = vue.resolveComponent("f-icon");
12948
13744
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$i, [vue.createElementVNode("input", vue.mergeProps({
12949
13745
  id: _ctx.id,
@@ -12964,32 +13760,41 @@ function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
12964
13760
  name: "paper-clip"
12965
13761
  }), _cache[1] || (_cache[1] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default")], 10, _hoisted_3$a)]);
12966
13762
  }
12967
- const FFileSelector = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["render", _sfc_render$g]]);
12968
- const keybindings = Object.fromEntries([["Up", focusTrAbove], ["Down", focusTrBelow], ["ArrowUp", focusTrAbove], ["ArrowDown", focusTrBelow], [" ", activateRow], ["Spacebar", activateRow]]);
12969
- function focusTrAbove(current) {
13763
+ const FFileSelector = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["render", _sfc_render$e]]);
13764
+ const keybindings = {
13765
+ Up: focusTrAbove,
13766
+ Down: focusTrBelow,
13767
+ ArrowUp: focusTrAbove,
13768
+ ArrowDown: focusTrBelow,
13769
+ " ": activateRow,
13770
+ Spacebar: activateRow
13771
+ };
13772
+ function focusTrAbove(table, current) {
13773
+ const tr = table.tr.value;
12970
13774
  if (current > 0) {
12971
- this.tr[current - 1].focus();
13775
+ tr[current - 1].focus();
12972
13776
  } else {
12973
- this.tr[this.tr.length - 1].focus();
13777
+ tr[tr.length - 1].focus();
12974
13778
  }
12975
13779
  }
12976
- function focusTrBelow(current) {
12977
- if (current < this.tr.length - 1) {
12978
- this.tr[current + 1].focus();
13780
+ function focusTrBelow(table, current) {
13781
+ const tr = table.tr.value;
13782
+ if (current < tr.length - 1) {
13783
+ tr[current + 1].focus();
12979
13784
  } else {
12980
- this.tr[0].focus();
13785
+ tr[0].focus();
12981
13786
  }
12982
13787
  }
12983
- function activateRow(current) {
12984
- const row = this.rows[current];
12985
- const element = this.tr[current];
12986
- this.activate(row, element);
13788
+ function activateRow(table, current) {
13789
+ const row = table.rows[current];
13790
+ const element = table.tr.value[current];
13791
+ table.activate(row, element);
12987
13792
  }
12988
- function onKeydown(event, current) {
13793
+ function onKeydown(table, event, current) {
12989
13794
  const fn2 = keybindings[event.key];
12990
13795
  if (fn2) {
12991
13796
  event.preventDefault();
12992
- fn2.call(this, current);
13797
+ fn2(table, current);
12993
13798
  }
12994
13799
  }
12995
13800
  function useExpandableTable(expandableAttribute, keyAttribute, describedby, emit, slots) {
@@ -13053,7 +13858,6 @@ function useExpandableTable(expandableAttribute, keyAttribute, describedby, emit
13053
13858
  return Boolean(expandableRows(row));
13054
13859
  }
13055
13860
  return {
13056
- expandedRows,
13057
13861
  isExpandableTable,
13058
13862
  hasExpandableSlot,
13059
13863
  toggleExpanded,
@@ -13065,32 +13869,76 @@ function useExpandableTable(expandableAttribute, keyAttribute, describedby, emit
13065
13869
  hasExpandableContent
13066
13870
  };
13067
13871
  }
13068
- function forceRepaintIE11(target) {
13069
- if (navigator.userAgent.includes("Trident")) {
13070
- target.style.display = "none";
13071
- target.offsetHeight;
13072
- target.style.removeProperty("display");
13073
- }
13074
- }
13075
- const _sfc_main$h = vue.defineComponent({
13076
- name: "FInteractiveTable",
13077
- components: {
13078
- FCheckboxField,
13079
- FIcon
13080
- },
13081
- mixins: [TranslationMixin],
13082
- provide() {
13083
- return {
13084
- addColumn: (column) => {
13085
- this.columns = addColumn(this.columns, column);
13086
- },
13087
- setVisibilityColumn: (id, visible) => {
13088
- setVisibilityColumn(this.columns, id, visible);
13089
- },
13090
- textFieldTableMode: true
13091
- };
13872
+ const _hoisted_1$h = ["role"];
13873
+ const _hoisted_2$d = {
13874
+ key: 0
13875
+ };
13876
+ const _hoisted_3$9 = {
13877
+ key: 0,
13878
+ class: "table__column--shrink"
13879
+ };
13880
+ const _hoisted_4$8 = {
13881
+ key: 1,
13882
+ class: "table__column--shrink"
13883
+ };
13884
+ const _hoisted_5$6 = {
13885
+ class: "table__row"
13886
+ };
13887
+ const _hoisted_6$4 = {
13888
+ key: 0,
13889
+ scope: "col"
13890
+ };
13891
+ const _hoisted_7$3 = {
13892
+ class: "sr-only"
13893
+ };
13894
+ const _hoisted_8$3 = {
13895
+ key: 1,
13896
+ scope: "col"
13897
+ };
13898
+ const _hoisted_9$3 = {
13899
+ class: "sr-only"
13900
+ };
13901
+ const _hoisted_10$2 = ["innerHTML"];
13902
+ const _hoisted_11$1 = {
13903
+ key: 1,
13904
+ class: "table__column__description"
13905
+ };
13906
+ const _hoisted_12$1 = ["aria-label", "aria-expanded", "aria-level", "aria-describedby", "onKeydown", "onClick"];
13907
+ const _hoisted_13 = {
13908
+ key: 0
13909
+ };
13910
+ const _hoisted_14 = {
13911
+ key: 0,
13912
+ class: "table__expand-icon"
13913
+ };
13914
+ const _hoisted_15 = {
13915
+ key: 1,
13916
+ class: "table__column--selectable"
13917
+ };
13918
+ const _hoisted_16 = {
13919
+ class: "table__input"
13920
+ };
13921
+ const _hoisted_17 = {
13922
+ key: 0,
13923
+ class: "sr-only"
13924
+ };
13925
+ const _hoisted_18 = {
13926
+ key: 0,
13927
+ class: "table__column--placeholder"
13928
+ };
13929
+ const _hoisted_19 = ["colspan"];
13930
+ const _hoisted_20 = {
13931
+ key: 0
13932
+ };
13933
+ const _hoisted_21 = {
13934
+ key: 1
13935
+ };
13936
+ const _hoisted_22 = ["colspan"];
13937
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
13938
+ ...{
13939
+ inheritAttrs: false
13092
13940
  },
13093
- inheritAttrs: false,
13941
+ __name: "FInteractiveTable",
13094
13942
  props: {
13095
13943
  /**
13096
13944
  * The rows to be listed.
@@ -13187,437 +14035,376 @@ const _sfc_main$h = vue.defineComponent({
13187
14035
  default: () => void 0
13188
14036
  }
13189
14037
  },
13190
- emits: [
13191
- "change",
13192
- "click",
13193
- "unselect",
13194
- "update:modelValue",
13195
- "update:active",
13196
- "select",
13197
- /**
13198
- * Emitted when row is expanded.
13199
- *
13200
- * @event expand
13201
- * @param row
13202
- * @type {ListItem}
13203
- */
13204
- "expand",
13205
- /**
13206
- * Emitted when row is collapsed.
13207
- *
13208
- * @event collapse
13209
- * @param row
13210
- * @type {ListItem}
13211
- */
13212
- "collapse"
13213
- ],
13214
- setup(props, context) {
13215
- vue.provide("renderColumns", vue.computed(() => props.rows.length > 0));
13216
- const sortFilterDatasetInjected = FSortFilterDatasetInjected();
13217
- const activateItemInjected = ActivateItemInjected();
13218
- const expandableTable = useExpandableTable(props.expandableAttribute, props.keyAttribute, props.expandableDescribedby, context.emit, context.slots);
13219
- return {
13220
- ...sortFilterDatasetInjected,
13221
- ...activateItemInjected,
13222
- ...expandableTable
13223
- };
13224
- },
13225
- data() {
13226
- return {
13227
- activeRow: void 0,
13228
- columns: [],
13229
- selectedRows: [],
13230
- tr: [],
13231
- tbodyKey: 0
13232
- };
13233
- },
13234
- computed: {
13235
- hasCaption() {
13236
- return hasSlot(this, "caption", {}, {
14038
+ emits: ["change", "click", "unselect", "update:modelValue", "update:active", "select", "expand", "collapse"],
14039
+ setup(__props, {
14040
+ emit: __emit
14041
+ }) {
14042
+ const $t2 = useTranslate();
14043
+ const slots = vue.useSlots();
14044
+ const {
14045
+ hasSlot: hasSlot2
14046
+ } = useSlotUtils();
14047
+ const {
14048
+ sort: sort2,
14049
+ registerCallbackOnSort,
14050
+ registerCallbackOnMount
14051
+ } = FSortFilterDatasetInjected();
14052
+ const {
14053
+ registerCallbackAfterItemAdd,
14054
+ registerCallbackBeforeItemDelete
14055
+ } = ActivateItemInjected();
14056
+ const activeRow = vue.ref(void 0);
14057
+ const columns = vue.ref([]);
14058
+ const selectedRows = vue.ref([]);
14059
+ const tr = vue.shallowRef([]);
14060
+ const tbodyKey = vue.ref(0);
14061
+ const props = __props;
14062
+ const emit = __emit;
14063
+ const expandableTable = useExpandableTable(props.expandableAttribute, props.keyAttribute, props.expandableDescribedby, emit, slots);
14064
+ const {
14065
+ isExpandableTable,
14066
+ hasExpandableSlot,
14067
+ toggleExpanded,
14068
+ isExpanded,
14069
+ rowAriaExpanded,
14070
+ expandableRowClasses,
14071
+ getExpandableDescribedby,
14072
+ expandableRows,
14073
+ hasExpandableContent
14074
+ } = expandableTable;
14075
+ const hasCaption = vue.computed(() => {
14076
+ return hasSlot2("caption", {}, {
13237
14077
  stripClasses: []
13238
14078
  });
13239
- },
13240
- hasCheckboxDescription() {
13241
- const firstRow = this.rows[0];
13242
- return hasSlot(this, "checkbox-description", {
14079
+ });
14080
+ const hasCheckboxDescription = vue.computed(() => {
14081
+ const firstRow = props.rows[0];
14082
+ return hasSlot2("checkbox-description", {
13243
14083
  row: firstRow
13244
14084
  });
13245
- },
13246
- isEmpty() {
13247
- return this.rows.length === 0;
13248
- },
13249
- visibleColumns() {
13250
- return this.columns.filter((col) => col.visible);
13251
- },
13252
- tableClasses() {
14085
+ });
14086
+ const isEmpty = vue.computed(() => {
14087
+ return props.rows.length === 0;
14088
+ });
14089
+ const visibleColumns = vue.computed(() => {
14090
+ return columns.value.filter((col) => col.visible);
14091
+ });
14092
+ const tableClasses = vue.computed(() => {
13253
14093
  const classes = [];
13254
- if (this.selectable) {
14094
+ if (props.selectable) {
13255
14095
  classes.push("table--selectable");
13256
14096
  }
13257
- if (this.hover) {
14097
+ if (props.hover) {
13258
14098
  classes.push("table--hover");
13259
14099
  }
13260
14100
  return classes;
13261
- },
13262
- tableRole() {
13263
- return this.isExpandableTable ? "treegrid" : "grid";
13264
- },
13265
- wrapperClasses() {
13266
- return tableScrollClasses(this.scroll);
13267
- },
13268
- nbOfColumns() {
13269
- let columnCount = this.visibleColumns.length;
13270
- if (this.selectable) {
14101
+ });
14102
+ const tableRole = vue.computed(() => {
14103
+ return isExpandableTable.value ? "treegrid" : "grid";
14104
+ });
14105
+ const wrapperClasses = vue.computed(() => {
14106
+ return tableScrollClasses(props.scroll);
14107
+ });
14108
+ const nbOfColumns = vue.computed(() => {
14109
+ let columnCount = visibleColumns.value.length;
14110
+ if (props.selectable) {
13271
14111
  columnCount++;
13272
14112
  }
13273
- if (this.isExpandableTable) {
14113
+ if (isExpandableTable.value) {
13274
14114
  columnCount++;
13275
14115
  }
13276
14116
  return columnCount;
13277
- }
13278
- },
13279
- watch: {
13280
- rows: {
13281
- immediate: true,
13282
- deep: true,
13283
- handler: function() {
13284
- if (this.modelValue) {
13285
- this.selectedRows = this.modelValue.filter((row) => {
13286
- return includeItem(row, this.rows, this.keyAttribute);
13287
- });
13288
- }
13289
- }
13290
- },
13291
- active: {
13292
- immediate: true,
13293
- handler: function() {
13294
- this.updateActiveRowFromVModel();
14117
+ });
14118
+ vue.provide("addColumn", (column) => {
14119
+ columns.value = addColumn(columns.value, column);
14120
+ });
14121
+ vue.provide("setVisibilityColumn", (id, visible) => {
14122
+ setVisibilityColumn(columns.value, id, visible);
14123
+ });
14124
+ vue.provide("textFieldTableMode", true);
14125
+ vue.provide("renderColumns", vue.computed(() => props.rows.length > 0));
14126
+ vue.watch(() => props.rows, () => {
14127
+ if (props.modelValue) {
14128
+ selectedRows.value = props.modelValue.filter((row) => {
14129
+ return includeItem(row, props.rows, props.keyAttribute);
14130
+ });
13295
14131
  }
13296
- },
13297
- showActive: {
14132
+ }, {
13298
14133
  immediate: true,
13299
- handler: function(val) {
13300
- if (!val) {
13301
- this.tbodyKey ^= 1;
13302
- }
13303
- }
13304
- }
13305
- },
13306
- updated() {
13307
- const tbodyElement = this.$refs["tbodyElement"];
13308
- const trElements = [].slice.call(tbodyElement.children);
13309
- const trInteractableElements = trElements.filter((tr) => {
13310
- return tr.tabIndex === 0;
14134
+ deep: true
13311
14135
  });
13312
- this.tr = trInteractableElements;
13313
- },
13314
- mounted() {
13315
- this.registerCallbackOnSort(this.callbackOnSort);
13316
- this.registerCallbackOnMount(this.callbackSortableColumns);
13317
- this.registerCallbackAfterItemAdd(this.callbackAfterItemAdd);
13318
- this.registerCallbackBeforeItemDelete(this.callbackBeforeItemDelete);
13319
- },
13320
- methods: {
13321
- isActive(row) {
13322
- if (!this.showActive) {
13323
- return false;
13324
- }
13325
- return itemEquals(row, this.activeRow, this.keyAttribute);
13326
- },
13327
- isSelected(row) {
13328
- return includeItem(row, this.selectedRows, this.keyAttribute);
13329
- },
13330
- onKeydownExpandable(event, index) {
13331
- if (event.key === " " || event.key === "Spacebar") {
13332
- event.preventDefault();
13333
- return;
13334
- }
13335
- onKeydown.call(this, event, index);
13336
- },
13337
- onKeydown(event, index) {
13338
- onKeydown.call(this, event, index);
13339
- },
13340
- onClick(event, row) {
13341
- const {
13342
- target
13343
- } = event;
13344
- const isRelevant = ["TD", "TH"].includes(target.nodeName);
13345
- if (isRelevant) {
13346
- const parent = target.parentElement;
13347
- this.activate(row, parent);
13348
- }
13349
- },
13350
- activate(row, tr) {
13351
- this.$emit("click", row);
13352
- if (this.isExpandableTable && this.hasExpandableContent(row)) {
13353
- this.toggleExpanded(row);
13354
- }
13355
- if (!itemEquals(row, this.activeRow, this.keyAttribute)) {
13356
- this.$emit("change", row);
13357
- this.setActiveRow(row);
13358
- if (tr) {
13359
- tr.focus();
13360
- const td = tr.children[0];
13361
- forceRepaintIE11(td);
13362
- }
14136
+ vue.watch(() => props.active, () => {
14137
+ updateActiveRowFromVModel();
14138
+ }, {
14139
+ immediate: true
14140
+ });
14141
+ vue.watch(() => props.showActive, (val) => {
14142
+ if (!val) {
14143
+ tbodyKey.value ^= 1;
13363
14144
  }
13364
- },
13365
- rowDescription(row) {
13366
- const slot = this.$slots["row-description"];
13367
- return renderSlotText(slot, {
13368
- row
14145
+ }, {
14146
+ immediate: true
14147
+ });
14148
+ function updateTr(tbodyElement) {
14149
+ const trElements = [].slice.call(tbodyElement.children);
14150
+ const trInteractableElements = trElements.filter((tr2) => {
14151
+ return tr2.tabIndex === 0;
13369
14152
  });
13370
- },
13371
- onSelect(row) {
13372
- if (includeItem(row, this.selectedRows, this.keyAttribute)) {
13373
- this.selectedRows = this.selectedRows.filter((i) => !itemEquals(i, row, this.keyAttribute));
13374
- this.$emit("unselect", row);
13375
- } else {
13376
- this.selectedRows.push(row);
13377
- this.$emit("select", row);
13378
- }
13379
- this.updateVModelWithSelectedRows();
13380
- this.$forceUpdate();
13381
- },
13382
- updateVModelWithSelectedRows() {
13383
- if (this.modelValue) {
13384
- this.$emit("update:modelValue", this.selectedRows);
13385
- }
13386
- },
13387
- rowClasses(row, index) {
13388
- const active = this.isActive(row) ? ["table__row--active"] : [];
13389
- const selected = this.isSelected(row) ? ["table__row--selected"] : [];
13390
- const isExpandableRow = this.isExpandableTable && this.hasExpandableContent(row);
13391
- const expandable = isExpandableRow ? ["table__row--expandable"] : [];
13392
- const expanded = this.isExpanded(row) ? ["table__row--expanded-border"] : [];
13393
- const striped = this.striped && index % 2 !== 0 ? ["table__row--striped"] : [];
13394
- return ["table__row", ...active, ...selected, ...striped, ...expandable, ...expanded];
13395
- },
13396
- rowKey(row) {
13397
- const key = row[this.keyAttribute];
13398
- if (typeof key === "undefined") {
13399
- throw new Error(`Key attribute [${this.keyAttribute}]' is missing in row`);
13400
- }
13401
- return String(key);
13402
- },
13403
- columnClasses(column) {
13404
- const sortable = column.sortable ? ["table__column--sortable"] : [];
13405
- return ["table__column", `table__column--${column.type}`, ...sortable, column.size];
13406
- },
13407
- iconClasses(column) {
13408
- return getSortableIconClasses(column);
13409
- },
13410
- iconName(column) {
13411
- return getSortableIconName(column);
13412
- },
13413
- onClickColumnHeader(column) {
13414
- if (!column.sortable) {
13415
- return;
13416
- }
13417
- let columnName = column.name;
13418
- if (column.sort === FTableColumnSort.DESCENDING) {
13419
- columnName = "";
13420
- column.sort = FTableColumnSort.UNSORTED;
13421
- }
13422
- this.sort(columnName, column.sort !== FTableColumnSort.ASCENDING);
13423
- },
13424
- callbackOnSort(columnName, ascending) {
13425
- updateSortOrder(this.columns, columnName, ascending);
13426
- },
13427
- callbackSortableColumns(columnNames) {
13428
- setSortableColumns(this.columns, columnNames);
13429
- },
13430
- callbackAfterItemAdd(item) {
13431
- this.activate(item, null);
13432
- },
13433
- callbackBeforeItemDelete(item) {
13434
- if (this.rows.length === 0) {
13435
- return;
14153
+ tr.value = trInteractableElements;
14154
+ }
14155
+ vue.onUpdated(() => {
14156
+ const tbodyElement = vue.useTemplateRef("tbodyElement");
14157
+ if (tbodyElement.value) {
14158
+ updateTr(tbodyElement.value);
13436
14159
  }
13437
- let targetIndex = this.rows.indexOf(item) - 1;
13438
- if (targetIndex < 0 && this.rows.length > 1) {
13439
- targetIndex = 1;
13440
- } else if (targetIndex < 0) {
13441
- targetIndex = 0;
14160
+ });
14161
+ vue.onMounted(() => {
14162
+ const tbodyElement = vue.useTemplateRef("tbodyElement");
14163
+ if (tbodyElement.value) {
14164
+ updateTr(tbodyElement.value);
14165
+ }
14166
+ registerCallbackOnSort(callbackOnSort);
14167
+ registerCallbackOnMount(callbackSortableColumns);
14168
+ registerCallbackAfterItemAdd(callbackAfterItemAdd);
14169
+ registerCallbackBeforeItemDelete(callbackBeforeItemDelete);
14170
+ });
14171
+ function forceRepaintIE11(target) {
14172
+ if (navigator.userAgent.includes("Trident")) {
14173
+ target.style.display = "none";
14174
+ target.offsetHeight;
14175
+ target.style.removeProperty("display");
13442
14176
  }
13443
- this.activate(this.rows[targetIndex], this.tr[targetIndex]);
13444
- },
13445
- escapeNewlines(value) {
13446
- return value.replace(/\n/g, "<br/>");
13447
- },
13448
- updateActiveRowFromVModel() {
13449
- if (this.active === void 0) {
13450
- this.setActiveRow(void 0);
13451
- } else if (!itemEquals(this.active, this.activeRow, this.keyAttribute)) {
13452
- this.setActiveRow(this.active);
14177
+ }
14178
+ function isActive(row) {
14179
+ if (!props.showActive) {
14180
+ return false;
13453
14181
  }
13454
- },
13455
- setActiveRow(row) {
13456
- this.activeRow = row;
13457
- this.$emit("update:active", this.activeRow);
14182
+ return itemEquals(row, activeRow.value, props.keyAttribute);
13458
14183
  }
13459
- }
13460
- });
13461
- const _hoisted_1$h = ["role"];
13462
- const _hoisted_2$d = {
13463
- key: 0
13464
- };
13465
- const _hoisted_3$9 = {
13466
- key: 0,
13467
- class: "table__column--shrink"
13468
- };
13469
- const _hoisted_4$8 = {
13470
- key: 1,
13471
- class: "table__column--shrink"
13472
- };
13473
- const _hoisted_5$6 = {
13474
- class: "table__row"
13475
- };
13476
- const _hoisted_6$4 = {
13477
- key: 0,
13478
- scope: "col"
13479
- };
13480
- const _hoisted_7$3 = {
13481
- class: "sr-only"
13482
- };
13483
- const _hoisted_8$3 = {
13484
- key: 1,
13485
- scope: "col"
13486
- };
13487
- const _hoisted_9$3 = {
13488
- class: "sr-only"
13489
- };
13490
- const _hoisted_10$2 = ["innerHTML"];
13491
- const _hoisted_11$1 = {
13492
- key: 1,
13493
- class: "table__column__description"
13494
- };
13495
- const _hoisted_12$1 = ["aria-label", "aria-expanded", "aria-level", "aria-describedby", "onKeydown", "onClick"];
13496
- const _hoisted_13 = {
13497
- key: 0
13498
- };
13499
- const _hoisted_14 = {
13500
- key: 0,
13501
- class: "table__expand-icon"
13502
- };
13503
- const _hoisted_15 = {
13504
- key: 1,
13505
- class: "table__column--selectable"
13506
- };
13507
- const _hoisted_16 = {
13508
- class: "table__input"
13509
- };
13510
- const _hoisted_17 = {
13511
- key: 0,
13512
- class: "sr-only"
13513
- };
13514
- const _hoisted_18 = {
13515
- key: 0,
13516
- class: "table__column--placeholder"
13517
- };
13518
- const _hoisted_19 = ["colspan"];
13519
- const _hoisted_20 = {
13520
- key: 0
13521
- };
13522
- const _hoisted_21 = {
13523
- key: 1
13524
- };
13525
- const _hoisted_22 = ["colspan"];
13526
- function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
13527
- const _component_f_icon = vue.resolveComponent("f-icon");
13528
- const _component_f_checkbox_field = vue.resolveComponent("f-checkbox-field");
13529
- return vue.openBlock(), vue.createElementBlock("div", {
13530
- class: vue.normalizeClass(_ctx.wrapperClasses)
13531
- }, [vue.createElementVNode("table", vue.mergeProps({
13532
- class: ["table", _ctx.tableClasses],
13533
- role: _ctx.tableRole
13534
- }, _ctx.$attrs), [_ctx.hasCaption ? (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, [_ctx.isExpandableTable ? (vue.openBlock(), vue.createElementBlock("col", _hoisted_3$9)) : vue.createCommentVNode("", true), _cache[0] || (_cache[0] = vue.createTextVNode()), _ctx.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(_ctx.columns, (column) => {
13535
- return vue.openBlock(), vue.createElementBlock("col", {
13536
- key: column.id,
13537
- class: vue.normalizeClass(column.size)
13538
- }, null, 2);
13539
- }), 128))]), _cache[16] || (_cache[16] = vue.createTextVNode()), vue.createElementVNode("thead", null, [vue.createElementVNode("tr", _hoisted_5$6, [_ctx.isExpandableTable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_6$4, [vue.createElementVNode("span", _hoisted_7$3, vue.toDisplayString(_ctx.$t("fkui.interactive-table.select", "Expandera")), 1)])) : vue.createCommentVNode("", true), _cache[4] || (_cache[4] = vue.createTextVNode()), _ctx.selectable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_8$3, [vue.createElementVNode("span", _hoisted_9$3, vue.toDisplayString(_ctx.$t("fkui.interactive-table.select", "Markera")), 1)])) : vue.createCommentVNode("", true), _cache[5] || (_cache[5] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.visibleColumns, (column) => {
13540
- return vue.openBlock(), vue.createElementBlock("th", vue.mergeProps({
13541
- key: column.id,
13542
- scope: "col",
13543
- class: _ctx.columnClasses(column)
13544
- }, vue.toHandlers(column.sortable ? {
13545
- click: () => _ctx.onClickColumnHeader(column)
13546
- } : {}, true)), [vue.createElementVNode("span", {
13547
- innerHTML: _ctx.escapeNewlines(column.title)
13548
- }, null, 8, _hoisted_10$2), _cache[2] || (_cache[2] = vue.createTextVNode()), column.sortable ? (vue.openBlock(), vue.createBlock(_component_f_icon, {
13549
- key: 0,
13550
- class: vue.normalizeClass(_ctx.iconClasses(column)),
13551
- name: _ctx.iconName(column)
13552
- }, 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);
13553
- }), 128))])]), _cache[17] || (_cache[17] = vue.createTextVNode()), (vue.openBlock(), vue.createElementBlock("tbody", {
13554
- ref: "tbodyElement",
13555
- key: _ctx.tbodyKey
13556
- }, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.rows, (row, index) => {
13557
- return vue.openBlock(), vue.createElementBlock(vue.Fragment, {
13558
- key: _ctx.rowKey(row)
13559
- }, [vue.createElementVNode("tr", {
13560
- class: vue.normalizeClass(_ctx.rowClasses(row, index)),
13561
- "aria-label": _ctx.rowDescription(row),
13562
- "aria-expanded": _ctx.rowAriaExpanded(row),
13563
- "aria-level": _ctx.isExpandableTable ? 1 : void 0,
13564
- "aria-describedby": _ctx.getExpandableDescribedby(row),
13565
- tabindex: "0",
13566
- onKeydown: vue.withModifiers(($event) => _ctx.onKeydown($event, index), ["self"]),
13567
- onClick: ($event) => _ctx.onClick($event, row, index)
13568
- }, [_ctx.isExpandableTable ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_13, [_ctx.hasExpandableContent(row) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_14, [vue.createVNode(_component_f_icon, {
13569
- name: "arrow-right",
13570
- rotate: _ctx.isExpanded(row) ? "270" : "90"
13571
- }, null, 8, ["rotate"])])) : vue.createCommentVNode("", true)])) : vue.createCommentVNode("", true), _cache[6] || (_cache[6] = vue.createTextVNode()), _ctx.selectable ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_15, [vue.createElementVNode("div", _hoisted_16, [vue.createVNode(_component_f_checkbox_field, {
13572
- value: true,
13573
- "model-value": _ctx.isSelected(row),
13574
- onClick: vue.withModifiers(($event) => _ctx.onSelect(row), ["self"])
13575
- }, {
13576
- default: vue.withCtx(() => [_ctx.hasCheckboxDescription ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_17, [vue.renderSlot(_ctx.$slots, "checkbox-description", vue.mergeProps({
13577
- ref_for: true
13578
- }, {
14184
+ function isSelected(row) {
14185
+ return includeItem(row, selectedRows.value, props.keyAttribute);
14186
+ }
14187
+ function onKeydown$1(event, index) {
14188
+ onKeydown({
14189
+ rows: props.rows,
14190
+ tr,
14191
+ activate
14192
+ }, event, index);
14193
+ }
14194
+ function onClick(event, row) {
14195
+ const {
14196
+ target
14197
+ } = event;
14198
+ const isRelevant = ["TD", "TH"].includes(target.nodeName);
14199
+ if (isRelevant) {
14200
+ const parent = target.parentElement;
14201
+ activate(row, parent);
14202
+ }
14203
+ }
14204
+ function activate(row, tr2) {
14205
+ emit("click", row);
14206
+ if (isExpandableTable.value && hasExpandableContent(row)) {
14207
+ toggleExpanded(row);
14208
+ }
14209
+ if (!itemEquals(row, activeRow.value, props.keyAttribute)) {
14210
+ emit("change", row);
14211
+ setActiveRow(row);
14212
+ if (tr2) {
14213
+ tr2.focus();
14214
+ const td = tr2.children[0];
14215
+ forceRepaintIE11(td);
14216
+ }
14217
+ }
14218
+ }
14219
+ function rowDescription(row) {
14220
+ const slot = slots["row-description"];
14221
+ return renderSlotText(slot, {
13579
14222
  row
13580
- }))])) : vue.createCommentVNode("", true)]),
13581
- _: 2
13582
- }, 1032, ["model-value", "onClick"])])])) : vue.createCommentVNode("", true), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default", vue.mergeProps({
13583
- ref_for: true
13584
- }, {
13585
- row
13586
- }))], 42, _hoisted_12$1), _cache[11] || (_cache[11] = vue.createTextVNode()), _ctx.isExpandableTable && _ctx.hasExpandableContent(row) ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, {
13587
- key: 0
13588
- }, vue.renderList(_ctx.expandableRows(row), (expandableRow, expandableIndex) => {
13589
- return vue.openBlock(), vue.createElementBlock("tr", {
13590
- key: _ctx.rowKey(expandableRow),
13591
- "aria-level": "2",
13592
- class: vue.normalizeClass(_ctx.expandableRowClasses(row, expandableIndex))
13593
- }, [_cache[8] || (_cache[8] = vue.createElementVNode("td", {
13594
- class: "table__column--placeholder"
13595
- }, null, -1)), _cache[9] || (_cache[9] = vue.createTextVNode()), _ctx.selectable ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_18)) : vue.createCommentVNode("", true), _cache[10] || (_cache[10] = vue.createTextVNode()), !_ctx.hasExpandableSlot ? vue.renderSlot(_ctx.$slots, "default", vue.mergeProps({
13596
- key: 1,
13597
- ref_for: true
13598
- }, {
13599
- row: expandableRow
13600
- })) : (vue.openBlock(), vue.createElementBlock("td", {
13601
- key: 2,
13602
- class: "table__column table__column--indented",
13603
- colspan: _ctx.columns.length
13604
- }, [vue.renderSlot(_ctx.$slots, "expandable", vue.mergeProps({
13605
- ref_for: true
13606
- }, {
13607
- expandableRow,
13608
- parentRow: row
13609
- }))], 8, _hoisted_19))], 2);
13610
- }), 128)) : vue.createCommentVNode("", true)], 64);
13611
- }), 128)), _cache[13] || (_cache[13] = vue.createTextVNode()), _ctx.isEmpty && _ctx.columns.length === 0 ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_20, [vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.guardReactiveProps({
13612
- row: {}
13613
- })))])) : vue.createCommentVNode("", true), _cache[14] || (_cache[14] = vue.createTextVNode()), _ctx.isEmpty ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_21, [vue.createElementVNode("td", {
13614
- class: "table__column table__column--action",
13615
- colspan: _ctx.nbOfColumns
13616
- }, [vue.renderSlot(_ctx.$slots, "empty", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("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({
13617
- row: {}
13618
- })))])) : vue.createCommentVNode("", true)]))], 16, _hoisted_1$h)], 2);
13619
- }
13620
- const FInteractiveTable = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["render", _sfc_render$f]]);
14223
+ });
14224
+ }
14225
+ function onSelect(row) {
14226
+ var _a, _b;
14227
+ if (includeItem(row, selectedRows.value, props.keyAttribute)) {
14228
+ selectedRows.value = selectedRows.value.filter((i) => !itemEquals(i, row, props.keyAttribute));
14229
+ emit("unselect", row);
14230
+ } else {
14231
+ selectedRows.value.push(row);
14232
+ emit("select", row);
14233
+ }
14234
+ updateVModelWithSelectedRows();
14235
+ (_b = (_a = vue.getCurrentInstance()) == null ? void 0 : _a.proxy) == null ? void 0 : _b.$forceUpdate();
14236
+ }
14237
+ function updateVModelWithSelectedRows() {
14238
+ if (props.modelValue) {
14239
+ emit("update:modelValue", selectedRows.value);
14240
+ }
14241
+ }
14242
+ function rowClasses(row, index) {
14243
+ const active = isActive(row) ? ["table__row--active"] : [];
14244
+ const selected = isSelected(row) ? ["table__row--selected"] : [];
14245
+ const isExpandableRow = isExpandableTable.value && hasExpandableContent(row);
14246
+ const expandable = isExpandableRow ? ["table__row--expandable"] : [];
14247
+ const expanded = isExpanded(row) ? ["table__row--expanded-border"] : [];
14248
+ const striped = props.striped && index % 2 !== 0 ? ["table__row--striped"] : [];
14249
+ return ["table__row", ...active, ...selected, ...striped, ...expandable, ...expanded];
14250
+ }
14251
+ function rowKey(row) {
14252
+ const key = row[props.keyAttribute];
14253
+ if (typeof key === "undefined") {
14254
+ throw new Error(`Key attribute [${props.keyAttribute}]' is missing in row`);
14255
+ }
14256
+ return String(key);
14257
+ }
14258
+ function columnClasses(column) {
14259
+ const sortable = column.sortable ? ["table__column--sortable"] : [];
14260
+ return ["table__column", `table__column--${column.type}`, ...sortable, column.size];
14261
+ }
14262
+ function iconClasses2(column) {
14263
+ return getSortableIconClasses(column);
14264
+ }
14265
+ function iconName(column) {
14266
+ return getSortableIconName(column);
14267
+ }
14268
+ function onClickColumnHeader(column) {
14269
+ if (!column.sortable) {
14270
+ return;
14271
+ }
14272
+ let columnName = column.name;
14273
+ if (column.sort === FTableColumnSort.DESCENDING) {
14274
+ columnName = "";
14275
+ column.sort = FTableColumnSort.UNSORTED;
14276
+ }
14277
+ sort2(columnName, column.sort !== FTableColumnSort.ASCENDING);
14278
+ }
14279
+ function callbackOnSort(columnName, ascending) {
14280
+ updateSortOrder(columns.value, columnName, ascending);
14281
+ }
14282
+ function callbackSortableColumns(columnNames) {
14283
+ setSortableColumns(columns.value, columnNames);
14284
+ }
14285
+ function callbackAfterItemAdd(item) {
14286
+ activate(item, null);
14287
+ }
14288
+ function callbackBeforeItemDelete(item) {
14289
+ if (props.rows.length === 0) {
14290
+ return;
14291
+ }
14292
+ let targetIndex = props.rows.indexOf(item) - 1;
14293
+ if (targetIndex < 0 && props.rows.length > 1) {
14294
+ targetIndex = 1;
14295
+ } else if (targetIndex < 0) {
14296
+ targetIndex = 0;
14297
+ }
14298
+ activate(props.rows[targetIndex], tr.value[targetIndex]);
14299
+ }
14300
+ function escapeNewlines(value) {
14301
+ return value.replace(/\n/g, "<br/>");
14302
+ }
14303
+ function updateActiveRowFromVModel() {
14304
+ if (props.active === void 0) {
14305
+ setActiveRow(void 0);
14306
+ } else if (!itemEquals(props.active, activeRow.value, props.keyAttribute)) {
14307
+ setActiveRow(props.active);
14308
+ }
14309
+ }
14310
+ function setActiveRow(row) {
14311
+ activeRow.value = row;
14312
+ emit("update:active", activeRow.value);
14313
+ }
14314
+ return (_ctx, _cache) => {
14315
+ return vue.openBlock(), vue.createElementBlock("div", {
14316
+ class: vue.normalizeClass(wrapperClasses.value)
14317
+ }, [vue.createCommentVNode("", true), _cache[18] || (_cache[18] = vue.createTextVNode()), vue.createElementVNode("table", vue.mergeProps({
14318
+ class: ["table", tableClasses.value],
14319
+ role: tableRole.value
14320
+ }, _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) => {
14321
+ return vue.openBlock(), vue.createElementBlock("col", {
14322
+ key: column.id,
14323
+ class: vue.normalizeClass(column.size)
14324
+ }, null, 2);
14325
+ }), 128))]), _cache[16] || (_cache[16] = vue.createTextVNode()), vue.createElementVNode("thead", null, [vue.createElementVNode("tr", _hoisted_5$6, [vue.unref(isExpandableTable) ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_6$4, [vue.createElementVNode("span", _hoisted_7$3, vue.toDisplayString(vue.unref($t2)("fkui.interactive-table.select", "Expandera")), 1)])) : vue.createCommentVNode("", true), _cache[4] || (_cache[4] = vue.createTextVNode()), __props.selectable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_8$3, [vue.createElementVNode("span", _hoisted_9$3, vue.toDisplayString(vue.unref($t2)("fkui.interactive-table.select", "Markera")), 1)])) : vue.createCommentVNode("", true), _cache[5] || (_cache[5] = vue.createTextVNode()), (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(visibleColumns.value, (column) => {
14326
+ return vue.openBlock(), vue.createElementBlock("th", vue.mergeProps({
14327
+ key: column.id,
14328
+ scope: "col",
14329
+ class: columnClasses(column)
14330
+ }, vue.toHandlers(column.sortable ? {
14331
+ click: () => onClickColumnHeader(column)
14332
+ } : {}, true)), [vue.createElementVNode("span", {
14333
+ innerHTML: escapeNewlines(column.title)
14334
+ }, null, 8, _hoisted_10$2), _cache[2] || (_cache[2] = vue.createTextVNode()), column.sortable ? (vue.openBlock(), vue.createBlock(vue.unref(FIcon), {
14335
+ key: 0,
14336
+ class: vue.normalizeClass(iconClasses2(column)),
14337
+ name: iconName(column)
14338
+ }, 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);
14339
+ }), 128))])]), _cache[17] || (_cache[17] = vue.createTextVNode()), (vue.openBlock(), vue.createElementBlock("tbody", {
14340
+ ref: "tbodyElement",
14341
+ key: tbodyKey.value
14342
+ }, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.rows, (row, index) => {
14343
+ return vue.openBlock(), vue.createElementBlock(vue.Fragment, {
14344
+ key: rowKey(row)
14345
+ }, [vue.createElementVNode("tr", {
14346
+ class: vue.normalizeClass(rowClasses(row, index)),
14347
+ "aria-label": rowDescription(row),
14348
+ "aria-expanded": vue.unref(rowAriaExpanded)(row),
14349
+ "aria-level": vue.unref(isExpandableTable) ? 1 : void 0,
14350
+ "aria-describedby": vue.unref(getExpandableDescribedby)(row),
14351
+ tabindex: "0",
14352
+ onKeydown: vue.withModifiers(($event) => onKeydown$1($event, index), ["self"]),
14353
+ onClick: ($event) => onClick($event, row)
14354
+ }, [vue.unref(isExpandableTable) ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_13, [vue.unref(hasExpandableContent)(row) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_14, [vue.createVNode(vue.unref(FIcon), {
14355
+ name: "arrow-right",
14356
+ rotate: vue.unref(isExpanded)(row) ? "270" : "90"
14357
+ }, null, 8, ["rotate"])])) : vue.createCommentVNode("", true)])) : vue.createCommentVNode("", true), _cache[6] || (_cache[6] = vue.createTextVNode()), __props.selectable ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_15, [vue.createElementVNode("div", _hoisted_16, [vue.createVNode(vue.unref(FCheckboxField), {
14358
+ value: true,
14359
+ "model-value": isSelected(row),
14360
+ onClick: vue.withModifiers(($event) => onSelect(row), ["self"])
14361
+ }, {
14362
+ default: vue.withCtx(() => [hasCheckboxDescription.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_17, [vue.renderSlot(_ctx.$slots, "checkbox-description", vue.mergeProps({
14363
+ ref_for: true
14364
+ }, {
14365
+ row
14366
+ }))])) : vue.createCommentVNode("", true)]),
14367
+ _: 2
14368
+ }, 1032, ["model-value", "onClick"])])])) : vue.createCommentVNode("", true), _cache[7] || (_cache[7] = vue.createTextVNode()), vue.renderSlot(_ctx.$slots, "default", vue.mergeProps({
14369
+ ref_for: true
14370
+ }, {
14371
+ row
14372
+ }))], 42, _hoisted_12$1), _cache[11] || (_cache[11] = vue.createTextVNode()), vue.unref(isExpandableTable) && vue.unref(hasExpandableContent)(row) ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, {
14373
+ key: 0
14374
+ }, vue.renderList(vue.unref(expandableRows)(row), (expandableRow, expandableIndex) => {
14375
+ return vue.openBlock(), vue.createElementBlock("tr", {
14376
+ key: rowKey(expandableRow),
14377
+ "aria-level": "2",
14378
+ class: vue.normalizeClass(vue.unref(expandableRowClasses)(row, expandableIndex))
14379
+ }, [_cache[8] || (_cache[8] = vue.createElementVNode("td", {
14380
+ class: "table__column--placeholder"
14381
+ }, null, -1)), _cache[9] || (_cache[9] = vue.createTextVNode()), __props.selectable ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_18)) : vue.createCommentVNode("", true), _cache[10] || (_cache[10] = vue.createTextVNode()), !vue.unref(hasExpandableSlot) ? vue.renderSlot(_ctx.$slots, "default", vue.mergeProps({
14382
+ key: 1,
14383
+ ref_for: true
14384
+ }, {
14385
+ row: expandableRow
14386
+ })) : (vue.openBlock(), vue.createElementBlock("td", {
14387
+ key: 2,
14388
+ class: "table__column table__column--indented",
14389
+ colspan: columns.value.length
14390
+ }, [vue.renderSlot(_ctx.$slots, "expandable", vue.mergeProps({
14391
+ ref_for: true
14392
+ }, {
14393
+ expandableRow,
14394
+ parentRow: row
14395
+ }))], 8, _hoisted_19))], 2);
14396
+ }), 128)) : vue.createCommentVNode("", true)], 64);
14397
+ }), 128)), _cache[13] || (_cache[13] = vue.createTextVNode()), isEmpty.value && columns.value.length === 0 ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_20, [vue.renderSlot(_ctx.$slots, "default", vue.normalizeProps(vue.guardReactiveProps({
14398
+ row: {}
14399
+ })))])) : vue.createCommentVNode("", true), _cache[14] || (_cache[14] = vue.createTextVNode()), isEmpty.value ? (vue.openBlock(), vue.createElementBlock("tr", _hoisted_21, [vue.createElementVNode("td", {
14400
+ class: "table__column table__column--action",
14401
+ colspan: nbOfColumns.value
14402
+ }, [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({
14403
+ row: {}
14404
+ })))])) : vue.createCommentVNode("", true)]))], 16, _hoisted_1$h)], 2);
14405
+ };
14406
+ }
14407
+ });
13621
14408
  const _sfc_main$g = vue.defineComponent({
13622
14409
  name: "FLayoutApplicationTemplate",
13623
14410
  computed: {
@@ -13662,12 +14449,12 @@ const _hoisted_5$5 = {
13662
14449
  key: 0,
13663
14450
  class: "layout-application-template__footer"
13664
14451
  };
13665
- function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
14452
+ function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
13666
14453
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$g, [_ctx.showHeader || _ctx.showTopNavigation ? (vue.openBlock(), vue.createElementBlock("header", _hoisted_2$c, [_ctx.showHeader ? vue.renderSlot(_ctx.$slots, "header", {
13667
14454
  key: 0
13668
14455
  }) : 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)]);
13669
14456
  }
13670
- const FLayoutApplicationTemplate = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["render", _sfc_render$e]]);
14457
+ const FLayoutApplicationTemplate = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["render", _sfc_render$d]]);
13671
14458
  function getGridClasses(target) {
13672
14459
  if (target === null) {
13673
14460
  return {};
@@ -13864,7 +14651,7 @@ const _hoisted_4$6 = {
13864
14651
  key: 1,
13865
14652
  class: "layout-navigation__navigation__inner--minimized"
13866
14653
  };
13867
- function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
14654
+ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
13868
14655
  const _component_f_icon = vue.resolveComponent("f-icon");
13869
14656
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [vue.createElementVNode("nav", {
13870
14657
  id: "layout-navigation__navigation",
@@ -13915,7 +14702,7 @@ function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
13915
14702
  style: vue.normalizeStyle(_ctx.primaryStyle)
13916
14703
  }, [vue.renderSlot(_ctx.$slots, "default")], 6)]);
13917
14704
  }
13918
- const FLayoutLeftPanel = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["render", _sfc_render$d]]);
14705
+ const FLayoutLeftPanel = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["render", _sfc_render$c]]);
13919
14706
  class FRightPanelServiceImpl {
13920
14707
  constructor() {
13921
14708
  _defineProperty(this, "focusedElementBeforeOpenining", null);
@@ -14068,7 +14855,7 @@ const _hoisted_1$e = {
14068
14855
  const _hoisted_2$a = {
14069
14856
  class: "layout-secondary__secondary__inner"
14070
14857
  };
14071
- function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
14858
+ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
14072
14859
  const _component_f_icon = vue.resolveComponent("f-icon");
14073
14860
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [vue.createElementVNode("div", {
14074
14861
  id: "layout-secondary__primary",
@@ -14107,13 +14894,34 @@ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
14107
14894
  name: "close"
14108
14895
  })])], 6)])], 4)) : vue.createCommentVNode("", true)]);
14109
14896
  }
14110
- const FLayoutRightPanel = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["render", _sfc_render$c]]);
14111
- const _sfc_main$d = vue.defineComponent({
14112
- name: "FList",
14113
- components: {
14114
- FCheckboxField
14115
- },
14116
- mixins: [TranslationMixin],
14897
+ const FLayoutRightPanel = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["render", _sfc_render$b]]);
14898
+ const _hoisted_1$d = {
14899
+ key: 0,
14900
+ class: "list"
14901
+ };
14902
+ const _hoisted_2$9 = {
14903
+ key: 0,
14904
+ class: "list__item"
14905
+ };
14906
+ const _hoisted_3$6 = {
14907
+ class: "list__item__itempane"
14908
+ };
14909
+ const _hoisted_4$5 = ["tabindex"];
14910
+ const _hoisted_5$4 = ["id", "aria-labelledby", "tabindex", "onKeydown"];
14911
+ const _hoisted_6$3 = ["onClick"];
14912
+ const _hoisted_7$2 = {
14913
+ class: "list__item__selectpane__input"
14914
+ };
14915
+ const _hoisted_8$2 = ["id"];
14916
+ const _hoisted_9$2 = {
14917
+ key: 0,
14918
+ class: "list__item"
14919
+ };
14920
+ const _hoisted_10$1 = {
14921
+ class: "list__item__itempane"
14922
+ };
14923
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
14924
+ __name: "FList",
14117
14925
  props: {
14118
14926
  /**
14119
14927
  * The items to be listed.
@@ -14173,273 +14981,234 @@ const _sfc_main$d = vue.defineComponent({
14173
14981
  default: () => logic.ElementIdService.generateElementId()
14174
14982
  }
14175
14983
  },
14176
- emits: ["change", "click", "unselect", "update:modelValue", "select", "update:active"],
14177
- setup() {
14178
- return ActivateItemInjected();
14179
- },
14180
- data() {
14181
- return {
14182
- selectedItems: [],
14183
- activeItem: void 0
14184
- };
14185
- },
14186
- computed: {
14187
- isEmpty() {
14188
- return this.items.length === 0;
14189
- },
14190
- ariaActiveDescendant() {
14191
- return this.activeItem ? this.getItemId(this.activeItem) : void 0;
14192
- }
14193
- },
14194
- watch: {
14195
- items: {
14984
+ emits: ["change", "click", "select", "unselect", "update:active", "update:modelValue"],
14985
+ setup(__props, {
14986
+ emit: __emit
14987
+ }) {
14988
+ const $t2 = useTranslate();
14989
+ const slots = vue.useSlots();
14990
+ const {
14991
+ registerCallbackAfterItemAdd,
14992
+ registerCallbackBeforeItemDelete
14993
+ } = ActivateItemInjected();
14994
+ const selectedItems = vue.ref([]);
14995
+ const activeItem = vue.ref(void 0);
14996
+ const ulElement = vue.ref();
14997
+ const props = __props;
14998
+ const emit = __emit;
14999
+ const isEmpty = vue.computed(() => {
15000
+ return props.items.length === 0;
15001
+ });
15002
+ vue.watch(() => props.items, () => {
15003
+ updateSelectedItemsFromVModel();
15004
+ }, {
14196
15005
  deep: true,
14197
- immediate: true,
14198
- handler: function() {
14199
- this.updateSelectedItemsFromVModel();
14200
- }
14201
- },
14202
- modelValue: {
15006
+ immediate: true
15007
+ });
15008
+ vue.watch(() => props.modelValue, () => {
15009
+ updateSelectedItemsFromVModel();
15010
+ }, {
14203
15011
  deep: true,
14204
- immediate: true,
14205
- handler: function() {
14206
- this.updateSelectedItemsFromVModel();
14207
- }
14208
- },
14209
- active: {
14210
- immediate: true,
14211
- handler: function() {
14212
- this.updateActiveItemFromVModel();
14213
- }
14214
- }
14215
- },
14216
- mounted() {
14217
- if (this.selectable && this.checkbox) {
14218
- if (!this.$slots["screenreader"]) {
14219
- throw Error('Slot "screenreader" is required when having "selectable" & "checkbox" option.');
15012
+ immediate: true
15013
+ });
15014
+ vue.watch(() => props.active, () => {
15015
+ updateActiveItemFromVModel();
15016
+ }, {
15017
+ immediate: true
15018
+ });
15019
+ vue.onMounted(() => {
15020
+ if (props.selectable && props.checkbox) {
15021
+ if (!slots["screenreader"]) {
15022
+ throw Error('Slot "screenreader" is required when having "selectable" & "checkbox" option.');
15023
+ }
15024
+ registerCallbackAfterItemAdd(callbackAfterItemAdd);
15025
+ registerCallbackBeforeItemDelete(callbackBeforeItemDelete);
14220
15026
  }
14221
- this.registerCallbackAfterItemAdd(this.callbackAfterItemAdd);
14222
- this.registerCallbackBeforeItemDelete(this.callbackBeforeItemDelete);
15027
+ });
15028
+ function getLiElements() {
15029
+ const element = getElementFromVueRef(ulElement.value);
15030
+ return Array.from(element.children);
14223
15031
  }
14224
- },
14225
- methods: {
14226
- getLiElements() {
14227
- const ulElement = getElementFromVueRef(this.$refs["ulElement"]);
14228
- return Array.from(ulElement.children);
14229
- },
14230
- itemKey(item) {
14231
- const key = item[this.keyAttribute];
15032
+ function itemKey(item) {
15033
+ const key = item[props.keyAttribute];
14232
15034
  if (typeof key === "undefined") {
14233
- throw new Error(`Key attribute [${this.keyAttribute}]' is missing in item`);
15035
+ throw new Error(`Key attribute [${props.keyAttribute}]' is missing in item`);
14234
15036
  }
14235
15037
  return String(key);
14236
- },
14237
- isSelected(item) {
14238
- return includeItem(item, this.selectedItems, this.keyAttribute);
14239
- },
14240
- itemClasses(item) {
15038
+ }
15039
+ function isSelected(item) {
15040
+ return includeItem(item, selectedItems.value, props.keyAttribute);
15041
+ }
15042
+ function itemClasses(item) {
14241
15043
  return {
14242
- "list__item--selected": this.isSelected(item),
14243
- "list__item--active": this.isActive(item)
15044
+ "list__item--selected": isSelected(item),
15045
+ "list__item--active": isActive(item)
14244
15046
  };
14245
- },
14246
- getAriaSelected(item) {
14247
- return String(itemEquals(this.activeItem, item, this.keyAttribute));
14248
- },
14249
- onSelect(item) {
14250
- if (includeItem(item, this.selectedItems, this.keyAttribute)) {
14251
- this.selectedItems = this.selectedItems.filter((i) => !itemEquals(i, item, this.keyAttribute));
14252
- this.$emit("unselect", item);
15047
+ }
15048
+ function onSelect(item) {
15049
+ var _a, _b;
15050
+ if (includeItem(item, selectedItems.value, props.keyAttribute)) {
15051
+ selectedItems.value = selectedItems.value.filter((i) => !itemEquals(i, item, props.keyAttribute));
15052
+ emit("unselect", item);
14253
15053
  } else {
14254
- this.selectedItems.push(item);
14255
- this.$emit("select", item);
15054
+ selectedItems.value.push(item);
15055
+ emit("select", item);
14256
15056
  }
14257
- this.updateVModelWithSelectedItems();
14258
- this.$forceUpdate();
14259
- },
14260
- setActiveItem(item) {
14261
- this.$emit("click", item);
14262
- if (!itemEquals(item, this.activeItem, this.keyAttribute)) {
14263
- this.$emit("change", item);
14264
- this.activeItem = item;
14265
- this.$emit("update:active", this.activeItem);
15057
+ updateVModelWithSelectedItems();
15058
+ (_b = (_a = vue.getCurrentInstance()) == null ? void 0 : _a.proxy) == null ? void 0 : _b.$forceUpdate();
15059
+ }
15060
+ function setActiveItem(item) {
15061
+ emit("click", item);
15062
+ if (!itemEquals(item, activeItem.value, props.keyAttribute)) {
15063
+ emit("change", item);
15064
+ activeItem.value = item;
15065
+ emit("update:active", activeItem.value);
14266
15066
  }
14267
- },
14268
- onItemClick(event, index, item) {
14269
- this.setActiveItem(item);
14270
- },
14271
- updateVModelWithSelectedItems() {
14272
- if (this.modelValue) {
14273
- this.$emit("update:modelValue", this.selectedItems);
15067
+ }
15068
+ function onItemClick(event, index, item) {
15069
+ setActiveItem(item);
15070
+ }
15071
+ function updateVModelWithSelectedItems() {
15072
+ if (props.modelValue) {
15073
+ emit("update:modelValue", selectedItems.value);
14274
15074
  }
14275
- },
14276
- updateSelectedItemsFromVModel() {
14277
- if (Array.isArray(this.modelValue)) {
14278
- this.selectedItems = this.modelValue.filter((item) => {
14279
- return includeItem(item, this.items, this.keyAttribute);
15075
+ }
15076
+ function updateSelectedItemsFromVModel() {
15077
+ if (Array.isArray(props.modelValue)) {
15078
+ selectedItems.value = props.modelValue.filter((item) => {
15079
+ return includeItem(item, props.items, props.keyAttribute);
14280
15080
  });
14281
15081
  } else {
14282
- this.selectedItems = [];
15082
+ selectedItems.value = [];
14283
15083
  }
14284
- },
14285
- updateActiveItemFromVModel() {
14286
- if (this.active === void 0) {
14287
- this.activeItem = void 0;
14288
- } else if (!itemEquals(this.active, this.activeItem, this.keyAttribute)) {
14289
- this.activeItem = this.active;
15084
+ }
15085
+ function updateActiveItemFromVModel() {
15086
+ if (props.active === void 0) {
15087
+ activeItem.value = void 0;
15088
+ } else if (!itemEquals(props.active, activeItem.value, props.keyAttribute)) {
15089
+ activeItem.value = props.active;
14290
15090
  }
14291
- },
14292
- onItemKeyDown(event, item) {
15091
+ }
15092
+ function onItemKeyDown(event, item) {
14293
15093
  switch (event.key) {
14294
15094
  case "Up":
14295
15095
  case "Down":
14296
15096
  case "ArrowUp":
14297
15097
  case "ArrowDown":
14298
15098
  event.preventDefault();
14299
- handleKeyboardFocusNavigation(event.key, event.target, this.getLiElements());
15099
+ handleKeyboardFocusNavigation(event.key, event.target, getLiElements());
14300
15100
  break;
14301
15101
  case " ":
14302
15102
  case "Spacebar":
14303
15103
  event.preventDefault();
14304
- this.setActiveItem(item);
15104
+ setActiveItem(item);
14305
15105
  break;
14306
15106
  }
14307
- },
14308
- // Unique id to connect aria-labelledby with readonly label
14309
- getAriaLabelledbyId(item) {
14310
- return `${this.elementId}_${this.itemKey(item)}`;
14311
- },
14312
- // Unique id to connect aria-labelledby with readonly label
14313
- getItemId(item) {
14314
- return `${this.elementId}_item_${this.itemKey(item)}`;
14315
- },
14316
- // Focus effect is done with box-shadow.
14317
- // By setting position to relative the
14318
- // item and box-shadow is drawn with a higher z-index,
14319
- // thus no focus border under other list items.
14320
- onItemFocus(event) {
15107
+ }
15108
+ function getAriaLabelledbyId(item) {
15109
+ return `${props.elementId}_${itemKey(item)}`;
15110
+ }
15111
+ function getItemId(item) {
15112
+ return `${props.elementId}_item_${itemKey(item)}`;
15113
+ }
15114
+ function onItemFocus(event) {
14321
15115
  if (event && event.target) {
14322
15116
  event.target.style.position = "relative";
14323
15117
  }
14324
- },
14325
- onItemBlur(event) {
15118
+ }
15119
+ function onItemBlur(event) {
14326
15120
  if (event && event.target) {
14327
15121
  event.target.style.position = "static";
14328
15122
  }
14329
- },
14330
- callbackAfterItemAdd(item) {
14331
- this.setActiveItem(item);
14332
- },
14333
- callbackBeforeItemDelete(item) {
14334
- if (this.items.length === 0) {
15123
+ }
15124
+ function callbackAfterItemAdd(item) {
15125
+ setActiveItem(item);
15126
+ }
15127
+ function callbackBeforeItemDelete(item) {
15128
+ if (props.items.length === 0) {
14335
15129
  return;
14336
15130
  }
14337
- let targetIndex = this.items.indexOf(item) - 1;
14338
- if (targetIndex < 0 && this.items.length > 1) {
15131
+ let targetIndex = props.items.indexOf(item) - 1;
15132
+ if (targetIndex < 0 && props.items.length > 1) {
14339
15133
  targetIndex = 1;
14340
15134
  } else if (targetIndex < 0) {
14341
15135
  targetIndex = 0;
14342
15136
  }
14343
- this.setActiveItem(this.items[targetIndex]);
14344
- if (this.getLiElements()[targetIndex]) {
14345
- this.getLiElements()[targetIndex].focus();
15137
+ setActiveItem(props.items[targetIndex]);
15138
+ const targetElement = getLiElements()[targetIndex];
15139
+ if (targetElement) {
15140
+ targetElement.focus();
14346
15141
  }
14347
- },
14348
- isActive(item) {
14349
- return this.checkbox && itemEquals(this.activeItem, item, this.keyAttribute);
14350
15142
  }
15143
+ function isActive(item) {
15144
+ return props.checkbox && itemEquals(activeItem.value, item, props.keyAttribute);
15145
+ }
15146
+ return (_ctx, _cache) => {
15147
+ return !__props.selectable ? (vue.openBlock(), vue.createElementBlock("ul", _hoisted_1$d, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item) => {
15148
+ return vue.openBlock(), vue.createElementBlock("li", {
15149
+ key: itemKey(item),
15150
+ class: "list__item"
15151
+ }, [vue.createElementVNode("div", {
15152
+ ref_for: true,
15153
+ ref: "listItemPanes",
15154
+ class: "list__item__itempane"
15155
+ }, [vue.renderSlot(_ctx.$slots, "default", vue.mergeProps({
15156
+ ref_for: true
15157
+ }, {
15158
+ item
15159
+ }))], 512)]);
15160
+ }), 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", {
15161
+ key: 1,
15162
+ ref_key: "ulElement",
15163
+ ref: ulElement,
15164
+ class: "list list--hover",
15165
+ tabindex: __props.checkbox ? 0 : void 0
15166
+ }, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index) => {
15167
+ return vue.openBlock(), vue.createElementBlock("li", {
15168
+ id: getItemId(item),
15169
+ key: itemKey(item),
15170
+ "aria-labelledby": getItemId(item),
15171
+ class: vue.normalizeClass([itemClasses(item), "list__item"]),
15172
+ tabindex: __props.checkbox ? 0 : void 0,
15173
+ onKeydown: vue.withModifiers(($event) => onItemKeyDown($event, item), ["self"]),
15174
+ onFocus: vue.withModifiers(onItemFocus, ["self"]),
15175
+ onBlur: vue.withModifiers(onItemBlur, ["self"])
15176
+ }, [__props.checkbox ? (vue.openBlock(), vue.createElementBlock("div", {
15177
+ key: 0,
15178
+ class: "list__item__selectpane",
15179
+ onClick: vue.withModifiers(($event) => onSelect(item), ["self"])
15180
+ }, [vue.createElementVNode("div", _hoisted_7$2, [vue.createVNode(vue.unref(FCheckboxField), {
15181
+ value: true,
15182
+ "model-value": isSelected(item),
15183
+ onClick: vue.withModifiers(($event) => onSelect(item), ["self"])
15184
+ }, {
15185
+ default: vue.withCtx(() => [vue.createElementVNode("span", {
15186
+ id: getAriaLabelledbyId(item),
15187
+ class: "sr-only"
15188
+ }, [vue.renderSlot(_ctx.$slots, "screenreader", vue.mergeProps({
15189
+ ref_for: true
15190
+ }, {
15191
+ item
15192
+ }))], 8, _hoisted_8$2)]),
15193
+ _: 2
15194
+ }, 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"), {
15195
+ ref_for: true,
15196
+ ref: "listItemPanes",
15197
+ href: !__props.checkbox ? "javascript:" : void 0,
15198
+ class: "list__item__itempane",
15199
+ onClick: ($event) => onItemClick($event, index, item)
15200
+ }, {
15201
+ default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default", vue.mergeProps({
15202
+ ref_for: true
15203
+ }, {
15204
+ item
15205
+ }))]),
15206
+ _: 2
15207
+ }, 1032, ["href", "onClick"]))], 42, _hoisted_5$4);
15208
+ }), 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));
15209
+ };
14351
15210
  }
14352
15211
  });
14353
- const _hoisted_1$d = {
14354
- key: 0,
14355
- class: "list"
14356
- };
14357
- const _hoisted_2$9 = {
14358
- key: 0,
14359
- class: "list__item"
14360
- };
14361
- const _hoisted_3$6 = {
14362
- class: "list__item__itempane"
14363
- };
14364
- const _hoisted_4$5 = ["tabindex"];
14365
- const _hoisted_5$4 = ["id", "aria-labelledby", "tabindex", "onKeydown"];
14366
- const _hoisted_6$3 = ["onClick"];
14367
- const _hoisted_7$2 = {
14368
- class: "list__item__selectpane__input"
14369
- };
14370
- const _hoisted_8$2 = ["id"];
14371
- const _hoisted_9$2 = {
14372
- key: 0,
14373
- class: "list__item"
14374
- };
14375
- const _hoisted_10$1 = {
14376
- class: "list__item__itempane"
14377
- };
14378
- function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
14379
- const _component_f_checkbox_field = vue.resolveComponent("f-checkbox-field");
14380
- return !_ctx.selectable ? (vue.openBlock(), vue.createElementBlock("ul", _hoisted_1$d, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.items, (item) => {
14381
- return vue.openBlock(), vue.createElementBlock("li", {
14382
- key: _ctx.itemKey(item),
14383
- class: "list__item"
14384
- }, [vue.createElementVNode("div", {
14385
- ref_for: true,
14386
- ref: "listItemPanes",
14387
- class: "list__item__itempane"
14388
- }, [vue.renderSlot(_ctx.$slots, "default", vue.mergeProps({
14389
- ref_for: true
14390
- }, {
14391
- item
14392
- }))], 512)]);
14393
- }), 128)), _cache[2] || (_cache[2] = vue.createTextVNode()), _ctx.isEmpty ? (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(_ctx.$t("fkui.list.empty", "Listan är tom")), 1)])])])) : vue.createCommentVNode("", true)])) : (vue.openBlock(), vue.createElementBlock("ul", {
14394
- key: 1,
14395
- ref: "ulElement",
14396
- class: "list list--hover",
14397
- tabindex: _ctx.checkbox ? 0 : void 0
14398
- }, [(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.items, (item, index) => {
14399
- return vue.openBlock(), vue.createElementBlock("li", {
14400
- id: _ctx.getItemId(item),
14401
- key: _ctx.itemKey(item),
14402
- "aria-labelledby": _ctx.getItemId(item),
14403
- class: vue.normalizeClass([_ctx.itemClasses(item), "list__item"]),
14404
- tabindex: _ctx.checkbox ? 0 : void 0,
14405
- onKeydown: vue.withModifiers(($event) => _ctx.onItemKeyDown($event, item), ["self"]),
14406
- onFocus: _cache[0] || (_cache[0] = vue.withModifiers((...args) => _ctx.onItemFocus && _ctx.onItemFocus(...args), ["self"])),
14407
- onBlur: _cache[1] || (_cache[1] = vue.withModifiers((...args) => _ctx.onItemBlur && _ctx.onItemBlur(...args), ["self"]))
14408
- }, [_ctx.checkbox ? (vue.openBlock(), vue.createElementBlock("div", {
14409
- key: 0,
14410
- class: "list__item__selectpane",
14411
- onClick: vue.withModifiers(($event) => _ctx.onSelect(item), ["self"])
14412
- }, [vue.createElementVNode("div", _hoisted_7$2, [vue.createVNode(_component_f_checkbox_field, {
14413
- value: true,
14414
- "model-value": _ctx.isSelected(item),
14415
- onClick: vue.withModifiers(($event) => _ctx.onSelect(item), ["self"])
14416
- }, {
14417
- default: vue.withCtx(() => [vue.createElementVNode("span", {
14418
- id: _ctx.getAriaLabelledbyId(item),
14419
- class: "sr-only"
14420
- }, [vue.renderSlot(_ctx.$slots, "screenreader", vue.mergeProps({
14421
- ref_for: true
14422
- }, {
14423
- item
14424
- }))], 8, _hoisted_8$2)]),
14425
- _: 2
14426
- }, 1032, ["model-value", "onClick"])])], 8, _hoisted_6$3)) : vue.createCommentVNode("", true), _cache[3] || (_cache[3] = vue.createTextVNode()), (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.checkbox ? "div" : "a"), {
14427
- ref_for: true,
14428
- ref: "listItemPanes",
14429
- href: !_ctx.checkbox ? "javascript:" : void 0,
14430
- class: "list__item__itempane",
14431
- onClick: ($event) => _ctx.onItemClick($event, index, item)
14432
- }, {
14433
- default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default", vue.mergeProps({
14434
- ref_for: true
14435
- }, {
14436
- item
14437
- }))]),
14438
- _: 2
14439
- }, 1032, ["href", "onClick"]))], 42, _hoisted_5$4);
14440
- }), 128)), _cache[4] || (_cache[4] = vue.createTextVNode()), _ctx.isEmpty ? (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(_ctx.$t("fkui.list.empty", "Listan är tom")), 1)])])])) : vue.createCommentVNode("", true)], 8, _hoisted_4$5));
14441
- }
14442
- const FList = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$b]]);
14443
15212
  const _sfc_main$c = vue.defineComponent({
14444
15213
  name: "FLoader",
14445
15214
  mixins: [TranslationMixin],
@@ -16516,10 +17285,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
16516
17285
  class: "wizard-step-body",
16517
17286
  onSubmit: _ctx.onSubmit
16518
17287
  }, {
16519
- "error-message": vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "error-message", vue.normalizeProps(vue.guardReactiveProps({
16520
- stepNumber: _ctx.stepNumber,
16521
- totalSteps: _ctx.totalSteps
16522
- })), () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.wizard-step.errorlist.title", "Oj, du har glömt att fylla i något. Gå till:")), 1)])]),
17288
+ "error-message": vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "error-message", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.wizard-step.errorlist.title", "Oj, du har glömt att fylla i något. Gå till:")), 1)])]),
16523
17289
  default: vue.withCtx(() => [vue.renderSlot(_ctx.$slots, "default"), _cache[14] || (_cache[14] = vue.createTextVNode()), vue.createElementVNode("div", _hoisted_10, [vue.createElementVNode("button", {
16524
17290
  "data-test": "submit-button",
16525
17291
  "data-disabled": _ctx.ignoreClick ? "true" : "false",
@@ -16537,7 +17303,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
16537
17303
  type: "button",
16538
17304
  class: "button button--secondary button-group__item button--large",
16539
17305
  onClick: _cache[2] || (_cache[2] = (...args) => _ctx.onCancel && _ctx.onCancel(...args))
16540
- }, [vue.renderSlot(_ctx.$slots, "cancel-button-text", {}, () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.wizard-step.button.cancel.text", "Avbryt")), 1)])])])]),
17306
+ }, [vue.renderSlot(_ctx.$slots, "cancel-button-text", vue.normalizeProps(vue.guardReactiveProps({
17307
+ stepNumber: _ctx.stepNumber,
17308
+ totalSteps: _ctx.totalSteps
17309
+ })), () => [vue.createTextVNode(vue.toDisplayString(_ctx.$t("fkui.wizard-step.button.cancel.text", "Avbryt")), 1)])])])]),
16541
17310
  _: 3
16542
17311
  }, 8, ["id", "before-submit", "before-validation", "use-error-list", "onSubmit"])]),
16543
17312
  _: 3
@@ -16560,9 +17329,9 @@ exports.FClearingnumberTextField = _sfc_main$w;
16560
17329
  exports.FConfirmModal = FConfirmModal;
16561
17330
  exports.FContextMenu = FContextMenu;
16562
17331
  exports.FCrudButton = FCrudButton;
16563
- exports.FCrudDataset = FCrudDataset;
17332
+ exports.FCrudDataset = _sfc_main$I;
16564
17333
  exports.FCurrencyTextField = _sfc_main$A;
16565
- exports.FDataTable = FDataTable;
17334
+ exports.FDataTable = _sfc_main$o;
16566
17335
  exports.FDatepickerField = FDatepickerField;
16567
17336
  exports.FDialogueTree = FDialogueTree;
16568
17337
  exports.FEmailTextField = FEmailTextField;
@@ -16577,14 +17346,14 @@ exports.FFileSelector = FFileSelector;
16577
17346
  exports.FFormModal = FFormModal;
16578
17347
  exports.FFormModalAction = FValidationFormAction;
16579
17348
  exports.FIcon = FIcon;
16580
- exports.FInteractiveTable = FInteractiveTable;
17349
+ exports.FInteractiveTable = _sfc_main$h;
16581
17350
  exports.FKUIConfigButtonOrder = FKUIConfigButtonOrder;
16582
17351
  exports.FLabel = FLabel;
16583
17352
  exports.FLayoutApplicationTemplate = FLayoutApplicationTemplate;
16584
17353
  exports.FLayoutLeftPanel = FLayoutLeftPanel;
16585
17354
  exports.FLayoutRightPanel = FLayoutRightPanel;
16586
17355
  exports.FLayoutRightPanelService = FLayoutRightPanelService;
16587
- exports.FList = FList;
17356
+ exports.FList = _sfc_main$d;
16588
17357
  exports.FLoader = FLoader;
16589
17358
  exports.FLogo = _sfc_main$b;
16590
17359
  exports.FMessageBox = FMessageBox;
@@ -16604,7 +17373,7 @@ exports.FProgressbar = _sfc_main$5;
16604
17373
  exports.FRadioField = FRadioField;
16605
17374
  exports.FSearchTextField = FSearchTextField;
16606
17375
  exports.FSelectField = FSelectField;
16607
- exports.FSortFilterDataset = FSortFilterDataset;
17376
+ exports.FSortFilterDataset = _sfc_main$p;
16608
17377
  exports.FSortFilterDatasetInjected = FSortFilterDatasetInjected;
16609
17378
  exports.FStaticField = FStaticField;
16610
17379
  exports.FTableColumn = FTableColumn;