@fristil/designsystem 0.4.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/CHANGELOG.md +136 -0
  2. package/README.md +22 -7
  3. package/dist/components/frittstaende/connection-status/connection-status.d.ts +28 -0
  4. package/dist/components/frittstaende/connection-status/connection-status.d.ts.map +1 -0
  5. package/dist/components/frittstaende/connection-status/connection-status.js +22 -0
  6. package/dist/components/frittstaende/connection-status/connection-status.js.map +1 -0
  7. package/dist/components/frittstaende/connection-status/fs-connection-status.d.ts +54 -0
  8. package/dist/components/frittstaende/connection-status/fs-connection-status.d.ts.map +1 -0
  9. package/dist/components/frittstaende/connection-status/fs-connection-status.js +123 -0
  10. package/dist/components/frittstaende/connection-status/fs-connection-status.js.map +1 -0
  11. package/dist/components/frittstaende/session-timeout/fs-session-timeout.d.ts +56 -0
  12. package/dist/components/frittstaende/session-timeout/fs-session-timeout.d.ts.map +1 -0
  13. package/dist/components/frittstaende/session-timeout/fs-session-timeout.js +183 -0
  14. package/dist/components/frittstaende/session-timeout/fs-session-timeout.js.map +1 -0
  15. package/dist/components/frittstaende/session-timeout/session-timeout.d.ts +28 -0
  16. package/dist/components/frittstaende/session-timeout/session-timeout.d.ts.map +1 -0
  17. package/dist/components/frittstaende/session-timeout/session-timeout.js +22 -0
  18. package/dist/components/frittstaende/session-timeout/session-timeout.js.map +1 -0
  19. package/dist/components/frittstaende/toast/fs-toast.d.ts +16 -22
  20. package/dist/components/frittstaende/toast/fs-toast.d.ts.map +1 -1
  21. package/dist/components/frittstaende/toast/fs-toast.js +38 -27
  22. package/dist/components/frittstaende/toast/fs-toast.js.map +1 -1
  23. package/dist/components/frittstaende/toast/toast.d.ts +34 -0
  24. package/dist/components/frittstaende/toast/toast.d.ts.map +1 -0
  25. package/dist/components/frittstaende/toast/toast.js +26 -0
  26. package/dist/components/frittstaende/toast/toast.js.map +1 -0
  27. package/dist/components/ramme/error-summary/error-summary.d.ts +39 -0
  28. package/dist/components/ramme/error-summary/error-summary.d.ts.map +1 -0
  29. package/dist/components/ramme/error-summary/error-summary.js +31 -0
  30. package/dist/components/ramme/error-summary/error-summary.js.map +1 -0
  31. package/dist/components/ramme/error-summary/fs-error-summary.d.ts +16 -42
  32. package/dist/components/ramme/error-summary/fs-error-summary.d.ts.map +1 -1
  33. package/dist/components/ramme/error-summary/fs-error-summary.js +57 -92
  34. package/dist/components/ramme/error-summary/fs-error-summary.js.map +1 -1
  35. package/dist/components/ramme/field/field-core.d.ts +37 -0
  36. package/dist/components/ramme/field/field-core.d.ts.map +1 -1
  37. package/dist/components/ramme/field/field-core.js +37 -0
  38. package/dist/components/ramme/field/field-core.js.map +1 -1
  39. package/dist/components/ramme/field/fs-field.d.ts +39 -40
  40. package/dist/components/ramme/field/fs-field.d.ts.map +1 -1
  41. package/dist/components/ramme/field/fs-field.js +128 -54
  42. package/dist/components/ramme/field/fs-field.js.map +1 -1
  43. package/dist/components/ramme/popover/fs-popover.d.ts +20 -27
  44. package/dist/components/ramme/popover/fs-popover.d.ts.map +1 -1
  45. package/dist/components/ramme/popover/fs-popover.js +68 -54
  46. package/dist/components/ramme/popover/fs-popover.js.map +1 -1
  47. package/dist/components/ramme/popover/popover.d.ts +43 -0
  48. package/dist/components/ramme/popover/popover.d.ts.map +1 -0
  49. package/dist/components/ramme/popover/popover.js +49 -0
  50. package/dist/components/ramme/popover/popover.js.map +1 -0
  51. package/dist/components/ramme/suggestion/fs-suggestion.d.ts +75 -0
  52. package/dist/components/ramme/suggestion/fs-suggestion.d.ts.map +1 -0
  53. package/dist/components/ramme/suggestion/fs-suggestion.js +232 -0
  54. package/dist/components/ramme/suggestion/fs-suggestion.js.map +1 -0
  55. package/dist/components/ramme/suggestion/suggestion.d.ts +97 -0
  56. package/dist/components/ramme/suggestion/suggestion.d.ts.map +1 -0
  57. package/dist/components/ramme/suggestion/suggestion.js +79 -0
  58. package/dist/components/ramme/suggestion/suggestion.js.map +1 -0
  59. package/dist/components/ramme/tabs/fs-tabs.d.ts +31 -36
  60. package/dist/components/ramme/tabs/fs-tabs.d.ts.map +1 -1
  61. package/dist/components/ramme/tabs/fs-tabs.js +62 -84
  62. package/dist/components/ramme/tabs/fs-tabs.js.map +1 -1
  63. package/dist/components/ramme/tabs/tabs.d.ts +50 -0
  64. package/dist/components/ramme/tabs/tabs.d.ts.map +1 -0
  65. package/dist/components/ramme/tabs/tabs.js +54 -0
  66. package/dist/components/ramme/tabs/tabs.js.map +1 -0
  67. package/dist/fs.d.ts +94 -0
  68. package/dist/fs.d.ts.map +1 -1
  69. package/dist/fs.js +42 -0
  70. package/dist/fs.js.map +1 -1
  71. package/dist/index.d.ts +10 -3
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +10 -3
  74. package/dist/index.js.map +1 -1
  75. package/dist/jsx/react.d.ts +35 -50
  76. package/dist/jsx/react.d.ts.map +1 -1
  77. package/dist/react.d.ts +142 -1
  78. package/dist/react.d.ts.map +1 -1
  79. package/dist/react.js +77 -2
  80. package/dist/react.js.map +1 -1
  81. package/package.json +15 -18
  82. package/src/components/frittstaende/connection-status/connection-status.css +33 -0
  83. package/src/components/frittstaende/connection-status/connection-status.ts +41 -0
  84. package/src/components/frittstaende/connection-status/fs-connection-status.ts +144 -0
  85. package/src/components/frittstaende/session-timeout/fs-session-timeout.ts +216 -0
  86. package/src/components/frittstaende/session-timeout/session-timeout.css +43 -0
  87. package/src/components/frittstaende/session-timeout/session-timeout.ts +42 -0
  88. package/src/components/frittstaende/toast/fs-toast.ts +39 -30
  89. package/src/components/frittstaende/toast/toast.ts +45 -0
  90. package/src/components/ramme/error-summary/error-summary.ts +55 -0
  91. package/src/components/ramme/error-summary/fs-error-summary.ts +62 -119
  92. package/src/components/ramme/field/field-core.ts +38 -0
  93. package/src/components/ramme/field/fs-field.ts +145 -61
  94. package/src/components/ramme/popover/fs-popover.ts +78 -72
  95. package/src/components/ramme/popover/popover.ts +79 -0
  96. package/src/components/ramme/suggestion/fs-suggestion.ts +265 -0
  97. package/src/components/ramme/suggestion/suggestion.ts +105 -0
  98. package/src/components/ramme/tabs/fs-tabs.ts +67 -98
  99. package/src/components/ramme/tabs/tabs.ts +104 -0
  100. package/dist/components/frittstaende/calendar/fs-calendar.d.ts +0 -52
  101. package/dist/components/frittstaende/calendar/fs-calendar.d.ts.map +0 -1
  102. package/dist/components/frittstaende/calendar/fs-calendar.js +0 -462
  103. package/dist/components/frittstaende/calendar/fs-calendar.js.map +0 -1
  104. package/dist/components/frittstaende/date-field/fs-date-field.d.ts +0 -110
  105. package/dist/components/frittstaende/date-field/fs-date-field.d.ts.map +0 -1
  106. package/dist/components/frittstaende/date-field/fs-date-field.js +0 -264
  107. package/dist/components/frittstaende/date-field/fs-date-field.js.map +0 -1
  108. package/dist/components/frittstaende/suggestion/fs-suggestion.d.ts +0 -133
  109. package/dist/components/frittstaende/suggestion/fs-suggestion.d.ts.map +0 -1
  110. package/dist/components/frittstaende/suggestion/fs-suggestion.js +0 -280
  111. package/dist/components/frittstaende/suggestion/fs-suggestion.js.map +0 -1
  112. package/src/components/frittstaende/calendar/fs-calendar.ts +0 -525
  113. package/src/components/frittstaende/date-field/date-field.css +0 -54
  114. package/src/components/frittstaende/date-field/fs-date-field.ts +0 -309
  115. package/src/components/frittstaende/suggestion/fs-suggestion.ts +0 -333
  116. /package/src/components/{frittstaende → ramme}/suggestion/suggestion.css +0 -0
@@ -1,280 +0,0 @@
1
- import { html, LitElement } from "lit";
2
- import { ifDefined } from "lit/directives/if-defined.js";
3
- import { live } from "lit/directives/live.js";
4
- import { computeFieldAttributes } from "../../ramme/field/field-core.js";
5
- export const FS_SUGGESTION_TAG = "fs-suggestion";
6
- /**
7
- * Et tekstfelt med forslag som snevres inn mens brukeren skriver.
8
- *
9
- * Alternativene skrives som `<option>`-barn, slik de ville stått i en
10
- * `<datalist>`. Komponenten leser dem én gang og bygger lista selv, fordi
11
- * nettleserens egen `<datalist>` ikke kan styles, oppfører seg ulikt i hver
12
- * nettleser, og ikke melder antall treff til skjermlesere.
13
- *
14
- * Feltet er et fritekstfelt, ikke en nedtrekksliste. Brukeren kan skrive noe
15
- * som ikke står i lista. Skal bare gitte verdier godtas, er
16
- * [Select](../../css/select/select.js) riktig.
17
- *
18
- * ```html
19
- * <fs-suggestion label="Kommune" name="kommune">
20
- * <option>Bergen</option>
21
- * <option>Oslo</option>
22
- * </fs-suggestion>
23
- * ```
24
- */
25
- export class FsSuggestion extends LitElement {
26
- constructor() {
27
- super(...arguments);
28
- this.label = "";
29
- this.value = "";
30
- this.invalid = false;
31
- this.required = false;
32
- this.optional = false;
33
- this.disabled = false;
34
- this.noResultsText = "Ingen treff";
35
- this.open = false;
36
- /** Alternativet som er markert med piltastene. */
37
- this.activeIndex = -1;
38
- this.options = [];
39
- this.uid = `fs-suggestion-${Math.random().toString(36).slice(2, 9)}`;
40
- this.handleFocus = () => {
41
- if (!this.disabled)
42
- this.show();
43
- };
44
- this.handleInput = (event) => {
45
- const input = event.target;
46
- this.value = input.value;
47
- this.activeIndex = -1;
48
- this.show();
49
- };
50
- this.handleKeydown = (event) => {
51
- const matches = this.filteredOptions;
52
- if (event.key === "Escape") {
53
- event.preventDefault();
54
- this.hide();
55
- return;
56
- }
57
- if (event.key === "ArrowDown" || event.key === "ArrowUp") {
58
- event.preventDefault();
59
- if (!this.open)
60
- this.show();
61
- if (matches.length === 0)
62
- return;
63
- const step = event.key === "ArrowDown" ? 1 : -1;
64
- const next = this.activeIndex + step;
65
- this.activeIndex =
66
- next < 0 ? matches.length - 1 : next >= matches.length ? 0 : next;
67
- this.requestUpdate();
68
- return;
69
- }
70
- if (event.key === "Enter" && this.open && this.activeIndex >= 0) {
71
- event.preventDefault();
72
- this.select(matches[this.activeIndex]);
73
- }
74
- };
75
- this.handleOptionClick = (event, option) => {
76
- // mousedown og ikke click: feltet mister ellers fokus før valget rekker
77
- // å skje, og lista lukker seg med den.
78
- event.preventDefault();
79
- this.select(option);
80
- };
81
- this.handleOutsideClick = (event) => {
82
- if (!this.open)
83
- return;
84
- if (this.contains(event.target))
85
- return;
86
- this.hide();
87
- };
88
- }
89
- createRenderRoot() {
90
- return this;
91
- }
92
- connectedCallback() {
93
- super.connectedCallback();
94
- this.readOptions();
95
- document.addEventListener("click", this.handleOutsideClick, true);
96
- // Alternativene byttes ofte ut mens brukeren skriver, for eksempel med
97
- // treff fra en server. Uten dette ville bare det første settet telt.
98
- this.observer = new MutationObserver(() => {
99
- if (this.querySelector("option")) {
100
- this.readOptions();
101
- this.requestUpdate();
102
- }
103
- });
104
- this.observer.observe(this, { childList: true });
105
- }
106
- disconnectedCallback() {
107
- document.removeEventListener("click", this.handleOutsideClick, true);
108
- this.observer?.disconnect();
109
- this.observer = undefined;
110
- super.disconnectedCallback();
111
- }
112
- /** Leser `<option>`-barna og fjerner dem fra visningen. */
113
- readOptions() {
114
- const options = [...this.querySelectorAll("option")];
115
- if (options.length === 0)
116
- return;
117
- this.options = options.map((option) => ({
118
- value: option.value || (option.textContent ?? "").trim(),
119
- label: (option.textContent ?? "").trim() || option.value,
120
- }));
121
- for (const option of options)
122
- option.remove();
123
- }
124
- /** Alternativene som passer med det som står i feltet. */
125
- get filteredOptions() {
126
- const query = this.value.trim().toLowerCase();
127
- if (query === "")
128
- return this.options;
129
- return this.options.filter((option) => option.label.toLowerCase().includes(query));
130
- }
131
- get inputId() {
132
- return this.controlId || `${this.uid}-input`;
133
- }
134
- get listId() {
135
- return `${this.uid}-list`;
136
- }
137
- get statusId() {
138
- return `${this.uid}-status`;
139
- }
140
- render() {
141
- const field = computeFieldAttributes({
142
- id: this.inputId,
143
- help: Boolean(this.helpText),
144
- error: Boolean(this.errorText),
145
- helpId: `${this.uid}-help`,
146
- errorId: `${this.uid}-error`,
147
- required: this.required ? "symbol" : undefined,
148
- optional: this.optional,
149
- invalid: this.invalid,
150
- disabled: this.disabled,
151
- describedBy: [this.statusId, this.describedBy ?? ""].filter(Boolean),
152
- });
153
- const matches = this.filteredOptions;
154
- const open = this.open && !this.disabled;
155
- return html `
156
- <label class="fs-label" for=${field.label.for}
157
- data-required=${ifDefined(field.label["data-required"])}
158
- data-optional=${ifDefined(field.label["data-optional"])}
159
- aria-disabled=${ifDefined(field.label["aria-disabled"])}
160
- >${this.label}</label
161
- >
162
-
163
- <div class="fs-suggestion__field">
164
- <input
165
- class="fs-input"
166
- id=${field.control.id}
167
- name=${ifDefined(this.name)}
168
- type="text"
169
- role="combobox"
170
- autocomplete="off"
171
- .value=${live(this.value)}
172
- placeholder=${ifDefined(this.placeholder)}
173
- aria-expanded=${String(open)}
174
- aria-controls=${this.listId}
175
- aria-autocomplete="list"
176
- aria-activedescendant=${ifDefined(open && this.activeIndex >= 0
177
- ? `${this.uid}-option-${this.activeIndex}`
178
- : undefined)}
179
- aria-describedby=${ifDefined(field.control["aria-describedby"])}
180
- aria-invalid=${ifDefined(field.control["aria-invalid"])}
181
- data-state=${ifDefined(field.control["data-state"])}
182
- ?disabled=${this.disabled}
183
- @input=${this.handleInput}
184
- @keydown=${this.handleKeydown}
185
- @focus=${this.handleFocus}
186
- />
187
-
188
- <ul
189
- class="fs-suggestion__list"
190
- id=${this.listId}
191
- role="listbox"
192
- ?hidden=${!open}
193
- >
194
- ${matches.map((option, index) => html `<li
195
- class="fs-suggestion__option"
196
- id=${`${this.uid}-option-${index}`}
197
- role="option"
198
- aria-selected=${String(index === this.activeIndex)}
199
- @mousedown=${(event) => this.handleOptionClick(event, option)}
200
- >
201
- ${option.label}
202
- </li>`)}
203
- ${matches.length === 0
204
- ? html `<li class="fs-suggestion__empty" role="presentation">
205
- ${this.noResultsText}
206
- </li>`
207
- : null}
208
- </ul>
209
- </div>
210
-
211
- ${this.helpText
212
- ? html `<p class="fs-help-text" id=${field.help.id}>${this.helpText}</p>`
213
- : null}
214
- ${this.errorText
215
- ? html `<p
216
- class="fs-error-text"
217
- id=${field.error.id}
218
- ?hidden=${Boolean(field.error.hidden)}
219
- >
220
- ${this.errorText}
221
- </p>`
222
- : null}
223
-
224
- <p class="fs-sr-only" id=${this.statusId} role="status">
225
- ${open ? this.statusText(matches.length) : ""}
226
- </p>
227
- `;
228
- }
229
- /** Antall treff, som tekst skjermleseren leser opp. */
230
- statusText(count) {
231
- if (count === 0)
232
- return this.noResultsText;
233
- return count === 1 ? "1 forslag" : `${count} forslag`;
234
- }
235
- /** Velger et alternativ og melder fra. */
236
- select(option) {
237
- this.value = option.value;
238
- this.hide();
239
- const input = this.querySelector("input");
240
- if (input)
241
- input.value = option.value;
242
- this.dispatchEvent(new CustomEvent("suggestion-select", {
243
- detail: { value: option.value, label: option.label },
244
- bubbles: true,
245
- composed: true,
246
- }));
247
- this.dispatchEvent(new Event("change", { bubbles: true }));
248
- }
249
- /** Åpner forslagslista. */
250
- show() {
251
- this.open = true;
252
- }
253
- /** Lukker forslagslista. */
254
- hide() {
255
- this.open = false;
256
- this.activeIndex = -1;
257
- }
258
- }
259
- FsSuggestion.properties = {
260
- label: { type: String },
261
- value: { type: String, reflect: true },
262
- name: { type: String },
263
- placeholder: { type: String },
264
- helpText: { type: String, attribute: "help-text" },
265
- errorText: { type: String, attribute: "error-text" },
266
- invalid: { type: Boolean, reflect: true },
267
- required: { type: Boolean, reflect: true },
268
- optional: { type: Boolean, reflect: true },
269
- disabled: { type: Boolean, reflect: true },
270
- controlId: { type: String, attribute: "control-id" },
271
- describedBy: { type: String, attribute: "described-by" },
272
- noResultsText: { type: String, attribute: "no-results-text" },
273
- open: { type: Boolean, reflect: true },
274
- };
275
- export function defineFsSuggestion(tagName = FS_SUGGESTION_TAG) {
276
- if (!customElements.get(tagName)) {
277
- customElements.define(tagName, FsSuggestion);
278
- }
279
- }
280
- //# sourceMappingURL=fs-suggestion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-suggestion.js","sourceRoot":"","sources":["../../../../src/components/frittstaende/suggestion/fs-suggestion.ts"],"names":[],"mappings":"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"}