@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
|
@@ -32,30 +32,35 @@ var _tmpl$ = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspac
|
|
|
32
32
|
_tmpl$12 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-app-workspace__sidebar-section-content>`),
|
|
33
33
|
_tmpl$13 = /*#__PURE__*/_$template(`<h2>`),
|
|
34
34
|
_tmpl$14 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-item-actions>`),
|
|
35
|
-
_tmpl$15 = /*#__PURE__*/_$template(`<
|
|
36
|
-
_tmpl$16 = /*#__PURE__*/_$template(`<
|
|
37
|
-
_tmpl$17 = /*#__PURE__*/_$template(`<
|
|
38
|
-
_tmpl$18 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-
|
|
39
|
-
_tmpl$19 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-
|
|
40
|
-
_tmpl$20 = /*#__PURE__*/_$template(`<
|
|
41
|
-
_tmpl$21 = /*#__PURE__*/_$template(`<
|
|
42
|
-
_tmpl$22 = /*#__PURE__*/_$template(`<
|
|
43
|
-
_tmpl$23 = /*#__PURE__*/_$template(`<
|
|
44
|
-
_tmpl$24 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-meta>`),
|
|
45
|
-
_tmpl$25 = /*#__PURE__*/_$template(`<
|
|
46
|
-
_tmpl$26 = /*#__PURE__*/_$template(`<
|
|
47
|
-
_tmpl$27 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-
|
|
48
|
-
_tmpl$28 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-
|
|
49
|
-
_tmpl$29 = /*#__PURE__*/_$template(`<
|
|
50
|
-
_tmpl$30 = /*#__PURE__*/_$template(`<
|
|
51
|
-
_tmpl$31 = /*#__PURE__*/_$template(`<
|
|
52
|
-
_tmpl$32 = /*#__PURE__*/_$template(`<
|
|
53
|
-
_tmpl$33 = /*#__PURE__*/_$template(`<
|
|
54
|
-
_tmpl$34 = /*#__PURE__*/_$template(`<
|
|
55
|
-
_tmpl$35 = /*#__PURE__*/_$template(`<
|
|
56
|
-
_tmpl$36 = /*#__PURE__*/_$template(`<div
|
|
35
|
+
_tmpl$15 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-mention aria-hidden=true>@`),
|
|
36
|
+
_tmpl$16 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-muted aria-hidden=true><i class="ti ti-bell-off">`),
|
|
37
|
+
_tmpl$17 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-count>`),
|
|
38
|
+
_tmpl$18 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status><!$><!/><!$><!/><span class=k2b-app-workspace__sidebar-status-unread aria-hidden=true></span><span class=k2b-sr-only>, <!$><!/>`),
|
|
39
|
+
_tmpl$19 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-dot>`),
|
|
40
|
+
_tmpl$20 = /*#__PURE__*/_$template(`<button type=button>`),
|
|
41
|
+
_tmpl$21 = /*#__PURE__*/_$template(`<a>`),
|
|
42
|
+
_tmpl$22 = /*#__PURE__*/_$template(`<div><!$><!/><!$><!/>`),
|
|
43
|
+
_tmpl$23 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon aria-hidden=true>`),
|
|
44
|
+
_tmpl$24 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context-meta>`),
|
|
45
|
+
_tmpl$25 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context><span class=k2b-app-workspace__sidebar-item-context-label></span><!$><!/>`),
|
|
46
|
+
_tmpl$26 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-description>`),
|
|
47
|
+
_tmpl$27 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-copy><!$><!/><span class=k2b-app-workspace__sidebar-item-label><span class=k2b-app-workspace__sidebar-item-label-text></span></span><!$><!/>`),
|
|
48
|
+
_tmpl$28 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-meta>`),
|
|
49
|
+
_tmpl$29 = /*#__PURE__*/_$template(`<i>`),
|
|
50
|
+
_tmpl$30 = /*#__PURE__*/_$template(`<a class=k2b-app-workspace__sidebar-item-action>`),
|
|
51
|
+
_tmpl$31 = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__sidebar-item-action>`),
|
|
52
|
+
_tmpl$32 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon><i>`),
|
|
53
|
+
_tmpl$33 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-label><span class=k2b-app-workspace__sidebar-item-label-text>`),
|
|
54
|
+
_tmpl$34 = /*#__PURE__*/_$template(`<span>`),
|
|
55
|
+
_tmpl$35 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__nav-tree-toggle data-k2b-nav-tree-toggle aria-hidden=true><i>`),
|
|
56
|
+
_tmpl$36 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-group role=group>`),
|
|
57
|
+
_tmpl$37 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-node role=treeitem><!$><!/><!$><!/>`),
|
|
58
|
+
_tmpl$38 = /*#__PURE__*/_$template(`<div role=tree>`),
|
|
59
|
+
_tmpl$39 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-app-workspace__sidebar-icon-grid>`),
|
|
60
|
+
_tmpl$40 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
|
|
61
|
+
_tmpl$41 = /*#__PURE__*/_$template(`<div data-k2b-app-workspace>`);
|
|
57
62
|
import { Link } from "@k2b/ssr/nav";
|
|
58
|
-
import { children, createContext, createMemo, createSignal, createUniqueId, For, mergeProps, onCleanup, onMount, Show, useContext } from "solid-js";
|
|
63
|
+
import { children, createContext, createEffect, createMemo, createSignal, createUniqueId, For, mergeProps, onCleanup, onMount, Show, useContext } from "solid-js";
|
|
59
64
|
import { useUiMessages } from "../intl/messages";
|
|
60
65
|
import { APP_WORKSPACE_SIDEBAR_HIDE_EVENT, installAppWorkspaceController } from "./app-workspace-controller";
|
|
61
66
|
import { APP_WORKSPACE_DETAIL_DEFAULT, APP_WORKSPACE_DETAIL_MAX, APP_WORKSPACE_DETAIL_MIN, APP_WORKSPACE_DRAWER_DEFAULT, APP_WORKSPACE_DRAWER_MAX, APP_WORKSPACE_DRAWER_MIN, APP_WORKSPACE_PANE_DEFAULT, APP_WORKSPACE_PANE_MAX, APP_WORKSPACE_PANE_MIN, APP_WORKSPACE_SIDEBAR_COLLAPSED, APP_WORKSPACE_SIDEBAR_DEFAULT, APP_WORKSPACE_SIDEBAR_MAX, APP_WORKSPACE_SIDEBAR_MIN, appWorkspaceLayoutStyle, appWorkspacePanelVariable } from "./app-workspace-state";
|
|
@@ -84,10 +89,11 @@ const sidebarChildSlot = value => Boolean(value && typeof value === "object" &&
|
|
|
84
89
|
const sidebarItemSlot = value => Boolean(value && typeof value === "object" && "kind" in value && [SIDEBAR_ITEM_ICON, SIDEBAR_ITEM_LABEL, SIDEBAR_ITEM_META, SIDEBAR_ITEM_ACTION].includes(value.kind));
|
|
85
90
|
const navTreeItemSlot = value => Boolean(value && typeof value === "object" && "kind" in value && value.kind === NAV_TREE_ITEM);
|
|
86
91
|
function ResizeHandle(props) {
|
|
92
|
+
const messages = useUiMessages();
|
|
87
93
|
return (() => {
|
|
88
94
|
var _el$ = _$getNextElement(_tmpl$);
|
|
89
95
|
_$effect(_p$ => {
|
|
90
|
-
var _v$ = props.label ?? (props.kind === "sidebar" ?
|
|
96
|
+
var _v$ = props.label ?? (props.kind === "sidebar" ? messages().resizeNavigation : props.kind === "pane" ? messages().resizeWorkspacePane : props.kind === "detail" ? messages().resizeDetailPanel : messages().resizeBottomDrawer),
|
|
91
97
|
_v$2 = props.controls,
|
|
92
98
|
_v$3 = props.kind === "drawer" ? "horizontal" : "vertical",
|
|
93
99
|
_v$4 = props.minSize,
|
|
@@ -135,6 +141,14 @@ function ResizeHandle(props) {
|
|
|
135
141
|
return _el$;
|
|
136
142
|
})();
|
|
137
143
|
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Unread state for the trailing `meta` slot. Every mark keeps a fixed width,
|
|
147
|
+
* so the row keeps its height and the label its start in every state.
|
|
148
|
+
*/
|
|
149
|
+
|
|
150
|
+
/** One requested place for an item among its unchanged siblings. */
|
|
151
|
+
|
|
138
152
|
const modeAttrs = mode => mode && mode !== "always" ? {
|
|
139
153
|
"data-sidebar-mode": mode
|
|
140
154
|
} : {};
|
|
@@ -146,6 +160,13 @@ const scrollAttrs = key => key ? {
|
|
|
146
160
|
"data-scroll-preserve": key
|
|
147
161
|
} : {};
|
|
148
162
|
const iconClass = (icon, fallback = "ti-circle") => icon?.startsWith("ti ") ? icon : `ti ${icon || fallback}`;
|
|
163
|
+
/** A named icon is an image screen readers announce; any other icon is decoration. */
|
|
164
|
+
const iconAccessibility = label => label ? {
|
|
165
|
+
role: "img",
|
|
166
|
+
"aria-label": label
|
|
167
|
+
} : {
|
|
168
|
+
"aria-hidden": true
|
|
169
|
+
};
|
|
149
170
|
function AppWorkspaceMainPane(props) {
|
|
150
171
|
return {
|
|
151
172
|
kind: MAIN_PANE,
|
|
@@ -771,6 +792,78 @@ const AppWorkspaceSidebarItemActions = props => (() => {
|
|
|
771
792
|
_$effect(() => _$setAttribute(_el$28, "data-visibility", props.visibility === "hover" ? "hover" : undefined));
|
|
772
793
|
return _el$28;
|
|
773
794
|
})();
|
|
795
|
+
const AppWorkspaceSidebarItemStatus = props => {
|
|
796
|
+
const messages = useUiMessages();
|
|
797
|
+
const count = () => typeof props.unread === "number" && props.unread >= 1 ? Math.floor(props.unread) : 0;
|
|
798
|
+
const dot = () => props.unread === true;
|
|
799
|
+
// The marks are decorative; the row's accessible name gets one phrase instead,
|
|
800
|
+
// which says no more than the "99+" a capped count shows.
|
|
801
|
+
const description = () => [count() > 99 ? messages().sidebarUnreadMany : count() ? messages().sidebarUnread({
|
|
802
|
+
count: count()
|
|
803
|
+
}) : dot() ? messages().sidebarNewActivity : "", props.mention ? messages().sidebarMentioned : "", props.muted ? messages().sidebarMuted : ""].filter(Boolean).join(", ");
|
|
804
|
+
// The unread slot stays reserved at the end, and the marks that change most
|
|
805
|
+
// often sit outermost, so new activity or a mention never moves another mark.
|
|
806
|
+
return _$createComponent(Show, {
|
|
807
|
+
get when() {
|
|
808
|
+
return description();
|
|
809
|
+
},
|
|
810
|
+
get children() {
|
|
811
|
+
var _el$29 = _$getNextElement(_tmpl$18),
|
|
812
|
+
_el$38 = _el$29.firstChild,
|
|
813
|
+
[_el$39, _co$6] = _$getNextMarker(_el$38.nextSibling),
|
|
814
|
+
_el$40 = _el$39.nextSibling,
|
|
815
|
+
[_el$41, _co$7] = _$getNextMarker(_el$40.nextSibling),
|
|
816
|
+
_el$32 = _el$41.nextSibling,
|
|
817
|
+
_el$34 = _el$32.nextSibling,
|
|
818
|
+
_el$35 = _el$34.firstChild,
|
|
819
|
+
_el$36 = _el$35.nextSibling,
|
|
820
|
+
[_el$37, _co$5] = _$getNextMarker(_el$36.nextSibling);
|
|
821
|
+
_$insert(_el$29, _$createComponent(Show, {
|
|
822
|
+
get when() {
|
|
823
|
+
return props.mention;
|
|
824
|
+
},
|
|
825
|
+
get children() {
|
|
826
|
+
return _$getNextElement(_tmpl$15);
|
|
827
|
+
}
|
|
828
|
+
}), _el$39, _co$6);
|
|
829
|
+
_$insert(_el$29, _$createComponent(Show, {
|
|
830
|
+
get when() {
|
|
831
|
+
return props.muted;
|
|
832
|
+
},
|
|
833
|
+
get children() {
|
|
834
|
+
return _$getNextElement(_tmpl$16);
|
|
835
|
+
}
|
|
836
|
+
}), _el$41, _co$7);
|
|
837
|
+
_$insert(_el$32, _$createComponent(Show, {
|
|
838
|
+
get when() {
|
|
839
|
+
return count();
|
|
840
|
+
},
|
|
841
|
+
get fallback() {
|
|
842
|
+
return _$createComponent(Show, {
|
|
843
|
+
get when() {
|
|
844
|
+
return dot();
|
|
845
|
+
},
|
|
846
|
+
get children() {
|
|
847
|
+
return _$getNextElement(_tmpl$19);
|
|
848
|
+
}
|
|
849
|
+
});
|
|
850
|
+
},
|
|
851
|
+
get children() {
|
|
852
|
+
var _el$33 = _$getNextElement(_tmpl$17);
|
|
853
|
+
_$insert(_el$33, (() => {
|
|
854
|
+
var _c$ = _$memo(() => count() > 99);
|
|
855
|
+
return () => _c$() ? "99+" : count();
|
|
856
|
+
})());
|
|
857
|
+
_$effect(() => _$setAttribute(_el$33, "data-mention", props.mention ? "true" : undefined));
|
|
858
|
+
return _el$33;
|
|
859
|
+
}
|
|
860
|
+
}));
|
|
861
|
+
_$insert(_el$34, description, _el$37, _co$5);
|
|
862
|
+
_$effect(() => _$setAttribute(_el$29, "data-unread", count() ? "count" : dot() ? "dot" : undefined));
|
|
863
|
+
return _el$29;
|
|
864
|
+
}
|
|
865
|
+
});
|
|
866
|
+
};
|
|
774
867
|
/** Shared visual and semantic row frame for flat sidebar items and tree items. */
|
|
775
868
|
function AppWorkspaceSidebarRow(props) {
|
|
776
869
|
const className = () => `k2b-app-workspace__sidebar-item ${props.hasActions ? "has-action" : ""} ${props.active ? props.activeClass ?? "is-active" : ""} ${props.class ?? ""}`;
|
|
@@ -796,8 +889,8 @@ function AppWorkspaceSidebarRow(props) {
|
|
|
796
889
|
},
|
|
797
890
|
get fallback() {
|
|
798
891
|
return (() => {
|
|
799
|
-
var _el$
|
|
800
|
-
_$spread(_el$
|
|
892
|
+
var _el$43 = _$getNextElement(_tmpl$20);
|
|
893
|
+
_$spread(_el$43, _$mergeProps(attrs, {
|
|
801
894
|
get tabIndex() {
|
|
802
895
|
return props.tabIndex;
|
|
803
896
|
},
|
|
@@ -808,9 +901,9 @@ function AppWorkspaceSidebarRow(props) {
|
|
|
808
901
|
return props.onClick;
|
|
809
902
|
}
|
|
810
903
|
}), false, true);
|
|
811
|
-
_$insert(_el$
|
|
904
|
+
_$insert(_el$43, () => props.children);
|
|
812
905
|
_$runHydrationEvents();
|
|
813
|
-
return _el$
|
|
906
|
+
return _el$43;
|
|
814
907
|
})();
|
|
815
908
|
},
|
|
816
909
|
get children() {
|
|
@@ -820,8 +913,8 @@ function AppWorkspaceSidebarRow(props) {
|
|
|
820
913
|
},
|
|
821
914
|
get fallback() {
|
|
822
915
|
return (() => {
|
|
823
|
-
var _el$
|
|
824
|
-
_$spread(_el$
|
|
916
|
+
var _el$44 = _$getNextElement(_tmpl$21);
|
|
917
|
+
_$spread(_el$44, _$mergeProps({
|
|
825
918
|
get href() {
|
|
826
919
|
return props.href;
|
|
827
920
|
}
|
|
@@ -836,9 +929,9 @@ function AppWorkspaceSidebarRow(props) {
|
|
|
836
929
|
return props.onClick;
|
|
837
930
|
}
|
|
838
931
|
}), false, true);
|
|
839
|
-
_$insert(_el$
|
|
932
|
+
_$insert(_el$44, () => props.children);
|
|
840
933
|
_$runHydrationEvents();
|
|
841
|
-
return _el$
|
|
934
|
+
return _el$44;
|
|
842
935
|
})();
|
|
843
936
|
},
|
|
844
937
|
get children() {
|
|
@@ -884,22 +977,22 @@ function AppWorkspaceSidebarRow(props) {
|
|
|
884
977
|
});
|
|
885
978
|
},
|
|
886
979
|
get children() {
|
|
887
|
-
var _el$
|
|
888
|
-
_el$
|
|
889
|
-
[_el$
|
|
890
|
-
_el$
|
|
891
|
-
[_el$
|
|
892
|
-
_$spread(_el$
|
|
980
|
+
var _el$45 = _$getNextElement(_tmpl$22),
|
|
981
|
+
_el$46 = _el$45.firstChild,
|
|
982
|
+
[_el$47, _co$8] = _$getNextMarker(_el$46.nextSibling),
|
|
983
|
+
_el$48 = _el$47.nextSibling,
|
|
984
|
+
[_el$49, _co$9] = _$getNextMarker(_el$48.nextSibling);
|
|
985
|
+
_$spread(_el$45, _$mergeProps(common, {
|
|
893
986
|
get ["data-disabled"]() {
|
|
894
987
|
return props.disabled ? "true" : undefined;
|
|
895
988
|
}
|
|
896
989
|
}), false, true);
|
|
897
|
-
_$insert(_el$
|
|
990
|
+
_$insert(_el$45, _$createComponent(Control, {
|
|
898
991
|
grouped: true
|
|
899
|
-
}), _el$
|
|
900
|
-
_$insert(_el$
|
|
992
|
+
}), _el$47, _co$8);
|
|
993
|
+
_$insert(_el$45, () => props.actions, _el$49, _co$9);
|
|
901
994
|
_$runHydrationEvents();
|
|
902
|
-
return _el$
|
|
995
|
+
return _el$45;
|
|
903
996
|
}
|
|
904
997
|
});
|
|
905
998
|
}
|
|
@@ -917,7 +1010,11 @@ function AppWorkspaceSidebarItem(props) {
|
|
|
917
1010
|
const label = () => labelSlot()?.children ?? (legacy().length === 1 ? legacy()[0] : legacy());
|
|
918
1011
|
const icon = () => iconSlot()?.icon ?? props.icon;
|
|
919
1012
|
const iconContent = () => iconSlot()?.children;
|
|
920
|
-
|
|
1013
|
+
// Resolved first, so a component that renders nothing, such as a status with
|
|
1014
|
+
// nothing to show, leaves no empty slot in the browser either.
|
|
1015
|
+
const meta = children(() => metaSlot()?.children ?? props.meta);
|
|
1016
|
+
const hasMeta = () => meta.toArray().some(Boolean);
|
|
1017
|
+
const metaId = createUniqueId();
|
|
921
1018
|
const metaVisibility = () => metaSlot()?.visibility ?? props.metaVisibility;
|
|
922
1019
|
const customActions = () => resolvedActions();
|
|
923
1020
|
const hasCustomActions = () => Boolean(customActions());
|
|
@@ -927,68 +1024,77 @@ function AppWorkspaceSidebarItem(props) {
|
|
|
927
1024
|
return iconContent() || icon();
|
|
928
1025
|
},
|
|
929
1026
|
get children() {
|
|
930
|
-
var _el$
|
|
931
|
-
_$insert(_el$
|
|
932
|
-
var _el$
|
|
933
|
-
_$effect(() => _$className(_el$
|
|
934
|
-
return _el$
|
|
1027
|
+
var _el$50 = _$getNextElement(_tmpl$23);
|
|
1028
|
+
_$insert(_el$50, () => iconContent() ?? (() => {
|
|
1029
|
+
var _el$65 = _$getNextElement(_tmpl$29);
|
|
1030
|
+
_$effect(() => _$className(_el$65, iconClass(icon())));
|
|
1031
|
+
return _el$65;
|
|
935
1032
|
})());
|
|
936
|
-
return _el$
|
|
1033
|
+
return _el$50;
|
|
937
1034
|
}
|
|
938
1035
|
}), (() => {
|
|
939
|
-
var _el$
|
|
940
|
-
_el$
|
|
941
|
-
[_el$
|
|
942
|
-
_el$
|
|
943
|
-
_el$
|
|
944
|
-
_el$
|
|
945
|
-
[_el$
|
|
946
|
-
_$insert(_el$
|
|
1036
|
+
var _el$51 = _$getNextElement(_tmpl$27),
|
|
1037
|
+
_el$60 = _el$51.firstChild,
|
|
1038
|
+
[_el$61, _co$1] = _$getNextMarker(_el$60.nextSibling),
|
|
1039
|
+
_el$57 = _el$61.nextSibling,
|
|
1040
|
+
_el$58 = _el$57.firstChild,
|
|
1041
|
+
_el$62 = _el$57.nextSibling,
|
|
1042
|
+
[_el$63, _co$10] = _$getNextMarker(_el$62.nextSibling);
|
|
1043
|
+
_$insert(_el$51, _$createComponent(Show, {
|
|
947
1044
|
get when() {
|
|
948
1045
|
return props.context || props.contextMeta;
|
|
949
1046
|
},
|
|
950
1047
|
get children() {
|
|
951
|
-
var _el$
|
|
952
|
-
_el$
|
|
953
|
-
_el$
|
|
954
|
-
[_el$
|
|
955
|
-
_$insert(_el$
|
|
956
|
-
_$insert(_el$
|
|
1048
|
+
var _el$52 = _$getNextElement(_tmpl$25),
|
|
1049
|
+
_el$53 = _el$52.firstChild,
|
|
1050
|
+
_el$55 = _el$53.nextSibling,
|
|
1051
|
+
[_el$56, _co$0] = _$getNextMarker(_el$55.nextSibling);
|
|
1052
|
+
_$insert(_el$53, () => props.context);
|
|
1053
|
+
_$insert(_el$52, _$createComponent(Show, {
|
|
957
1054
|
get when() {
|
|
958
1055
|
return props.contextMeta;
|
|
959
1056
|
},
|
|
960
1057
|
get children() {
|
|
961
|
-
var _el$
|
|
962
|
-
_$insert(_el$
|
|
963
|
-
return _el$
|
|
1058
|
+
var _el$54 = _$getNextElement(_tmpl$24);
|
|
1059
|
+
_$insert(_el$54, () => props.contextMeta);
|
|
1060
|
+
return _el$54;
|
|
964
1061
|
}
|
|
965
|
-
}), _el$
|
|
966
|
-
return _el$
|
|
1062
|
+
}), _el$56, _co$0);
|
|
1063
|
+
return _el$52;
|
|
967
1064
|
}
|
|
968
|
-
}), _el$
|
|
969
|
-
_$insert(_el$
|
|
970
|
-
_$insert(_el$
|
|
1065
|
+
}), _el$61, _co$1);
|
|
1066
|
+
_$insert(_el$58, () => label());
|
|
1067
|
+
_$insert(_el$51, _$createComponent(Show, {
|
|
971
1068
|
get when() {
|
|
972
1069
|
return props.description;
|
|
973
1070
|
},
|
|
974
1071
|
get children() {
|
|
975
|
-
var _el$
|
|
976
|
-
_$insert(_el$
|
|
977
|
-
return _el$
|
|
1072
|
+
var _el$59 = _$getNextElement(_tmpl$26);
|
|
1073
|
+
_$insert(_el$59, () => props.description);
|
|
1074
|
+
return _el$59;
|
|
978
1075
|
}
|
|
979
|
-
}), _el$
|
|
980
|
-
_$effect(() => _$setAttribute(_el$
|
|
981
|
-
return _el$
|
|
1076
|
+
}), _el$63, _co$10);
|
|
1077
|
+
_$effect(() => _$setAttribute(_el$57, "data-marquee", labelSlot()?.marquee ?? (props.variant ?? "row") === "row" ? "true" : "false"));
|
|
1078
|
+
return _el$51;
|
|
982
1079
|
})(), _$createComponent(Show, {
|
|
983
1080
|
get when() {
|
|
984
|
-
return
|
|
1081
|
+
return hasMeta();
|
|
985
1082
|
},
|
|
986
|
-
children
|
|
987
|
-
var _el$
|
|
988
|
-
_$insert(_el$
|
|
989
|
-
_$effect(
|
|
990
|
-
|
|
991
|
-
|
|
1083
|
+
get children() {
|
|
1084
|
+
var _el$64 = _$getNextElement(_tmpl$28);
|
|
1085
|
+
_$insert(_el$64, meta);
|
|
1086
|
+
_$effect(_p$ => {
|
|
1087
|
+
var _v$49 = props.preview?.trigger === "row" ? metaId : undefined,
|
|
1088
|
+
_v$50 = metaVisibility() === "hover" ? "hover" : undefined;
|
|
1089
|
+
_v$49 !== _p$.e && _$setAttribute(_el$64, "id", _p$.e = _v$49);
|
|
1090
|
+
_v$50 !== _p$.t && _$setAttribute(_el$64, "data-visibility", _p$.t = _v$50);
|
|
1091
|
+
return _p$;
|
|
1092
|
+
}, {
|
|
1093
|
+
e: undefined,
|
|
1094
|
+
t: undefined
|
|
1095
|
+
});
|
|
1096
|
+
return _el$64;
|
|
1097
|
+
}
|
|
992
1098
|
})];
|
|
993
1099
|
const singleAction = () => {
|
|
994
1100
|
const label = () => actionSlot()?.label ?? props.actionLabel ?? messages().rowAction;
|
|
@@ -1003,9 +1109,9 @@ function AppWorkspaceSidebarItem(props) {
|
|
|
1003
1109
|
props.onActionClick?.(event);
|
|
1004
1110
|
};
|
|
1005
1111
|
const content = () => actionSlot()?.children ?? (() => {
|
|
1006
|
-
var _el$
|
|
1007
|
-
_$effect(() => _$className(_el$
|
|
1008
|
-
return _el$
|
|
1112
|
+
var _el$66 = _$getNextElement(_tmpl$29);
|
|
1113
|
+
_$effect(() => _$className(_el$66, iconClass(actionSlot()?.icon ?? props.actionIcon, "ti-dots")));
|
|
1114
|
+
return _el$66;
|
|
1009
1115
|
})();
|
|
1010
1116
|
return _$createComponent(Show, {
|
|
1011
1117
|
get when() {
|
|
@@ -1018,16 +1124,16 @@ function AppWorkspaceSidebarItem(props) {
|
|
|
1018
1124
|
},
|
|
1019
1125
|
get fallback() {
|
|
1020
1126
|
return (() => {
|
|
1021
|
-
var _el$
|
|
1022
|
-
_el$
|
|
1023
|
-
_$insert(_el$
|
|
1127
|
+
var _el$68 = _$getNextElement(_tmpl$31);
|
|
1128
|
+
_el$68.$$click = select;
|
|
1129
|
+
_$insert(_el$68, content);
|
|
1024
1130
|
_$effect(_p$ => {
|
|
1025
|
-
var _v$
|
|
1026
|
-
_v$
|
|
1027
|
-
_v$
|
|
1028
|
-
_v$
|
|
1029
|
-
_v$
|
|
1030
|
-
_v$
|
|
1131
|
+
var _v$54 = actionSlot()?.disabled,
|
|
1132
|
+
_v$55 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
|
|
1133
|
+
_v$56 = label();
|
|
1134
|
+
_v$54 !== _p$.e && _$setProperty(_el$68, "disabled", _p$.e = _v$54);
|
|
1135
|
+
_v$55 !== _p$.t && _$setAttribute(_el$68, "data-visibility", _p$.t = _v$55);
|
|
1136
|
+
_v$56 !== _p$.a && _$setAttribute(_el$68, "aria-label", _p$.a = _v$56);
|
|
1031
1137
|
return _p$;
|
|
1032
1138
|
}, {
|
|
1033
1139
|
e: undefined,
|
|
@@ -1035,20 +1141,20 @@ function AppWorkspaceSidebarItem(props) {
|
|
|
1035
1141
|
a: undefined
|
|
1036
1142
|
});
|
|
1037
1143
|
_$runHydrationEvents();
|
|
1038
|
-
return _el$
|
|
1144
|
+
return _el$68;
|
|
1039
1145
|
})();
|
|
1040
1146
|
},
|
|
1041
1147
|
get children() {
|
|
1042
|
-
var _el$
|
|
1043
|
-
_el$
|
|
1044
|
-
_$insert(_el$
|
|
1148
|
+
var _el$67 = _$getNextElement(_tmpl$30);
|
|
1149
|
+
_el$67.$$click = select;
|
|
1150
|
+
_$insert(_el$67, content);
|
|
1045
1151
|
_$effect(_p$ => {
|
|
1046
|
-
var _v$
|
|
1047
|
-
_v$
|
|
1048
|
-
_v$
|
|
1049
|
-
_v$
|
|
1050
|
-
_v$
|
|
1051
|
-
_v$
|
|
1152
|
+
var _v$51 = actionSlot()?.href,
|
|
1153
|
+
_v$52 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
|
|
1154
|
+
_v$53 = label();
|
|
1155
|
+
_v$51 !== _p$.e && _$setAttribute(_el$67, "href", _p$.e = _v$51);
|
|
1156
|
+
_v$52 !== _p$.t && _$setAttribute(_el$67, "data-visibility", _p$.t = _v$52);
|
|
1157
|
+
_v$53 !== _p$.a && _$setAttribute(_el$67, "aria-label", _p$.a = _v$53);
|
|
1052
1158
|
return _p$;
|
|
1053
1159
|
}, {
|
|
1054
1160
|
e: undefined,
|
|
@@ -1056,7 +1162,7 @@ function AppWorkspaceSidebarItem(props) {
|
|
|
1056
1162
|
a: undefined
|
|
1057
1163
|
});
|
|
1058
1164
|
_$runHydrationEvents();
|
|
1059
|
-
return _el$
|
|
1165
|
+
return _el$67;
|
|
1060
1166
|
}
|
|
1061
1167
|
});
|
|
1062
1168
|
}
|
|
@@ -1079,6 +1185,9 @@ function AppWorkspaceSidebarItem(props) {
|
|
|
1079
1185
|
get viewportSize() {
|
|
1080
1186
|
return preview().viewportSize;
|
|
1081
1187
|
},
|
|
1188
|
+
get describedBy() {
|
|
1189
|
+
return hasMeta() ? metaId : undefined;
|
|
1190
|
+
},
|
|
1082
1191
|
get onOpenChange() {
|
|
1083
1192
|
return preview().onOpenChange;
|
|
1084
1193
|
},
|
|
@@ -1153,6 +1262,27 @@ const AppWorkspaceNavTreeItem = props => ({
|
|
|
1153
1262
|
kind: NAV_TREE_ITEM,
|
|
1154
1263
|
...props
|
|
1155
1264
|
});
|
|
1265
|
+
const NAV_TREE_DRAG_TYPE = "application/x-k2b-nav-tree-item";
|
|
1266
|
+
const callDragHandler = (handler, event) => {
|
|
1267
|
+
if (typeof handler === "function") handler(event);else handler?.[0](handler[1], event);
|
|
1268
|
+
};
|
|
1269
|
+
|
|
1270
|
+
/**
|
|
1271
|
+
* The move that puts the sibling at `from` into the gap before `slot`
|
|
1272
|
+
* (`siblings.length` is the gap after the last one), or `null` when its place
|
|
1273
|
+
* would not change or it would pass an item that is not movable.
|
|
1274
|
+
*/
|
|
1275
|
+
const navTreeMove = (siblings, from, slot, parentId) => {
|
|
1276
|
+
if (from < 0 || slot < 0 || slot > siblings.length || slot === from || slot === from + 1) return null;
|
|
1277
|
+
const passed = slot < from ? siblings.slice(slot, from) : siblings.slice(from + 1, slot);
|
|
1278
|
+
if (passed.some(sibling => !sibling.movable)) return null;
|
|
1279
|
+
return {
|
|
1280
|
+
id: siblings[from].id,
|
|
1281
|
+
parentId,
|
|
1282
|
+
beforeId: siblings[slot]?.id ?? null,
|
|
1283
|
+
afterId: siblings[slot - 1]?.id ?? null
|
|
1284
|
+
};
|
|
1285
|
+
};
|
|
1156
1286
|
const AppWorkspaceNavTree = props => {
|
|
1157
1287
|
let root;
|
|
1158
1288
|
const resolved = children(() => props.children);
|
|
@@ -1197,16 +1327,48 @@ const AppWorkspaceNavTree = props => {
|
|
|
1197
1327
|
});
|
|
1198
1328
|
};
|
|
1199
1329
|
|
|
1330
|
+
// Reordering: the dragged item and the gap the pointer marks. The application renders the new
|
|
1331
|
+
// order; the item moved by keyboard takes focus back when its row mounts or changes place.
|
|
1332
|
+
const [dragged, setDragged] = createSignal(null);
|
|
1333
|
+
const [dropTarget, setDropTarget] = createSignal(null);
|
|
1334
|
+
let claimedDragOver = null;
|
|
1335
|
+
let refocusId = null;
|
|
1336
|
+
const endDrag = () => {
|
|
1337
|
+
setDragged(null);
|
|
1338
|
+
setDropTarget(null);
|
|
1339
|
+
};
|
|
1340
|
+
const requestMove = (move, keepFocus) => {
|
|
1341
|
+
if (!move || !props.onMove) return;
|
|
1342
|
+
refocusId = keepFocus ? move.id : null;
|
|
1343
|
+
props.onMove(move);
|
|
1344
|
+
};
|
|
1345
|
+
|
|
1200
1346
|
// Items arrive through an accessor so a changed nested list reconciles rows by identity instead of rebuilding the list.
|
|
1201
|
-
const renderItems = (
|
|
1347
|
+
const renderItems = (siblings, depth, parentId) => _$createComponent(For, {
|
|
1202
1348
|
get each() {
|
|
1203
|
-
return
|
|
1349
|
+
return siblings();
|
|
1204
1350
|
},
|
|
1205
|
-
children: item => {
|
|
1351
|
+
children: (item, place) => {
|
|
1206
1352
|
const nested = createMemo(() => navTreeItems(item.children));
|
|
1207
1353
|
const hasChildren = () => nested().length > 0;
|
|
1208
1354
|
const selected = () => props.selectedId === item.id;
|
|
1355
|
+
const siblingIndex = id => siblings().findIndex(sibling => sibling.id === id);
|
|
1356
|
+
const movable = () => Boolean(props.onMove && item.movable && !item.disabled);
|
|
1209
1357
|
let treeItem;
|
|
1358
|
+
const ownRow = () => treeItem?.firstElementChild;
|
|
1359
|
+
|
|
1360
|
+
// A new row for the moved item, or the same row at its new place: moving a focused row drops its focus.
|
|
1361
|
+
createEffect(() => {
|
|
1362
|
+
place();
|
|
1363
|
+
if (refocusId !== item.id) return;
|
|
1364
|
+
queueMicrotask(() => {
|
|
1365
|
+
if (refocusId !== item.id || !treeItem?.isConnected) return;
|
|
1366
|
+
const active = treeItem.ownerDocument.activeElement;
|
|
1367
|
+
if (!active || active === treeItem.ownerDocument.body) treeItem.focus({
|
|
1368
|
+
preventScroll: true
|
|
1369
|
+
});
|
|
1370
|
+
});
|
|
1371
|
+
});
|
|
1210
1372
|
const activate = event => {
|
|
1211
1373
|
if (item.disabled) return;
|
|
1212
1374
|
treeItem?.focus({
|
|
@@ -1239,6 +1401,13 @@ const AppWorkspaceNavTree = props => {
|
|
|
1239
1401
|
};
|
|
1240
1402
|
const onKeyDown = event => {
|
|
1241
1403
|
if (event.target !== event.currentTarget) return;
|
|
1404
|
+
if (event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey && (event.key === "ArrowUp" || event.key === "ArrowDown")) {
|
|
1405
|
+
if (!movable()) return;
|
|
1406
|
+
event.preventDefault();
|
|
1407
|
+
const from = siblingIndex(item.id);
|
|
1408
|
+
requestMove(navTreeMove(siblings(), from, event.key === "ArrowUp" ? from - 1 : from + 2, parentId ?? null), true);
|
|
1409
|
+
return;
|
|
1410
|
+
}
|
|
1242
1411
|
if (event.altKey || event.ctrlKey || event.metaKey) return;
|
|
1243
1412
|
const items = treeItemElements();
|
|
1244
1413
|
const index = items.indexOf(event.currentTarget);
|
|
@@ -1292,53 +1461,50 @@ const AppWorkspaceNavTree = props => {
|
|
|
1292
1461
|
return rowIcon();
|
|
1293
1462
|
},
|
|
1294
1463
|
get children() {
|
|
1295
|
-
var _el$
|
|
1296
|
-
_el$
|
|
1297
|
-
_$
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
t: undefined
|
|
1306
|
-
});
|
|
1307
|
-
return _el$55;
|
|
1464
|
+
var _el$69 = _$getNextElement(_tmpl$32),
|
|
1465
|
+
_el$70 = _el$69.firstChild;
|
|
1466
|
+
_$spread(_el$69, _$mergeProps({
|
|
1467
|
+
get ["data-k2b-nav-tree-toggle"]() {
|
|
1468
|
+
return usesIconDisclosure() ? "" : undefined;
|
|
1469
|
+
}
|
|
1470
|
+
}, () => iconAccessibility(item.iconLabel)), false, true);
|
|
1471
|
+
_$effect(() => _$className(_el$70, iconClass(rowIcon())));
|
|
1472
|
+
_$runHydrationEvents();
|
|
1473
|
+
return _el$69;
|
|
1308
1474
|
}
|
|
1309
1475
|
}), (() => {
|
|
1310
|
-
var _el$
|
|
1311
|
-
_el$
|
|
1312
|
-
_$insert(_el$
|
|
1313
|
-
return _el$
|
|
1476
|
+
var _el$71 = _$getNextElement(_tmpl$33),
|
|
1477
|
+
_el$72 = _el$71.firstChild;
|
|
1478
|
+
_$insert(_el$72, () => item.label);
|
|
1479
|
+
return _el$71;
|
|
1314
1480
|
})(), _$createComponent(Show, {
|
|
1315
1481
|
get when() {
|
|
1316
1482
|
return item.meta !== undefined;
|
|
1317
1483
|
},
|
|
1318
1484
|
get children() {
|
|
1319
|
-
var _el$
|
|
1320
|
-
_$insert(_el$
|
|
1485
|
+
var _el$73 = _$getNextElement(_tmpl$34);
|
|
1486
|
+
_$insert(_el$73, () => item.meta);
|
|
1321
1487
|
_$effect(_p$ => {
|
|
1322
1488
|
var _v$57 = `k2b-app-workspace__sidebar-item-meta ${hasChildren() ? "" : "k2b-app-workspace__nav-tree-leaf-meta"}`,
|
|
1323
1489
|
_v$58 = item.metaVisibility === "hover" ? "hover" : undefined;
|
|
1324
|
-
_v$57 !== _p$.e && _$className(_el$
|
|
1325
|
-
_v$58 !== _p$.t && _$setAttribute(_el$
|
|
1490
|
+
_v$57 !== _p$.e && _$className(_el$73, _p$.e = _v$57);
|
|
1491
|
+
_v$58 !== _p$.t && _$setAttribute(_el$73, "data-visibility", _p$.t = _v$58);
|
|
1326
1492
|
return _p$;
|
|
1327
1493
|
}, {
|
|
1328
1494
|
e: undefined,
|
|
1329
1495
|
t: undefined
|
|
1330
1496
|
});
|
|
1331
|
-
return _el$
|
|
1497
|
+
return _el$73;
|
|
1332
1498
|
}
|
|
1333
1499
|
}), _$createComponent(Show, {
|
|
1334
1500
|
get when() {
|
|
1335
1501
|
return _$memo(() => !!hasChildren())() && !usesIconDisclosure();
|
|
1336
1502
|
},
|
|
1337
1503
|
get children() {
|
|
1338
|
-
var _el$
|
|
1339
|
-
_el$
|
|
1340
|
-
_$effect(() => _$className(_el$
|
|
1341
|
-
return _el$
|
|
1504
|
+
var _el$74 = _$getNextElement(_tmpl$35),
|
|
1505
|
+
_el$75 = _el$74.firstChild;
|
|
1506
|
+
_$effect(() => _$className(_el$75, `ti ${isExpanded(item.id) ? "ti-chevron-down" : "ti-chevron-right"}`));
|
|
1507
|
+
return _el$74;
|
|
1342
1508
|
}
|
|
1343
1509
|
})];
|
|
1344
1510
|
const row = () => _$createComponent(AppWorkspaceSidebarRow, {
|
|
@@ -1393,106 +1559,204 @@ const AppWorkspaceNavTree = props => {
|
|
|
1393
1559
|
},
|
|
1394
1560
|
children: rowContent
|
|
1395
1561
|
});
|
|
1562
|
+
|
|
1563
|
+
// A gap is offered only next to a sibling's own row, never over its sub-items.
|
|
1564
|
+
const dropMove = event => {
|
|
1565
|
+
const drag = dragged();
|
|
1566
|
+
const row = ownRow();
|
|
1567
|
+
if (!drag || !event.dataTransfer?.types.includes(NAV_TREE_DRAG_TYPE)) return null;
|
|
1568
|
+
if (drag.parentId !== (parentId ?? null) || drag.id === item.id || !row?.contains(event.target)) return null;
|
|
1569
|
+
const rect = row.getBoundingClientRect();
|
|
1570
|
+
const side = event.clientY < rect.top + rect.height / 2 ? "before" : "after";
|
|
1571
|
+
const slot = siblingIndex(item.id) + (side === "after" ? 1 : 0);
|
|
1572
|
+
const move = navTreeMove(siblings(), siblingIndex(drag.id), slot, parentId ?? null);
|
|
1573
|
+
return move ? {
|
|
1574
|
+
side,
|
|
1575
|
+
move
|
|
1576
|
+
} : null;
|
|
1577
|
+
};
|
|
1578
|
+
const onDragStart = event => {
|
|
1579
|
+
const row = ownRow();
|
|
1580
|
+
if (!movable() || !row?.contains(event.target)) return;
|
|
1581
|
+
event.stopPropagation();
|
|
1582
|
+
setDragged({
|
|
1583
|
+
id: item.id,
|
|
1584
|
+
parentId: parentId ?? null
|
|
1585
|
+
});
|
|
1586
|
+
if (!event.dataTransfer) return;
|
|
1587
|
+
event.dataTransfer.effectAllowed = "move";
|
|
1588
|
+
event.dataTransfer.setData(NAV_TREE_DRAG_TYPE, item.id);
|
|
1589
|
+
const rect = row.getBoundingClientRect();
|
|
1590
|
+
event.dataTransfer.setDragImage(row, event.clientX - rect.left, event.clientY - rect.top);
|
|
1591
|
+
};
|
|
1592
|
+
const onDragOver = event => {
|
|
1593
|
+
callDragHandler(item.onDragOver, event);
|
|
1594
|
+
const target = dropMove(event);
|
|
1595
|
+
if (!target) return;
|
|
1596
|
+
event.preventDefault();
|
|
1597
|
+
if (event.dataTransfer) event.dataTransfer.dropEffect = "move";
|
|
1598
|
+
claimedDragOver = event;
|
|
1599
|
+
setDropTarget({
|
|
1600
|
+
id: item.id,
|
|
1601
|
+
side: target.side
|
|
1602
|
+
});
|
|
1603
|
+
};
|
|
1604
|
+
const onDrop = event => {
|
|
1605
|
+
callDragHandler(item.onDrop, event);
|
|
1606
|
+
const target = dropMove(event);
|
|
1607
|
+
if (!target) return;
|
|
1608
|
+
event.preventDefault();
|
|
1609
|
+
event.stopPropagation();
|
|
1610
|
+
endDrag();
|
|
1611
|
+
requestMove(target.move, false);
|
|
1612
|
+
};
|
|
1396
1613
|
return (() => {
|
|
1397
|
-
var _el$
|
|
1398
|
-
_el$
|
|
1399
|
-
[_el$
|
|
1400
|
-
_el$
|
|
1401
|
-
[_el$
|
|
1402
|
-
|
|
1403
|
-
_$addEventListener(_el$
|
|
1404
|
-
|
|
1405
|
-
_$addEventListener(_el$
|
|
1406
|
-
_el$
|
|
1407
|
-
_el$
|
|
1614
|
+
var _el$76 = _$getNextElement(_tmpl$37),
|
|
1615
|
+
_el$78 = _el$76.firstChild,
|
|
1616
|
+
[_el$79, _co$11] = _$getNextMarker(_el$78.nextSibling),
|
|
1617
|
+
_el$80 = _el$79.nextSibling,
|
|
1618
|
+
[_el$81, _co$12] = _$getNextMarker(_el$80.nextSibling);
|
|
1619
|
+
_el$76.addEventListener("drop", onDrop);
|
|
1620
|
+
_$addEventListener(_el$76, "dragleave", item.onDragLeave);
|
|
1621
|
+
_el$76.addEventListener("dragover", onDragOver);
|
|
1622
|
+
_$addEventListener(_el$76, "dragenter", item.onDragEnter);
|
|
1623
|
+
_el$76.addEventListener("dragstart", onDragStart);
|
|
1624
|
+
_el$76.$$keydown = onKeyDown;
|
|
1625
|
+
_el$76.addEventListener("focus", () => setFocusedId(item.id));
|
|
1408
1626
|
var _ref$3 = treeItem;
|
|
1409
|
-
typeof _ref$3 === "function" ? _$use(_ref$3, _el$
|
|
1410
|
-
_$setAttribute(_el$
|
|
1411
|
-
_$setAttribute(_el$
|
|
1412
|
-
_$insert(_el$
|
|
1413
|
-
_$insert(_el$
|
|
1627
|
+
typeof _ref$3 === "function" ? _$use(_ref$3, _el$76) : treeItem = _el$76;
|
|
1628
|
+
_$setAttribute(_el$76, "aria-level", depth + 1);
|
|
1629
|
+
_$setAttribute(_el$76, "data-k2b-nav-tree-parent-id", parentId);
|
|
1630
|
+
_$insert(_el$76, row, _el$79, _co$11);
|
|
1631
|
+
_$insert(_el$76, _$createComponent(Show, {
|
|
1414
1632
|
get when() {
|
|
1415
1633
|
return _$memo(() => !!hasChildren())() && isExpanded(item.id);
|
|
1416
1634
|
},
|
|
1417
1635
|
get children() {
|
|
1418
|
-
var _el$
|
|
1419
|
-
_$insert(_el$
|
|
1420
|
-
return _el$
|
|
1636
|
+
var _el$77 = _$getNextElement(_tmpl$36);
|
|
1637
|
+
_$insert(_el$77, () => renderItems(nested, depth + 1, item.id));
|
|
1638
|
+
return _el$77;
|
|
1421
1639
|
}
|
|
1422
|
-
}), _el$
|
|
1640
|
+
}), _el$81, _co$12);
|
|
1423
1641
|
_$effect(_p$ => {
|
|
1424
|
-
var _v$59 =
|
|
1425
|
-
_v$60 =
|
|
1426
|
-
_v$61 =
|
|
1427
|
-
_v$62 =
|
|
1428
|
-
_v$63 = item.
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1642
|
+
var _v$59 = siblings().length,
|
|
1643
|
+
_v$60 = place() + 1,
|
|
1644
|
+
_v$61 = selected(),
|
|
1645
|
+
_v$62 = hasChildren() ? isExpanded(item.id) : undefined,
|
|
1646
|
+
_v$63 = item.disabled ? "true" : undefined,
|
|
1647
|
+
_v$64 = item.disabled ? -1 : tabStopId() === item.id ? 0 : -1,
|
|
1648
|
+
_v$65 = movable() ? true : undefined,
|
|
1649
|
+
_v$66 = item.id,
|
|
1650
|
+
_v$67 = dragged()?.id === item.id ? "" : undefined,
|
|
1651
|
+
_v$68 = dropTarget()?.id === item.id ? dropTarget().side : undefined,
|
|
1652
|
+
_v$69 = String(props.indented === false ? 0 : depth);
|
|
1653
|
+
_v$59 !== _p$.e && _$setAttribute(_el$76, "aria-setsize", _p$.e = _v$59);
|
|
1654
|
+
_v$60 !== _p$.t && _$setAttribute(_el$76, "aria-posinset", _p$.t = _v$60);
|
|
1655
|
+
_v$61 !== _p$.a && _$setAttribute(_el$76, "aria-selected", _p$.a = _v$61);
|
|
1656
|
+
_v$62 !== _p$.o && _$setAttribute(_el$76, "aria-expanded", _p$.o = _v$62);
|
|
1657
|
+
_v$63 !== _p$.i && _$setAttribute(_el$76, "aria-disabled", _p$.i = _v$63);
|
|
1658
|
+
_v$64 !== _p$.n && _$setAttribute(_el$76, "tabindex", _p$.n = _v$64);
|
|
1659
|
+
_v$65 !== _p$.s && _$setAttribute(_el$76, "draggable", _p$.s = _v$65);
|
|
1660
|
+
_v$66 !== _p$.h && _$setAttribute(_el$76, "data-k2b-nav-tree-id", _p$.h = _v$66);
|
|
1661
|
+
_v$67 !== _p$.r && _$setAttribute(_el$76, "data-k2b-nav-tree-dragging", _p$.r = _v$67);
|
|
1662
|
+
_v$68 !== _p$.d && _$setAttribute(_el$76, "data-k2b-nav-tree-drop", _p$.d = _v$68);
|
|
1663
|
+
_v$69 !== _p$.l && _$setStyleProperty(_el$76, "--k2b-nav-tree-depth", _p$.l = _v$69);
|
|
1434
1664
|
return _p$;
|
|
1435
1665
|
}, {
|
|
1436
1666
|
e: undefined,
|
|
1437
1667
|
t: undefined,
|
|
1438
1668
|
a: undefined,
|
|
1439
1669
|
o: undefined,
|
|
1440
|
-
i: undefined
|
|
1670
|
+
i: undefined,
|
|
1671
|
+
n: undefined,
|
|
1672
|
+
s: undefined,
|
|
1673
|
+
h: undefined,
|
|
1674
|
+
r: undefined,
|
|
1675
|
+
d: undefined,
|
|
1676
|
+
l: undefined
|
|
1441
1677
|
});
|
|
1442
1678
|
_$runHydrationEvents();
|
|
1443
|
-
return _el$
|
|
1679
|
+
return _el$76;
|
|
1444
1680
|
})();
|
|
1445
1681
|
}
|
|
1446
1682
|
});
|
|
1683
|
+
|
|
1684
|
+
// Any other click or focus is the person's choice; only the moved item itself keeps its claim.
|
|
1685
|
+
const forgetRefocus = event => {
|
|
1686
|
+
if (event.type === "pointerdown" || event.target?.dataset?.k2bNavTreeId !== refocusId) refocusId = null;
|
|
1687
|
+
};
|
|
1688
|
+
// A row replaced during a drag never receives its dragend; the next pointer movement means the drag is over.
|
|
1689
|
+
const forgetDrag = () => {
|
|
1690
|
+
if (dragged()) endDrag();
|
|
1691
|
+
};
|
|
1692
|
+
onMount(() => {
|
|
1693
|
+
const doc = root?.ownerDocument;
|
|
1694
|
+
doc?.addEventListener("pointerdown", forgetRefocus, true);
|
|
1695
|
+
doc?.addEventListener("focusin", forgetRefocus, true);
|
|
1696
|
+
doc?.addEventListener("pointermove", forgetDrag, true);
|
|
1697
|
+
onCleanup(() => {
|
|
1698
|
+
doc?.removeEventListener("pointerdown", forgetRefocus, true);
|
|
1699
|
+
doc?.removeEventListener("focusin", forgetRefocus, true);
|
|
1700
|
+
doc?.removeEventListener("pointermove", forgetDrag, true);
|
|
1701
|
+
});
|
|
1702
|
+
});
|
|
1447
1703
|
return (() => {
|
|
1448
|
-
var _el$
|
|
1704
|
+
var _el$82 = _$getNextElement(_tmpl$38);
|
|
1705
|
+
_el$82.addEventListener("dragend", endDrag);
|
|
1706
|
+
_el$82.addEventListener("dragleave", event => {
|
|
1707
|
+
if (!root?.contains(event.relatedTarget)) setDropTarget(null);
|
|
1708
|
+
});
|
|
1709
|
+
_el$82.addEventListener("dragover", event => {
|
|
1710
|
+
// Runs after the rows: a position no row claimed shows no gap.
|
|
1711
|
+
if (claimedDragOver !== event) setDropTarget(null);
|
|
1712
|
+
});
|
|
1449
1713
|
var _ref$4 = root;
|
|
1450
|
-
typeof _ref$4 === "function" ? _$use(_ref$4, _el$
|
|
1451
|
-
_$insert(_el$
|
|
1714
|
+
typeof _ref$4 === "function" ? _$use(_ref$4, _el$82) : root = _el$82;
|
|
1715
|
+
_$insert(_el$82, () => renderItems(roots, 0));
|
|
1452
1716
|
_$effect(_p$ => {
|
|
1453
|
-
var _v$
|
|
1454
|
-
_v$
|
|
1455
|
-
_v$
|
|
1456
|
-
_v$
|
|
1717
|
+
var _v$70 = `k2b-app-workspace__nav-tree ${props.class ?? ""}`,
|
|
1718
|
+
_v$71 = props.ariaLabel;
|
|
1719
|
+
_v$70 !== _p$.e && _$className(_el$82, _p$.e = _v$70);
|
|
1720
|
+
_v$71 !== _p$.t && _$setAttribute(_el$82, "aria-label", _p$.t = _v$71);
|
|
1457
1721
|
return _p$;
|
|
1458
1722
|
}, {
|
|
1459
1723
|
e: undefined,
|
|
1460
1724
|
t: undefined
|
|
1461
1725
|
});
|
|
1462
|
-
return _el$
|
|
1726
|
+
return _el$82;
|
|
1463
1727
|
})();
|
|
1464
1728
|
};
|
|
1465
1729
|
AppWorkspaceNavTree.Item = AppWorkspaceNavTreeItem;
|
|
1466
1730
|
const AppWorkspaceSidebarIconGrid = props => (() => {
|
|
1467
|
-
var _el$
|
|
1468
|
-
_el$
|
|
1469
|
-
[_el$
|
|
1470
|
-
_el$
|
|
1471
|
-
_$spread(_el$
|
|
1731
|
+
var _el$83 = _$getNextElement(_tmpl$39),
|
|
1732
|
+
_el$85 = _el$83.firstChild,
|
|
1733
|
+
[_el$86, _co$13] = _$getNextMarker(_el$85.nextSibling),
|
|
1734
|
+
_el$84 = _el$86.nextSibling;
|
|
1735
|
+
_$spread(_el$83, _$mergeProps({
|
|
1472
1736
|
get ["class"]() {
|
|
1473
1737
|
return `k2b-app-workspace__sidebar-icon-grid-wrap ${props.class ?? ""}`;
|
|
1474
1738
|
}
|
|
1475
1739
|
}, () => modeAttrs(props.sidebarMode)), false, true);
|
|
1476
|
-
_$insert(_el$
|
|
1740
|
+
_$insert(_el$83, _$createComponent(Show, {
|
|
1477
1741
|
get when() {
|
|
1478
1742
|
return props.title;
|
|
1479
1743
|
},
|
|
1480
1744
|
children: title => (() => {
|
|
1481
|
-
var _el$
|
|
1482
|
-
_$insert(_el$
|
|
1483
|
-
return _el$
|
|
1745
|
+
var _el$87 = _$getNextElement(_tmpl$13);
|
|
1746
|
+
_$insert(_el$87, title);
|
|
1747
|
+
return _el$87;
|
|
1484
1748
|
})()
|
|
1485
|
-
}), _el$
|
|
1486
|
-
_$insert(_el$
|
|
1487
|
-
_$effect(() => _$setAttribute(_el$
|
|
1749
|
+
}), _el$86, _co$13);
|
|
1750
|
+
_$insert(_el$84, () => props.children);
|
|
1751
|
+
_$effect(() => _$setAttribute(_el$84, "data-columns", props.columns ?? 2));
|
|
1488
1752
|
_$runHydrationEvents();
|
|
1489
|
-
return _el$
|
|
1753
|
+
return _el$83;
|
|
1490
1754
|
})();
|
|
1491
1755
|
const AppWorkspaceSidebarIconAction = props => {
|
|
1492
1756
|
const content = (() => {
|
|
1493
|
-
var _el$
|
|
1494
|
-
_$effect(() => _$className(_el$
|
|
1495
|
-
return _el$
|
|
1757
|
+
var _el$88 = _$getNextElement(_tmpl$40);
|
|
1758
|
+
_$effect(() => _$className(_el$88, iconClass(props.icon)));
|
|
1759
|
+
return _el$88;
|
|
1496
1760
|
})();
|
|
1497
1761
|
const attrs = () => ({
|
|
1498
1762
|
class: `k2b-app-workspace__sidebar-icon-action ${props.active ? "is-active" : ""}`,
|
|
@@ -1505,8 +1769,8 @@ const AppWorkspaceSidebarIconAction = props => {
|
|
|
1505
1769
|
...modeAttrs(props.sidebarMode)
|
|
1506
1770
|
});
|
|
1507
1771
|
if (!props.href || props.disabled) return (() => {
|
|
1508
|
-
var _el$
|
|
1509
|
-
_$spread(_el$
|
|
1772
|
+
var _el$89 = _$getNextElement(_tmpl$20);
|
|
1773
|
+
_$spread(_el$89, _$mergeProps(attrs, {
|
|
1510
1774
|
get disabled() {
|
|
1511
1775
|
return props.disabled;
|
|
1512
1776
|
},
|
|
@@ -1514,13 +1778,13 @@ const AppWorkspaceSidebarIconAction = props => {
|
|
|
1514
1778
|
return props.onClick;
|
|
1515
1779
|
}
|
|
1516
1780
|
}), false, true);
|
|
1517
|
-
_$insert(_el$
|
|
1781
|
+
_$insert(_el$89, content);
|
|
1518
1782
|
_$runHydrationEvents();
|
|
1519
|
-
return _el$
|
|
1783
|
+
return _el$89;
|
|
1520
1784
|
})();
|
|
1521
1785
|
if (props.navigation !== "enhanced" || !props.onNavigate) return (() => {
|
|
1522
|
-
var _el$
|
|
1523
|
-
_$spread(_el$
|
|
1786
|
+
var _el$90 = _$getNextElement(_tmpl$21);
|
|
1787
|
+
_$spread(_el$90, _$mergeProps({
|
|
1524
1788
|
get href() {
|
|
1525
1789
|
return props.href;
|
|
1526
1790
|
}
|
|
@@ -1529,9 +1793,9 @@ const AppWorkspaceSidebarIconAction = props => {
|
|
|
1529
1793
|
return props.onClick;
|
|
1530
1794
|
}
|
|
1531
1795
|
}), false, true);
|
|
1532
|
-
_$insert(_el$
|
|
1796
|
+
_$insert(_el$90, content);
|
|
1533
1797
|
_$runHydrationEvents();
|
|
1534
|
-
return _el$
|
|
1798
|
+
return _el$90;
|
|
1535
1799
|
})();
|
|
1536
1800
|
return _$createComponent(Link, _$mergeProps({
|
|
1537
1801
|
get href() {
|
|
@@ -1576,21 +1840,21 @@ const AppWorkspace = props => {
|
|
|
1576
1840
|
return props.resizable !== false;
|
|
1577
1841
|
},
|
|
1578
1842
|
get children() {
|
|
1579
|
-
var _el$
|
|
1843
|
+
var _el$91 = _$getNextElement(_tmpl$41);
|
|
1580
1844
|
var _ref$5 = root;
|
|
1581
|
-
typeof _ref$5 === "function" ? _$use(_ref$5, _el$
|
|
1582
|
-
_$insert(_el$
|
|
1845
|
+
typeof _ref$5 === "function" ? _$use(_ref$5, _el$91) : root = _el$91;
|
|
1846
|
+
_$insert(_el$91, () => props.children);
|
|
1583
1847
|
_$effect(_p$ => {
|
|
1584
|
-
var _v$
|
|
1585
|
-
_v$
|
|
1586
|
-
_v$
|
|
1587
|
-
_v$
|
|
1588
|
-
_v$
|
|
1589
|
-
_v$
|
|
1590
|
-
_v$
|
|
1591
|
-
_v$
|
|
1592
|
-
_v$
|
|
1593
|
-
_p$.i = _$style(_el$
|
|
1848
|
+
var _v$72 = `k2b-app-workspace ${props.class ?? ""}`,
|
|
1849
|
+
_v$73 = props.mobileSurface,
|
|
1850
|
+
_v$74 = initialLayoutState()?.sidebarCollapsed === undefined ? undefined : String(initialLayoutState()?.sidebarCollapsed),
|
|
1851
|
+
_v$75 = props.resizable === false ? "false" : "true",
|
|
1852
|
+
_v$76 = appWorkspaceLayoutStyle(initialLayoutState());
|
|
1853
|
+
_v$72 !== _p$.e && _$className(_el$91, _p$.e = _v$72);
|
|
1854
|
+
_v$73 !== _p$.t && _$setAttribute(_el$91, "data-mobile-surface", _p$.t = _v$73);
|
|
1855
|
+
_v$74 !== _p$.a && _$setAttribute(_el$91, "data-sidebar-collapsed", _p$.a = _v$74);
|
|
1856
|
+
_v$75 !== _p$.o && _$setAttribute(_el$91, "data-workspace-resizable", _p$.o = _v$75);
|
|
1857
|
+
_p$.i = _$style(_el$91, _v$76, _p$.i);
|
|
1594
1858
|
return _p$;
|
|
1595
1859
|
}, {
|
|
1596
1860
|
e: undefined,
|
|
@@ -1599,7 +1863,7 @@ const AppWorkspace = props => {
|
|
|
1599
1863
|
o: undefined,
|
|
1600
1864
|
i: undefined
|
|
1601
1865
|
});
|
|
1602
|
-
return _el$
|
|
1866
|
+
return _el$91;
|
|
1603
1867
|
}
|
|
1604
1868
|
});
|
|
1605
1869
|
};
|
|
@@ -1612,10 +1876,10 @@ AppWorkspace.LayoutStateProvider = props => _$createComponent(LayoutStateContext
|
|
|
1612
1876
|
}
|
|
1613
1877
|
});
|
|
1614
1878
|
AppWorkspace.Content = props => (() => {
|
|
1615
|
-
var _el$
|
|
1616
|
-
_$insert(_el$
|
|
1617
|
-
_$effect(() => _$className(_el$
|
|
1618
|
-
return _el$
|
|
1879
|
+
var _el$92 = _$getNextElement(_tmpl$2);
|
|
1880
|
+
_$insert(_el$92, () => props.children);
|
|
1881
|
+
_$effect(() => _$className(_el$92, `k2b-app-workspace__content ${props.class ?? ""}`));
|
|
1882
|
+
return _el$92;
|
|
1619
1883
|
})();
|
|
1620
1884
|
AppWorkspace.Main = AppWorkspaceMain;
|
|
1621
1885
|
AppWorkspace.MainPane = AppWorkspaceMainPane;
|
|
@@ -1632,6 +1896,7 @@ AppWorkspace.SidebarItemLabel = AppWorkspaceSidebarItemLabel;
|
|
|
1632
1896
|
AppWorkspace.SidebarItemMeta = AppWorkspaceSidebarItemMeta;
|
|
1633
1897
|
AppWorkspace.SidebarItemAction = AppWorkspaceSidebarItemAction;
|
|
1634
1898
|
AppWorkspace.SidebarItemActions = AppWorkspaceSidebarItemActions;
|
|
1899
|
+
AppWorkspace.SidebarItemStatus = AppWorkspaceSidebarItemStatus;
|
|
1635
1900
|
AppWorkspace.NavTree = AppWorkspaceNavTree;
|
|
1636
1901
|
AppWorkspace.SidebarIconGrid = AppWorkspaceSidebarIconGrid;
|
|
1637
1902
|
AppWorkspace.SidebarIconAction = AppWorkspaceSidebarIconAction;
|