@navikt/ds-react 8.5.1 → 8.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/cjs/data/table/root/DataTableRoot.d.ts +27 -0
  2. package/cjs/data/table/root/DataTableRoot.js +8 -2
  3. package/cjs/data/table/root/DataTableRoot.js.map +1 -1
  4. package/cjs/data/table/td/DataTableTd.d.ts +5 -4
  5. package/cjs/data/table/td/DataTableTd.js +2 -2
  6. package/cjs/data/table/td/DataTableTd.js.map +1 -1
  7. package/cjs/data/token-filter/AutoSuggest.d.ts +2 -14
  8. package/cjs/data/token-filter/AutoSuggest.js +16 -89
  9. package/cjs/data/token-filter/AutoSuggest.js.map +1 -1
  10. package/cjs/data/token-filter/AutoSuggest.types.d.ts +12 -0
  11. package/cjs/data/token-filter/AutoSuggest.types.js +3 -0
  12. package/cjs/data/token-filter/AutoSuggest.types.js.map +1 -0
  13. package/cjs/data/token-filter/TokenFilter.js +18 -7
  14. package/cjs/data/token-filter/TokenFilter.js.map +1 -1
  15. package/cjs/data/token-filter/TokenFilter.types.d.ts +8 -2
  16. package/cjs/data/token-filter/helpers/generate-autocomplete-options.d.ts +12 -58
  17. package/cjs/data/token-filter/helpers/generate-autocomplete-options.js +159 -133
  18. package/cjs/data/token-filter/helpers/generate-autocomplete-options.js.map +1 -1
  19. package/cjs/data/token-filter/helpers/grouping.d.ts +28 -0
  20. package/cjs/data/token-filter/helpers/grouping.js +61 -0
  21. package/cjs/data/token-filter/helpers/grouping.js.map +1 -0
  22. package/cjs/data/token-filter/helpers/operators.d.ts +22 -0
  23. package/cjs/data/token-filter/helpers/operators.js +66 -0
  24. package/cjs/data/token-filter/helpers/operators.js.map +1 -0
  25. package/cjs/data/token-filter/helpers/parse-query-text.d.ts +1 -7
  26. package/cjs/data/token-filter/helpers/parse-query-text.js +5 -50
  27. package/cjs/data/token-filter/helpers/parse-query-text.js.map +1 -1
  28. package/cjs/data/token-filter/helpers/query-builder.d.ts +20 -0
  29. package/cjs/data/token-filter/helpers/query-builder.js +38 -0
  30. package/cjs/data/token-filter/helpers/query-builder.js.map +1 -0
  31. package/cjs/data/token-filter/helpers/text-matching.d.ts +16 -0
  32. package/cjs/data/token-filter/helpers/text-matching.js +47 -0
  33. package/cjs/data/token-filter/helpers/text-matching.js.map +1 -0
  34. package/cjs/form/combobox/Input/InputController.js +1 -1
  35. package/cjs/form/combobox/Input/InputController.js.map +1 -1
  36. package/cjs/form/file-upload/dropzone/FileUploadDropzone.js +1 -1
  37. package/cjs/form/file-upload/dropzone/FileUploadDropzone.js.map +1 -1
  38. package/esm/data/table/root/DataTableRoot.d.ts +27 -0
  39. package/esm/data/table/root/DataTableRoot.js +8 -2
  40. package/esm/data/table/root/DataTableRoot.js.map +1 -1
  41. package/esm/data/table/td/DataTableTd.d.ts +5 -4
  42. package/esm/data/table/td/DataTableTd.js +2 -2
  43. package/esm/data/table/td/DataTableTd.js.map +1 -1
  44. package/esm/data/token-filter/AutoSuggest.d.ts +2 -14
  45. package/esm/data/token-filter/AutoSuggest.js +17 -90
  46. package/esm/data/token-filter/AutoSuggest.js.map +1 -1
  47. package/esm/data/token-filter/AutoSuggest.types.d.ts +12 -0
  48. package/esm/data/token-filter/AutoSuggest.types.js +2 -0
  49. package/esm/data/token-filter/AutoSuggest.types.js.map +1 -0
  50. package/esm/data/token-filter/TokenFilter.js +18 -7
  51. package/esm/data/token-filter/TokenFilter.js.map +1 -1
  52. package/esm/data/token-filter/TokenFilter.types.d.ts +8 -2
  53. package/esm/data/token-filter/helpers/generate-autocomplete-options.d.ts +12 -58
  54. package/esm/data/token-filter/helpers/generate-autocomplete-options.js +159 -133
  55. package/esm/data/token-filter/helpers/generate-autocomplete-options.js.map +1 -1
  56. package/esm/data/token-filter/helpers/grouping.d.ts +28 -0
  57. package/esm/data/token-filter/helpers/grouping.js +59 -0
  58. package/esm/data/token-filter/helpers/grouping.js.map +1 -0
  59. package/esm/data/token-filter/helpers/operators.d.ts +22 -0
  60. package/esm/data/token-filter/helpers/operators.js +60 -0
  61. package/esm/data/token-filter/helpers/operators.js.map +1 -0
  62. package/esm/data/token-filter/helpers/parse-query-text.d.ts +1 -7
  63. package/esm/data/token-filter/helpers/parse-query-text.js +2 -45
  64. package/esm/data/token-filter/helpers/parse-query-text.js.map +1 -1
  65. package/esm/data/token-filter/helpers/query-builder.d.ts +20 -0
  66. package/esm/data/token-filter/helpers/query-builder.js +34 -0
  67. package/esm/data/token-filter/helpers/query-builder.js.map +1 -0
  68. package/esm/data/token-filter/helpers/text-matching.d.ts +16 -0
  69. package/esm/data/token-filter/helpers/text-matching.js +45 -0
  70. package/esm/data/token-filter/helpers/text-matching.js.map +1 -0
  71. package/esm/form/combobox/Input/InputController.js +1 -1
  72. package/esm/form/combobox/Input/InputController.js.map +1 -1
  73. package/esm/form/file-upload/dropzone/FileUploadDropzone.js +1 -1
  74. package/esm/form/file-upload/dropzone/FileUploadDropzone.js.map +1 -1
  75. package/package.json +3 -3
  76. package/src/data/table/root/DataTableRoot.tsx +30 -1
  77. package/src/data/table/td/DataTableTd.tsx +13 -6
  78. package/src/data/token-filter/AutoSuggest.tsx +38 -162
  79. package/src/data/token-filter/AutoSuggest.types.ts +14 -0
  80. package/src/data/token-filter/TokenFilter.tsx +16 -11
  81. package/src/data/token-filter/TokenFilter.types.ts +8 -2
  82. package/src/data/token-filter/helpers/generate-autocomplete-options.test.ts +896 -0
  83. package/src/data/token-filter/helpers/generate-autocomplete-options.ts +233 -188
  84. package/src/data/token-filter/helpers/grouping.test.ts +206 -0
  85. package/src/data/token-filter/helpers/grouping.ts +73 -0
  86. package/src/data/token-filter/helpers/operators.test.ts +281 -0
  87. package/src/data/token-filter/helpers/operators.ts +91 -0
  88. package/src/data/token-filter/helpers/parse-query-text.test.ts +4 -213
  89. package/src/data/token-filter/helpers/parse-query-text.ts +7 -69
  90. package/src/data/token-filter/helpers/query-builder.test.ts +126 -0
  91. package/src/data/token-filter/helpers/query-builder.ts +41 -0
  92. package/src/data/token-filter/helpers/text-matching.test.ts +125 -0
  93. package/src/data/token-filter/helpers/text-matching.ts +58 -0
  94. package/src/form/combobox/Input/InputController.tsx +0 -1
  95. package/src/form/file-upload/dropzone/FileUploadDropzone.tsx +0 -1
@@ -1,3 +1,4 @@
1
+ import { QUERY_OPERATORS, matchFilteringProperty, matchOperator, matchOperatorPrefix, } from "./operators.js";
1
2
  /**
2
3
  * Parse user input text to extract property, operator, and value components.
3
4
  * Handles partial input (e.g., user typing "Status !" to complete the operator).
@@ -39,49 +40,5 @@ function parseQueryText(filteringText, filteringProperties) {
39
40
  value: filteringText,
40
41
  };
41
42
  }
42
- /**
43
- * Operators ordered by specificity (longest/most specific first)
44
- * This ensures longer operators like ">=" and "<=" are matched
45
- * before shorter ones like ">" and "<"
46
- */
47
- const QUERY_OPERATORS = [
48
- ">=",
49
- "<=",
50
- "!=",
51
- "!:",
52
- "!^",
53
- "=",
54
- ":",
55
- "^",
56
- ">",
57
- "<",
58
- ];
59
- /**
60
- * Match a property from the input text by longest property label.
61
- * Case-insensitive matching.
62
- */
63
- function matchFilteringProperty(filteringProperties, text) {
64
- const sortedProperties = [...filteringProperties].sort((a, b) => b.propertyLabel.length - a.propertyLabel.length);
65
- return sortedProperties.find((prop) => text.toLowerCase().startsWith(prop.propertyLabel.toLowerCase()));
66
- }
67
- /**
68
- * Check if the input text is a valid prefix of any allowed operator.
69
- * Returns the prefix if valid, null otherwise.
70
- */
71
- function matchOperatorPrefix(allowedOperators, filteringText) {
72
- const trimmedText = filteringText.trim();
73
- if (trimmedText.length === 0) {
74
- return "";
75
- }
76
- const isValidPrefix = allowedOperators.some((operator) => operator.toLowerCase().startsWith(trimmedText.toLowerCase()));
77
- return isValidPrefix ? trimmedText : null;
78
- }
79
- /**
80
- * Match an operator from the input text.
81
- * Operators are already sorted by specificity, so no re-sorting needed.
82
- */
83
- function matchOperator(allowedOperators, text) {
84
- return allowedOperators.find((operator) => text.toLowerCase().startsWith(operator.toLowerCase()));
85
- }
86
- export { QUERY_OPERATORS, parseQueryText };
43
+ export { parseQueryText };
87
44
  //# sourceMappingURL=parse-query-text.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-query-text.js","sourceRoot":"","sources":["../../../../src/data/token-filter/helpers/parse-query-text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse-query-text.js","sourceRoot":"","sources":["../../../../src/data/token-filter/helpers/parse-query-text.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAuBrB;;;GAGG;AACH,SAAS,cAAc,CACrB,aAAqB,EACrB,mBAAqC;IAErC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;IAC5E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,gBAAgB,GAAG,aAAa,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QACvE,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,gBAAgB;gBAC1B,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE;aACpE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,aAAa;SACrB,CAAC;IACJ,CAAC;IAED,MAAM,mBAAmB,GAAG,aAAa;SACtC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;SACxC,SAAS,EAAE,CAAC;IAEf,MAAM,QAAQ,GAAG,aAAa,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAErE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,QAAQ;YACR,QAAQ;YACR,KAAK,EAAE,mBAAmB,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE;SAClE,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,mBAAmB,CACxC,eAAe,EACf,mBAAmB,CACpB,CAAC;IAEF,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IACxD,CAAC;IAED,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,aAAa;KACrB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { QueryFilterOperator } from "../TokenFilter.types.js";
2
+ /**
3
+ * Human-readable labels for query filter operators.
4
+ * Used for displaying operator descriptions in autocomplete suggestions.
5
+ * TODO: Support i18n
6
+ */
7
+ declare const OPERATOR_LABELS: Record<QueryFilterOperator, string>;
8
+ /**
9
+ * Builds a query string from property label, operator, and value.
10
+ * Only includes non-empty parts, joined by spaces.
11
+ * @returns Space-joined query string
12
+ *
13
+ * @example
14
+ * buildQueryString("Status", "=", "active") // "Status = active"
15
+ * buildQueryString("Status", "=", "") // "Status ="
16
+ * buildQueryString("Status", "", "") // "Status"
17
+ * buildQueryString("", "", "") // ""
18
+ */
19
+ declare function buildQueryString(propertyLabel: string, operator: string, value: string): string;
20
+ export { buildQueryString, OPERATOR_LABELS };
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Human-readable labels for query filter operators.
3
+ * Used for displaying operator descriptions in autocomplete suggestions.
4
+ * TODO: Support i18n
5
+ */
6
+ const OPERATOR_LABELS = {
7
+ ":": "contains",
8
+ "!:": "does not contain",
9
+ "=": "is",
10
+ "!=": "is not",
11
+ "^": "starts with",
12
+ "!^": "does not start with",
13
+ ">=": "is greater than or equal to",
14
+ "<=": "is less than or equal to",
15
+ ">": "is greater than",
16
+ "<": "is less than",
17
+ };
18
+ /**
19
+ * Builds a query string from property label, operator, and value.
20
+ * Only includes non-empty parts, joined by spaces.
21
+ * @returns Space-joined query string
22
+ *
23
+ * @example
24
+ * buildQueryString("Status", "=", "active") // "Status = active"
25
+ * buildQueryString("Status", "=", "") // "Status ="
26
+ * buildQueryString("Status", "", "") // "Status"
27
+ * buildQueryString("", "", "") // ""
28
+ */
29
+ function buildQueryString(propertyLabel, operator, value) {
30
+ const parts = [propertyLabel, operator, value].filter(Boolean);
31
+ return parts.join(" ");
32
+ }
33
+ export { buildQueryString, OPERATOR_LABELS };
34
+ //# sourceMappingURL=query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../../../src/data/token-filter/helpers/query-builder.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,eAAe,GAAwC;IAC3D,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,kBAAkB;IACxB,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,aAAa;IAClB,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAE,6BAA6B;IACnC,IAAI,EAAE,0BAA0B;IAChC,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,cAAc;CACpB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,SAAS,gBAAgB,CACvB,aAAqB,EACrB,QAAgB,EAChB,KAAa;IAEb,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Checks if search field values match the given filter text.
3
+ *
4
+ * @param searchFieldValues - Array of strings to search within (e.g., labels, tags, descriptions)
5
+ * @param filterText - The search text to match against
6
+ * @returns true if all space-separated parts of filterText are found in at least one searchFieldValue
7
+ *
8
+ * @example
9
+ * matchesFilterText(['Hello World', 'foo'], 'hello') // true
10
+ * matchesFilterText(['Hello World', 'foo'], 'hello bar') // false
11
+ * matchesFilterText(['Hello World', 'bar'], 'hello bar') // true
12
+ * matchesFilterText([], 'test') // false
13
+ * matchesFilterText(['test'], '') // true (empty filter matches all)
14
+ */
15
+ declare function matchesFilterText(searchFieldValues: string[], filterText: string): boolean;
16
+ export { matchesFilterText };
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Checks if search field values match the given filter text.
3
+ *
4
+ * @param searchFieldValues - Array of strings to search within (e.g., labels, tags, descriptions)
5
+ * @param filterText - The search text to match against
6
+ * @returns true if all space-separated parts of filterText are found in at least one searchFieldValue
7
+ *
8
+ * @example
9
+ * matchesFilterText(['Hello World', 'foo'], 'hello') // true
10
+ * matchesFilterText(['Hello World', 'foo'], 'hello bar') // false
11
+ * matchesFilterText(['Hello World', 'bar'], 'hello bar') // true
12
+ * matchesFilterText([], 'test') // false
13
+ * matchesFilterText(['test'], '') // true (empty filter matches all)
14
+ */
15
+ function matchesFilterText(searchFieldValues, filterText) {
16
+ /* Guard against null/undefined inputs */
17
+ if (!searchFieldValues || !Array.isArray(searchFieldValues)) {
18
+ return false;
19
+ }
20
+ if (filterText === null || filterText === undefined) {
21
+ return true;
22
+ }
23
+ const normalizedFilter = filterText.trim().toLowerCase();
24
+ /* Empty filter matches everything */
25
+ if (!normalizedFilter) {
26
+ return true;
27
+ }
28
+ /* Split filter into parts ("nord land" -> ["nord", "land"]) */
29
+ const parts = normalizedFilter.split(/\s+/).filter(Boolean);
30
+ if (parts.length === 0) {
31
+ return true;
32
+ }
33
+ /* Normalize and filter out nullish values */
34
+ const normalizedFields = searchFieldValues
35
+ .map((value) => value === null || value === void 0 ? void 0 : value.toLowerCase())
36
+ .filter(Boolean);
37
+ /* If no valid fields to search, no match */
38
+ if (normalizedFields.length === 0) {
39
+ return false;
40
+ }
41
+ /* Every part of the filter must be found in at least one field */
42
+ return parts.every((part) => normalizedFields.some((field) => field.includes(part)));
43
+ }
44
+ export { matchesFilterText };
45
+ //# sourceMappingURL=text-matching.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-matching.js","sourceRoot":"","sources":["../../../../src/data/token-filter/helpers/text-matching.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,SAAS,iBAAiB,CACxB,iBAA2B,EAC3B,UAAkB;IAElB,yCAAyC;IACzC,IAAI,CAAC,iBAAiB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEzD,qCAAqC;IACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+DAA+D;IAC/D,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE5D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6CAA6C;IAC7C,MAAM,gBAAgB,GAAG,iBAAiB;SACvC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,EAAE,CAAC;SACpC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,4CAA4C;IAC5C,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kEAAkE;IAClE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1B,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CACvD,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,4 +1,3 @@
1
- /* eslint-disable jsx-a11y/click-events-have-key-events */
2
1
  var __rest = (this && this.__rest) || function (s, e) {
3
2
  var t = {};
4
3
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -10,6 +9,7 @@ var __rest = (this && this.__rest) || function (s, e) {
10
9
  }
11
10
  return t;
12
11
  };
12
+ /* eslint-disable jsx-a11y/click-events-have-key-events */
13
13
  /* eslint-disable jsx-a11y/no-static-element-interactions */
14
14
  import React, { forwardRef } from "react";
15
15
  import { Floating } from "../../../utils/components/floating/Floating.js";
@@ -1 +1 @@
1
- {"version":3,"file":"InputController.js","sourceRoot":"","sources":["../../../../src/form/combobox/Input/InputController.tsx"],"names":[],"mappings":"AAAA,0DAA0D;;;;;;;;;;;;AAE1D,4DAA4D;AAC5D,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,6CAA6C,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,eAAe,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAEtF,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAcvC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACf,MAAM;IACJ,sHAAsH;IACtH,WAAW;IACX,sHAAsH;IACtH,gBAAgB,EAChB,gBAAgB,GAAG,IAAI,EACvB,cAAc,EACd,yBAAyB,GAAG,IAAI,KAG9B,KAAK,EADJ,IAAI,UACL,KAAK,EAVH,sGAUL,CAAQ,CAAC;IAEV,MAAM,EACJ,UAAU,EACV,UAAU,EACV,IAAI,GAAG,QAAQ,EACf,QAAQ,EACR,mBAAmB,EACnB,QAAQ,EACR,YAAY,GACb,GAAG,eAAe,EAAE,CAAC;IAEtB,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,yBAAyB,EAAE,CAAC;IAC5E,MAAM,EAAE,eAAe,EAAE,GAAG,yBAAyB,EAAE,CAAC;IAExD,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAEnD,OAAO,CACL,oBAAC,QAAQ,CAAC,MAAM,IAAC,OAAO,QAAC,GAAG,EAAE,YAAY;QAExC,6BACE,SAAS,EAAE,EAAE,CAAC,uDAAuD,EAAE;gBACrE,oDAAoD,EAClD,iBAAiB,KAAK,SAAS;aAClC,CAAC,EACF,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,UAAU,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;oBACpC,OAAO;gBACT,CAAC;gBAED,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACvB,UAAU,EAAE,CAAC;YACf,CAAC;YAEA,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAC5B,oBAAC,KAAK,kBACJ,EAAE,EAAE,UAAU,CAAC,EAAE,EACjB,GAAG,EAAE,cAAc,EACnB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,IACd,IAAI,EACR,CACH,CAAC,CAAC,CAAC,CACF,oBAAC,eAAe,IAAC,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI;gBAC3D,oBAAC,KAAK,kBACJ,EAAE,EAAE,UAAU,CAAC,EAAE,EACjB,GAAG,EAAE,cAAc,EACnB,cAAc,EAAE,cAAc,EAC9B,yBAAyB,EAAE,yBAAyB,EACpD,QAAQ,EAAE,QAAQ,IACd,IAAI,EACR,CACc,CACnB;YACA,gBAAgB,IAAI,oBAAC,gBAAgB,IAAC,GAAG,EAAE,mBAAmB,GAAI,CAC/D,CACU,CACnB,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"InputController.js","sourceRoot":"","sources":["../../../../src/form/combobox/Input/InputController.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,0DAA0D;AAC1D,4DAA4D;AAC5D,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,6CAA6C,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,eAAe,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAEtF,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAcvC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACf,MAAM;IACJ,sHAAsH;IACtH,WAAW;IACX,sHAAsH;IACtH,gBAAgB,EAChB,gBAAgB,GAAG,IAAI,EACvB,cAAc,EACd,yBAAyB,GAAG,IAAI,KAG9B,KAAK,EADJ,IAAI,UACL,KAAK,EAVH,sGAUL,CAAQ,CAAC;IAEV,MAAM,EACJ,UAAU,EACV,UAAU,EACV,IAAI,GAAG,QAAQ,EACf,QAAQ,EACR,mBAAmB,EACnB,QAAQ,EACR,YAAY,GACb,GAAG,eAAe,EAAE,CAAC;IAEtB,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,yBAAyB,EAAE,CAAC;IAC5E,MAAM,EAAE,eAAe,EAAE,GAAG,yBAAyB,EAAE,CAAC;IAExD,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAEnD,OAAO,CACL,oBAAC,QAAQ,CAAC,MAAM,IAAC,OAAO,QAAC,GAAG,EAAE,YAAY;QAExC,6BACE,SAAS,EAAE,EAAE,CAAC,uDAAuD,EAAE;gBACrE,oDAAoD,EAClD,iBAAiB,KAAK,SAAS;aAClC,CAAC,EACF,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,UAAU,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;oBACpC,OAAO;gBACT,CAAC;gBAED,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACvB,UAAU,EAAE,CAAC;YACf,CAAC;YAEA,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAC5B,oBAAC,KAAK,kBACJ,EAAE,EAAE,UAAU,CAAC,EAAE,EACjB,GAAG,EAAE,cAAc,EACnB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,IACd,IAAI,EACR,CACH,CAAC,CAAC,CAAC,CACF,oBAAC,eAAe,IAAC,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI;gBAC3D,oBAAC,KAAK,kBACJ,EAAE,EAAE,UAAU,CAAC,EAAE,EACjB,GAAG,EAAE,cAAc,EACnB,cAAc,EAAE,cAAc,EAC9B,yBAAyB,EAAE,yBAAyB,EACpD,QAAQ,EAAE,QAAQ,IACd,IAAI,EACR,CACc,CACnB;YACA,gBAAgB,IAAI,oBAAC,gBAAgB,IAAC,GAAG,EAAE,mBAAmB,GAAI,CAC/D,CACU,CACnB,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,4 +1,3 @@
1
- /* eslint-disable jsx-a11y/no-static-element-interactions */
2
1
  var __rest = (this && this.__rest) || function (s, e) {
3
2
  var t = {};
4
3
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -10,6 +9,7 @@ var __rest = (this && this.__rest) || function (s, e) {
10
9
  }
11
10
  return t;
12
11
  };
12
+ /* eslint-disable jsx-a11y/no-static-element-interactions */
13
13
  /* eslint-disable jsx-a11y/click-events-have-key-events */
14
14
  import React, { forwardRef } from "react";
15
15
  import { CircleSlashIcon, CloudUpIcon } from "@navikt/aksel-icons";
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploadDropzone.js","sourceRoot":"","sources":["../../../../src/form/file-upload/dropzone/FileUploadDropzone.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileUploadDropzone.js","sourceRoot":"","sources":["../../../../src/form/file-upload/dropzone/FileUploadDropzone.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@navikt/ds-react",
3
- "version": "8.5.1",
3
+ "version": "8.5.2",
4
4
  "description": "React components from the Norwegian Labour and Welfare Administration.",
5
5
  "author": "Aksel, a team part of the Norwegian Labour and Welfare Administration.",
6
6
  "license": "MIT",
@@ -705,8 +705,8 @@
705
705
  "dependencies": {
706
706
  "@floating-ui/react": "0.27.8",
707
707
  "@floating-ui/react-dom": "^2.1.6",
708
- "@navikt/aksel-icons": "^8.5.1",
709
- "@navikt/ds-tokens": "^8.5.1",
708
+ "@navikt/aksel-icons": "^8.5.2",
709
+ "@navikt/ds-tokens": "^8.5.2",
710
710
  "date-fns": "^4.0.0",
711
711
  "react-day-picker": "9.7.0"
712
712
  },
@@ -24,6 +24,10 @@ import { useTableKeyboardNav } from "./useTableKeyboardNav";
24
24
 
25
25
  interface DataTableProps extends React.HTMLAttributes<HTMLTableElement> {
26
26
  children: React.ReactNode;
27
+ /**
28
+ * Controls vertical cell padding.
29
+ * @default "normal"
30
+ */
27
31
  rowDensity?: "condensed" | "normal" | "spacious";
28
32
  /**
29
33
  * Zebra striped table
@@ -32,9 +36,11 @@ interface DataTableProps extends React.HTMLAttributes<HTMLTableElement> {
32
36
  zebraStripes?: boolean;
33
37
  /**
34
38
  * Truncate content in cells and show ellipsis for overflowed text.
39
+ *
40
+ * **NB:** When using `layout="auto"`, you have to manually set a `maxWidth` on columns that should be truncated.
35
41
  * @default true
36
42
  */
37
- truncateContent?: boolean;
43
+ truncateContent?: boolean; // TODO: Consider making this default false when layout=auto, and maybe disallow it but add a wrap prop on the td-comp.
38
44
  /**
39
45
  * Enables keyboard navigation for table rows and cells.
40
46
  * @default false
@@ -46,6 +52,21 @@ interface DataTableProps extends React.HTMLAttributes<HTMLTableElement> {
46
52
  * Requires `withKeyboardNav` to be `true`.
47
53
  */
48
54
  shouldBlockNavigation?: (event: KeyboardEvent) => boolean;
55
+ /**
56
+ * Controls table layout.
57
+ *
58
+ * ### fixed
59
+ * Gives you full control of column widths. This is required for resizable columns.
60
+ *
61
+ * ### auto
62
+ * Makes the columns resize automatically based on the content.
63
+ * The table will take up at least 100% of available width.
64
+ *
65
+ * **NB:** When using this with `truncateContent`, you have to manually
66
+ * set a `contentMaxWidth` on cells that should be truncated.
67
+ * @default "fixed"
68
+ */
69
+ layout?: "fixed" | "auto";
49
70
  }
50
71
 
51
72
  interface DataTableRootComponent extends React.ForwardRefExoticComponent<
@@ -143,6 +164,12 @@ interface DataTableRootComponent extends React.ForwardRefExoticComponent<
143
164
  Tfoot: typeof DataTableTfoot;
144
165
  }
145
166
 
167
+ /**
168
+ * TODO Component description etc.
169
+ *
170
+ * **NB:** To get sticky headers, you have to set a height restriction on the table container. You can use VStack for this:
171
+ * TODO example
172
+ */
146
173
  const DataTable = forwardRef<HTMLTableElement, DataTableProps>(
147
174
  (
148
175
  {
@@ -152,6 +179,7 @@ const DataTable = forwardRef<HTMLTableElement, DataTableProps>(
152
179
  zebraStripes = false,
153
180
  truncateContent = true,
154
181
  shouldBlockNavigation,
182
+ layout = "fixed",
155
183
  ...rest
156
184
  },
157
185
  forwardedRef,
@@ -174,6 +202,7 @@ const DataTable = forwardRef<HTMLTableElement, DataTableProps>(
174
202
  data-zebra-stripes={zebraStripes}
175
203
  data-truncate-content={truncateContent}
176
204
  data-density={rowDensity}
205
+ data-layout={layout}
177
206
  tabIndex={tabIndex}
178
207
  />
179
208
  </div>
@@ -1,23 +1,30 @@
1
1
  import React, { forwardRef } from "react";
2
2
  import { cl } from "../../../utils/helpers";
3
3
 
4
- interface DataTableTdProps extends React.HTMLAttributes<HTMLTableCellElement> {
4
+ interface DataTableTdProps extends React.TdHTMLAttributes<HTMLTableCellElement> {
5
5
  /**
6
- * TODO: Shouldnt be needed to declare these here... But getting type-errors if not
6
+ * Sets a max-width on the content wrapper div inside the cell.
7
+ * This is only needed when using `layout="auto"` together with
8
+ * `truncateContent` on `<DataTable>` and you want the cell to be truncated.
7
9
  */
8
- colSpan?: number;
9
- rowSpan?: number;
10
+ contentMaxWidth?: number | `${number}${string}`;
11
+ /**
12
+ * TODO: Consider a prop like this instead of contentMaxWidth to use together with layout=auto.
13
+ * Maybe even with layout=auto as a way to override truncateContent on single cells?
14
+ * Need to work on the name though. Or maybe have two separate props?
15
+ */
16
+ //textWrap?: boolean | number | `${number}${string}`;
10
17
  }
11
18
 
12
19
  const DataTableTd = forwardRef<HTMLTableCellElement, DataTableTdProps>(
13
- ({ className, children, ...rest }, forwardedRef) => {
20
+ ({ className, children, contentMaxWidth, ...rest }, forwardedRef) => {
14
21
  return (
15
22
  <td
16
23
  {...rest}
17
24
  ref={forwardedRef}
18
25
  className={cl("aksel-data-table__td", className)}
19
26
  >
20
- <div>{children}</div>
27
+ <div style={{ maxWidth: contentMaxWidth }}>{children}</div>
21
28
  </td>
22
29
  );
23
30
  },
@@ -1,179 +1,55 @@
1
- import React, { forwardRef, useMemo } from "react";
2
- import { cl } from "../../utils/helpers";
3
- import type {
4
- QueryFilteringOption,
5
- QueryFilteringOptionGroup,
6
- } from "./TokenFilter.types";
7
-
8
- interface AutoSuggestOption {
9
- value: string;
10
- label: string;
11
- tags?: string[];
12
- filteringTags?: string[];
13
- description?: string;
14
- }
15
-
16
- interface AutoSuggestGroup {
17
- label: string;
18
- options: AutoSuggestOption[];
19
- }
1
+ import React, { forwardRef } from "react";
2
+ import { Box } from "../../primitives/box";
3
+ import { VStack } from "../../primitives/stack";
4
+ import { Label } from "../../typography";
5
+ import type { AutoCompleteOption, OptionGroup } from "./AutoSuggest.types";
20
6
 
21
7
  interface AutoSuggestProps {
22
- options: AutoSuggestGroup[];
23
- value: string;
24
- filterText: string;
8
+ options: OptionGroup<AutoCompleteOption>[];
25
9
  onSelect: (value: string) => void;
26
10
  className?: string;
27
11
  }
28
12
 
29
13
  const AutoSuggest = forwardRef<HTMLDivElement, AutoSuggestProps>(
30
- ({ options, value, filterText, onSelect, className }, ref) => {
31
- console.info({ options, value, filterText });
32
- /* const highlightedText = filterText === undefined ? value : filterText; */
33
- /* const filterValue = (value || "").toLowerCase();
34
-
35
- const filteredGroups = options
36
- .map((group) => ({
37
- ...group,
38
- options: group.options.filter((option) => {
39
- const searchableText = [
40
- option.label,
41
- option.description,
42
- ...(option.filteringTags ?? []),
43
- ...(option.tags ?? []),
44
- ]
45
- .filter(Boolean)
46
- .join(" ")
47
- .toLowerCase();
48
- return searchableText.includes(filterValue);
49
- }),
50
- }))
51
- .filter((group) => group.options.length > 0); */
52
-
53
- const { items } = useAutosuggestItems({ options, filterValue: filterText });
54
-
55
- console.info({ items });
56
-
14
+ ({ options, onSelect }, ref) => {
57
15
  return (
58
- <div ref={ref} className={cl("aksel-auto-suggest", className)}>
16
+ <Box ref={ref} padding="space-6">
59
17
  {options.map((group) => (
60
- <div key={group.label} className="aksel-auto-suggest__group">
61
- <div className="aksel-auto-suggest__group-label">{group.label}</div>
62
- <ul className="aksel-auto-suggest__list">
63
- {group.options.map((option) => (
64
- <li key={option.value} className="aksel-auto-suggest__item">
65
- <button
66
- type="button"
67
- className="aksel-auto-suggest__button"
68
- onClick={() => onSelect(option.value)}
69
- >
70
- <span className="aksel-auto-suggest__label">
71
- {option.label}
72
- </span>
73
- {option.description && (
74
- <span className="aksel-auto-suggest__description">
75
- {option.description}
18
+ <div key={group.label}>
19
+ <Label as="div">{group.label}</Label>
20
+ <VStack gap="space-4">
21
+ {group.options.map((option) => {
22
+ return (
23
+ <div key={option.value}>
24
+ <button
25
+ type="button"
26
+ onClick={() =>
27
+ /* @ts-expect-error TODO: We need to convert the data properly */
28
+ onSelect(option.value ?? option.propertyKey)
29
+ }
30
+ >
31
+ <span>
32
+ {/* @ts-expect-error TODO: We need to convert the data properly */}
33
+ {option.value ?? option.label ?? option.propertyLabel}
76
34
  </span>
77
- )}
78
- {option.tags && option.tags.length > 0 && (
79
- <div className="aksel-auto-suggest__tags">
80
- {option.tags.map((tag) => (
81
- <span key={tag} className="aksel-auto-suggest__tag">
82
- {tag}
83
- </span>
84
- ))}
85
- </div>
86
- )}
87
- </button>
88
- </li>
89
- ))}
90
- </ul>
35
+ {option.description && <span>{option.description}</span>}
36
+ {option.tags && option.tags.length > 0 && (
37
+ <div>
38
+ {option.tags.map((tag) => (
39
+ <span key={tag}>{tag}</span>
40
+ ))}
41
+ </div>
42
+ )}
43
+ </button>
44
+ </div>
45
+ );
46
+ })}
47
+ </VStack>
91
48
  </div>
92
49
  ))}
93
- </div>
50
+ </Box>
94
51
  );
95
52
  },
96
53
  );
97
54
 
98
- function useAutosuggestItems({ options, filterValue }) {
99
- const { items } = useMemo(() => createItems(options), [options]);
100
-
101
- const filteredItems = useMemo(() => {
102
- const localFilteredItems = items;
103
- if (filterValue) {
104
- localFilteredItems.unshift({
105
- value: filterValue,
106
- type: "use-entered",
107
- label: `Use "${filterValue}"`,
108
- option: { value: filterValue },
109
- });
110
- }
111
- return localFilteredItems;
112
- }, [items, filterValue]);
113
-
114
- return { items: filteredItems };
115
- }
116
-
117
- /* TODO: Need to split autosuggest types and filter types */
118
- type AutoSuggestItem = {
119
- type?: "parent" | "child" | "use-entered";
120
- option: QueryFilteringOption | QueryFilteringOptionGroup | { value: string };
121
- parent?: QueryFilteringOptionGroup;
122
- disabled?: boolean;
123
- value?: string;
124
- label?: string;
125
- };
126
-
127
- function createItems(
128
- options: (QueryFilteringOption | QueryFilteringOptionGroup)[],
129
- ) {
130
- const items: AutoSuggestItem[] = [];
131
- const itemToGroup = new WeakMap<AutoSuggestItem, AutoSuggestItem>();
132
-
133
- for (const option of options) {
134
- if (isGroup(option)) {
135
- for (const item of flattenGroup(option, itemToGroup)) {
136
- items.push(item);
137
- }
138
- } else {
139
- items.push({ ...option, option });
140
- }
141
- }
142
-
143
- return { items };
144
- }
145
-
146
- function flattenGroup(
147
- group: QueryFilteringOptionGroup,
148
- map: WeakMap<AutoSuggestItem, AutoSuggestItem>,
149
- ) {
150
- const { options, ...rest } = group;
151
-
152
- const groupItem: AutoSuggestItem = { ...rest, type: "parent", option: group };
153
-
154
- const items: AutoSuggestItem[] = [groupItem];
155
-
156
- for (const option of options) {
157
- const childOption: AutoSuggestItem = {
158
- ...option,
159
- type: "child",
160
- disabled: option.disabled ?? false,
161
- option,
162
- parent: group,
163
- };
164
-
165
- items.push(childOption);
166
-
167
- map.set(childOption, groupItem);
168
- }
169
-
170
- return items;
171
- }
172
-
173
- function isGroup(
174
- optionOrGroup: QueryFilteringOption | QueryFilteringOptionGroup,
175
- ): optionOrGroup is QueryFilteringOptionGroup {
176
- return "options" in optionOrGroup;
177
- }
178
-
179
55
  export { AutoSuggest };
@@ -0,0 +1,14 @@
1
+ interface OptionGroup<T> {
2
+ label: string;
3
+ options: T[];
4
+ }
5
+
6
+ interface AutoCompleteOption {
7
+ value: string;
8
+ label: string;
9
+ tags?: string[];
10
+ filteringTags?: string[];
11
+ description?: string;
12
+ }
13
+
14
+ export type { AutoCompleteOption, OptionGroup };