@k2b/ui 0.17.0 → 0.19.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.
- package/README.md +3 -2
- package/dist/browser/actions/ContextMenu.js +3 -1
- package/dist/browser/actions/ContextMenu.js.map +1 -1
- package/dist/browser/actions/Dropdown.js +91 -46
- package/dist/browser/actions/Dropdown.js.map +1 -1
- package/dist/browser/actions/FilterChip.js +4 -1
- package/dist/browser/actions/FilterChip.js.map +1 -1
- package/dist/browser/chat/ChatComposer.js +1311 -565
- package/dist/browser/chat/ChatComposer.js.map +1 -1
- package/dist/browser/chat/ChatPrimitives.js +9 -6
- package/dist/browser/chat/ChatPrimitives.js.map +1 -1
- package/dist/browser/chat/chat-behavior.js +9 -0
- package/dist/browser/chat/chat-behavior.js.map +1 -1
- package/dist/browser/chat/index.js.map +1 -1
- package/dist/browser/chat/types.js.map +1 -1
- package/dist/browser/content/Calendar.js +579 -533
- package/dist/browser/content/Calendar.js.map +1 -1
- package/dist/browser/content/FileView.js +62 -36
- package/dist/browser/content/FileView.js.map +1 -1
- package/dist/browser/content/Lightbox.js +76 -40
- package/dist/browser/content/Lightbox.js.map +1 -1
- package/dist/browser/content/MarkdownView.js +9 -3
- package/dist/browser/content/MarkdownView.js.map +1 -1
- package/dist/browser/content/PdfPreview.js +146 -79
- package/dist/browser/content/PdfPreview.js.map +1 -1
- package/dist/browser/content/Timeline.js +1038 -0
- package/dist/browser/content/Timeline.js.map +1 -0
- package/dist/browser/content/VideoPlayer.js +299 -0
- package/dist/browser/content/VideoPlayer.js.map +1 -0
- package/dist/browser/content/chart-inspection.js +7 -2
- package/dist/browser/content/chart-inspection.js.map +1 -1
- package/dist/browser/content/file-view-preview.js +2 -2
- package/dist/browser/content/file-view-preview.js.map +1 -1
- package/dist/browser/content/index.js +3 -0
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/content/markdown-links.js +178 -0
- package/dist/browser/content/markdown-links.js.map +1 -0
- package/dist/browser/content/timeline-model.js +579 -0
- package/dist/browser/content/timeline-model.js.map +1 -0
- package/dist/browser/feedback/dialog-core.js +26 -14
- package/dist/browser/feedback/dialog-core.js.map +1 -1
- package/dist/browser/inputs/ChoiceChips.js +66 -0
- package/dist/browser/inputs/ChoiceChips.js.map +1 -0
- package/dist/browser/inputs/ChoiceGroups.js +53 -12
- package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
- package/dist/browser/inputs/FileDropTarget.js +129 -0
- package/dist/browser/inputs/FileDropTarget.js.map +1 -0
- package/dist/browser/inputs/FileInputs.js +84 -43
- package/dist/browser/inputs/FileInputs.js.map +1 -1
- package/dist/browser/inputs/SignatureInput.js +558 -0
- package/dist/browser/inputs/SignatureInput.js.map +1 -0
- package/dist/browser/inputs/emoji/EmojiPicker.js +841 -0
- package/dist/browser/inputs/emoji/EmojiPicker.js.map +1 -0
- package/dist/browser/inputs/emoji/emoji-data.js +1903 -0
- package/dist/browser/inputs/emoji/emoji-data.js.map +1 -0
- package/dist/browser/inputs/emoji/emoji-index.js +209 -0
- package/dist/browser/inputs/emoji/emoji-index.js.map +1 -0
- package/dist/browser/inputs/emoji/emoji-messages.js +64 -0
- package/dist/browser/inputs/emoji/emoji-messages.js.map +1 -0
- package/dist/browser/inputs/file-drop.js +338 -0
- package/dist/browser/inputs/file-drop.js.map +1 -0
- package/dist/browser/inputs/index.js +6 -0
- package/dist/browser/inputs/index.js.map +1 -1
- package/dist/browser/inputs/markdown/MarkdownEditor.js +72 -78
- package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/browser/inputs/markdown/actions.js +48 -2
- package/dist/browser/inputs/markdown/actions.js.map +1 -1
- package/dist/browser/inputs/markdown/code-zone.js +38 -2
- package/dist/browser/inputs/markdown/code-zone.js.map +1 -1
- package/dist/browser/inputs/signature-messages.js +39 -0
- package/dist/browser/inputs/signature-messages.js.map +1 -0
- package/dist/browser/inputs/signature.js +208 -0
- package/dist/browser/inputs/signature.js.map +1 -0
- package/dist/browser/internal/render-error.js +49 -0
- package/dist/browser/internal/render-error.js.map +1 -0
- package/dist/browser/intl/messages.js +205 -4
- package/dist/browser/intl/messages.js.map +1 -1
- package/dist/browser/layout/AppWorkspace.js +483 -218
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/FloatingWindow.js +4 -1
- package/dist/browser/layout/FloatingWindow.js.map +1 -1
- package/dist/browser/layout/Navigation.js +274 -197
- package/dist/browser/layout/Navigation.js.map +1 -1
- package/dist/browser/layout/SidebarItemPreview.js +5 -1
- package/dist/browser/layout/SidebarItemPreview.js.map +1 -1
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/layout/navigation-model.js +2 -0
- package/dist/browser/layout/navigation-model.js.map +1 -1
- package/dist/browser/surfaces/NoticeCard.js +47 -44
- package/dist/browser/surfaces/NoticeCard.js.map +1 -1
- package/dist/browser/surfaces/ResourceCard.js +212 -0
- package/dist/browser/surfaces/ResourceCard.js.map +1 -0
- package/dist/browser/surfaces/index.js +1 -0
- package/dist/browser/surfaces/index.js.map +1 -1
- package/dist/licenses/emojibase-data.txt +21 -0
- package/dist/ssr/actions/ContextMenu.js +3 -1
- package/dist/ssr/actions/ContextMenu.js.map +1 -1
- package/dist/ssr/actions/Dropdown.js +49 -12
- package/dist/ssr/actions/Dropdown.js.map +1 -1
- package/dist/ssr/actions/FilterChip.js +4 -1
- package/dist/ssr/actions/FilterChip.js.map +1 -1
- package/dist/ssr/chat/ChatComposer.js +823 -221
- package/dist/ssr/chat/ChatComposer.js.map +1 -1
- package/dist/ssr/chat/ChatPrimitives.js +9 -6
- package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
- package/dist/ssr/chat/chat-behavior.js +9 -0
- package/dist/ssr/chat/chat-behavior.js.map +1 -1
- package/dist/ssr/chat/index.js.map +1 -1
- package/dist/ssr/chat/types.js.map +1 -1
- package/dist/ssr/content/Calendar.js +183 -142
- package/dist/ssr/content/Calendar.js.map +1 -1
- package/dist/ssr/content/FileView.js +30 -6
- package/dist/ssr/content/FileView.js.map +1 -1
- package/dist/ssr/content/Lightbox.js +19 -5
- package/dist/ssr/content/Lightbox.js.map +1 -1
- package/dist/ssr/content/MarkdownView.js +9 -3
- package/dist/ssr/content/MarkdownView.js.map +1 -1
- package/dist/ssr/content/PdfPreview.js +77 -36
- package/dist/ssr/content/PdfPreview.js.map +1 -1
- package/dist/ssr/content/Timeline.js +804 -0
- package/dist/ssr/content/Timeline.js.map +1 -0
- package/dist/ssr/content/VideoPlayer.js +228 -0
- package/dist/ssr/content/VideoPlayer.js.map +1 -0
- package/dist/ssr/content/chart-inspection.js +7 -2
- package/dist/ssr/content/chart-inspection.js.map +1 -1
- package/dist/ssr/content/file-view-preview.js +2 -2
- package/dist/ssr/content/file-view-preview.js.map +1 -1
- package/dist/ssr/content/index.js +3 -0
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/content/markdown-links.js +178 -0
- package/dist/ssr/content/markdown-links.js.map +1 -0
- package/dist/ssr/content/timeline-model.js +579 -0
- package/dist/ssr/content/timeline-model.js.map +1 -0
- package/dist/ssr/feedback/dialog-core.js +26 -14
- package/dist/ssr/feedback/dialog-core.js.map +1 -1
- package/dist/ssr/inputs/ChoiceChips.js +66 -0
- package/dist/ssr/inputs/ChoiceChips.js.map +1 -0
- package/dist/ssr/inputs/ChoiceGroups.js +12 -4
- package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
- package/dist/ssr/inputs/FileDropTarget.js +103 -0
- package/dist/ssr/inputs/FileDropTarget.js.map +1 -0
- package/dist/ssr/inputs/FileInputs.js +49 -12
- package/dist/ssr/inputs/FileInputs.js.map +1 -1
- package/dist/ssr/inputs/SignatureInput.js +404 -0
- package/dist/ssr/inputs/SignatureInput.js.map +1 -0
- package/dist/ssr/inputs/emoji/EmojiPicker.js +551 -0
- package/dist/ssr/inputs/emoji/EmojiPicker.js.map +1 -0
- package/dist/ssr/inputs/emoji/emoji-data.js +1903 -0
- package/dist/ssr/inputs/emoji/emoji-data.js.map +1 -0
- package/dist/ssr/inputs/emoji/emoji-index.js +209 -0
- package/dist/ssr/inputs/emoji/emoji-index.js.map +1 -0
- package/dist/ssr/inputs/emoji/emoji-messages.js +64 -0
- package/dist/ssr/inputs/emoji/emoji-messages.js.map +1 -0
- package/dist/ssr/inputs/file-drop.js +338 -0
- package/dist/ssr/inputs/file-drop.js.map +1 -0
- package/dist/ssr/inputs/index.js +6 -0
- package/dist/ssr/inputs/index.js.map +1 -1
- package/dist/ssr/inputs/markdown/MarkdownEditor.js +14 -2
- package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/ssr/inputs/markdown/actions.js +48 -2
- package/dist/ssr/inputs/markdown/actions.js.map +1 -1
- package/dist/ssr/inputs/markdown/code-zone.js +38 -2
- package/dist/ssr/inputs/markdown/code-zone.js.map +1 -1
- package/dist/ssr/inputs/signature-messages.js +39 -0
- package/dist/ssr/inputs/signature-messages.js.map +1 -0
- package/dist/ssr/inputs/signature.js +208 -0
- package/dist/ssr/inputs/signature.js.map +1 -0
- package/dist/ssr/internal/render-error.js +49 -0
- package/dist/ssr/internal/render-error.js.map +1 -0
- package/dist/ssr/intl/messages.js +205 -4
- package/dist/ssr/intl/messages.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +264 -47
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/FloatingWindow.js +4 -1
- package/dist/ssr/layout/FloatingWindow.js.map +1 -1
- package/dist/ssr/layout/Navigation.js +169 -122
- package/dist/ssr/layout/Navigation.js.map +1 -1
- package/dist/ssr/layout/SidebarItemPreview.js +5 -1
- package/dist/ssr/layout/SidebarItemPreview.js.map +1 -1
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/layout/navigation-model.js +2 -0
- package/dist/ssr/layout/navigation-model.js.map +1 -1
- package/dist/ssr/surfaces/NoticeCard.js +17 -12
- package/dist/ssr/surfaces/NoticeCard.js.map +1 -1
- package/dist/ssr/surfaces/ResourceCard.js +115 -0
- package/dist/ssr/surfaces/ResourceCard.js.map +1 -0
- package/dist/ssr/surfaces/index.js +1 -0
- package/dist/ssr/surfaces/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/actions/Dropdown.d.ts +13 -1
- package/dist/types/actions/FilterChip.d.ts +5 -0
- package/dist/types/chat/ChatComposer.d.ts +24 -1
- package/dist/types/chat/ChatPrimitives.d.ts +1 -1
- package/dist/types/chat/chat-behavior.d.ts +15 -0
- package/dist/types/chat/index.d.ts +1 -1
- package/dist/types/chat/types.d.ts +34 -0
- package/dist/types/content/Calendar.d.ts +28 -8
- package/dist/types/content/Lightbox.d.ts +8 -0
- package/dist/types/content/Timeline.d.ts +49 -0
- package/dist/types/content/VideoPlayer.d.ts +41 -0
- package/dist/types/content/index.d.ts +6 -2
- package/dist/types/content/markdown-links.d.ts +66 -0
- package/dist/types/content/timeline-model.d.ts +148 -0
- package/dist/types/feedback/dialog-core.d.ts +1 -1
- package/dist/types/inputs/ChoiceChips.d.ts +20 -0
- package/dist/types/inputs/ChoiceGroups.d.ts +11 -2
- package/dist/types/inputs/FileDropTarget.d.ts +23 -0
- package/dist/types/inputs/FileInputs.d.ts +8 -0
- package/dist/types/inputs/SignatureInput.d.ts +22 -0
- package/dist/types/inputs/emoji/EmojiPicker.d.ts +42 -0
- package/dist/types/inputs/emoji/emoji-data.d.ts +2 -0
- package/dist/types/inputs/emoji/emoji-index.d.ts +109 -0
- package/dist/types/inputs/emoji/emoji-messages.d.ts +30 -0
- package/dist/types/inputs/file-drop.d.ts +80 -0
- package/dist/types/inputs/index.d.ts +12 -0
- package/dist/types/inputs/markdown/actions.d.ts +4 -0
- package/dist/types/inputs/markdown/code-zone.d.ts +7 -0
- package/dist/types/inputs/signature-messages.d.ts +11 -0
- package/dist/types/inputs/signature.d.ts +72 -0
- package/dist/types/internal/render-error.d.ts +13 -0
- package/dist/types/intl/messages.d.ts +101 -0
- package/dist/types/layout/AppWorkspace.d.ts +38 -0
- package/dist/types/layout/SidebarItemPreview.d.ts +2 -0
- package/dist/types/layout/index.d.ts +2 -2
- package/dist/types/layout/navigation-model.d.ts +18 -0
- package/dist/types/surfaces/ResourceCard.d.ts +31 -0
- package/dist/types/surfaces/index.d.ts +2 -0
- package/package.json +5 -4
|
@@ -1,33 +1,46 @@
|
|
|
1
1
|
import { template as _$template } from "solid-js/web";
|
|
2
2
|
import { delegateEvents as _$delegateEvents } from "solid-js/web";
|
|
3
3
|
import { setProperty as _$setProperty } from "solid-js/web";
|
|
4
|
-
import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
5
|
-
import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
|
|
6
4
|
import { memo as _$memo } from "solid-js/web";
|
|
5
|
+
import { className as _$className } from "solid-js/web";
|
|
7
6
|
import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
|
|
8
7
|
import { getNextMarker as _$getNextMarker } from "solid-js/web";
|
|
9
|
-
import {
|
|
8
|
+
import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
|
|
9
|
+
import { spread as _$spread } from "solid-js/web";
|
|
10
|
+
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
11
|
+
import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
10
12
|
import { effect as _$effect } from "solid-js/web";
|
|
11
13
|
import { getNextElement as _$getNextElement } from "solid-js/web";
|
|
12
14
|
import { insert as _$insert } from "solid-js/web";
|
|
13
15
|
import { createComponent as _$createComponent } from "solid-js/web";
|
|
14
16
|
var _tmpl$ = /*#__PURE__*/_$template(`<ul class=k2b-navigation__list>`),
|
|
15
|
-
_tmpl$2 = /*#__PURE__*/_$template(`<i
|
|
17
|
+
_tmpl$2 = /*#__PURE__*/_$template(`<i>`),
|
|
16
18
|
_tmpl$3 = /*#__PURE__*/_$template(`<small>`),
|
|
17
19
|
_tmpl$4 = /*#__PURE__*/_$template(`<span class=k2b-navigation__copy><span></span><!$><!/>`),
|
|
18
20
|
_tmpl$5 = /*#__PURE__*/_$template(`<span class=k2b-navigation__color>`),
|
|
19
21
|
_tmpl$6 = /*#__PURE__*/_$template(`<span class=k2b-navigation__badge>`),
|
|
20
|
-
_tmpl$7 = /*#__PURE__*/_$template(`<
|
|
21
|
-
_tmpl$8 = /*#__PURE__*/_$template(`<i
|
|
22
|
-
_tmpl$9 = /*#__PURE__*/_$template(`<
|
|
23
|
-
_tmpl$0 = /*#__PURE__*/_$template(`<li><div class=k2b-
|
|
24
|
-
_tmpl$1 = /*#__PURE__*/_$template(`<button type=button class=k2b-
|
|
25
|
-
_tmpl$10 = /*#__PURE__*/_$template(`<
|
|
22
|
+
_tmpl$7 = /*#__PURE__*/_$template(`<span class=k2b-navigation__status>`),
|
|
23
|
+
_tmpl$8 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
|
|
24
|
+
_tmpl$9 = /*#__PURE__*/_$template(`<span class=k2b-sr-only>`),
|
|
25
|
+
_tmpl$0 = /*#__PURE__*/_$template(`<li class=k2b-navigation__section><div class=k2b-navigation__heading></div><!$><!/>`),
|
|
26
|
+
_tmpl$1 = /*#__PURE__*/_$template(`<button type=button class=k2b-navigation__disclosure><i aria-hidden=true>`),
|
|
27
|
+
_tmpl$10 = /*#__PURE__*/_$template(`<i class="ti ti-dots"aria-hidden=true>`),
|
|
28
|
+
_tmpl$11 = /*#__PURE__*/_$template(`<div>`),
|
|
29
|
+
_tmpl$12 = /*#__PURE__*/_$template(`<li><div class=k2b-navigation__row><!$><!/><!$><!/><!$><!/><!$><!/></div><!$><!/>`),
|
|
30
|
+
_tmpl$13 = /*#__PURE__*/_$template(`<button type=button class=k2b-navigation__control><!$><!/><!$><!/>`),
|
|
31
|
+
_tmpl$14 = /*#__PURE__*/_$template(`<nav class=k2b-navigation>`);
|
|
26
32
|
import { documentNavigate, Link } from "@k2b/ssr/nav";
|
|
27
|
-
import { createSignal, For, Show } from "solid-js";
|
|
33
|
+
import { createSignal, createUniqueId, For, Show } from "solid-js";
|
|
28
34
|
import { IconButton } from "../actions/Button";
|
|
29
35
|
import { Dropdown } from "../actions/Dropdown";
|
|
30
36
|
import { useUiMessages } from "../intl/messages";
|
|
37
|
+
/** A named icon is an image screen readers announce; any other icon is decoration. */
|
|
38
|
+
const iconAccessibility = label => label ? {
|
|
39
|
+
role: "img",
|
|
40
|
+
"aria-label": label
|
|
41
|
+
} : {
|
|
42
|
+
"aria-hidden": true
|
|
43
|
+
};
|
|
31
44
|
export default function Navigation(props) {
|
|
32
45
|
const messages = useUiMessages();
|
|
33
46
|
const [expanded, setExpanded] = createSignal({});
|
|
@@ -44,6 +57,7 @@ export default function Navigation(props) {
|
|
|
44
57
|
children: id => {
|
|
45
58
|
const item = () => rows.items.find(entry => entry.id === id);
|
|
46
59
|
const disabled = () => rows.disabled || item().disabled;
|
|
60
|
+
const headingId = `k2b-navigation-section-${createUniqueId()}`;
|
|
47
61
|
// `expanded` hands disclosure to the item's owner; every other toggle stays local to this renderer.
|
|
48
62
|
const open = () => item().expanded ?? expanded()[id] ?? item().defaultExpanded ?? true;
|
|
49
63
|
const toggle = () => {
|
|
@@ -58,7 +72,12 @@ export default function Navigation(props) {
|
|
|
58
72
|
},
|
|
59
73
|
get children() {
|
|
60
74
|
var _el$2 = _$getNextElement(_tmpl$2);
|
|
61
|
-
_$
|
|
75
|
+
_$spread(_el$2, _$mergeProps({
|
|
76
|
+
get ["class"]() {
|
|
77
|
+
return item().icon;
|
|
78
|
+
}
|
|
79
|
+
}, () => iconAccessibility(item().iconLabel)), false, false);
|
|
80
|
+
_$runHydrationEvents();
|
|
62
81
|
return _el$2;
|
|
63
82
|
}
|
|
64
83
|
}), (() => {
|
|
@@ -96,217 +115,275 @@ export default function Navigation(props) {
|
|
|
96
115
|
_$insert(_el$9, () => item().badge);
|
|
97
116
|
return _el$9;
|
|
98
117
|
}
|
|
99
|
-
})
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
_el$
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
[_el$18, _co$4] = _$getNextMarker(_el$17.nextSibling),
|
|
109
|
-
_el$19 = _el$18.nextSibling,
|
|
110
|
-
[_el$20, _co$5] = _$getNextMarker(_el$19.nextSibling),
|
|
111
|
-
_el$22 = _el$1.nextSibling,
|
|
112
|
-
[_el$23, _co$6] = _$getNextMarker(_el$22.nextSibling);
|
|
113
|
-
_$insert(_el$1, _$createComponent(Show, {
|
|
114
|
-
get when() {
|
|
115
|
-
return item().href;
|
|
116
|
-
},
|
|
117
|
-
get fallback() {
|
|
118
|
-
return (() => {
|
|
119
|
-
var _el$24 = _$getNextElement(_tmpl$1),
|
|
120
|
-
_el$26 = _el$24.firstChild,
|
|
121
|
-
[_el$27, _co$7] = _$getNextMarker(_el$26.nextSibling),
|
|
122
|
-
_el$28 = _el$27.nextSibling,
|
|
123
|
-
[_el$29, _co$8] = _$getNextMarker(_el$28.nextSibling);
|
|
124
|
-
_el$24.$$click = () => item().action ? void activate(id) : toggle();
|
|
125
|
-
_$insert(_el$24, content, _el$27, _co$7);
|
|
126
|
-
_$insert(_el$24, _$createComponent(Show, {
|
|
127
|
-
get when() {
|
|
128
|
-
return _$memo(() => !!!item().action)() && item().children?.length;
|
|
129
|
-
},
|
|
130
|
-
get children() {
|
|
131
|
-
var _el$25 = _$getNextElement(_tmpl$2);
|
|
132
|
-
_$effect(() => _$className(_el$25, open() ? "ti ti-chevron-down" : "ti ti-chevron-right"));
|
|
133
|
-
return _el$25;
|
|
134
|
-
}
|
|
135
|
-
}), _el$29, _co$8);
|
|
136
|
-
_$effect(_p$ => {
|
|
137
|
-
var _v$5 = disabled(),
|
|
138
|
-
_v$6 = !item().action ? open() : undefined;
|
|
139
|
-
_v$5 !== _p$.e && _$setProperty(_el$24, "disabled", _p$.e = _v$5);
|
|
140
|
-
_v$6 !== _p$.t && _$setAttribute(_el$24, "aria-expanded", _p$.t = _v$6);
|
|
141
|
-
return _p$;
|
|
142
|
-
}, {
|
|
143
|
-
e: undefined,
|
|
144
|
-
t: undefined
|
|
145
|
-
});
|
|
146
|
-
_$runHydrationEvents();
|
|
147
|
-
return _el$24;
|
|
148
|
-
})();
|
|
149
|
-
},
|
|
150
|
-
children: href => _$createComponent(Link, {
|
|
151
|
-
"class": "k2b-navigation__control",
|
|
152
|
-
get href() {
|
|
153
|
-
return href();
|
|
154
|
-
},
|
|
155
|
-
get ["aria-current"]() {
|
|
156
|
-
return item().active ? "page" : undefined;
|
|
157
|
-
},
|
|
158
|
-
get ["aria-disabled"]() {
|
|
159
|
-
return disabled() || undefined;
|
|
160
|
-
},
|
|
161
|
-
get tabIndex() {
|
|
162
|
-
return disabled() ? -1 : undefined;
|
|
163
|
-
},
|
|
164
|
-
get scroll() {
|
|
165
|
-
return item().scroll;
|
|
166
|
-
},
|
|
167
|
-
onNavigate: async event => {
|
|
168
|
-
if (!(await ready())) return;
|
|
169
|
-
if (item().navigation === "enhanced" && props.navigation.onNavigate) await props.navigation.onNavigate(event);else event.fallback();
|
|
170
|
-
},
|
|
171
|
-
onClick: event => {
|
|
172
|
-
if (disabled()) {
|
|
173
|
-
event.preventDefault();
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
if (!item().action || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;
|
|
177
|
-
// Local opening can fetch before committing navigation, outside a view transition.
|
|
178
|
-
event.preventDefault();
|
|
179
|
-
void activate(id);
|
|
118
|
+
}), _$createComponent(Show, {
|
|
119
|
+
get when() {
|
|
120
|
+
return item().status !== undefined;
|
|
121
|
+
},
|
|
122
|
+
get children() {
|
|
123
|
+
var _el$0 = _$getNextElement(_tmpl$7);
|
|
124
|
+
_$insert(_el$0, _$createComponent(Show, {
|
|
125
|
+
get when() {
|
|
126
|
+
return item().status;
|
|
180
127
|
},
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
_$
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
_$
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
128
|
+
children: status => [(() => {
|
|
129
|
+
var _el$1 = _$getNextElement(_tmpl$8);
|
|
130
|
+
_$effect(() => _$className(_el$1, status().icon));
|
|
131
|
+
return _el$1;
|
|
132
|
+
})(), (() => {
|
|
133
|
+
var _el$10 = _$getNextElement(_tmpl$9);
|
|
134
|
+
_$insert(_el$10, () => status().label);
|
|
135
|
+
return _el$10;
|
|
136
|
+
})()]
|
|
137
|
+
}));
|
|
138
|
+
_$effect(_p$ => {
|
|
139
|
+
var _v$ = item().status?.tone,
|
|
140
|
+
_v$2 = item().status?.label;
|
|
141
|
+
_v$ !== _p$.e && _$setAttribute(_el$0, "data-tone", _p$.e = _v$);
|
|
142
|
+
_v$2 !== _p$.t && _$setAttribute(_el$0, "title", _p$.t = _v$2);
|
|
143
|
+
return _p$;
|
|
144
|
+
}, {
|
|
145
|
+
e: undefined,
|
|
146
|
+
t: undefined
|
|
147
|
+
});
|
|
148
|
+
return _el$0;
|
|
149
|
+
}
|
|
150
|
+
})];
|
|
151
|
+
return _$createComponent(Show, {
|
|
152
|
+
get when() {
|
|
153
|
+
return item().section;
|
|
154
|
+
},
|
|
155
|
+
get fallback() {
|
|
156
|
+
return (() => {
|
|
157
|
+
var _el$15 = _$getNextElement(_tmpl$12),
|
|
158
|
+
_el$16 = _el$15.firstChild,
|
|
159
|
+
_el$20 = _el$16.firstChild,
|
|
160
|
+
[_el$21, _co$3] = _$getNextMarker(_el$20.nextSibling),
|
|
161
|
+
_el$22 = _el$21.nextSibling,
|
|
162
|
+
[_el$23, _co$4] = _$getNextMarker(_el$22.nextSibling),
|
|
163
|
+
_el$24 = _el$23.nextSibling,
|
|
164
|
+
[_el$25, _co$5] = _$getNextMarker(_el$24.nextSibling),
|
|
165
|
+
_el$26 = _el$25.nextSibling,
|
|
166
|
+
[_el$27, _co$6] = _$getNextMarker(_el$26.nextSibling),
|
|
167
|
+
_el$29 = _el$16.nextSibling,
|
|
168
|
+
[_el$30, _co$7] = _$getNextMarker(_el$29.nextSibling);
|
|
169
|
+
_$insert(_el$16, _$createComponent(Show, {
|
|
221
170
|
get when() {
|
|
222
|
-
return
|
|
171
|
+
return item().href;
|
|
223
172
|
},
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
173
|
+
get fallback() {
|
|
174
|
+
return (() => {
|
|
175
|
+
var _el$31 = _$getNextElement(_tmpl$13),
|
|
176
|
+
_el$33 = _el$31.firstChild,
|
|
177
|
+
[_el$34, _co$8] = _$getNextMarker(_el$33.nextSibling),
|
|
178
|
+
_el$35 = _el$34.nextSibling,
|
|
179
|
+
[_el$36, _co$9] = _$getNextMarker(_el$35.nextSibling);
|
|
180
|
+
_el$31.$$click = () => item().action ? void activate(id) : toggle();
|
|
181
|
+
_$insert(_el$31, content, _el$34, _co$8);
|
|
182
|
+
_$insert(_el$31, _$createComponent(Show, {
|
|
183
|
+
get when() {
|
|
184
|
+
return _$memo(() => !!!item().action)() && item().children?.length;
|
|
185
|
+
},
|
|
186
|
+
get children() {
|
|
187
|
+
var _el$32 = _$getNextElement(_tmpl$8);
|
|
188
|
+
_$effect(() => _$className(_el$32, open() ? "ti ti-chevron-down" : "ti ti-chevron-right"));
|
|
189
|
+
return _el$32;
|
|
190
|
+
}
|
|
191
|
+
}), _el$36, _co$9);
|
|
192
|
+
_$effect(_p$ => {
|
|
193
|
+
var _v$7 = disabled(),
|
|
194
|
+
_v$8 = !item().action ? open() : undefined;
|
|
195
|
+
_v$7 !== _p$.e && _$setProperty(_el$31, "disabled", _p$.e = _v$7);
|
|
196
|
+
_v$8 !== _p$.t && _$setAttribute(_el$31, "aria-expanded", _p$.t = _v$8);
|
|
197
|
+
return _p$;
|
|
198
|
+
}, {
|
|
199
|
+
e: undefined,
|
|
200
|
+
t: undefined
|
|
201
|
+
});
|
|
202
|
+
_$runHydrationEvents();
|
|
203
|
+
return _el$31;
|
|
204
|
+
})();
|
|
205
|
+
},
|
|
206
|
+
children: href => _$createComponent(Link, {
|
|
207
|
+
"class": "k2b-navigation__control",
|
|
208
|
+
get href() {
|
|
209
|
+
return href();
|
|
210
|
+
},
|
|
211
|
+
get ["aria-current"]() {
|
|
212
|
+
return item().active ? "page" : undefined;
|
|
228
213
|
},
|
|
229
|
-
get disabled() {
|
|
230
|
-
return disabled() ||
|
|
214
|
+
get ["aria-disabled"]() {
|
|
215
|
+
return disabled() || undefined;
|
|
216
|
+
},
|
|
217
|
+
get tabIndex() {
|
|
218
|
+
return disabled() ? -1 : undefined;
|
|
219
|
+
},
|
|
220
|
+
get scroll() {
|
|
221
|
+
return item().scroll;
|
|
222
|
+
},
|
|
223
|
+
onNavigate: async event => {
|
|
224
|
+
if (!(await ready())) return;
|
|
225
|
+
if (item().navigation === "enhanced" && props.navigation.onNavigate) await props.navigation.onNavigate(event);else event.fallback();
|
|
226
|
+
},
|
|
227
|
+
onClick: event => {
|
|
228
|
+
if (disabled()) {
|
|
229
|
+
event.preventDefault();
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
if (!item().action || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;
|
|
233
|
+
// Local opening can fetch before committing navigation, outside a view transition.
|
|
234
|
+
event.preventDefault();
|
|
235
|
+
void activate(id);
|
|
231
236
|
},
|
|
232
|
-
onClick: () => void activate(actionId),
|
|
233
237
|
get children() {
|
|
234
|
-
|
|
235
|
-
_$effect(() => _$className(_el$30, current().icon));
|
|
236
|
-
return _el$30;
|
|
238
|
+
return content();
|
|
237
239
|
}
|
|
238
240
|
})
|
|
239
|
-
});
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
241
|
+
}), _el$21, _co$3);
|
|
242
|
+
_$insert(_el$16, _$createComponent(Show, {
|
|
243
|
+
get when() {
|
|
244
|
+
return _$memo(() => !!(item().href || item().action))() && item().children?.length;
|
|
245
|
+
},
|
|
246
|
+
get children() {
|
|
247
|
+
var _el$17 = _$getNextElement(_tmpl$1),
|
|
248
|
+
_el$18 = _el$17.firstChild;
|
|
249
|
+
_el$17.$$click = toggle;
|
|
250
|
+
_$effect(_p$ => {
|
|
251
|
+
var _v$3 = item().label,
|
|
252
|
+
_v$4 = open(),
|
|
253
|
+
_v$5 = disabled(),
|
|
254
|
+
_v$6 = open() ? "ti ti-chevron-down" : "ti ti-chevron-right";
|
|
255
|
+
_v$3 !== _p$.e && _$setAttribute(_el$17, "aria-label", _p$.e = _v$3);
|
|
256
|
+
_v$4 !== _p$.t && _$setAttribute(_el$17, "aria-expanded", _p$.t = _v$4);
|
|
257
|
+
_v$5 !== _p$.a && _$setProperty(_el$17, "disabled", _p$.a = _v$5);
|
|
258
|
+
_v$6 !== _p$.o && _$className(_el$18, _p$.o = _v$6);
|
|
259
|
+
return _p$;
|
|
260
|
+
}, {
|
|
261
|
+
e: undefined,
|
|
262
|
+
t: undefined,
|
|
263
|
+
a: undefined,
|
|
264
|
+
o: undefined
|
|
265
|
+
});
|
|
266
|
+
_$runHydrationEvents();
|
|
267
|
+
return _el$17;
|
|
268
|
+
}
|
|
269
|
+
}), _el$23, _co$4);
|
|
270
|
+
_$insert(_el$16, _$createComponent(For, {
|
|
271
|
+
get each() {
|
|
272
|
+
return (item().inlineActions ?? []).map(action => action.id);
|
|
273
|
+
},
|
|
274
|
+
children: actionId => {
|
|
275
|
+
const action = () => item().inlineActions?.find(entry => entry.id === actionId);
|
|
276
|
+
return _$createComponent(Show, {
|
|
277
|
+
get when() {
|
|
278
|
+
return action();
|
|
279
|
+
},
|
|
280
|
+
children: current => _$createComponent(IconButton, {
|
|
281
|
+
"class": "k2b-navigation__inline-action",
|
|
282
|
+
get label() {
|
|
283
|
+
return current().label;
|
|
284
|
+
},
|
|
285
|
+
get disabled() {
|
|
286
|
+
return disabled() || current().disabled;
|
|
287
|
+
},
|
|
288
|
+
onClick: () => void activate(actionId),
|
|
289
|
+
get children() {
|
|
290
|
+
var _el$37 = _$getNextElement(_tmpl$8);
|
|
291
|
+
_$effect(() => _$className(_el$37, current().icon));
|
|
292
|
+
return _el$37;
|
|
293
|
+
}
|
|
294
|
+
})
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
}), _el$25, _co$5);
|
|
298
|
+
_$insert(_el$16, _$createComponent(Show, {
|
|
299
|
+
get when() {
|
|
300
|
+
return item().actions?.length;
|
|
260
301
|
},
|
|
261
302
|
get children() {
|
|
262
|
-
return _$createComponent(Dropdown.
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
303
|
+
return _$createComponent(Dropdown.Root, {
|
|
304
|
+
get items() {
|
|
305
|
+
return (item().actions ?? []).map(action => ({
|
|
306
|
+
label: action.label,
|
|
307
|
+
icon: action.icon,
|
|
308
|
+
description: action.description,
|
|
309
|
+
disabled: disabled() || action.disabled,
|
|
310
|
+
action: () => {
|
|
311
|
+
if (action.href) void ready().then(allowed => {
|
|
312
|
+
if (allowed) documentNavigate(action.href);
|
|
313
|
+
});else void activate(action.id);
|
|
314
|
+
}
|
|
315
|
+
}));
|
|
266
316
|
},
|
|
267
|
-
variant: "ghost",
|
|
268
317
|
get children() {
|
|
269
|
-
return _$
|
|
318
|
+
return _$createComponent(Dropdown.Trigger, {
|
|
319
|
+
iconOnly: true,
|
|
320
|
+
get label() {
|
|
321
|
+
return `${item().label}: ${messages().rowAction}`;
|
|
322
|
+
},
|
|
323
|
+
variant: "ghost",
|
|
324
|
+
get children() {
|
|
325
|
+
return _$getNextElement(_tmpl$10);
|
|
326
|
+
}
|
|
327
|
+
});
|
|
270
328
|
}
|
|
271
329
|
});
|
|
272
330
|
}
|
|
273
|
-
});
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
get when() {
|
|
278
|
-
return item().children?.length;
|
|
279
|
-
},
|
|
280
|
-
get children() {
|
|
281
|
-
var _el$21 = _$getNextElement(_tmpl$9);
|
|
282
|
-
_$insert(_el$21, _$createComponent(Rows, {
|
|
283
|
-
get items() {
|
|
284
|
-
return item().children ?? [];
|
|
331
|
+
}), _el$27, _co$6);
|
|
332
|
+
_$insert(_el$15, _$createComponent(Show, {
|
|
333
|
+
get when() {
|
|
334
|
+
return item().children?.length;
|
|
285
335
|
},
|
|
286
|
-
get
|
|
287
|
-
|
|
336
|
+
get children() {
|
|
337
|
+
var _el$28 = _$getNextElement(_tmpl$11);
|
|
338
|
+
_$insert(_el$28, _$createComponent(Rows, {
|
|
339
|
+
get items() {
|
|
340
|
+
return item().children ?? [];
|
|
341
|
+
},
|
|
342
|
+
get disabled() {
|
|
343
|
+
return disabled();
|
|
344
|
+
}
|
|
345
|
+
}));
|
|
346
|
+
_$effect(() => _$setProperty(_el$28, "hidden", !open()));
|
|
347
|
+
return _el$28;
|
|
288
348
|
}
|
|
289
|
-
}));
|
|
290
|
-
_$effect(() => _$
|
|
291
|
-
return _el$
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
349
|
+
}), _el$30, _co$7);
|
|
350
|
+
_$effect(() => _$setAttribute(_el$16, "data-active", item().active || undefined));
|
|
351
|
+
return _el$15;
|
|
352
|
+
})();
|
|
353
|
+
},
|
|
354
|
+
get children() {
|
|
355
|
+
var _el$11 = _$getNextElement(_tmpl$0),
|
|
356
|
+
_el$12 = _el$11.firstChild,
|
|
357
|
+
_el$13 = _el$12.nextSibling,
|
|
358
|
+
[_el$14, _co$2] = _$getNextMarker(_el$13.nextSibling);
|
|
359
|
+
_$setAttribute(_el$12, "id", headingId);
|
|
360
|
+
_$insert(_el$12, () => item().label);
|
|
361
|
+
_$insert(_el$11, _$createComponent(Rows, {
|
|
362
|
+
get items() {
|
|
363
|
+
return item().children ?? [];
|
|
364
|
+
},
|
|
365
|
+
get disabled() {
|
|
366
|
+
return disabled();
|
|
367
|
+
},
|
|
368
|
+
labelledBy: headingId
|
|
369
|
+
}), _el$14, _co$2);
|
|
370
|
+
return _el$11;
|
|
371
|
+
}
|
|
372
|
+
});
|
|
297
373
|
}
|
|
298
374
|
}));
|
|
375
|
+
_$effect(() => _$setAttribute(_el$, "aria-labelledby", rows.labelledBy));
|
|
299
376
|
return _el$;
|
|
300
377
|
})();
|
|
301
378
|
return (() => {
|
|
302
|
-
var _el$
|
|
303
|
-
_$insert(_el$
|
|
379
|
+
var _el$38 = _$getNextElement(_tmpl$14);
|
|
380
|
+
_$insert(_el$38, _$createComponent(Rows, {
|
|
304
381
|
get items() {
|
|
305
382
|
return props.navigation.items();
|
|
306
383
|
}
|
|
307
384
|
}));
|
|
308
|
-
_$effect(() => _$setAttribute(_el$
|
|
309
|
-
return _el$
|
|
385
|
+
_$effect(() => _$setAttribute(_el$38, "aria-label", props.label));
|
|
386
|
+
return _el$38;
|
|
310
387
|
})();
|
|
311
388
|
}
|
|
312
389
|
_$delegateEvents(["click"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["layout/Navigation.tsx"],"sourcesContent":["import { documentNavigate, Link } from \"@k2b/ssr/nav\";\nimport { createSignal, For, Show } from \"solid-js\";\nimport { IconButton } from \"../actions/Button\";\nimport { Dropdown } from \"../actions/Dropdown\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { NavigationController, NavigationItem } from \"./navigation-model\";\n\nexport type NavigationProps = {\n navigation: NavigationController;\n label: string;\n /** A host can finish dismissing its menu before the selected operation runs. */\n beforeSelect?: () => boolean | void | Promise<boolean | void>;\n};\n\nexport default function Navigation(props: NavigationProps) {\n const messages = useUiMessages();\n const [expanded, setExpanded] = createSignal<Record<string, boolean>>({});\n const ready = async () => (await props.beforeSelect?.()) !== false;\n const activate = async (id: string) => {\n if (await ready()) await props.navigation.activate(id);\n };\n const Rows = (rows: { items: readonly NavigationItem[]; disabled?: boolean }) => (\n <ul class=\"k2b-navigation__list\">\n <For each={rows.items.map((item) => item.id)}>\n {(id) => {\n const item = () => rows.items.find((entry) => entry.id === id)!;\n const disabled = () => rows.disabled || item().disabled;\n // `expanded` hands disclosure to the item's owner; every other toggle stays local to this renderer.\n const open = () => item().expanded ?? expanded()[id] ?? item().defaultExpanded ?? true;\n const toggle = () => {\n if (item().expanded !== undefined) props.navigation.onExpandedChange?.(id, !open());\n else setExpanded((current) => ({ ...current, [id]: !open() }));\n };\n const content = () => (\n <>\n <Show when={item().icon}>\n <i class={item().icon} aria-hidden=\"true\" />\n </Show>\n <span class=\"k2b-navigation__copy\">\n <span>{item().label}</span>\n <Show when={item().description}>\n <small>{item().description}</small>\n </Show>\n </span>\n <Show when={item().color}>\n <span class=\"k2b-navigation__color\" style={{ \"background-color\": item().color }} />\n </Show>\n <Show when={item().badge !== undefined}>\n <span class=\"k2b-navigation__badge\">{item().badge}</span>\n </Show>\n </>\n );\n return (\n <li>\n <div class=\"k2b-navigation__row\" data-active={item().active || undefined}>\n <Show\n when={item().href}\n fallback={\n <button\n type=\"button\"\n class=\"k2b-navigation__control\"\n disabled={disabled()}\n aria-expanded={!item().action ? open() : undefined}\n onClick={() => (item().action ? void activate(id) : toggle())}\n >\n {content()}\n <Show when={!item().action && item().children?.length}>\n <i class={open() ? \"ti ti-chevron-down\" : \"ti ti-chevron-right\"} aria-hidden=\"true\" />\n </Show>\n </button>\n }\n >\n {(href) => (\n <Link\n class=\"k2b-navigation__control\"\n href={href()}\n aria-current={item().active ? \"page\" : undefined}\n aria-disabled={disabled() || undefined}\n tabIndex={disabled() ? -1 : undefined}\n scroll={item().scroll}\n onNavigate={async (event) => {\n if (!(await ready())) return;\n if (item().navigation === \"enhanced\" && props.navigation.onNavigate) await props.navigation.onNavigate(event);\n else event.fallback();\n }}\n onClick={(event) => {\n if (disabled()) {\n event.preventDefault();\n return;\n }\n if (!item().action || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)\n return;\n // Local opening can fetch before committing navigation, outside a view transition.\n event.preventDefault();\n void activate(id);\n }}\n >\n {content()}\n </Link>\n )}\n </Show>\n <Show when={(item().href || item().action) && item().children?.length}>\n <button\n type=\"button\"\n class=\"k2b-navigation__disclosure\"\n aria-label={item().label}\n aria-expanded={open()}\n disabled={disabled()}\n onClick={toggle}\n >\n <i class={open() ? \"ti ti-chevron-down\" : \"ti ti-chevron-right\"} aria-hidden=\"true\" />\n </button>\n </Show>\n {/* Keyed by id like the rows, so a button keeps its identity and focus when the model updates. */}\n <For each={(item().inlineActions ?? []).map((action) => action.id)}>\n {(actionId) => {\n const action = () => item().inlineActions?.find((entry) => entry.id === actionId);\n return (\n <Show when={action()}>\n {(current) => (\n <IconButton\n class=\"k2b-navigation__inline-action\"\n label={current().label}\n disabled={disabled() || current().disabled}\n onClick={() => void activate(actionId)}\n >\n <i class={current().icon} aria-hidden=\"true\" />\n </IconButton>\n )}\n </Show>\n );\n }}\n </For>\n <Show when={item().actions?.length}>\n <Dropdown.Root\n items={(item().actions ?? []).map((action) => ({\n label: action.label,\n icon: action.icon,\n description: action.description,\n disabled: disabled() || action.disabled,\n action: () => {\n if (action.href)\n void ready().then((allowed) => {\n if (allowed) documentNavigate(action.href!);\n });\n else void activate(action.id);\n },\n }))}\n >\n <Dropdown.Trigger iconOnly label={`${item().label}: ${messages().rowAction}`} variant=\"ghost\">\n <i class=\"ti ti-dots\" aria-hidden=\"true\" />\n </Dropdown.Trigger>\n </Dropdown.Root>\n </Show>\n </div>\n <Show when={item().children?.length}>\n <div hidden={!open()}>\n <Rows items={item().children ?? []} disabled={disabled()} />\n </div>\n </Show>\n </li>\n );\n }}\n </For>\n </ul>\n );\n return (\n <nav class=\"k2b-navigation\" aria-label={props.label}>\n <Rows items={props.navigation.items()} />\n </nav>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["layout/Navigation.tsx"],"sourcesContent":["import { documentNavigate, Link } from \"@k2b/ssr/nav\";\nimport { createSignal, createUniqueId, For, Show } from \"solid-js\";\nimport { IconButton } from \"../actions/Button\";\nimport { Dropdown } from \"../actions/Dropdown\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { NavigationController, NavigationItem } from \"./navigation-model\";\n\nexport type NavigationProps = {\n navigation: NavigationController;\n label: string;\n /** A host can finish dismissing its menu before the selected operation runs. */\n beforeSelect?: () => boolean | void | Promise<boolean | void>;\n};\n\n/** A named icon is an image screen readers announce; any other icon is decoration. */\nconst iconAccessibility = (label: string | undefined) => (label ? { role: \"img\" as const, \"aria-label\": label } : { \"aria-hidden\": true });\n\nexport default function Navigation(props: NavigationProps) {\n const messages = useUiMessages();\n const [expanded, setExpanded] = createSignal<Record<string, boolean>>({});\n const ready = async () => (await props.beforeSelect?.()) !== false;\n const activate = async (id: string) => {\n if (await ready()) await props.navigation.activate(id);\n };\n const Rows = (rows: { items: readonly NavigationItem[]; disabled?: boolean; labelledBy?: string }) => (\n <ul class=\"k2b-navigation__list\" aria-labelledby={rows.labelledBy}>\n <For each={rows.items.map((item) => item.id)}>\n {(id) => {\n const item = () => rows.items.find((entry) => entry.id === id)!;\n const disabled = () => rows.disabled || item().disabled;\n const headingId = `k2b-navigation-section-${createUniqueId()}`;\n // `expanded` hands disclosure to the item's owner; every other toggle stays local to this renderer.\n const open = () => item().expanded ?? expanded()[id] ?? item().defaultExpanded ?? true;\n const toggle = () => {\n if (item().expanded !== undefined) props.navigation.onExpandedChange?.(id, !open());\n else setExpanded((current) => ({ ...current, [id]: !open() }));\n };\n const content = () => (\n <>\n <Show when={item().icon}>\n <i class={item().icon} {...iconAccessibility(item().iconLabel)} />\n </Show>\n <span class=\"k2b-navigation__copy\">\n <span>{item().label}</span>\n <Show when={item().description}>\n <small>{item().description}</small>\n </Show>\n </span>\n <Show when={item().color}>\n <span class=\"k2b-navigation__color\" style={{ \"background-color\": item().color }} />\n </Show>\n <Show when={item().badge !== undefined}>\n <span class=\"k2b-navigation__badge\">{item().badge}</span>\n </Show>\n {/* `null` keeps the empty slot, so a status that appears later takes no width from the label. */}\n <Show when={item().status !== undefined}>\n <span class=\"k2b-navigation__status\" data-tone={item().status?.tone} title={item().status?.label}>\n <Show when={item().status}>\n {(status) => (\n <>\n <i class={status().icon} aria-hidden=\"true\" />\n <span class=\"k2b-sr-only\">{status().label}</span>\n </>\n )}\n </Show>\n </span>\n </Show>\n </>\n );\n return (\n <Show\n when={item().section}\n fallback={\n <li>\n <div class=\"k2b-navigation__row\" data-active={item().active || undefined}>\n <Show\n when={item().href}\n fallback={\n <button\n type=\"button\"\n class=\"k2b-navigation__control\"\n disabled={disabled()}\n aria-expanded={!item().action ? open() : undefined}\n onClick={() => (item().action ? void activate(id) : toggle())}\n >\n {content()}\n <Show when={!item().action && item().children?.length}>\n <i class={open() ? \"ti ti-chevron-down\" : \"ti ti-chevron-right\"} aria-hidden=\"true\" />\n </Show>\n </button>\n }\n >\n {(href) => (\n <Link\n class=\"k2b-navigation__control\"\n href={href()}\n aria-current={item().active ? \"page\" : undefined}\n aria-disabled={disabled() || undefined}\n tabIndex={disabled() ? -1 : undefined}\n scroll={item().scroll}\n onNavigate={async (event) => {\n if (!(await ready())) return;\n if (item().navigation === \"enhanced\" && props.navigation.onNavigate) await props.navigation.onNavigate(event);\n else event.fallback();\n }}\n onClick={(event) => {\n if (disabled()) {\n event.preventDefault();\n return;\n }\n if (!item().action || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)\n return;\n // Local opening can fetch before committing navigation, outside a view transition.\n event.preventDefault();\n void activate(id);\n }}\n >\n {content()}\n </Link>\n )}\n </Show>\n <Show when={(item().href || item().action) && item().children?.length}>\n <button\n type=\"button\"\n class=\"k2b-navigation__disclosure\"\n aria-label={item().label}\n aria-expanded={open()}\n disabled={disabled()}\n onClick={toggle}\n >\n <i class={open() ? \"ti ti-chevron-down\" : \"ti ti-chevron-right\"} aria-hidden=\"true\" />\n </button>\n </Show>\n {/* Keyed by id like the rows, so a button keeps its identity and focus when the model updates. */}\n <For each={(item().inlineActions ?? []).map((action) => action.id)}>\n {(actionId) => {\n const action = () => item().inlineActions?.find((entry) => entry.id === actionId);\n return (\n <Show when={action()}>\n {(current) => (\n <IconButton\n class=\"k2b-navigation__inline-action\"\n label={current().label}\n disabled={disabled() || current().disabled}\n onClick={() => void activate(actionId)}\n >\n <i class={current().icon} aria-hidden=\"true\" />\n </IconButton>\n )}\n </Show>\n );\n }}\n </For>\n <Show when={item().actions?.length}>\n <Dropdown.Root\n items={(item().actions ?? []).map((action) => ({\n label: action.label,\n icon: action.icon,\n description: action.description,\n disabled: disabled() || action.disabled,\n action: () => {\n if (action.href)\n void ready().then((allowed) => {\n if (allowed) documentNavigate(action.href!);\n });\n else void activate(action.id);\n },\n }))}\n >\n <Dropdown.Trigger iconOnly label={`${item().label}: ${messages().rowAction}`} variant=\"ghost\">\n <i class=\"ti ti-dots\" aria-hidden=\"true\" />\n </Dropdown.Trigger>\n </Dropdown.Root>\n </Show>\n </div>\n <Show when={item().children?.length}>\n <div hidden={!open()}>\n <Rows items={item().children ?? []} disabled={disabled()} />\n </div>\n </Show>\n </li>\n }\n >\n <li class=\"k2b-navigation__section\">\n <div class=\"k2b-navigation__heading\" id={headingId}>\n {item().label}\n </div>\n <Rows items={item().children ?? []} disabled={disabled()} labelledBy={headingId} />\n </li>\n </Show>\n );\n }}\n </For>\n </ul>\n );\n return (\n <nav class=\"k2b-navigation\" aria-label={props.label}>\n <Rows items={props.navigation.items()} />\n </nav>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,7 +9,7 @@ import { getNextElement as _$getNextElement } from "solid-js/web";
|
|
|
9
9
|
import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
|
|
10
10
|
import { use as _$use } from "solid-js/web";
|
|
11
11
|
var _tmpl$ = /*#__PURE__*/_$template(`<button type=button class="k2b-app-workspace__sidebar-item-action k2b-app-workspace__sidebar-preview-trigger"data-visibility=hover aria-haspopup=dialog><i aria-hidden=true>`);
|
|
12
|
-
import { createSignal, onCleanup, onMount } from "solid-js";
|
|
12
|
+
import { createEffect, createSignal, onCleanup, onMount } from "solid-js";
|
|
13
13
|
import { createHoverPreview, HoverPreview } from "../feedback/HoverPreview";
|
|
14
14
|
import { ScrollArea } from "./ScrollArea";
|
|
15
15
|
|
|
@@ -45,6 +45,10 @@ export function SidebarItemPreview(props) {
|
|
|
45
45
|
preview.anchor(true, () => main ?? button)(row ?? button);
|
|
46
46
|
onCleanup(() => main?.removeEventListener("click", toggle));
|
|
47
47
|
});
|
|
48
|
+
createEffect(() => {
|
|
49
|
+
const id = props.describedBy;
|
|
50
|
+
if (id) main?.setAttribute("aria-describedby", id);else main?.removeAttribute("aria-describedby");
|
|
51
|
+
});
|
|
48
52
|
return [(() => {
|
|
49
53
|
var _el$ = _$getNextElement(_tmpl$),
|
|
50
54
|
_el$2 = _el$.firstChild;
|