@fristil/designsystem 0.5.1 → 0.5.3
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.
- package/CHANGELOG.md +99 -0
- package/dist/components/css/select/select.d.ts +18 -1
- package/dist/components/css/select/select.d.ts.map +1 -1
- package/dist/components/css/select/select.js +15 -2
- package/dist/components/css/select/select.js.map +1 -1
- package/dist/components/frittstaende/connection-status/fs-connection-status.d.ts +2 -1
- package/dist/components/frittstaende/connection-status/fs-connection-status.d.ts.map +1 -1
- package/dist/components/frittstaende/connection-status/fs-connection-status.js +3 -4
- package/dist/components/frittstaende/connection-status/fs-connection-status.js.map +1 -1
- package/dist/components/frittstaende/session-timeout/fs-session-timeout.d.ts +2 -1
- package/dist/components/frittstaende/session-timeout/fs-session-timeout.d.ts.map +1 -1
- package/dist/components/frittstaende/session-timeout/fs-session-timeout.js +3 -4
- package/dist/components/frittstaende/session-timeout/fs-session-timeout.js.map +1 -1
- package/dist/components/frittstaende/toast/fs-toast.d.ts +2 -1
- package/dist/components/frittstaende/toast/fs-toast.d.ts.map +1 -1
- package/dist/components/frittstaende/toast/fs-toast.js +3 -4
- package/dist/components/frittstaende/toast/fs-toast.js.map +1 -1
- package/dist/components/host-element.d.ts +28 -0
- package/dist/components/host-element.d.ts.map +1 -0
- package/dist/components/host-element.js +33 -0
- package/dist/components/host-element.js.map +1 -0
- package/dist/components/ramme/error-summary/fs-error-summary.d.ts +2 -1
- package/dist/components/ramme/error-summary/fs-error-summary.d.ts.map +1 -1
- package/dist/components/ramme/error-summary/fs-error-summary.js +15 -7
- package/dist/components/ramme/error-summary/fs-error-summary.js.map +1 -1
- package/dist/components/ramme/field/field-core.d.ts +15 -6
- package/dist/components/ramme/field/field-core.d.ts.map +1 -1
- package/dist/components/ramme/field/field-core.js +15 -6
- package/dist/components/ramme/field/field-core.js.map +1 -1
- package/dist/components/ramme/field/fs-field.d.ts +2 -1
- package/dist/components/ramme/field/fs-field.d.ts.map +1 -1
- package/dist/components/ramme/field/fs-field.js +3 -4
- package/dist/components/ramme/field/fs-field.js.map +1 -1
- package/dist/components/ramme/popover/fs-popover.d.ts +2 -1
- package/dist/components/ramme/popover/fs-popover.d.ts.map +1 -1
- package/dist/components/ramme/popover/fs-popover.js +3 -4
- package/dist/components/ramme/popover/fs-popover.js.map +1 -1
- package/dist/components/ramme/suggestion/fs-suggestion.d.ts +13 -2
- package/dist/components/ramme/suggestion/fs-suggestion.d.ts.map +1 -1
- package/dist/components/ramme/suggestion/fs-suggestion.js +27 -8
- package/dist/components/ramme/suggestion/fs-suggestion.js.map +1 -1
- package/dist/components/ramme/suggestion/suggestion.d.ts +10 -0
- package/dist/components/ramme/suggestion/suggestion.d.ts.map +1 -1
- package/dist/components/ramme/suggestion/suggestion.js +13 -1
- package/dist/components/ramme/suggestion/suggestion.js.map +1 -1
- package/dist/components/ramme/tabs/fs-tabs.d.ts +2 -1
- package/dist/components/ramme/tabs/fs-tabs.d.ts.map +1 -1
- package/dist/components/ramme/tabs/fs-tabs.js +3 -4
- package/dist/components/ramme/tabs/fs-tabs.js.map +1 -1
- package/dist/dom.d.ts.map +1 -1
- package/dist/dom.js +2 -0
- package/dist/dom.js.map +1 -1
- package/dist/fs.d.ts +5 -1
- package/dist/fs.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react.d.ts +5 -1
- package/dist/react.d.ts.map +1 -1
- package/package.json +7 -2
- package/src/components/css/select/select.css +193 -5
- package/src/components/css/select/select.ts +24 -1
- package/src/components/frittstaende/connection-status/fs-connection-status.ts +3 -4
- package/src/components/frittstaende/session-timeout/fs-session-timeout.ts +3 -4
- package/src/components/frittstaende/toast/fs-toast.ts +3 -4
- package/src/components/host-element.ts +34 -0
- package/src/components/ramme/error-summary/fs-error-summary.ts +16 -7
- package/src/components/ramme/field/field-core.ts +15 -6
- package/src/components/ramme/field/fs-field.ts +3 -4
- package/src/components/ramme/popover/fs-popover.ts +3 -4
- package/src/components/ramme/suggestion/fs-suggestion.ts +30 -8
- package/src/components/ramme/suggestion/suggestion.ts +13 -1
- package/src/components/ramme/tabs/fs-tabs.ts +3 -4
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { defineElement, HostElement } from "../../host-element.js"
|
|
1
2
|
import {
|
|
2
3
|
SUGGESTION_EMPTY_CLASS,
|
|
3
4
|
SUGGESTION_OPTION_CLASS,
|
|
@@ -35,10 +36,9 @@ export const FS_SUGGESTION_TAG = "fs-suggestion" as const
|
|
|
35
36
|
* </fs-suggestion>
|
|
36
37
|
* ```
|
|
37
38
|
*/
|
|
38
|
-
export class FsSuggestion extends
|
|
39
|
+
export class FsSuggestion extends HostElement {
|
|
39
40
|
static observedAttributes = ["server-filtered"]
|
|
40
41
|
|
|
41
|
-
private activeIndex = -1
|
|
42
42
|
private observer?: MutationObserver
|
|
43
43
|
private control?: HTMLInputElement
|
|
44
44
|
/** Alternativene som alt har fått lytteren sin. */
|
|
@@ -75,6 +75,22 @@ export class FsSuggestion extends HTMLElement {
|
|
|
75
75
|
]
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Hvilket synlig alternativ som er markert nå.
|
|
80
|
+
*
|
|
81
|
+
* Den leses fra `aria-selected` i markupen, ikke fra en teller inni
|
|
82
|
+
* komponenten. Serveren kan sette markeringen selv med
|
|
83
|
+
* `fs.suggestion({ activeIndex })`, og en parallell teller ville hoppet
|
|
84
|
+
* til toppen av lista ved første piltast i stedet for til alternativet
|
|
85
|
+
* etter. Filtreringen flytter også på alternativene, og da svarer
|
|
86
|
+
* oppslaget riktig av seg selv.
|
|
87
|
+
*/
|
|
88
|
+
private get activeIndex(): number {
|
|
89
|
+
return this.visible.findIndex(
|
|
90
|
+
(option) => option.getAttribute("aria-selected") === "true",
|
|
91
|
+
)
|
|
92
|
+
}
|
|
93
|
+
|
|
78
94
|
/** Alternativene som er synlige nå. */
|
|
79
95
|
private get visible(): HTMLElement[] {
|
|
80
96
|
return this.options.filter((option) => !option.hidden)
|
|
@@ -120,7 +136,6 @@ export class FsSuggestion extends HTMLElement {
|
|
|
120
136
|
this.control.setAttribute("aria-expanded", String(open))
|
|
121
137
|
|
|
122
138
|
if (!open) {
|
|
123
|
-
this.activeIndex = -1
|
|
124
139
|
this.control.removeAttribute("aria-activedescendant")
|
|
125
140
|
for (const option of this.options) {
|
|
126
141
|
option.setAttribute("aria-selected", "false")
|
|
@@ -166,7 +181,6 @@ export class FsSuggestion extends HTMLElement {
|
|
|
166
181
|
if (synlige.length === 0 || !this.control) return
|
|
167
182
|
|
|
168
183
|
const neste = (index + synlige.length) % synlige.length
|
|
169
|
-
this.activeIndex = neste
|
|
170
184
|
|
|
171
185
|
for (const option of this.options) {
|
|
172
186
|
option.setAttribute("aria-selected", "false")
|
|
@@ -228,7 +242,17 @@ export class FsSuggestion extends HTMLElement {
|
|
|
228
242
|
this.markActive(this.activeIndex + 1)
|
|
229
243
|
} else if (event.key === "ArrowUp") {
|
|
230
244
|
event.preventDefault()
|
|
231
|
-
|
|
245
|
+
// Lista må åpnes først, som med pil ned. Uten det pekte
|
|
246
|
+
// `aria-activedescendant` på et alternativ i en liste feltet samtidig
|
|
247
|
+
// meldte som lukket, og skjermleseren leste opp noe som ikke sto på
|
|
248
|
+
// skjermen.
|
|
249
|
+
if (!åpen) {
|
|
250
|
+
this.filter()
|
|
251
|
+
this.setOpen(true)
|
|
252
|
+
}
|
|
253
|
+
// Er ingenting markert, går pil opp til det siste. `activeIndex - 1`
|
|
254
|
+
// ville gitt det nest siste, siden ingenting markert er -1.
|
|
255
|
+
this.markActive(this.activeIndex < 0 ? -1 : this.activeIndex - 1)
|
|
232
256
|
} else if (event.key === "Enter" && åpen && this.activeIndex >= 0) {
|
|
233
257
|
event.preventDefault()
|
|
234
258
|
const valgt = this.visible[this.activeIndex]
|
|
@@ -259,7 +283,5 @@ declare global {
|
|
|
259
283
|
}
|
|
260
284
|
|
|
261
285
|
export function defineFsSuggestion(tagName = FS_SUGGESTION_TAG): void {
|
|
262
|
-
|
|
263
|
-
customElements.define(tagName, FsSuggestion)
|
|
264
|
-
}
|
|
286
|
+
defineElement(tagName, FsSuggestion)
|
|
265
287
|
}
|
|
@@ -82,7 +82,19 @@ export const suggestion = ({
|
|
|
82
82
|
"data-preserve-attr": "aria-selected hidden" as const,
|
|
83
83
|
}),
|
|
84
84
|
),
|
|
85
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Teksten som vises når ingenting passer.
|
|
87
|
+
*
|
|
88
|
+
* Den er skjult så lenge serveren sender noe å velge mellom, og
|
|
89
|
+
* komponenten skjuler og viser den igjen mens brukeren skriver.
|
|
90
|
+
* `data-preserve-attr` må derfor ha `hidden` med: uten den dukket
|
|
91
|
+
* «Ingen treff» opp igjen ved hver patch, også når noe passet.
|
|
92
|
+
*/
|
|
93
|
+
empty: attributes({
|
|
94
|
+
class: SUGGESTION_EMPTY_CLASS,
|
|
95
|
+
hidden: count > 0 ? (true as const) : undefined,
|
|
96
|
+
"data-preserve-attr": "hidden" as const,
|
|
97
|
+
}),
|
|
86
98
|
/**
|
|
87
99
|
* Området som melder antall treff til skjermlesere.
|
|
88
100
|
*
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { defineElement, HostElement } from "../../host-element.js"
|
|
1
2
|
export const FS_TABS_TAG = "fs-tabs" as const
|
|
2
3
|
|
|
3
4
|
/**
|
|
@@ -27,7 +28,7 @@ export const FS_TABS_TAG = "fs-tabs" as const
|
|
|
27
28
|
* </fs-tabs>
|
|
28
29
|
* ```
|
|
29
30
|
*/
|
|
30
|
-
export class FsTabs extends
|
|
31
|
+
export class FsTabs extends HostElement {
|
|
31
32
|
/**
|
|
32
33
|
* Ingen attributter. Hvilken fane som er valgt står i markupen serveren
|
|
33
34
|
* sendte, som `aria-selected` på fanen og `hidden` på panelene, og leses
|
|
@@ -145,7 +146,5 @@ declare global {
|
|
|
145
146
|
}
|
|
146
147
|
|
|
147
148
|
export function defineFsTabs(tagName = FS_TABS_TAG): void {
|
|
148
|
-
|
|
149
|
-
customElements.define(tagName, FsTabs)
|
|
150
|
-
}
|
|
149
|
+
defineElement(tagName, FsTabs)
|
|
151
150
|
}
|