@k2b/ui 0.32.0 → 0.34.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/dist/base.css +14 -1
- package/dist/browser/actions/ContextMenu.js +13 -0
- package/dist/browser/actions/ContextMenu.js.map +1 -1
- package/dist/browser/actions/Dropdown.js +173 -102
- package/dist/browser/actions/Dropdown.js.map +1 -1
- package/dist/browser/actions/FilterChip.js +113 -56
- package/dist/browser/actions/FilterChip.js.map +1 -1
- package/dist/browser/actions/SelectionToolbar.js +129 -0
- package/dist/browser/actions/SelectionToolbar.js.map +1 -0
- package/dist/browser/actions/filter-messages.js +26 -2
- package/dist/browser/actions/filter-messages.js.map +1 -1
- package/dist/browser/actions/index.js +1 -0
- package/dist/browser/actions/index.js.map +1 -1
- package/dist/browser/actions/menu-rows.js +23 -3
- package/dist/browser/actions/menu-rows.js.map +1 -1
- package/dist/browser/actions/menu-sheet.js +2 -7
- package/dist/browser/actions/menu-sheet.js.map +1 -1
- package/dist/browser/charts.js +6 -0
- package/dist/browser/charts.js.map +1 -0
- package/dist/browser/chat/ChatComposer.js +616 -421
- package/dist/browser/chat/ChatComposer.js.map +1 -1
- package/dist/browser/chat/chat-messages.js +18 -0
- package/dist/browser/chat/chat-messages.js.map +1 -1
- package/dist/browser/chat/composer-document.js +19 -0
- package/dist/browser/chat/composer-document.js.map +1 -1
- package/dist/browser/chat/index.js.map +1 -1
- package/dist/browser/content/Calendar.js +39 -29
- package/dist/browser/content/Calendar.js.map +1 -1
- package/dist/browser/content/CalendarDayView.js +159 -165
- package/dist/browser/content/CalendarDayView.js.map +1 -1
- package/dist/browser/content/Chart.js +8 -0
- package/dist/browser/content/Chart.js.map +1 -1
- package/dist/browser/content/FileGrid.js +231 -9
- package/dist/browser/content/FileGrid.js.map +1 -1
- package/dist/browser/content/FileTypeIcon.js +15 -0
- package/dist/browser/content/FileTypeIcon.js.map +1 -1
- package/dist/browser/content/FileView.js +11 -4
- package/dist/browser/content/FileView.js.map +1 -1
- package/dist/browser/content/MessageRow.js +627 -343
- package/dist/browser/content/MessageRow.js.map +1 -1
- package/dist/browser/content/ReactionBar.js +20 -1
- package/dist/browser/content/ReactionBar.js.map +1 -1
- package/dist/browser/content/calendar-day-scroll.js +4 -3
- package/dist/browser/content/calendar-day-scroll.js.map +1 -1
- package/dist/browser/content/chart-bar.js +476 -0
- package/dist/browser/content/chart-bar.js.map +1 -0
- package/dist/browser/content/file-list-messages.js +52 -0
- package/dist/browser/content/file-list-messages.js.map +1 -0
- package/dist/browser/content/index.js +2 -2
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/feedback/Tooltip.js +31 -14
- package/dist/browser/feedback/Tooltip.js.map +1 -1
- package/dist/browser/feedback/dialog-core.js +6 -0
- package/dist/browser/feedback/dialog-core.js.map +1 -1
- package/dist/browser/inputs/ChoiceList.js +178 -0
- package/dist/browser/inputs/ChoiceList.js.map +1 -0
- package/dist/browser/inputs/ChoiceSlider.js +314 -0
- package/dist/browser/inputs/ChoiceSlider.js.map +1 -0
- package/dist/browser/inputs/ChoiceTiles.js +135 -0
- package/dist/browser/inputs/ChoiceTiles.js.map +1 -0
- package/dist/browser/inputs/ColorChoices.js +120 -0
- package/dist/browser/inputs/ColorChoices.js.map +1 -0
- package/dist/browser/inputs/QrScanner.js +95 -13
- package/dist/browser/inputs/QrScanner.js.map +1 -1
- package/dist/browser/inputs/TextInput.js +19 -14
- package/dist/browser/inputs/TextInput.js.map +1 -1
- package/dist/browser/inputs/index.js +4 -0
- package/dist/browser/inputs/index.js.map +1 -1
- package/dist/browser/inputs/qr-messages.js +2 -0
- package/dist/browser/inputs/qr-messages.js.map +1 -1
- package/dist/browser/internal/radio-keys.js +13 -0
- package/dist/browser/internal/radio-keys.js.map +1 -0
- package/dist/browser/intl/shortcut-messages.js +4 -0
- package/dist/browser/intl/shortcut-messages.js.map +1 -1
- package/dist/browser/intl/shortcut.js +4 -0
- package/dist/browser/intl/shortcut.js.map +1 -1
- package/dist/browser/layout/AnchoredPopover.js +180 -0
- package/dist/browser/layout/AnchoredPopover.js.map +1 -0
- package/dist/browser/layout/AppWorkspace.js +684 -532
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/DetailPanel.js +443 -333
- package/dist/browser/layout/DetailPanel.js.map +1 -1
- package/dist/browser/layout/MobileShell.js +231 -42
- package/dist/browser/layout/MobileShell.js.map +1 -1
- package/dist/browser/layout/Settings.js +283 -175
- package/dist/browser/layout/Settings.js.map +1 -1
- package/dist/browser/layout/SidebarRailHint.js +79 -0
- package/dist/browser/layout/SidebarRailHint.js.map +1 -0
- package/dist/browser/layout/SidebarSwitcher.js +79 -66
- package/dist/browser/layout/SidebarSwitcher.js.map +1 -1
- package/dist/browser/layout/TabBar.js +18 -4
- package/dist/browser/layout/TabBar.js.map +1 -1
- package/dist/browser/layout/app-workspace-controller.js +11 -4
- package/dist/browser/layout/app-workspace-controller.js.map +1 -1
- package/dist/browser/layout/detail-panel-messages.js +4 -2
- package/dist/browser/layout/detail-panel-messages.js.map +1 -1
- package/dist/browser/layout/index.js +3 -1
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/layout/scroll-fade.js +32 -5
- package/dist/browser/layout/scroll-fade.js.map +1 -1
- package/dist/browser/layout/settings-messages.js +26 -2
- package/dist/browser/layout/settings-messages.js.map +1 -1
- package/dist/browser/surfaces/Avatar.js +2 -14
- package/dist/browser/surfaces/Avatar.js.map +1 -1
- package/dist/browser/surfaces/DotStrip.js +70 -0
- package/dist/browser/surfaces/DotStrip.js.map +1 -0
- package/dist/browser/surfaces/NoticeCard.js +46 -30
- package/dist/browser/surfaces/NoticeCard.js.map +1 -1
- package/dist/browser/surfaces/ProgressRing.js +3 -0
- package/dist/browser/surfaces/ProgressRing.js.map +1 -1
- package/dist/browser/surfaces/ResourceCard.js +125 -68
- package/dist/browser/surfaces/ResourceCard.js.map +1 -1
- package/dist/browser/surfaces/index.js +2 -0
- package/dist/browser/surfaces/index.js.map +1 -1
- package/dist/browser/surfaces/person-color.js +18 -0
- package/dist/browser/surfaces/person-color.js.map +1 -0
- package/dist/browser/surfaces/resource-messages.js +8 -4
- package/dist/browser/surfaces/resource-messages.js.map +1 -1
- package/dist/browser/widgets/Widget.js +3 -2
- package/dist/browser/widgets/Widget.js.map +1 -1
- package/dist/ssr/actions/ContextMenu.js +9 -0
- package/dist/ssr/actions/ContextMenu.js.map +1 -1
- package/dist/ssr/actions/Dropdown.js +65 -31
- package/dist/ssr/actions/Dropdown.js.map +1 -1
- package/dist/ssr/actions/FilterChip.js +67 -16
- package/dist/ssr/actions/FilterChip.js.map +1 -1
- package/dist/ssr/actions/SelectionToolbar.js +104 -0
- package/dist/ssr/actions/SelectionToolbar.js.map +1 -0
- package/dist/ssr/actions/filter-messages.js +26 -2
- package/dist/ssr/actions/filter-messages.js.map +1 -1
- package/dist/ssr/actions/index.js +1 -0
- package/dist/ssr/actions/index.js.map +1 -1
- package/dist/ssr/actions/menu-rows.js +23 -3
- package/dist/ssr/actions/menu-rows.js.map +1 -1
- package/dist/ssr/actions/menu-sheet.js +2 -7
- package/dist/ssr/actions/menu-sheet.js.map +1 -1
- package/dist/ssr/charts.js +6 -0
- package/dist/ssr/charts.js.map +1 -0
- package/dist/ssr/chat/ChatComposer.js +184 -76
- package/dist/ssr/chat/ChatComposer.js.map +1 -1
- package/dist/ssr/chat/chat-messages.js +18 -0
- package/dist/ssr/chat/chat-messages.js.map +1 -1
- package/dist/ssr/chat/composer-document.js +19 -0
- package/dist/ssr/chat/composer-document.js.map +1 -1
- package/dist/ssr/chat/index.js.map +1 -1
- package/dist/ssr/content/Calendar.js +40 -31
- package/dist/ssr/content/Calendar.js.map +1 -1
- package/dist/ssr/content/CalendarDayView.js +40 -48
- package/dist/ssr/content/CalendarDayView.js.map +1 -1
- package/dist/ssr/content/Chart.js +8 -0
- package/dist/ssr/content/Chart.js.map +1 -1
- package/dist/ssr/content/FileGrid.js +132 -5
- package/dist/ssr/content/FileGrid.js.map +1 -1
- package/dist/ssr/content/FileTypeIcon.js +15 -0
- package/dist/ssr/content/FileTypeIcon.js.map +1 -1
- package/dist/ssr/content/FileView.js +11 -4
- package/dist/ssr/content/FileView.js.map +1 -1
- package/dist/ssr/content/MessageRow.js +274 -91
- package/dist/ssr/content/MessageRow.js.map +1 -1
- package/dist/ssr/content/ReactionBar.js +20 -1
- package/dist/ssr/content/ReactionBar.js.map +1 -1
- package/dist/ssr/content/calendar-day-scroll.js +4 -3
- package/dist/ssr/content/calendar-day-scroll.js.map +1 -1
- package/dist/ssr/content/chart-bar.js +476 -0
- package/dist/ssr/content/chart-bar.js.map +1 -0
- package/dist/ssr/content/file-list-messages.js +52 -0
- package/dist/ssr/content/file-list-messages.js.map +1 -0
- package/dist/ssr/content/index.js +2 -2
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/feedback/Tooltip.js +31 -14
- package/dist/ssr/feedback/Tooltip.js.map +1 -1
- package/dist/ssr/feedback/dialog-core.js +6 -0
- package/dist/ssr/feedback/dialog-core.js.map +1 -1
- package/dist/ssr/inputs/ChoiceList.js +95 -0
- package/dist/ssr/inputs/ChoiceList.js.map +1 -0
- package/dist/ssr/inputs/ChoiceSlider.js +191 -0
- package/dist/ssr/inputs/ChoiceSlider.js.map +1 -0
- package/dist/ssr/inputs/ChoiceTiles.js +61 -0
- package/dist/ssr/inputs/ChoiceTiles.js.map +1 -0
- package/dist/ssr/inputs/ColorChoices.js +60 -0
- package/dist/ssr/inputs/ColorChoices.js.map +1 -0
- package/dist/ssr/inputs/QrScanner.js +89 -10
- package/dist/ssr/inputs/QrScanner.js.map +1 -1
- package/dist/ssr/inputs/TextInput.js +17 -2
- package/dist/ssr/inputs/TextInput.js.map +1 -1
- package/dist/ssr/inputs/index.js +4 -0
- package/dist/ssr/inputs/index.js.map +1 -1
- package/dist/ssr/inputs/qr-messages.js +2 -0
- package/dist/ssr/inputs/qr-messages.js.map +1 -1
- package/dist/ssr/internal/radio-keys.js +13 -0
- package/dist/ssr/internal/radio-keys.js.map +1 -0
- package/dist/ssr/intl/shortcut-messages.js +4 -0
- package/dist/ssr/intl/shortcut-messages.js.map +1 -1
- package/dist/ssr/intl/shortcut.js +4 -0
- package/dist/ssr/intl/shortcut.js.map +1 -1
- package/dist/ssr/layout/AnchoredPopover.js +142 -0
- package/dist/ssr/layout/AnchoredPopover.js.map +1 -0
- package/dist/ssr/layout/AppWorkspace.js +287 -141
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/DetailPanel.js +181 -108
- package/dist/ssr/layout/DetailPanel.js.map +1 -1
- package/dist/ssr/layout/MobileShell.js +118 -24
- package/dist/ssr/layout/MobileShell.js.map +1 -1
- package/dist/ssr/layout/Settings.js +122 -45
- package/dist/ssr/layout/Settings.js.map +1 -1
- package/dist/ssr/layout/SidebarRailHint.js +79 -0
- package/dist/ssr/layout/SidebarRailHint.js.map +1 -0
- package/dist/ssr/layout/SidebarSwitcher.js +13 -3
- package/dist/ssr/layout/SidebarSwitcher.js.map +1 -1
- package/dist/ssr/layout/TabBar.js +11 -3
- package/dist/ssr/layout/TabBar.js.map +1 -1
- package/dist/ssr/layout/app-workspace-controller.js +11 -4
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
- package/dist/ssr/layout/detail-panel-messages.js +4 -2
- package/dist/ssr/layout/detail-panel-messages.js.map +1 -1
- package/dist/ssr/layout/index.js +3 -1
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/layout/scroll-fade.js +32 -5
- package/dist/ssr/layout/scroll-fade.js.map +1 -1
- package/dist/ssr/layout/settings-messages.js +26 -2
- package/dist/ssr/layout/settings-messages.js.map +1 -1
- package/dist/ssr/surfaces/Avatar.js +2 -14
- package/dist/ssr/surfaces/Avatar.js.map +1 -1
- package/dist/ssr/surfaces/DotStrip.js +31 -0
- package/dist/ssr/surfaces/DotStrip.js.map +1 -0
- package/dist/ssr/surfaces/NoticeCard.js +21 -12
- package/dist/ssr/surfaces/NoticeCard.js.map +1 -1
- package/dist/ssr/surfaces/ProgressRing.js +3 -0
- package/dist/ssr/surfaces/ProgressRing.js.map +1 -1
- package/dist/ssr/surfaces/ResourceCard.js +40 -15
- package/dist/ssr/surfaces/ResourceCard.js.map +1 -1
- package/dist/ssr/surfaces/index.js +2 -0
- package/dist/ssr/surfaces/index.js.map +1 -1
- package/dist/ssr/surfaces/person-color.js +18 -0
- package/dist/ssr/surfaces/person-color.js.map +1 -0
- package/dist/ssr/surfaces/resource-messages.js +8 -4
- package/dist/ssr/surfaces/resource-messages.js.map +1 -1
- package/dist/ssr/widgets/Widget.js +3 -2
- package/dist/ssr/widgets/Widget.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/actions/ContextMenu.d.ts +5 -0
- package/dist/types/actions/Dropdown.d.ts +19 -0
- package/dist/types/actions/FilterChip.d.ts +11 -0
- package/dist/types/actions/SelectionToolbar.d.ts +38 -0
- package/dist/types/actions/filter-messages.d.ts +12 -0
- package/dist/types/actions/index.d.ts +2 -0
- package/dist/types/actions/menu-rows.d.ts +7 -2
- package/dist/types/charts.d.ts +5 -0
- package/dist/types/chat/ChatComposer.d.ts +28 -0
- package/dist/types/chat/chat-messages.d.ts +9 -0
- package/dist/types/chat/composer-document.d.ts +5 -0
- package/dist/types/chat/index.d.ts +1 -1
- package/dist/types/content/Calendar.d.ts +7 -0
- package/dist/types/content/Chart.d.ts +2 -1
- package/dist/types/content/FileGrid.d.ts +43 -3
- package/dist/types/content/FileTypeIcon.d.ts +10 -0
- package/dist/types/content/FileView.d.ts +5 -1
- package/dist/types/content/MessageRow.d.ts +66 -2
- package/dist/types/content/calendar-day-scroll.d.ts +2 -1
- package/dist/types/content/chart-bar.d.ts +60 -0
- package/dist/types/content/file-list-messages.d.ts +24 -0
- package/dist/types/content/index.d.ts +4 -4
- package/dist/types/feedback/Tooltip.d.ts +8 -2
- package/dist/types/feedback/dialog-core.d.ts +3 -0
- package/dist/types/inputs/ChoiceList.d.ts +28 -0
- package/dist/types/inputs/ChoiceSlider.d.ts +36 -0
- package/dist/types/inputs/ChoiceTiles.d.ts +25 -0
- package/dist/types/inputs/ColorChoices.d.ts +19 -0
- package/dist/types/inputs/index.d.ts +8 -0
- package/dist/types/inputs/qr-messages.d.ts +1 -0
- package/dist/types/internal/radio-keys.d.ts +5 -0
- package/dist/types/intl/shortcut-messages.d.ts +2 -0
- package/dist/types/layout/AnchoredPopover.d.ts +31 -0
- package/dist/types/layout/AppWorkspace.d.ts +12 -0
- package/dist/types/layout/DetailPanel.d.ts +17 -0
- package/dist/types/layout/MobileShell.d.ts +55 -5
- package/dist/types/layout/Settings.d.ts +22 -0
- package/dist/types/layout/SidebarRailHint.d.ts +26 -0
- package/dist/types/layout/TabBar.d.ts +5 -0
- package/dist/types/layout/detail-panel-messages.d.ts +1 -0
- package/dist/types/layout/index.d.ts +5 -3
- package/dist/types/layout/scroll-fade.d.ts +5 -0
- package/dist/types/layout/settings-messages.d.ts +12 -0
- package/dist/types/surfaces/DotStrip.d.ts +22 -0
- package/dist/types/surfaces/NoticeCard.d.ts +3 -0
- package/dist/types/surfaces/ProgressRing.d.ts +2 -1
- package/dist/types/surfaces/ResourceCard.d.ts +9 -0
- package/dist/types/surfaces/index.d.ts +4 -1
- package/dist/types/surfaces/person-color.d.ts +10 -0
- package/dist/types/surfaces/resource-messages.d.ts +2 -0
- package/dist/types/widgets/Widget.d.ts +3 -2
- package/package.json +7 -2
|
@@ -8,70 +8,72 @@ import { ssrStyle as _$ssrStyle } from "solid-js/web";
|
|
|
8
8
|
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
9
9
|
import { escape as _$escape } from "solid-js/web";
|
|
10
10
|
var _tmpl$ = ["<button type=\"button\" class=\"k2b-app-workspace__resize\" role=\"separator\"", " style=\"", "\"><span aria-hidden=\"true\"></span></button>"],
|
|
11
|
-
_tmpl$2 = ["<
|
|
12
|
-
_tmpl$3 = ["<
|
|
13
|
-
_tmpl$4 = ["<
|
|
14
|
-
_tmpl$5 = ["<
|
|
15
|
-
_tmpl$6 = ["<
|
|
16
|
-
_tmpl$7 = ["<
|
|
17
|
-
_tmpl$8 = "<
|
|
18
|
-
_tmpl$9 =
|
|
19
|
-
_tmpl$0 = "<
|
|
20
|
-
_tmpl$1 =
|
|
21
|
-
_tmpl$10 = ["<aside", " class=\"", "\"", "", " style=\"", "\">", "</aside>"],
|
|
22
|
-
_tmpl$11 = ["<
|
|
23
|
-
_tmpl$12 = ["<
|
|
24
|
-
_tmpl$13 = ["<
|
|
25
|
-
_tmpl$14 = ["<
|
|
26
|
-
_tmpl$15 = ["<
|
|
27
|
-
_tmpl$16 = ["<span
|
|
28
|
-
_tmpl$17 = ["<
|
|
29
|
-
_tmpl$18 = ["<
|
|
30
|
-
_tmpl$19 = ["<
|
|
31
|
-
_tmpl$20 = ["<
|
|
32
|
-
_tmpl$21 = ["<
|
|
33
|
-
_tmpl$22 = ["<
|
|
34
|
-
_tmpl$23 = "<
|
|
35
|
-
_tmpl$24 = "<span class=\"k2b-app-workspace__sidebar-status-
|
|
36
|
-
_tmpl$25 =
|
|
37
|
-
_tmpl$26 = ["<span class=\"k2b-app-workspace__sidebar-status-
|
|
38
|
-
_tmpl$27 = ["<span class=\"k2b-
|
|
39
|
-
_tmpl$28 = ["<span class=\"k2b-
|
|
40
|
-
_tmpl$29 = "<span class=\"k2b-app-workspace__sidebar-status
|
|
41
|
-
_tmpl$30 =
|
|
42
|
-
_tmpl$31 = ["<span
|
|
43
|
-
_tmpl$32 = ["<span class=\"k2b-app-workspace__sidebar-item-context
|
|
44
|
-
_tmpl$33 = ["<span class=\"k2b-app-workspace__sidebar-item-
|
|
45
|
-
_tmpl$34 = ["<span class=\"k2b-app-workspace__sidebar-item-
|
|
46
|
-
_tmpl$35 = ["<span class=\"k2b-app-workspace__sidebar-item-
|
|
47
|
-
_tmpl$36 = ["<
|
|
48
|
-
_tmpl$37 = ["<
|
|
49
|
-
_tmpl$38 = ["<
|
|
50
|
-
_tmpl$39 = ["<
|
|
51
|
-
_tmpl$40 = ["<span class=\"", "\"", ">", "</span>"],
|
|
52
|
-
_tmpl$41 = ["<span class=\"
|
|
53
|
-
_tmpl$42 = ["<span class=\"k2b-app-
|
|
54
|
-
_tmpl$43 = ["<
|
|
55
|
-
_tmpl$44 = ["<div class=\"k2b-app-workspace__nav-tree-
|
|
56
|
-
_tmpl$45 = ["<div class=\""
|
|
57
|
-
_tmpl$46 = ["<div class=\"
|
|
58
|
-
_tmpl$47 = ["<
|
|
59
|
-
_tmpl$48 = ["<
|
|
60
|
-
_tmpl$49 = "<
|
|
61
|
-
_tmpl$50 =
|
|
62
|
-
_tmpl$51 = ["<div class=\"k2b-app-workspace__head-
|
|
63
|
-
_tmpl$52 = ["<
|
|
64
|
-
_tmpl$53 = ["<
|
|
65
|
-
_tmpl$54 = ["<div class=\"k2b-app-workspace__head
|
|
66
|
-
_tmpl$55 = ["<
|
|
67
|
-
_tmpl$56 = ["<
|
|
68
|
-
_tmpl$57 = ["<div class=\"", "\">", "</div>"]
|
|
11
|
+
_tmpl$2 = ["<span class=\"k2b-app-workspace__level-lead\">", "</span>"],
|
|
12
|
+
_tmpl$3 = ["<p class=\"k2b-truncate-fade\">", "</p>"],
|
|
13
|
+
_tmpl$4 = ["<div class=\"k2b-app-workspace__level-actions\">", "</div>"],
|
|
14
|
+
_tmpl$5 = ["<header class=\"k2b-app-workspace__level-head\">", "<div class=\"k2b-app-workspace__level-title\"><h2 tabindex=\"-1\">", "<span class=\"k2b-truncate-fade\">", "</span></h2>", "</div>", "</header>"],
|
|
15
|
+
_tmpl$6 = ["<style>", "</style>"],
|
|
16
|
+
_tmpl$7 = ["<div class=\"k2b-app-workspace__main-primary\" data-workspace-main-region=\"main\"", ">", "</div>"],
|
|
17
|
+
_tmpl$8 = ["<section", " class=\"", "\"", " style=\"", "\">", "</section>"],
|
|
18
|
+
_tmpl$9 = "<i class=\"ti ti-chevron-left\" aria-hidden=\"true\"></i>",
|
|
19
|
+
_tmpl$0 = ["<div class=\"k2b-app-workspace__level-body\"", ">", "</div>"],
|
|
20
|
+
_tmpl$1 = "<i class=\"ti ti-layout-sidebar-right\" aria-hidden=\"true\"></i>",
|
|
21
|
+
_tmpl$10 = ["<aside", " class=\"", "\"", "", " style=\"", "\"><button type=\"button\" class=\"k2b-app-workspace__detail-grabber\"", " aria-pressed=\"false\"><span aria-hidden=\"true\"></span></button>", "</aside>"],
|
|
22
|
+
_tmpl$11 = ["<aside", " class=\"", "\"", "", " style=\"", "\">", "</aside>"],
|
|
23
|
+
_tmpl$12 = ["<nav class=\"k2b-app-workspace__sidebar-sheet\"", " style=\"", "\">", "</nav>"],
|
|
24
|
+
_tmpl$13 = ["<div class=\"k2b-app-workspace__sidebar-desktop\"", ">", "</div>"],
|
|
25
|
+
_tmpl$14 = ["<button type=\"button\" class=\"k2b-app-workspace__sidebar-all\" aria-haspopup=\"dialog\"", "><span>", "</span><i class=\"ti ti-chevron-down\" aria-hidden=\"true\"></i></button>"],
|
|
26
|
+
_tmpl$15 = ["<script>", "</script>"],
|
|
27
|
+
_tmpl$16 = ["<span aria-hidden=\"true\"><i", "></i></span>"],
|
|
28
|
+
_tmpl$17 = ["<span class=\"k2b-app-workspace__sidebar-section-count\">", "</span>"],
|
|
29
|
+
_tmpl$18 = ["<button type=\"button\" class=\"k2b-app-workspace__sidebar-section-toggle\"", ">", "<i", " aria-hidden=\"true\"></i></button>"],
|
|
30
|
+
_tmpl$19 = ["<div class=\"k2b-app-workspace__sidebar-section-actions\">", "</div>"],
|
|
31
|
+
_tmpl$20 = ["<header class=\"k2b-app-workspace__sidebar-section-header\">", "", "</header>"],
|
|
32
|
+
_tmpl$21 = ["<div", "", " class=\"k2b-app-workspace__sidebar-section-content\">", "</div>"],
|
|
33
|
+
_tmpl$22 = ["<h2>", "</h2>"],
|
|
34
|
+
_tmpl$23 = ["<div class=\"k2b-app-workspace__sidebar-item-actions\"", ">", "</div>"],
|
|
35
|
+
_tmpl$24 = "<span class=\"k2b-app-workspace__sidebar-status-mention\" aria-hidden=\"true\">@</span>",
|
|
36
|
+
_tmpl$25 = "<span class=\"k2b-app-workspace__sidebar-status-muted\" aria-hidden=\"true\"><i class=\"ti ti-bell-off\"></i></span>",
|
|
37
|
+
_tmpl$26 = ["<span class=\"k2b-app-workspace__sidebar-status-count\"", ">", "</span>"],
|
|
38
|
+
_tmpl$27 = ["<span class=\"k2b-app-workspace__sidebar-status-unread\" aria-hidden=\"true\">", "</span>"],
|
|
39
|
+
_tmpl$28 = ["<span class=\"k2b-sr-only\">, ", "</span>"],
|
|
40
|
+
_tmpl$29 = ["<span class=\"k2b-app-workspace__sidebar-status\"", ">", "</span>"],
|
|
41
|
+
_tmpl$30 = "<span class=\"k2b-app-workspace__sidebar-status-dot\"></span>",
|
|
42
|
+
_tmpl$31 = ["<span", " aria-hidden=\"true\">", "</span>"],
|
|
43
|
+
_tmpl$32 = ["<span class=\"k2b-app-workspace__sidebar-item-context-meta\">", "</span>"],
|
|
44
|
+
_tmpl$33 = ["<span class=\"k2b-app-workspace__sidebar-item-context\"><span class=\"k2b-app-workspace__sidebar-item-context-label k2b-truncate-fade\">", "</span>", "</span>"],
|
|
45
|
+
_tmpl$34 = ["<span class=\"k2b-app-workspace__sidebar-item-description k2b-truncate-fade\">", "</span>"],
|
|
46
|
+
_tmpl$35 = ["<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 k2b-truncate-fade-lines\">", "</span></span>", "</span>"],
|
|
47
|
+
_tmpl$36 = ["<span class=\"k2b-app-workspace__sidebar-item-meta\"", ">", "</span>"],
|
|
48
|
+
_tmpl$37 = ["<i", "></i>"],
|
|
49
|
+
_tmpl$38 = ["<a", " class=\"k2b-app-workspace__sidebar-item-action\"", ">", "</a>"],
|
|
50
|
+
_tmpl$39 = ["<button type=\"button\" class=\"k2b-app-workspace__sidebar-item-action\"", ">", "</button>"],
|
|
51
|
+
_tmpl$40 = ["<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 k2b-truncate-fade-lines\">", "</span></span><span class=\"k2b-app-workspace__sidebar-item-description k2b-truncate-fade\">", "</span></span>"],
|
|
52
|
+
_tmpl$41 = ["<span class=\"", "\"", ">", "</span>"],
|
|
53
|
+
_tmpl$42 = ["<span class=\"k2b-app-workspace__nav-tree-toggle\" data-k2b-nav-tree-toggle aria-hidden=\"true\"><i class=\"", "\"></i></span>"],
|
|
54
|
+
_tmpl$43 = ["<span class=\"k2b-app-workspace__sidebar-item-label\"", "><span class=\"k2b-app-workspace__sidebar-item-label-text k2b-truncate-fade-lines\">", "</span></span>"],
|
|
55
|
+
_tmpl$44 = ["<div class=\"k2b-app-workspace__nav-tree-group\" role=\"group\">", "</div>"],
|
|
56
|
+
_tmpl$45 = ["<div class=\"k2b-app-workspace__nav-tree-node\" role=\"treeitem\"", " style=\"", "\">", "", "</div>"],
|
|
57
|
+
_tmpl$46 = ["<div class=\"", "\" role=\"tree\"", ">", "</div>"],
|
|
58
|
+
_tmpl$47 = ["<div class=\"k2b-app-workspace__sidebar-icon-grid\"", ">", "</div>"],
|
|
59
|
+
_tmpl$48 = ["<i", " aria-hidden=\"true\"></i>"],
|
|
60
|
+
_tmpl$49 = ["<span class=\"k2b-app-workspace__head-primary-label\">", "</span>"],
|
|
61
|
+
_tmpl$50 = "<i class=\"ti ti-layout-sidebar\" aria-hidden=\"true\"></i>",
|
|
62
|
+
_tmpl$51 = ["<div class=\"k2b-app-workspace__head-views\">", "</div>"],
|
|
63
|
+
_tmpl$52 = ["<div class=\"k2b-app-workspace__head-filters\" role=\"group\"", ">", "", "</div>"],
|
|
64
|
+
_tmpl$53 = ["<span class=\"k2b-app-workspace__head-count\"><span>", "</span></span>"],
|
|
65
|
+
_tmpl$54 = ["<div class=\"k2b-app-workspace__head-actions\">", "", "</div>"],
|
|
66
|
+
_tmpl$55 = ["<div class=\"k2b-app-workspace__head\"", ">", "<div class=\"k2b-app-workspace__head-lead\">", "", "", "", "", "</div>", "</div>"],
|
|
67
|
+
_tmpl$56 = ["<h1 class=\"k2b-app-workspace__head-heading\" data-k2b-page-trail-title", ">", "</h1>"],
|
|
68
|
+
_tmpl$57 = ["<div class=\"", "\" data-k2b-app-workspace", " style=\"", "\">", "</div>"],
|
|
69
|
+
_tmpl$58 = ["<div class=\"", "\">", "</div>"];
|
|
69
70
|
import { Link } from "@k2b/ssr/nav";
|
|
70
71
|
import { children, createContext, createEffect, createMemo, createRoot, createSignal, createUniqueId, For, getOwner, mergeProps, on, onCleanup, onMount, Show, useContext } from "solid-js";
|
|
71
72
|
import { Dynamic, isServer } from "solid-js/web";
|
|
72
73
|
import { Button, ButtonLink, IconButton, IconButtonLink } from "../actions/Button";
|
|
73
74
|
import { useFilterMessages } from "../actions/filter-messages";
|
|
74
75
|
import { dialogCore } from "../feedback/dialog-core";
|
|
76
|
+
import { Tooltip } from "../feedback/Tooltip";
|
|
75
77
|
import { RenderErrorBoundary } from "../internal/render-error";
|
|
76
78
|
import { APP_WORKSPACE_DETAIL_CLOSE_EVENT, APP_WORKSPACE_DETAIL_OPEN_EVENT, APP_WORKSPACE_DETAIL_STEP_EVENT, APP_WORKSPACE_SIDEBAR_HIDE_EVENT, installAppWorkspaceController } from "./app-workspace-controller";
|
|
77
79
|
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_MAIN_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";
|
|
@@ -79,11 +81,23 @@ import { appWorkspaceInverseWidthCss, appWorkspaceWidthCss, appWorkspaceWidthTok
|
|
|
79
81
|
import BottomSheet, { bottomSheetAdaptiveOptions } from "./BottomSheet";
|
|
80
82
|
import { PageTitle, usePageTrail } from "./PageTitle";
|
|
81
83
|
import { SidebarItemPreview } from "./SidebarItemPreview";
|
|
84
|
+
import { inSidebarRail, SidebarRailHint } from "./SidebarRailHint";
|
|
82
85
|
import { AppWorkspaceSidebarSwitcher } from "./SidebarSwitcher";
|
|
83
86
|
import { createScrollFade, scrollFadeEdges } from "./scroll-fade";
|
|
84
87
|
import { rememberSidebarScroll } from "./sidebar-scroll-memory";
|
|
85
88
|
import { assertStableUiId, assertUniqueStableUiIds } from "./stable-id";
|
|
86
89
|
import { useWorkspaceMessages } from "./workspace-messages";
|
|
90
|
+
/** The narrowest container of each levels width class, as the stylesheet's breakpoints define them (48rem, 80rem). */
|
|
91
|
+
const LEVEL_CLASS_WIDTH = {
|
|
92
|
+
1: 0,
|
|
93
|
+
2: 768,
|
|
94
|
+
3: 1280
|
|
95
|
+
};
|
|
96
|
+
/** The last shown level's minimum width when the level does not declare one; the stylesheet uses the same value. */
|
|
97
|
+
const LEVEL_LAST_MIN = 320;
|
|
98
|
+
/** The width the last shown level keeps at least: its declared minimum, never below the default. */
|
|
99
|
+
const levelLastMin = minSize => Math.max(minSize ?? 0, LEVEL_LAST_MIN);
|
|
100
|
+
const nonEmptyStyle = style => Object.keys(style).length ? style : undefined;
|
|
87
101
|
const ResizeContext = createContext(true);
|
|
88
102
|
/** The enclosing workspace: its head names the sidebar, and a nested workspace leaves the page title to it. */
|
|
89
103
|
const WorkspaceContext = createContext();
|
|
@@ -168,19 +182,27 @@ function LevelHead(props) {
|
|
|
168
182
|
// server and the client would then disagree on hydration keys.
|
|
169
183
|
const description = children(() => props.description);
|
|
170
184
|
const actions = children(() => props.actions);
|
|
171
|
-
|
|
185
|
+
const lead = children(() => props.lead);
|
|
186
|
+
return _$ssr(_tmpl$5, _$escape(props.children), _$escape(_$createComponent(Show, {
|
|
187
|
+
get when() {
|
|
188
|
+
return lead();
|
|
189
|
+
},
|
|
190
|
+
get children() {
|
|
191
|
+
return _$ssr(_tmpl$2, _$escape(lead()));
|
|
192
|
+
}
|
|
193
|
+
})), _$escape(props.label), _$escape(_$createComponent(Show, {
|
|
172
194
|
get when() {
|
|
173
195
|
return description();
|
|
174
196
|
},
|
|
175
197
|
get children() {
|
|
176
|
-
return _$ssr(_tmpl$
|
|
198
|
+
return _$ssr(_tmpl$3, _$escape(description()));
|
|
177
199
|
}
|
|
178
200
|
})), _$escape(_$createComponent(Show, {
|
|
179
201
|
get when() {
|
|
180
202
|
return actions();
|
|
181
203
|
},
|
|
182
204
|
get children() {
|
|
183
|
-
return _$ssr(_tmpl$
|
|
205
|
+
return _$ssr(_tmpl$4, _$escape(actions()));
|
|
184
206
|
}
|
|
185
207
|
})));
|
|
186
208
|
}
|
|
@@ -235,8 +257,20 @@ function AppWorkspaceMain(props) {
|
|
|
235
257
|
return open;
|
|
236
258
|
});
|
|
237
259
|
const depth = () => Math.max(1, levels().findIndex(pane => pane.props.id === props.level) + 1);
|
|
260
|
+
/** How many of the deepest levels a width class shows: up to its count, as long as their minimum widths fit. */
|
|
261
|
+
const levelCount = widthClass => {
|
|
262
|
+
const all = levels();
|
|
263
|
+
let count = Math.min(widthClass, all.length);
|
|
264
|
+
while (count > 1) {
|
|
265
|
+
const end = Math.max(depth(), count);
|
|
266
|
+
const needed = all.slice(end - count, end).reduce((sum, pane, offset) => sum + (end - count + offset + 1 === end ? levelLastMin(pane.props.minSize) : pane.props.minSize ?? APP_WORKSPACE_PANE_MIN), 0);
|
|
267
|
+
if (needed <= LEVEL_CLASS_WIDTH[widthClass]) break;
|
|
268
|
+
count--;
|
|
269
|
+
}
|
|
270
|
+
return count;
|
|
271
|
+
};
|
|
238
272
|
const levelClasses = (index, kind) => [1, 2, 3].filter(widthClass => {
|
|
239
|
-
const count =
|
|
273
|
+
const count = levelCount(widthClass);
|
|
240
274
|
const end = Math.max(depth(), count);
|
|
241
275
|
const start = end - count + 1;
|
|
242
276
|
return kind === "first" ? index === start && index > 1 : kind === "last" ? index === end : kind === "handle" ? index >= start && index + 1 <= end : index >= start && index <= end;
|
|
@@ -287,7 +321,7 @@ function AppWorkspaceMain(props) {
|
|
|
287
321
|
get when() {
|
|
288
322
|
return minWidth();
|
|
289
323
|
},
|
|
290
|
-
children: value => _$ssr(_tmpl$
|
|
324
|
+
children: value => _$ssr(_tmpl$6, minWidthRule(value()))
|
|
291
325
|
}), _$ssrElement("div", _$mergeProps({
|
|
292
326
|
get ["class"]() {
|
|
293
327
|
return `k2b-app-workspace__main ${hasPanes() ? "has-panes" : ""} ${props.class ?? ""}`;
|
|
@@ -334,7 +368,7 @@ function AppWorkspaceMain(props) {
|
|
|
334
368
|
return props.mobilePane ?? (anchor?.type === "pane" ? anchor.slot.props.id : "main");
|
|
335
369
|
};
|
|
336
370
|
if (region.type === "primary") {
|
|
337
|
-
return _$ssr(_tmpl$
|
|
371
|
+
return _$ssr(_tmpl$7, _$ssrAttribute("data-workspace-mobile-active", activeMobilePane() === "main" ? "true" : "false", false), _$escape(region.children));
|
|
338
372
|
}
|
|
339
373
|
const pane = region.slot;
|
|
340
374
|
const levelIndex = () => levels().indexOf(pane) + 1;
|
|
@@ -390,11 +424,18 @@ function AppWorkspaceMain(props) {
|
|
|
390
424
|
get children() {
|
|
391
425
|
return handle();
|
|
392
426
|
}
|
|
393
|
-
}), _$ssr(_tmpl$
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
427
|
+
}), _$ssr(_tmpl$8, _$ssrAttribute("id", _$escape(pane.domId, true), false), `k2b-app-workspace__main-pane ${isAnchor() ? "is-primary" : ""} ${_$escape(pane.props.class ?? "", true)}`, _$ssrAttribute("aria-label", _$escape(pane.props.label, true), false) + _$ssrAttribute("data-workspace-level", levelsMode() ? _$escape(levelIndex(), true) : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-level-shown", _$escape(levelAttr("shown"), true), false) + _$ssrAttribute("data-workspace-level-first", _$escape(levelAttr("first"), true), false) + _$ssrAttribute("data-workspace-level-last", _$escape(levelAttr("last"), true), false) + _$ssrAttribute("data-workspace-main-region", _$escape(pane.props.id, true), false) + _$ssrAttribute("data-workspace-mobile-active", (levelsMode() ? levelClasses(levelIndex(), "shown").split(" ").includes("1") : activeMobilePane() === pane.props.id) ? "true" : "false", false) + _$ssrAttribute("data-workspace-panel-id", _$escape(panelId, true), false) + _$ssrAttribute("data-workspace-resizable", resizable() ? "true" : "false", false) + _$ssrAttribute("data-surface", pane.props.surface === "navigation" ? "navigation" : _$escape(undefined, true), false) + _$ssrAttribute("data-scroll", !levelsMode() && pane.props.scroll === false ? "false" : _$escape(undefined, true), false) + _$ssrAttribute("data-scroll-fade-mode", !levelsMode() && pane.props.scroll !== false && pane.props.scrollFade !== false ? "both" : _$escape(undefined, true), false), _$ssrStyle(nonEmptyStyle({
|
|
428
|
+
...(isAnchor() ? {} : {
|
|
429
|
+
// A stored width keeps to this pane's limits before the controller attaches.
|
|
430
|
+
"--k2b-workspace-panel-size": `clamp(${minSize()}px, var(${variable}, ${appWorkspaceWidthCss(defaultSize(), "var(--k2b-workspace-width)")}), ${maxSize()}px)`,
|
|
431
|
+
"--k2b-workspace-panel-min": `${minSize()}px`
|
|
432
|
+
}),
|
|
433
|
+
// The last shown level fills the rest, but never below its minimum; set on every level, so a workspace
|
|
434
|
+
// nested in a wide level does not inherit that minimum.
|
|
435
|
+
...(levelsMode() ? {
|
|
436
|
+
"--k2b-workspace-level-min": `${levelLastMin(pane.props.minSize)}px`
|
|
437
|
+
} : {})
|
|
438
|
+
})), levelsMode() ? _$escape([_$createComponent(LevelHead, {
|
|
398
439
|
get label() {
|
|
399
440
|
return pane.props.label;
|
|
400
441
|
},
|
|
@@ -404,6 +445,9 @@ function AppWorkspaceMain(props) {
|
|
|
404
445
|
get actions() {
|
|
405
446
|
return pane.props.actions;
|
|
406
447
|
},
|
|
448
|
+
get lead() {
|
|
449
|
+
return pane.props.lead;
|
|
450
|
+
},
|
|
407
451
|
get children() {
|
|
408
452
|
return _$createComponent(Show, {
|
|
409
453
|
get when() {
|
|
@@ -427,13 +471,13 @@ function AppWorkspaceMain(props) {
|
|
|
427
471
|
return props.onLevelNavigate ? navigateBack : undefined;
|
|
428
472
|
},
|
|
429
473
|
get children() {
|
|
430
|
-
return _$ssr(_tmpl$
|
|
474
|
+
return _$ssr(_tmpl$9);
|
|
431
475
|
}
|
|
432
476
|
});
|
|
433
477
|
}
|
|
434
478
|
});
|
|
435
479
|
}
|
|
436
|
-
}), _$ssr(_tmpl$
|
|
480
|
+
}), _$ssr(_tmpl$0, _$ssrAttribute("data-scroll", pane.props.scroll === false ? "false" : _$escape(undefined, true), false) + _$ssrAttribute("data-scroll-fade-mode", pane.props.scroll !== false && pane.props.scrollFade !== false ? "both" : _$escape(undefined, true), false), _$escape(pane.props.children))]) : _$escape(pane.props.children)), _$createComponent(Show, {
|
|
437
481
|
get when() {
|
|
438
482
|
return _$memo(() => !!resizable())() && before();
|
|
439
483
|
},
|
|
@@ -504,7 +548,7 @@ function AppWorkspaceDetail(props) {
|
|
|
504
548
|
aside?.removeEventListener(APP_WORKSPACE_DETAIL_STEP_EVENT, step);
|
|
505
549
|
});
|
|
506
550
|
});
|
|
507
|
-
return [_$ssr(_tmpl$
|
|
551
|
+
return [_$ssr(_tmpl$6, workspaceRule()), _$createComponent(Button, {
|
|
508
552
|
type: "button",
|
|
509
553
|
variant: "ghost",
|
|
510
554
|
get ["aria-controls"]() {
|
|
@@ -520,7 +564,7 @@ function AppWorkspaceDetail(props) {
|
|
|
520
564
|
},
|
|
521
565
|
"class": "k2b-app-workspace__detail-toggle",
|
|
522
566
|
get children() {
|
|
523
|
-
return [_$ssr(_tmpl$
|
|
567
|
+
return [_$ssr(_tmpl$1), workspaceMessages().details];
|
|
524
568
|
}
|
|
525
569
|
}), _$createComponent(Show, {
|
|
526
570
|
get when() {
|
|
@@ -551,7 +595,7 @@ function AppWorkspaceDetail(props) {
|
|
|
551
595
|
}
|
|
552
596
|
});
|
|
553
597
|
}
|
|
554
|
-
}), _$ssr(_tmpl$
|
|
598
|
+
}), _$ssr(_tmpl$10, _$ssrAttribute("id", _$escape(domId(), true), false), `k2b-app-workspace__detail ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-width", _$escape(props.width ?? "md", true), false) + _$ssrAttribute("data-workspace-detail-phone", props.phone === "page" ? "page" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-detail-choice", props.openOnChoice === false ? "request" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-panel-id", _$escape(panelId(), true), false) + _$ssrAttribute("data-workspace-resizable", resizable() ? "true" : "false", false) + _$ssrAttribute("data-workspace-detail-reopen", props.onOpen ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-detail-closable", props.onClose ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-detail-steppable", props.onStep ? "true" : _$escape(undefined, true), false), _$ssrAttribute("hidden", !props.open || props.available === false, true), _$ssrStyle({
|
|
555
599
|
...sizeStyle(),
|
|
556
600
|
"view-transition-name": props.viewTransitionName
|
|
557
601
|
}), _$ssrAttribute("aria-label", _$escape(workspaceMessages().detailFullHeight, true), false), _$escape(props.children))];
|
|
@@ -602,7 +646,7 @@ function AppWorkspaceBottomDrawer(props) {
|
|
|
602
646
|
}
|
|
603
647
|
});
|
|
604
648
|
}
|
|
605
|
-
}), _$ssr(_tmpl$
|
|
649
|
+
}), _$ssr(_tmpl$11, _$ssrAttribute("id", _$escape(domId(), true), false), `k2b-app-workspace__drawer ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-height", _$escape(props.height ?? "md", true), false) + _$ssrAttribute("data-workspace-panel-id", _$escape(panelId(), true), false) + _$ssrAttribute("data-workspace-resizable", resizable() ? "true" : "false", false), _$ssrAttribute("hidden", !props.open, true), _$ssrStyleProperty("--k2b-workspace-panel-size:", `var(${_$escape(variable(), true)}, ${_$escape(defaultHeight(), true)}px)`) + _$ssrStyleProperty(";view-transition-name:", _$escape(props.viewTransitionName, true)), _$escape(props.children))];
|
|
606
650
|
}
|
|
607
651
|
function AppWorkspaceSidebar(props) {
|
|
608
652
|
const rootResizable = useContext(ResizeContext);
|
|
@@ -687,7 +731,7 @@ function AppWorkspaceSidebar(props) {
|
|
|
687
731
|
console.error("AppWorkspace.Sidebar: write the sidebar children as JSX inside AppWorkspace.Sidebar so they can render a second time in the All sheet; pre-resolved children cannot be reused.");
|
|
688
732
|
return null;
|
|
689
733
|
}
|
|
690
|
-
return _$ssr(_tmpl$
|
|
734
|
+
return _$ssr(_tmpl$12, _$ssrAttribute("aria-label", _$escape(props.label, true), false), _$ssrStyle(accent), _$escape(resolved()));
|
|
691
735
|
}
|
|
692
736
|
});
|
|
693
737
|
}
|
|
@@ -754,14 +798,14 @@ function AppWorkspaceSidebar(props) {
|
|
|
754
798
|
return !props.hidden;
|
|
755
799
|
},
|
|
756
800
|
get children() {
|
|
757
|
-
return [_$ssr(_tmpl$
|
|
801
|
+
return [_$ssr(_tmpl$13, _$ssrAttribute("data-scroll-fade-mode", stacked() ? "both" : _$escape(undefined, true), false) + _$ssrAttribute("data-scroll-fade-axis", stacked() ? "horizontal" : _$escape(undefined, true), false), _$escape(desktop()?.children)), _$createComponent(Show, {
|
|
758
802
|
get when() {
|
|
759
803
|
return stacked();
|
|
760
804
|
},
|
|
761
805
|
get children() {
|
|
762
|
-
return [_$ssr(_tmpl$
|
|
806
|
+
return [_$ssr(_tmpl$14, _$ssrAttribute("aria-expanded", _$escape(sheetOpen(), true), false) + _$ssrAttribute("aria-label", props.label ? _$escape(workspaceMessages().sidebarAllLabel({
|
|
763
807
|
label: props.label
|
|
764
|
-
}), true) : _$escape(undefined, true), false), _$escape(workspaceMessages().sidebarAll)), _$ssr(_tmpl$
|
|
808
|
+
}), true) : _$escape(undefined, true), false), _$escape(workspaceMessages().sidebarAll)), _$ssr(_tmpl$15, CHIP_ROW_SCRIPT)];
|
|
765
809
|
}
|
|
766
810
|
})];
|
|
767
811
|
}
|
|
@@ -841,7 +885,7 @@ const AppWorkspaceSidebarBody = props => {
|
|
|
841
885
|
get ["data-scroll-fade-mode"]() {
|
|
842
886
|
return props.scrollFade !== false ? "both" : undefined;
|
|
843
887
|
}
|
|
844
|
-
}, () => scrollAttrs(props.scrollPreserveKey), () => modeAttrs(props.sidebarMode)), _$escape(props.children), false), _$ssr(_tmpl$
|
|
888
|
+
}, () => scrollAttrs(props.scrollPreserveKey), () => modeAttrs(props.sidebarMode)), _$escape(props.children), false), _$ssr(_tmpl$15, SIDEBAR_SCROLL_MEMORY_SCRIPT)];
|
|
845
889
|
};
|
|
846
890
|
const AppWorkspaceSidebarFooter = props => _$ssrElement("footer", _$mergeProps({
|
|
847
891
|
get ["class"]() {
|
|
@@ -857,14 +901,14 @@ const AppWorkspaceSidebarSection = props => {
|
|
|
857
901
|
return props.icon;
|
|
858
902
|
},
|
|
859
903
|
get children() {
|
|
860
|
-
return _$ssr(_tmpl$
|
|
904
|
+
return _$ssr(_tmpl$16, _$ssrAttribute("class", _$escape(iconClass(props.icon), true), false));
|
|
861
905
|
}
|
|
862
906
|
}), props.title, _$createComponent(Show, {
|
|
863
907
|
get when() {
|
|
864
908
|
return props.count !== undefined;
|
|
865
909
|
},
|
|
866
910
|
get children() {
|
|
867
|
-
return _$ssr(_tmpl$
|
|
911
|
+
return _$ssr(_tmpl$17, _$escape(props.count));
|
|
868
912
|
}
|
|
869
913
|
})];
|
|
870
914
|
return _$ssrElement("section", _$mergeProps({
|
|
@@ -879,7 +923,7 @@ const AppWorkspaceSidebarSection = props => {
|
|
|
879
923
|
return props.title || props.actions;
|
|
880
924
|
},
|
|
881
925
|
get children() {
|
|
882
|
-
return _$ssr(_tmpl$
|
|
926
|
+
return _$ssr(_tmpl$20, _$escape(_$createComponent(Show, {
|
|
883
927
|
get when() {
|
|
884
928
|
return props.collapsible;
|
|
885
929
|
},
|
|
@@ -889,23 +933,23 @@ const AppWorkspaceSidebarSection = props => {
|
|
|
889
933
|
return props.title;
|
|
890
934
|
},
|
|
891
935
|
get children() {
|
|
892
|
-
return _$ssr(_tmpl$
|
|
936
|
+
return _$ssr(_tmpl$22, _$escape(title()));
|
|
893
937
|
}
|
|
894
938
|
});
|
|
895
939
|
},
|
|
896
940
|
get children() {
|
|
897
|
-
return _$ssr(_tmpl$
|
|
941
|
+
return _$ssr(_tmpl$18, _$ssrAttribute("aria-expanded", _$escape(open(), true), false) + _$ssrAttribute("aria-controls", _$escape(id, true), false), _$escape(title()), _$ssrAttribute("class", open() ? "ti ti-chevron-down" : "ti ti-chevron-right", false));
|
|
898
942
|
}
|
|
899
943
|
})), _$escape(_$createComponent(Show, {
|
|
900
944
|
get when() {
|
|
901
945
|
return props.actions;
|
|
902
946
|
},
|
|
903
947
|
get children() {
|
|
904
|
-
return _$ssr(_tmpl$
|
|
948
|
+
return _$ssr(_tmpl$19, _$escape(props.actions));
|
|
905
949
|
}
|
|
906
950
|
})));
|
|
907
951
|
}
|
|
908
|
-
})), _$ssr(_tmpl$
|
|
952
|
+
})), _$ssr(_tmpl$21, _$ssrAttribute("id", _$escape(id, true), false), _$ssrAttribute("hidden", !open(), true), _$escape(props.children))], false);
|
|
909
953
|
};
|
|
910
954
|
const AppWorkspaceSidebarItemIcon = props => mergeProps({
|
|
911
955
|
kind: SIDEBAR_ITEM_ICON
|
|
@@ -919,7 +963,7 @@ const AppWorkspaceSidebarItemMeta = props => mergeProps({
|
|
|
919
963
|
const AppWorkspaceSidebarItemAction = props => mergeProps({
|
|
920
964
|
kind: SIDEBAR_ITEM_ACTION
|
|
921
965
|
}, props);
|
|
922
|
-
const AppWorkspaceSidebarItemActions = props => _$ssr(_tmpl$
|
|
966
|
+
const AppWorkspaceSidebarItemActions = props => _$ssr(_tmpl$23, _$ssrAttribute("data-visibility", props.visibility === "hover" ? "hover" : _$escape(undefined, true), false), _$escape(props.children));
|
|
923
967
|
const AppWorkspaceSidebarItemStatus = props => {
|
|
924
968
|
const workspaceMessages = useWorkspaceMessages();
|
|
925
969
|
const waiting = () => props.waiting && Number.isFinite(props.waiting.count) ? Math.max(0, Math.floor(props.waiting.count)) : null;
|
|
@@ -935,7 +979,7 @@ const AppWorkspaceSidebarItemStatus = props => {
|
|
|
935
979
|
// The element itself stays when there is nothing to show: empty, it takes no
|
|
936
980
|
// space, and it still keeps the row's label on one line, so the first count
|
|
937
981
|
// never re-wraps the label and moves the rows below.
|
|
938
|
-
return _$ssr(_tmpl$
|
|
982
|
+
return _$ssr(_tmpl$29, _$ssrAttribute("data-unread", waiting() !== null ? _$escape(undefined, true) : count() ? "count" : dot() ? "dot" : _$escape(undefined, true), false) + _$ssrAttribute("data-waiting", waiting() === null ? _$escape(undefined, true) : waiting() ? "count" : "zero", false), _$escape(_$createComponent(Show, {
|
|
939
983
|
get when() {
|
|
940
984
|
return description();
|
|
941
985
|
},
|
|
@@ -945,16 +989,16 @@ const AppWorkspaceSidebarItemStatus = props => {
|
|
|
945
989
|
return props.mention;
|
|
946
990
|
},
|
|
947
991
|
get children() {
|
|
948
|
-
return _$ssr(_tmpl$
|
|
992
|
+
return _$ssr(_tmpl$24);
|
|
949
993
|
}
|
|
950
994
|
}), _$createComponent(Show, {
|
|
951
995
|
get when() {
|
|
952
996
|
return props.muted;
|
|
953
997
|
},
|
|
954
998
|
get children() {
|
|
955
|
-
return _$ssr(_tmpl$
|
|
999
|
+
return _$ssr(_tmpl$25);
|
|
956
1000
|
}
|
|
957
|
-
}), _$ssr(_tmpl$
|
|
1001
|
+
}), _$ssr(_tmpl$27, _$escape(_$createComponent(Show, {
|
|
958
1002
|
get when() {
|
|
959
1003
|
return count() || waiting() === 0;
|
|
960
1004
|
},
|
|
@@ -964,24 +1008,84 @@ const AppWorkspaceSidebarItemStatus = props => {
|
|
|
964
1008
|
return dot();
|
|
965
1009
|
},
|
|
966
1010
|
get children() {
|
|
967
|
-
return _$ssr(_tmpl$
|
|
1011
|
+
return _$ssr(_tmpl$30);
|
|
968
1012
|
}
|
|
969
1013
|
});
|
|
970
1014
|
},
|
|
971
1015
|
get children() {
|
|
972
|
-
return _$ssr(_tmpl$
|
|
1016
|
+
return _$ssr(_tmpl$26, _$ssrAttribute("data-mention", props.mention ? "true" : _$escape(undefined, true), false), count() > 99 ? "99+" : _$escape(count()));
|
|
973
1017
|
}
|
|
974
|
-
}))), _$ssr(_tmpl$
|
|
1018
|
+
}))), _$ssr(_tmpl$28, _$escape(description()))];
|
|
975
1019
|
}
|
|
976
1020
|
})));
|
|
977
1021
|
};
|
|
1022
|
+
/**
|
|
1023
|
+
* Hover actions overlay a row's end, so the label and count under them fade
|
|
1024
|
+
* out while they show. The row measures how far the overlay reaches into its
|
|
1025
|
+
* count (`--k2b-sidebar-item-cover`) and how much of that the count and gap
|
|
1026
|
+
* after the label already take (`--k2b-sidebar-item-label-trail`), so the
|
|
1027
|
+
* label keeps all the width the overlay leaves it. The stylesheet applies
|
|
1028
|
+
* both only while the overlay shows, and assumes its usual size until then.
|
|
1029
|
+
*/
|
|
1030
|
+
function observeSidebarRowCover(row) {
|
|
1031
|
+
if (isServer || typeof ResizeObserver === "undefined") return;
|
|
1032
|
+
// A hidden count, such as an empty status, or hidden actions have no box to measure from.
|
|
1033
|
+
const laidOut = element => Boolean(element?.getClientRects().length);
|
|
1034
|
+
const measure = () => {
|
|
1035
|
+
const main = row.querySelector(":scope > .k2b-app-workspace__sidebar-item-main");
|
|
1036
|
+
const label = main?.querySelector(":scope > :is(.k2b-app-workspace__sidebar-item-copy, .k2b-app-workspace__sidebar-item-label)");
|
|
1037
|
+
const overlays = Array.from(row.querySelectorAll(':scope > .k2b-app-workspace__sidebar-item-actions[data-visibility="hover"]:last-child, :scope > .k2b-app-workspace__sidebar-item-action[data-visibility="hover"]')).filter(element => laidOut(element) && getComputedStyle(element).position === "absolute");
|
|
1038
|
+
if (!main || !laidOut(label) || !overlays.length) {
|
|
1039
|
+
row.style.removeProperty("--k2b-sidebar-item-cover");
|
|
1040
|
+
row.style.removeProperty("--k2b-sidebar-item-label-trail");
|
|
1041
|
+
return;
|
|
1042
|
+
}
|
|
1043
|
+
// Lengths along the inline axis, measured toward the row's end.
|
|
1044
|
+
const rtl = getComputedStyle(row).direction === "rtl";
|
|
1045
|
+
const end = element => {
|
|
1046
|
+
const box = element.getBoundingClientRect();
|
|
1047
|
+
return rtl ? -box.left : box.right;
|
|
1048
|
+
};
|
|
1049
|
+
const start = Math.min(...overlays.map(element => {
|
|
1050
|
+
const box = element.getBoundingClientRect();
|
|
1051
|
+
return rtl ? -box.right : box.left;
|
|
1052
|
+
}));
|
|
1053
|
+
const meta = main.querySelector(":scope > .k2b-app-workspace__sidebar-item-meta");
|
|
1054
|
+
const content = end(laidOut(meta) ? meta : label);
|
|
1055
|
+
row.style.setProperty("--k2b-sidebar-item-cover", `${Math.max(0, content - start)}px`);
|
|
1056
|
+
row.style.setProperty("--k2b-sidebar-item-label-trail", `${Math.max(0, content - end(label))}px`);
|
|
1057
|
+
};
|
|
1058
|
+
const resized = new ResizeObserver(measure);
|
|
1059
|
+
// The label, the count, and the actions can be replaced while the row stays.
|
|
1060
|
+
const replaced = new MutationObserver(() => observe());
|
|
1061
|
+
const observe = () => {
|
|
1062
|
+
const main = row.querySelector(":scope > .k2b-app-workspace__sidebar-item-main");
|
|
1063
|
+
if (main) replaced.observe(main, {
|
|
1064
|
+
childList: true
|
|
1065
|
+
});
|
|
1066
|
+
resized.disconnect();
|
|
1067
|
+
resized.observe(row);
|
|
1068
|
+
for (const element of row.querySelectorAll(":scope > .k2b-app-workspace__sidebar-item-main > :is(.k2b-app-workspace__sidebar-item-copy, .k2b-app-workspace__sidebar-item-label, .k2b-app-workspace__sidebar-item-meta), :scope > :is(.k2b-app-workspace__sidebar-item-actions, .k2b-app-workspace__sidebar-item-action)")) resized.observe(element);
|
|
1069
|
+
};
|
|
1070
|
+
replaced.observe(row, {
|
|
1071
|
+
childList: true
|
|
1072
|
+
});
|
|
1073
|
+
observe();
|
|
1074
|
+
onCleanup(() => {
|
|
1075
|
+
replaced.disconnect();
|
|
1076
|
+
resized.disconnect();
|
|
1077
|
+
});
|
|
1078
|
+
}
|
|
1079
|
+
|
|
978
1080
|
/** Shared visual and semantic row frame for flat sidebar items and tree items. */
|
|
979
1081
|
function AppWorkspaceSidebarRow(props) {
|
|
1082
|
+
const [link, setLink] = createSignal();
|
|
1083
|
+
const [hinted, setHinted] = createSignal(false);
|
|
980
1084
|
const className = () => `k2b-app-workspace__sidebar-item ${props.hasActions ? "has-action" : ""} ${props.active ? props.activeClass ?? "is-active" : ""} ${props.class ?? ""}`;
|
|
981
1085
|
const data = () => Object.fromEntries(Object.entries(props.data ?? {}).filter(([, value]) => value !== undefined && value !== null).map(([key, value]) => [`data-${key}`, String(value)]));
|
|
982
1086
|
const common = () => ({
|
|
983
1087
|
class: className(),
|
|
984
|
-
title: props.title,
|
|
1088
|
+
title: hinted() ? undefined : props.title,
|
|
985
1089
|
"data-tone": props.tone,
|
|
986
1090
|
style: {
|
|
987
1091
|
"view-transition-name": props.viewTransitionName,
|
|
@@ -991,9 +1095,12 @@ function AppWorkspaceSidebarRow(props) {
|
|
|
991
1095
|
});
|
|
992
1096
|
const current = () => props.active === "ancestor" ? "true" : props.active ? "page" : undefined;
|
|
993
1097
|
const Control = control => {
|
|
994
|
-
const attrs = () =>
|
|
995
|
-
|
|
996
|
-
|
|
1098
|
+
const attrs = () => ({
|
|
1099
|
+
...(control.grouped ? {
|
|
1100
|
+
class: "k2b-app-workspace__sidebar-item-main"
|
|
1101
|
+
} : common()),
|
|
1102
|
+
ref: setLink
|
|
1103
|
+
});
|
|
997
1104
|
return _$createComponent(Show, {
|
|
998
1105
|
get when() {
|
|
999
1106
|
return Boolean(props.href && !props.disabled);
|
|
@@ -1062,7 +1169,7 @@ function AppWorkspaceSidebarRow(props) {
|
|
|
1062
1169
|
}
|
|
1063
1170
|
});
|
|
1064
1171
|
};
|
|
1065
|
-
return _$createComponent(Show, {
|
|
1172
|
+
return [_$createComponent(Show, {
|
|
1066
1173
|
get when() {
|
|
1067
1174
|
return props.hasActions;
|
|
1068
1175
|
},
|
|
@@ -1080,7 +1187,26 @@ function AppWorkspaceSidebarRow(props) {
|
|
|
1080
1187
|
grouped: true
|
|
1081
1188
|
})), _$escape(props.actions)], false);
|
|
1082
1189
|
}
|
|
1083
|
-
})
|
|
1190
|
+
}), _$createComponent(Show, {
|
|
1191
|
+
get when() {
|
|
1192
|
+
return link();
|
|
1193
|
+
},
|
|
1194
|
+
keyed: true,
|
|
1195
|
+
children: element => _$createComponent(SidebarRailHint, {
|
|
1196
|
+
target: () => element,
|
|
1197
|
+
get label() {
|
|
1198
|
+
return props.title ?? props.hint;
|
|
1199
|
+
},
|
|
1200
|
+
get focusTarget() {
|
|
1201
|
+
return props.focusTarget ?? (() => element);
|
|
1202
|
+
},
|
|
1203
|
+
labelSelector: ".k2b-app-workspace__sidebar-item-label-text",
|
|
1204
|
+
get titled() {
|
|
1205
|
+
return props.title !== undefined;
|
|
1206
|
+
},
|
|
1207
|
+
onArm: () => setHinted(true)
|
|
1208
|
+
})
|
|
1209
|
+
})];
|
|
1084
1210
|
}
|
|
1085
1211
|
function AppWorkspaceSidebarItem(props) {
|
|
1086
1212
|
const workspaceMessages = useWorkspaceMessages();
|
|
@@ -1111,22 +1237,22 @@ function AppWorkspaceSidebarItem(props) {
|
|
|
1111
1237
|
return iconContent() || icon();
|
|
1112
1238
|
},
|
|
1113
1239
|
get children() {
|
|
1114
|
-
return _$ssr(_tmpl$
|
|
1240
|
+
return _$ssr(_tmpl$31, _$ssrAttribute("class",
|
|
1115
1241
|
// An object row's own glyph sits in a soft chip of the app colour; custom content such as an avatar keeps
|
|
1116
1242
|
// its own look.
|
|
1117
|
-
props.variant === "object" && !iconContent() ? "k2b-app-workspace__sidebar-item-icon k2b-icon-tile" : "k2b-app-workspace__sidebar-item-icon", false), _$escape(iconContent() ?? _$ssr(_tmpl$
|
|
1243
|
+
props.variant === "object" && !iconContent() ? "k2b-app-workspace__sidebar-item-icon k2b-icon-tile" : "k2b-app-workspace__sidebar-item-icon", false), _$escape(iconContent() ?? _$ssr(_tmpl$37, _$ssrAttribute("class", _$escape(iconClass(icon()), true), false))));
|
|
1118
1244
|
}
|
|
1119
|
-
}), _$ssr(_tmpl$
|
|
1245
|
+
}), _$ssr(_tmpl$35, _$escape(_$createComponent(Show, {
|
|
1120
1246
|
get when() {
|
|
1121
1247
|
return props.context || props.contextMeta;
|
|
1122
1248
|
},
|
|
1123
1249
|
get children() {
|
|
1124
|
-
return _$ssr(_tmpl$
|
|
1250
|
+
return _$ssr(_tmpl$33, _$escape(props.context), _$escape(_$createComponent(Show, {
|
|
1125
1251
|
get when() {
|
|
1126
1252
|
return props.contextMeta;
|
|
1127
1253
|
},
|
|
1128
1254
|
get children() {
|
|
1129
|
-
return _$ssr(_tmpl$
|
|
1255
|
+
return _$ssr(_tmpl$32, _$escape(props.contextMeta));
|
|
1130
1256
|
}
|
|
1131
1257
|
})));
|
|
1132
1258
|
}
|
|
@@ -1135,14 +1261,14 @@ function AppWorkspaceSidebarItem(props) {
|
|
|
1135
1261
|
return props.description;
|
|
1136
1262
|
},
|
|
1137
1263
|
get children() {
|
|
1138
|
-
return _$ssr(_tmpl$
|
|
1264
|
+
return _$ssr(_tmpl$34, _$escape(props.description));
|
|
1139
1265
|
}
|
|
1140
1266
|
}))), _$createComponent(Show, {
|
|
1141
1267
|
get when() {
|
|
1142
1268
|
return hasMeta();
|
|
1143
1269
|
},
|
|
1144
1270
|
get children() {
|
|
1145
|
-
return _$ssr(_tmpl$
|
|
1271
|
+
return _$ssr(_tmpl$36, _$ssrAttribute("id", props.preview?.trigger === "row" ? _$escape(metaId, true) : _$escape(undefined, true), false) + _$ssrAttribute("data-visibility", metaVisibility() === "hover" ? "hover" : _$escape(undefined, true), false), _$escape(meta()));
|
|
1146
1272
|
}
|
|
1147
1273
|
})];
|
|
1148
1274
|
const singleAction = () => {
|
|
@@ -1157,7 +1283,7 @@ function AppWorkspaceSidebarItem(props) {
|
|
|
1157
1283
|
actionSlot()?.onSelect?.(event);
|
|
1158
1284
|
props.onActionClick?.(event);
|
|
1159
1285
|
};
|
|
1160
|
-
const content = () => actionSlot()?.children ?? _$ssr(_tmpl$
|
|
1286
|
+
const content = () => actionSlot()?.children ?? _$ssr(_tmpl$37, _$ssrAttribute("class", _$escape(iconClass(actionSlot()?.icon ?? props.actionIcon, "ti-dots"), true), false));
|
|
1161
1287
|
return _$createComponent(Show, {
|
|
1162
1288
|
get when() {
|
|
1163
1289
|
return Boolean(actionSlot() || props.actionIcon);
|
|
@@ -1168,10 +1294,10 @@ function AppWorkspaceSidebarItem(props) {
|
|
|
1168
1294
|
return _$memo(() => !!actionSlot()?.href)() && !actionSlot()?.disabled;
|
|
1169
1295
|
},
|
|
1170
1296
|
get fallback() {
|
|
1171
|
-
return _$ssr(_tmpl$
|
|
1297
|
+
return _$ssr(_tmpl$39, _$ssrAttribute("disabled", actionSlot()?.disabled, true) + _$ssrAttribute("data-visibility", actionSlot()?.visibility === "hover" ? "hover" : _$escape(undefined, true), false) + _$ssrAttribute("aria-label", _$escape(label(), true), false), _$escape(content()));
|
|
1172
1298
|
},
|
|
1173
1299
|
get children() {
|
|
1174
|
-
return _$ssr(_tmpl$
|
|
1300
|
+
return _$ssr(_tmpl$38, _$ssrAttribute("href", _$escape(actionSlot()?.href, true), false), _$ssrAttribute("data-visibility", actionSlot()?.visibility === "hover" ? "hover" : _$escape(undefined, true), false) + _$ssrAttribute("aria-label", _$escape(label(), true), false), _$escape(content()));
|
|
1175
1301
|
}
|
|
1176
1302
|
});
|
|
1177
1303
|
}
|
|
@@ -1242,6 +1368,9 @@ function AppWorkspaceSidebarItem(props) {
|
|
|
1242
1368
|
get title() {
|
|
1243
1369
|
return props.title;
|
|
1244
1370
|
},
|
|
1371
|
+
get hint() {
|
|
1372
|
+
return _$memo(() => typeof label() === "string")() ? label() : undefined;
|
|
1373
|
+
},
|
|
1245
1374
|
get viewTransitionName() {
|
|
1246
1375
|
return props.viewTransitionName;
|
|
1247
1376
|
},
|
|
@@ -1359,7 +1488,7 @@ const AppWorkspaceNavTree = props => {
|
|
|
1359
1488
|
},
|
|
1360
1489
|
children: (item, place) => {
|
|
1361
1490
|
const nested = createMemo(() => navTreeItems(item.children));
|
|
1362
|
-
const hasChildren = () => nested().length > 0;
|
|
1491
|
+
const hasChildren = () => item.hasChildren ?? nested().length > 0;
|
|
1363
1492
|
const selected = () => props.selectedId === item.id;
|
|
1364
1493
|
const siblingIndex = id => siblings().findIndex(sibling => sibling.id === id);
|
|
1365
1494
|
const movable = () => Boolean(props.onMove && item.movable && !item.disabled);
|
|
@@ -1477,31 +1606,31 @@ const AppWorkspaceNavTree = props => {
|
|
|
1477
1606
|
get ["data-k2b-nav-tree-toggle"]() {
|
|
1478
1607
|
return usesIconDisclosure() ? "" : undefined;
|
|
1479
1608
|
}
|
|
1480
|
-
}, () => iconAccessibility(item.iconLabel)), _$ssr(_tmpl$
|
|
1609
|
+
}, () => iconAccessibility(item.iconLabel)), _$ssr(_tmpl$37, _$ssrAttribute("class", _$escape(iconClass(rowIcon()), true), false)), false);
|
|
1481
1610
|
}
|
|
1482
1611
|
}), _$createComponent(Show, {
|
|
1483
1612
|
get when() {
|
|
1484
1613
|
return item.description !== undefined;
|
|
1485
1614
|
},
|
|
1486
1615
|
get fallback() {
|
|
1487
|
-
return _$ssr(_tmpl$
|
|
1616
|
+
return _$ssr(_tmpl$43, _$ssrAttribute("data-label", typeof item.label === "string" ? _$escape(item.label, true) : _$escape(undefined, true), false), _$escape(item.label));
|
|
1488
1617
|
},
|
|
1489
1618
|
get children() {
|
|
1490
|
-
return _$ssr(_tmpl$
|
|
1619
|
+
return _$ssr(_tmpl$40, _$ssrAttribute("data-label", typeof item.label === "string" ? _$escape(item.label, true) : _$escape(undefined, true), false), _$escape(item.label), _$escape(item.description));
|
|
1491
1620
|
}
|
|
1492
1621
|
}), _$createComponent(Show, {
|
|
1493
1622
|
get when() {
|
|
1494
1623
|
return item.meta !== undefined;
|
|
1495
1624
|
},
|
|
1496
1625
|
get children() {
|
|
1497
|
-
return _$ssr(_tmpl$
|
|
1626
|
+
return _$ssr(_tmpl$41, `k2b-app-workspace__sidebar-item-meta ${hasChildren() ? "" : "k2b-app-workspace__nav-tree-leaf-meta"}`, _$ssrAttribute("data-visibility", item.metaVisibility === "hover" ? "hover" : _$escape(undefined, true), false), _$escape(item.meta));
|
|
1498
1627
|
}
|
|
1499
1628
|
}), _$createComponent(Show, {
|
|
1500
1629
|
get when() {
|
|
1501
1630
|
return _$memo(() => !!hasChildren())() && !usesIconDisclosure();
|
|
1502
1631
|
},
|
|
1503
1632
|
get children() {
|
|
1504
|
-
return _$ssr(_tmpl$
|
|
1633
|
+
return _$ssr(_tmpl$42, `ti ${isExpanded(item.id) ? "ti-chevron-down" : "ti-chevron-right"}`);
|
|
1505
1634
|
}
|
|
1506
1635
|
})];
|
|
1507
1636
|
const row = () => _$createComponent(AppWorkspaceSidebarRow, {
|
|
@@ -1536,6 +1665,10 @@ const AppWorkspaceNavTree = props => {
|
|
|
1536
1665
|
get title() {
|
|
1537
1666
|
return item.title;
|
|
1538
1667
|
},
|
|
1668
|
+
get hint() {
|
|
1669
|
+
return _$memo(() => typeof item.label === "string")() ? item.label : undefined;
|
|
1670
|
+
},
|
|
1671
|
+
focusTarget: () => treeItem,
|
|
1539
1672
|
get viewTransitionName() {
|
|
1540
1673
|
return item.viewTransitionName;
|
|
1541
1674
|
},
|
|
@@ -1608,12 +1741,12 @@ const AppWorkspaceNavTree = props => {
|
|
|
1608
1741
|
endDrag();
|
|
1609
1742
|
requestMove(target.move, false);
|
|
1610
1743
|
};
|
|
1611
|
-
return _$ssr(_tmpl$
|
|
1744
|
+
return _$ssr(_tmpl$45, _$ssrAttribute("aria-level", _$escape(depth, true) + 1, false) + _$ssrAttribute("aria-setsize", _$escape(siblings().length, true), false) + _$ssrAttribute("aria-posinset", _$escape(place(), true) + 1, false) + _$ssrAttribute("aria-selected", _$escape(selected(), true), false) + _$ssrAttribute("aria-expanded", hasChildren() ? _$escape(isExpanded(item.id), true) : _$escape(undefined, true), false) + _$ssrAttribute("aria-disabled", item.disabled ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("tabindex", item.disabled ? -1 : tabStopId() === item.id ? 0 : -1, false) + _$ssrAttribute("draggable", movable() ? _$escape(true, true) : _$escape(undefined, true), false) + _$ssrAttribute("data-k2b-nav-tree-id", _$escape(item.id, true), false) + _$ssrAttribute("data-k2b-nav-tree-parent-id", _$escape(parentId, true), false) + _$ssrAttribute("data-k2b-nav-tree-dragging", dragged()?.id === item.id ? "" : _$escape(undefined, true), false) + _$ssrAttribute("data-k2b-nav-tree-drop", dropTarget()?.id === item.id ? _$escape(dropTarget().side, true) : _$escape(undefined, true), false), _$ssrStyleProperty("--k2b-nav-tree-depth:", _$escape(String(props.indented === false ? 0 : depth), true)), _$escape(row()), _$escape(_$createComponent(Show, {
|
|
1612
1745
|
get when() {
|
|
1613
1746
|
return _$memo(() => !!hasChildren())() && isExpanded(item.id);
|
|
1614
1747
|
},
|
|
1615
1748
|
get children() {
|
|
1616
|
-
return _$ssr(_tmpl$
|
|
1749
|
+
return _$ssr(_tmpl$44, _$escape(renderItems(nested, depth + 1, item.id)));
|
|
1617
1750
|
}
|
|
1618
1751
|
})));
|
|
1619
1752
|
}
|
|
@@ -1638,7 +1771,7 @@ const AppWorkspaceNavTree = props => {
|
|
|
1638
1771
|
doc?.removeEventListener("pointermove", forgetDrag, true);
|
|
1639
1772
|
});
|
|
1640
1773
|
});
|
|
1641
|
-
return _$ssr(_tmpl$
|
|
1774
|
+
return _$ssr(_tmpl$46, `k2b-app-workspace__nav-tree ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("aria-label", _$escape(props.ariaLabel, true), false), _$escape(renderItems(roots, 0)));
|
|
1642
1775
|
};
|
|
1643
1776
|
AppWorkspaceNavTree.Item = AppWorkspaceNavTreeItem;
|
|
1644
1777
|
const AppWorkspaceSidebarIconGrid = props => _$ssrElement("section", _$mergeProps({
|
|
@@ -1649,13 +1782,14 @@ const AppWorkspaceSidebarIconGrid = props => _$ssrElement("section", _$mergeProp
|
|
|
1649
1782
|
get when() {
|
|
1650
1783
|
return props.title;
|
|
1651
1784
|
},
|
|
1652
|
-
children: title => _$ssr(_tmpl$
|
|
1653
|
-
})), _$ssr(_tmpl$
|
|
1785
|
+
children: title => _$ssr(_tmpl$22, _$escape(title()))
|
|
1786
|
+
})), _$ssr(_tmpl$47, _$ssrAttribute("data-columns", _$escape(props.columns ?? 2, true), false), _$escape(props.children))], false);
|
|
1654
1787
|
const AppWorkspaceSidebarIconAction = props => {
|
|
1655
|
-
|
|
1788
|
+
let target;
|
|
1789
|
+
const content = _$ssr(_tmpl$48, _$ssrAttribute("class", _$escape(iconClass(props.icon), true), false));
|
|
1656
1790
|
const attrs = () => ({
|
|
1791
|
+
ref: element => target = element,
|
|
1657
1792
|
class: `k2b-app-workspace__sidebar-icon-action ${props.active ? "is-active" : ""}`,
|
|
1658
|
-
title: props.label,
|
|
1659
1793
|
"aria-label": props.label,
|
|
1660
1794
|
"data-tone": props.tone,
|
|
1661
1795
|
style: {
|
|
@@ -1663,19 +1797,31 @@ const AppWorkspaceSidebarIconAction = props => {
|
|
|
1663
1797
|
},
|
|
1664
1798
|
...modeAttrs(props.sidebarMode)
|
|
1665
1799
|
});
|
|
1666
|
-
|
|
1800
|
+
// The icon never shows its label, so the hint names it in every state; in the collapsed rail it sits beside the
|
|
1801
|
+
// icon like the rail's other entries.
|
|
1802
|
+
const hint = _$createComponent(Tooltip, {
|
|
1803
|
+
target: () => target,
|
|
1804
|
+
get content() {
|
|
1805
|
+
return props.label;
|
|
1806
|
+
},
|
|
1807
|
+
get placement() {
|
|
1808
|
+
return inSidebarRail(target) ? "right" : undefined;
|
|
1809
|
+
},
|
|
1810
|
+
delay: 0
|
|
1811
|
+
});
|
|
1812
|
+
if (!props.href || props.disabled) return [_$ssrElement("button", _$mergeProps({
|
|
1667
1813
|
type: "button"
|
|
1668
1814
|
}, attrs, {
|
|
1669
1815
|
get disabled() {
|
|
1670
1816
|
return props.disabled;
|
|
1671
1817
|
}
|
|
1672
|
-
}), _$escape(content), false);
|
|
1673
|
-
if (props.navigation !== "enhanced" || !props.onNavigate) return _$ssrElement("a", _$mergeProps({
|
|
1818
|
+
}), _$escape(content), false), hint];
|
|
1819
|
+
if (props.navigation !== "enhanced" || !props.onNavigate) return [_$ssrElement("a", _$mergeProps({
|
|
1674
1820
|
get href() {
|
|
1675
1821
|
return props.href;
|
|
1676
1822
|
}
|
|
1677
|
-
}, attrs), _$escape(content), false);
|
|
1678
|
-
return _$createComponent(Link, _$mergeProps({
|
|
1823
|
+
}, attrs), _$escape(content), false), hint];
|
|
1824
|
+
return [_$createComponent(Link, _$mergeProps({
|
|
1679
1825
|
get href() {
|
|
1680
1826
|
return props.href;
|
|
1681
1827
|
}
|
|
@@ -1693,7 +1839,7 @@ const AppWorkspaceSidebarIconAction = props => {
|
|
|
1693
1839
|
return props.onClick;
|
|
1694
1840
|
},
|
|
1695
1841
|
children: content
|
|
1696
|
-
}));
|
|
1842
|
+
})), hint];
|
|
1697
1843
|
};
|
|
1698
1844
|
/**
|
|
1699
1845
|
* The row above the work area. From 48 to 64 rem it holds the button that
|
|
@@ -1730,12 +1876,12 @@ function AppWorkspaceHead(props) {
|
|
|
1730
1876
|
return `@media not all and (min-width:48rem){${host} > .k2b-app-workspace__head,${host} > .k2b-app-workspace__content > .k2b-app-workspace__detail-toggle,${host} > .k2b-app-workspace__content > :is(solid-island, solid-client) > .k2b-app-workspace__detail-toggle{display:none}}`;
|
|
1731
1877
|
};
|
|
1732
1878
|
const resetContent = () => filters().reset;
|
|
1733
|
-
const primaryContent = () => [_$ssr(_tmpl$
|
|
1734
|
-
return _$ssr(_tmpl$
|
|
1879
|
+
const primaryContent = () => [_$ssr(_tmpl$48, _$ssrAttribute("class", _$escape(props.head?.primary?.icon, true), false)), _$ssr(_tmpl$49, _$escape(props.head?.primary?.label))];
|
|
1880
|
+
return _$ssr(_tmpl$55, _$ssrAttribute("data-trail", trail()?.ancestors.length ? "up" : trail() ? "title" : _$escape(undefined, true), false) + _$ssrAttribute("data-row", props.head ? "" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-head-pane", _$escape(mobilePane(), true), false), _$escape(_$createComponent(Show, {
|
|
1735
1881
|
get when() {
|
|
1736
1882
|
return mobilePane();
|
|
1737
1883
|
},
|
|
1738
|
-
children: pane => _$ssr(_tmpl$
|
|
1884
|
+
children: pane => _$ssr(_tmpl$6, mobilePaneRule(pane()))
|
|
1739
1885
|
})), _$escape(_$createComponent(IconButton, {
|
|
1740
1886
|
"class": "k2b-app-workspace__head-toggle",
|
|
1741
1887
|
get label() {
|
|
@@ -1747,7 +1893,7 @@ function AppWorkspaceHead(props) {
|
|
|
1747
1893
|
"aria-expanded": "false",
|
|
1748
1894
|
"data-app-workspace-sidebar-toggle": "",
|
|
1749
1895
|
get children() {
|
|
1750
|
-
return _$ssr(_tmpl$
|
|
1896
|
+
return _$ssr(_tmpl$50);
|
|
1751
1897
|
}
|
|
1752
1898
|
})), _$escape(_$createComponent(Show, {
|
|
1753
1899
|
get when() {
|
|
@@ -1759,20 +1905,20 @@ function AppWorkspaceHead(props) {
|
|
|
1759
1905
|
},
|
|
1760
1906
|
as: "p",
|
|
1761
1907
|
fallback: true
|
|
1762
|
-
}), _$ssr(_tmpl$
|
|
1908
|
+
}), _$ssr(_tmpl$56, _$ssrAttribute("data-k2b-server", isServer ? "" : _$escape(undefined, true), false), _$escape(current().title))]
|
|
1763
1909
|
})), _$escape(_$createComponent(Show, {
|
|
1764
1910
|
get when() {
|
|
1765
1911
|
return resolvedViews.toArray().some(Boolean);
|
|
1766
1912
|
},
|
|
1767
1913
|
get children() {
|
|
1768
|
-
return _$ssr(_tmpl$
|
|
1914
|
+
return _$ssr(_tmpl$51, _$escape(resolvedViews()));
|
|
1769
1915
|
}
|
|
1770
1916
|
})), _$escape(_$createComponent(Show, {
|
|
1771
1917
|
get when() {
|
|
1772
1918
|
return resolvedFilters.toArray().some(Boolean) || props.head?.filtered;
|
|
1773
1919
|
},
|
|
1774
1920
|
get children() {
|
|
1775
|
-
return _$ssr(_tmpl$
|
|
1921
|
+
return _$ssr(_tmpl$52, _$ssrAttribute("aria-label", _$escape(filters().filters, true), false), _$escape(resolvedFilters()), _$escape(_$createComponent(Show, {
|
|
1776
1922
|
get when() {
|
|
1777
1923
|
return props.head?.filtered;
|
|
1778
1924
|
},
|
|
@@ -1819,14 +1965,14 @@ function AppWorkspaceHead(props) {
|
|
|
1819
1965
|
return _$memo(() => !!props.head?.filtered)() && resolvedCount.toArray().some(value => value !== undefined && value !== null && value !== false);
|
|
1820
1966
|
},
|
|
1821
1967
|
get children() {
|
|
1822
|
-
return _$ssr(_tmpl$
|
|
1968
|
+
return _$ssr(_tmpl$53, _$escape(resolvedCount()));
|
|
1823
1969
|
}
|
|
1824
1970
|
})), _$escape(_$createComponent(Show, {
|
|
1825
1971
|
get when() {
|
|
1826
1972
|
return resolvedActions.toArray().some(Boolean) || props.head?.primary;
|
|
1827
1973
|
},
|
|
1828
1974
|
get children() {
|
|
1829
|
-
return _$ssr(_tmpl$
|
|
1975
|
+
return _$ssr(_tmpl$54, _$escape(resolvedActions()), _$escape(_$createComponent(Show, {
|
|
1830
1976
|
get when() {
|
|
1831
1977
|
return props.head?.primary;
|
|
1832
1978
|
},
|
|
@@ -1918,7 +2064,7 @@ const AppWorkspace = props => {
|
|
|
1918
2064
|
return _$createComponent(WorkspaceContext.Provider, {
|
|
1919
2065
|
value: workspace,
|
|
1920
2066
|
get children() {
|
|
1921
|
-
return _$ssr(_tmpl$
|
|
2067
|
+
return _$ssr(_tmpl$57, `k2b-app-workspace ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-mobile-surface", _$escape(props.mobileSurface, true), false) + _$ssrAttribute("data-flat", props.flat ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-sidebar-collapsed", initialLayoutState()?.sidebarCollapsed === undefined ? _$escape(undefined, true) : _$escape(String(initialLayoutState()?.sidebarCollapsed), true), false) + _$ssrAttribute("data-workspace-resizable", props.resizable === false ? "false" : "true", false), _$ssrStyle(appWorkspaceLayoutStyle(initialLayoutState())), _$escape(contents()));
|
|
1922
2068
|
}
|
|
1923
2069
|
});
|
|
1924
2070
|
}
|
|
@@ -1933,7 +2079,7 @@ AppWorkspace.LayoutStateProvider = props => _$createComponent(LayoutStateContext
|
|
|
1933
2079
|
}
|
|
1934
2080
|
});
|
|
1935
2081
|
AppWorkspace.Head = AppWorkspaceHeadSlot;
|
|
1936
|
-
AppWorkspace.Content = props => _$ssr(_tmpl$
|
|
2082
|
+
AppWorkspace.Content = props => _$ssr(_tmpl$58, `k2b-app-workspace__content ${_$escape(props.class ?? "", true)}`, _$escape(props.children));
|
|
1937
2083
|
AppWorkspace.Main = AppWorkspaceMain;
|
|
1938
2084
|
AppWorkspace.MainPane = AppWorkspaceMainPane;
|
|
1939
2085
|
AppWorkspace.Detail = AppWorkspaceDetail;
|