@k2b/ui 0.30.0 → 0.32.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 +1 -1
- package/dist/base.css +2 -0
- package/dist/browser/actions/Toolbar.js +2 -0
- package/dist/browser/actions/Toolbar.js.map +1 -1
- package/dist/browser/actions/ViewTabs.js +8 -0
- package/dist/browser/actions/ViewTabs.js.map +1 -1
- package/dist/browser/chat/ChatDecision.js +28 -2
- package/dist/browser/chat/ChatDecision.js.map +1 -1
- package/dist/browser/content/Chart.js +104 -55
- package/dist/browser/content/Chart.js.map +1 -1
- package/dist/browser/content/ChartExplorer.js +5 -3
- package/dist/browser/content/ChartExplorer.js.map +1 -1
- package/dist/browser/content/MapAttribution.js +27 -0
- package/dist/browser/content/MapAttribution.js.map +1 -0
- package/dist/browser/content/MapView.js +553 -0
- package/dist/browser/content/MapView.js.map +1 -0
- package/dist/browser/content/MapViewFrame.js +395 -0
- package/dist/browser/content/MapViewFrame.js.map +1 -0
- package/dist/browser/content/chart-inspection-core.js +4 -1
- package/dist/browser/content/chart-inspection-core.js.map +1 -1
- package/dist/browser/content/code-highlight.js +66 -0
- package/dist/browser/content/code-highlight.js.map +1 -1
- package/dist/browser/content/index.js +6 -0
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/content/map-palette.js +39 -0
- package/dist/browser/content/map-palette.js.map +1 -0
- package/dist/browser/content/map-style.js +276 -0
- package/dist/browser/content/map-style.js.map +1 -0
- package/dist/browser/content/map-view-geometry.js +269 -0
- package/dist/browser/content/map-view-geometry.js.map +1 -0
- package/dist/browser/content/map-view-live.js +65 -0
- package/dist/browser/content/map-view-live.js.map +1 -0
- package/dist/browser/content/map-view-messages.js +53 -0
- package/dist/browser/content/map-view-messages.js.map +1 -0
- package/dist/browser/content/map-view-types.js +2 -0
- package/dist/browser/content/map-view-types.js.map +1 -0
- package/dist/browser/content/map-view-worker.js +10 -0
- package/dist/browser/feedback/dialog-core.js +19 -0
- package/dist/browser/feedback/dialog-core.js.map +1 -1
- package/dist/browser/inputs/AutocompleteEditor.js +167 -104
- package/dist/browser/inputs/AutocompleteEditor.js.map +1 -1
- package/dist/browser/inputs/RichSelect.js +1474 -0
- package/dist/browser/inputs/RichSelect.js.map +1 -0
- package/dist/browser/inputs/TextInput.js +95 -60
- package/dist/browser/inputs/TextInput.js.map +1 -1
- package/dist/browser/inputs/choice.js +19 -8
- package/dist/browser/inputs/choice.js.map +1 -1
- package/dist/browser/inputs/index.js +1 -0
- package/dist/browser/inputs/index.js.map +1 -1
- package/dist/browser/inputs/rich-select-messages.js +46 -0
- package/dist/browser/inputs/rich-select-messages.js.map +1 -0
- package/dist/browser/layout/AppWorkspace.js +194 -144
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/DetailPanel.js +10 -1
- package/dist/browser/layout/DetailPanel.js.map +1 -1
- package/dist/browser/layout/Navigation.js +14 -5
- package/dist/browser/layout/Navigation.js.map +1 -1
- package/dist/browser/layout/PageTitle.js +9 -3
- package/dist/browser/layout/PageTitle.js.map +1 -1
- package/dist/browser/layout/ResizeSeparator.js +8 -2
- package/dist/browser/layout/ResizeSeparator.js.map +1 -1
- package/dist/browser/layout/app-workspace-controller.js +301 -34
- package/dist/browser/layout/app-workspace-controller.js.map +1 -1
- package/dist/browser/layout/app-workspace-width.js +26 -0
- package/dist/browser/layout/app-workspace-width.js.map +1 -0
- package/dist/browser/layout/index.js +1 -1
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/layout/navigation-model.js.map +1 -1
- package/dist/browser/layout/resize-separator.js +25 -1
- package/dist/browser/layout/resize-separator.js.map +1 -1
- package/dist/browser/surfaces/Skeleton.js +14 -0
- package/dist/browser/surfaces/Skeleton.js.map +1 -0
- package/dist/browser/surfaces/index.js +1 -0
- package/dist/browser/surfaces/index.js.map +1 -1
- package/dist/licenses/maplibre-gl.txt +116 -0
- package/dist/ssr/actions/Toolbar.js +2 -0
- package/dist/ssr/actions/Toolbar.js.map +1 -1
- package/dist/ssr/actions/ViewTabs.js +8 -0
- package/dist/ssr/actions/ViewTabs.js.map +1 -1
- package/dist/ssr/chat/ChatDecision.js +11 -0
- package/dist/ssr/chat/ChatDecision.js.map +1 -1
- package/dist/ssr/content/Chart.js +27 -7
- package/dist/ssr/content/Chart.js.map +1 -1
- package/dist/ssr/content/ChartExplorer.js +5 -3
- package/dist/ssr/content/ChartExplorer.js.map +1 -1
- package/dist/ssr/content/MapAttribution.js +19 -0
- package/dist/ssr/content/MapAttribution.js.map +1 -0
- package/dist/ssr/content/MapView.js +474 -0
- package/dist/ssr/content/MapView.js.map +1 -0
- package/dist/ssr/content/MapViewFrame.js +193 -0
- package/dist/ssr/content/MapViewFrame.js.map +1 -0
- package/dist/ssr/content/chart-inspection-core.js +4 -1
- package/dist/ssr/content/chart-inspection-core.js.map +1 -1
- package/dist/ssr/content/code-highlight.js +66 -0
- package/dist/ssr/content/code-highlight.js.map +1 -1
- package/dist/ssr/content/index.js +6 -0
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/content/map-palette.js +39 -0
- package/dist/ssr/content/map-palette.js.map +1 -0
- package/dist/ssr/content/map-style.js +276 -0
- package/dist/ssr/content/map-style.js.map +1 -0
- package/dist/ssr/content/map-view-geometry.js +269 -0
- package/dist/ssr/content/map-view-geometry.js.map +1 -0
- package/dist/ssr/content/map-view-live.js +1 -0
- package/dist/ssr/content/map-view-messages.js +53 -0
- package/dist/ssr/content/map-view-messages.js.map +1 -0
- package/dist/ssr/content/map-view-types.js +2 -0
- package/dist/ssr/content/map-view-types.js.map +1 -0
- package/dist/ssr/feedback/dialog-core.js +19 -0
- package/dist/ssr/feedback/dialog-core.js.map +1 -1
- package/dist/ssr/inputs/AutocompleteEditor.js +64 -24
- package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -1
- package/dist/ssr/inputs/RichSelect.js +950 -0
- package/dist/ssr/inputs/RichSelect.js.map +1 -0
- package/dist/ssr/inputs/TextInput.js +40 -16
- package/dist/ssr/inputs/TextInput.js.map +1 -1
- package/dist/ssr/inputs/choice.js +19 -8
- package/dist/ssr/inputs/choice.js.map +1 -1
- package/dist/ssr/inputs/index.js +1 -0
- package/dist/ssr/inputs/index.js.map +1 -1
- package/dist/ssr/inputs/rich-select-messages.js +46 -0
- package/dist/ssr/inputs/rich-select-messages.js.map +1 -0
- package/dist/ssr/layout/AppWorkspace.js +53 -16
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/DetailPanel.js +1 -1
- package/dist/ssr/layout/DetailPanel.js.map +1 -1
- package/dist/ssr/layout/Navigation.js +1 -1
- package/dist/ssr/layout/Navigation.js.map +1 -1
- package/dist/ssr/layout/PageTitle.js +9 -3
- package/dist/ssr/layout/PageTitle.js.map +1 -1
- package/dist/ssr/layout/ResizeSeparator.js +4 -1
- package/dist/ssr/layout/ResizeSeparator.js.map +1 -1
- package/dist/ssr/layout/app-workspace-controller.js +301 -34
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
- package/dist/ssr/layout/app-workspace-width.js +26 -0
- package/dist/ssr/layout/app-workspace-width.js.map +1 -0
- package/dist/ssr/layout/index.js +1 -1
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/layout/navigation-model.js.map +1 -1
- package/dist/ssr/layout/resize-separator.js +25 -1
- package/dist/ssr/layout/resize-separator.js.map +1 -1
- package/dist/ssr/surfaces/Skeleton.js +8 -0
- package/dist/ssr/surfaces/Skeleton.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/content/Chart.d.ts +4 -2
- package/dist/types/content/ChartExplorer.d.ts +0 -1
- package/dist/types/content/MapAttribution.d.ts +6 -0
- package/dist/types/content/MapView.d.ts +5 -0
- package/dist/types/content/MapViewFrame.d.ts +31 -0
- package/dist/types/content/code-highlight.d.ts +3 -1
- package/dist/types/content/index.d.ts +7 -0
- package/dist/types/content/map-palette.d.ts +58 -0
- package/dist/types/content/map-style.d.ts +29 -0
- package/dist/types/content/map-view-geometry.d.ts +55 -0
- package/dist/types/content/map-view-live.d.ts +2 -0
- package/dist/types/content/map-view-messages.d.ts +21 -0
- package/dist/types/content/map-view-types.d.ts +63 -0
- package/dist/types/feedback/dialog-core.d.ts +1 -0
- package/dist/types/inputs/AutocompleteEditor.d.ts +6 -1
- package/dist/types/inputs/RichSelect.d.ts +93 -0
- package/dist/types/inputs/TextInput.d.ts +5 -2
- package/dist/types/inputs/choice.d.ts +24 -4
- package/dist/types/inputs/index.d.ts +2 -0
- package/dist/types/inputs/rich-select-messages.d.ts +21 -0
- package/dist/types/layout/AppWorkspace.d.ts +14 -3
- package/dist/types/layout/DetailPanel.d.ts +2 -0
- package/dist/types/layout/app-workspace-controller.d.ts +2 -0
- package/dist/types/layout/app-workspace-width.d.ts +13 -0
- package/dist/types/layout/index.d.ts +2 -2
- package/dist/types/layout/navigation-model.d.ts +2 -0
- package/dist/types/layout/resize-separator.d.ts +1 -0
- package/dist/types/surfaces/Skeleton.d.ts +6 -0
- package/dist/types/surfaces/index.d.ts +1 -0
- package/map-glyphs/IBM Plex Sans Medium/0-255.pbf +0 -0
- package/map-glyphs/IBM Plex Sans Medium/1024-1279.pbf +0 -0
- package/map-glyphs/IBM Plex Sans Medium/256-511.pbf +0 -0
- package/map-glyphs/IBM Plex Sans Medium/512-767.pbf +0 -0
- package/map-glyphs/IBM Plex Sans Medium/768-1023.pbf +0 -0
- package/map-glyphs/IBM Plex Sans Medium/7680-7935.pbf +0 -0
- package/map-glyphs/IBM Plex Sans Medium/8192-8447.pbf +0 -0
- package/map-glyphs/IBM Plex Sans Medium/8448-8703.pbf +0 -0
- package/map-glyphs/IBM Plex Sans Medium/8704-8959.pbf +0 -0
- package/map-glyphs/OFL.txt +93 -0
- package/package.json +11 -6
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { i18n } from "@k2b/stdlib";
|
|
2
|
+
import { useLocale } from "../intl/locale";
|
|
3
|
+
const richSelectMessages = i18n.define({
|
|
4
|
+
baseLocale: "en",
|
|
5
|
+
messages: {
|
|
6
|
+
en: {
|
|
7
|
+
back: "Back",
|
|
8
|
+
choose: "Choose",
|
|
9
|
+
chooseOption: "Choose option",
|
|
10
|
+
close: "Close",
|
|
11
|
+
couldNotLoad: "Could not be loaded.",
|
|
12
|
+
create: "Create",
|
|
13
|
+
detailsFor: ({
|
|
14
|
+
name
|
|
15
|
+
}) => `Details: ${name}`,
|
|
16
|
+
loading: "Loading options",
|
|
17
|
+
noOptions: "No options available",
|
|
18
|
+
noResults: "No results found",
|
|
19
|
+
retry: "Retry",
|
|
20
|
+
search: "Search"
|
|
21
|
+
},
|
|
22
|
+
de: {
|
|
23
|
+
back: "Zurück",
|
|
24
|
+
choose: "Auswählen",
|
|
25
|
+
chooseOption: "Option auswählen",
|
|
26
|
+
close: "Schließen",
|
|
27
|
+
couldNotLoad: "Konnte nicht geladen werden.",
|
|
28
|
+
create: "Anlegen",
|
|
29
|
+
detailsFor: ({
|
|
30
|
+
name
|
|
31
|
+
}) => `Details: ${name}`,
|
|
32
|
+
loading: "Optionen werden geladen",
|
|
33
|
+
noOptions: "Keine Optionen verfügbar",
|
|
34
|
+
noResults: "Keine Ergebnisse gefunden",
|
|
35
|
+
retry: "Erneut versuchen",
|
|
36
|
+
search: "Suchen"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
/** Resolved from the inherited render locale. */
|
|
41
|
+
export const useRichSelectMessages = () => {
|
|
42
|
+
const locale = useLocale();
|
|
43
|
+
return () => richSelectMessages.resolve([locale()]).t;
|
|
44
|
+
};
|
|
45
|
+
export const checkRichSelectMessages = () => richSelectMessages.check();
|
|
46
|
+
//# sourceMappingURL=rich-select-messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["inputs/rich-select-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\nconst richSelectMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n back: \"Back\",\n choose: \"Choose\",\n chooseOption: \"Choose option\",\n close: \"Close\",\n couldNotLoad: \"Could not be loaded.\",\n create: \"Create\",\n detailsFor: ({ name }: { name: string }) => `Details: ${name}`,\n loading: \"Loading options\",\n noOptions: \"No options available\",\n noResults: \"No results found\",\n retry: \"Retry\",\n search: \"Search\",\n },\n de: {\n back: \"Zurück\",\n choose: \"Auswählen\",\n chooseOption: \"Option auswählen\",\n close: \"Schließen\",\n couldNotLoad: \"Konnte nicht geladen werden.\",\n create: \"Anlegen\",\n detailsFor: ({ name }) => `Details: ${name}`,\n loading: \"Optionen werden geladen\",\n noOptions: \"Keine Optionen verfügbar\",\n noResults: \"Keine Ergebnisse gefunden\",\n retry: \"Erneut versuchen\",\n search: \"Suchen\",\n },\n },\n});\n\nexport type RichSelectMessages = ReturnType<(typeof richSelectMessages)[\"resolve\"]>[\"t\"];\n\n/** Resolved from the inherited render locale. */\nexport const useRichSelectMessages = (): (() => RichSelectMessages) => {\n const locale = useLocale();\n return () => richSelectMessages.resolve([locale()]).t;\n};\n\nexport const checkRichSelectMessages = () => richSelectMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,gBAAgB;AAE1C,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC;EACrC,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,IAAI,EAAE,MAAM;MACZ,MAAM,EAAE,QAAQ;MAChB,YAAY,EAAE,eAAe;MAC7B,KAAK,EAAE,OAAO;MACd,YAAY,EAAE,sBAAsB;MACpC,MAAM,EAAE,QAAQ;MAChB,UAAU,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,YAAY,IAAI,EAAE;MAC9D,OAAO,EAAE,iBAAiB;MAC1B,SAAS,EAAE,sBAAsB;MACjC,SAAS,EAAE,kBAAkB;MAC7B,KAAK,EAAE,OAAO;MACd,MAAM,EAAE;IACV,CAAC;IACD,EAAE,EAAE;MACF,IAAI,EAAE,QAAQ;MACd,MAAM,EAAE,WAAW;MACnB,YAAY,EAAE,kBAAkB;MAChC,KAAK,EAAE,WAAW;MAClB,YAAY,EAAE,8BAA8B;MAC5C,MAAM,EAAE,SAAS;MACjB,UAAU,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,YAAY,IAAI,EAAE;MAC5C,OAAO,EAAE,yBAAyB;MAClC,SAAS,EAAE,0BAA0B;MACrC,SAAS,EAAE,2BAA2B;MACtC,KAAK,EAAE,kBAAkB;MACzB,MAAM,EAAE;IACV;EACF;AACF,CAAC,CAAC;AAIF;AACA,OAAO,MAAM,qBAAqB,GAAG,MAAkC;EACrE,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;EAC1B,OAAO,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,OAAO,MAAM,uBAAuB,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
|
|
@@ -62,7 +62,7 @@ var _tmpl$ = ["<button type=\"button\" class=\"k2b-app-workspace__resize\" role=
|
|
|
62
62
|
_tmpl$51 = ["<div class=\"k2b-app-workspace__head-filters\" role=\"group\"", ">", "", "</div>"],
|
|
63
63
|
_tmpl$52 = ["<span class=\"k2b-app-workspace__head-count\"><span>", "</span></span>"],
|
|
64
64
|
_tmpl$53 = ["<div class=\"k2b-app-workspace__head-actions\">", "", "</div>"],
|
|
65
|
-
_tmpl$54 = ["<div class=\"k2b-app-workspace__head\"", "
|
|
65
|
+
_tmpl$54 = ["<div class=\"k2b-app-workspace__head\"", ">", "<div class=\"k2b-app-workspace__head-lead\">", "", "", "", "", "</div>", "</div>"],
|
|
66
66
|
_tmpl$55 = ["<h1 class=\"k2b-app-workspace__head-heading\" data-k2b-page-trail-title", ">", "</h1>"],
|
|
67
67
|
_tmpl$56 = ["<div class=\"", "\" data-k2b-app-workspace", " style=\"", "\">", "</div>"],
|
|
68
68
|
_tmpl$57 = ["<div class=\"", "\">", "</div>"];
|
|
@@ -73,8 +73,9 @@ import { Button, ButtonLink, IconButton, IconButtonLink } from "../actions/Butto
|
|
|
73
73
|
import { useFilterMessages } from "../actions/filter-messages";
|
|
74
74
|
import { dialogCore } from "../feedback/dialog-core";
|
|
75
75
|
import { RenderErrorBoundary } from "../internal/render-error";
|
|
76
|
-
import { APP_WORKSPACE_DETAIL_CLOSE_EVENT, APP_WORKSPACE_DETAIL_STEP_EVENT, APP_WORKSPACE_SIDEBAR_HIDE_EVENT, installAppWorkspaceController } from "./app-workspace-controller";
|
|
76
|
+
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
77
|
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";
|
|
78
|
+
import { appWorkspaceInverseWidthCss, appWorkspaceWidthCss, appWorkspaceWidthToken, isAppWorkspaceWidthShare } from "./app-workspace-width";
|
|
78
79
|
import BottomSheet, { bottomSheetAdaptiveOptions } from "./BottomSheet";
|
|
79
80
|
import { PageTitle, usePageTrail } from "./PageTitle";
|
|
80
81
|
import { SidebarItemPreview } from "./SidebarItemPreview";
|
|
@@ -123,9 +124,9 @@ function ResizeHandle(props) {
|
|
|
123
124
|
const state = workspace?.initialLayoutState() ?? providerState;
|
|
124
125
|
const id = props.panelId ?? "primary";
|
|
125
126
|
const size = props.kind === "sidebar" ? state?.sidebarCollapsed ? APP_WORKSPACE_SIDEBAR_COLLAPSED : state?.sidebarWidth : props.kind === "pane" ? state?.paneWidths?.[id] : props.kind === "detail" ? state?.detailWidths?.[id] : state?.drawerHeights?.[id];
|
|
126
|
-
return Math.min(props.maxSize, Math.max(props.minSize, size ?? props.defaultSize));
|
|
127
|
+
return Math.min(props.maxSize, Math.max(props.minSize, size ?? (typeof props.defaultSize === "number" ? props.defaultSize : props.defaultSize.min)));
|
|
127
128
|
};
|
|
128
|
-
return _$ssr(_tmpl$, _$ssrAttribute("aria-label", _$escape(props.label ?? (props.kind === "sidebar" ? workspaceMessages().resizeNavigation : props.kind === "pane" ? workspaceMessages().resizeWorkspacePane : props.kind === "detail" ? workspaceMessages().resizeDetailPanel : workspaceMessages().resizeBottomDrawer), true), false) + _$ssrAttribute("aria-controls", _$escape(props.controls, true), false) + _$ssrAttribute("aria-orientation", props.kind === "drawer" ? "horizontal" : "vertical", false) + _$ssrAttribute("aria-valuemin", _$escape(props.minSize, true), false) + _$ssrAttribute("aria-valuemax", _$escape(props.maxSize, true), false) + _$ssrAttribute("aria-valuenow", _$escape(initialSize(), true), false) + _$ssrAttribute("data-workspace-level-shown", _$escape(props.levelShown, true), false) + _$ssrAttribute("data-app-workspace-resize", _$escape(props.kind, true), false) + _$ssrAttribute("data-workspace-panel-id", _$escape(props.panelId, true), false) + _$ssrAttribute("data-workspace-resize-edge", _$escape(props.edge, true), false) + _$ssrAttribute("data-workspace-resize-shadow", props.shadow ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-default-size", _$escape(props.defaultSize, true), false) + _$ssrAttribute("data-workspace-min-size", _$escape(props.minSize, true), false) + _$ssrAttribute("data-workspace-max-size", _$escape(props.maxSize, true), false), _$ssrStyle(props.style));
|
|
129
|
+
return _$ssr(_tmpl$, _$ssrAttribute("aria-label", _$escape(props.label ?? (props.kind === "sidebar" ? workspaceMessages().resizeNavigation : props.kind === "pane" ? workspaceMessages().resizeWorkspacePane : props.kind === "detail" ? workspaceMessages().resizeDetailPanel : workspaceMessages().resizeBottomDrawer), true), false) + _$ssrAttribute("aria-controls", _$escape(props.controls, true), false) + _$ssrAttribute("aria-orientation", props.kind === "drawer" ? "horizontal" : "vertical", false) + _$ssrAttribute("aria-valuemin", _$escape(props.minSize, true), false) + _$ssrAttribute("aria-valuemax", _$escape(props.maxSize, true), false) + _$ssrAttribute("aria-valuenow", _$escape(initialSize(), true), false) + _$ssrAttribute("data-workspace-level-shown", _$escape(props.levelShown, true), false) + _$ssrAttribute("data-app-workspace-resize", _$escape(props.kind, true), false) + _$ssrAttribute("data-workspace-panel-id", _$escape(props.panelId, true), false) + _$ssrAttribute("data-workspace-resize-edge", _$escape(props.edge, true), false) + _$ssrAttribute("data-workspace-resize-shadow", props.shadow ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-default-size", _$escape(appWorkspaceWidthToken(props.defaultSize), true), false) + _$ssrAttribute("data-workspace-min-size", _$escape(props.minSize, true), false) + _$ssrAttribute("data-workspace-max-size", _$escape(props.maxSize, true), false), _$ssrStyle(props.style));
|
|
129
130
|
}
|
|
130
131
|
|
|
131
132
|
/**
|
|
@@ -275,11 +276,12 @@ function AppWorkspaceMain(props) {
|
|
|
275
276
|
// as `AppWorkspace.Detail` does with its width.
|
|
276
277
|
const minWidth = () => {
|
|
277
278
|
const value = props.minWidth;
|
|
278
|
-
return value
|
|
279
|
+
return isAppWorkspaceWidthShare(value) ? value : typeof value === "number" && Number.isFinite(value) && value > APP_WORKSPACE_MAIN_MIN ? Math.round(value) : undefined;
|
|
279
280
|
};
|
|
280
281
|
const minWidthRule = value => {
|
|
281
|
-
const main = `.k2b-app-workspace__main[data-workspace-main-min="${value}"]`;
|
|
282
|
-
|
|
282
|
+
const main = `.k2b-app-workspace__main[data-workspace-main-min="${appWorkspaceWidthToken(value)}"]`;
|
|
283
|
+
const inverse = typeof value === "number" ? "" : `;--k2b-workspace-main-min-grid:${appWorkspaceInverseWidthCss(value, "100%")};--k2b-workspace-main-min-cq:${appWorkspaceInverseWidthCss(value, "100cqi")}`;
|
|
284
|
+
return `.k2b-app-workspace:has(> .k2b-app-workspace__content > ${main}, > .k2b-app-workspace__content > :is(solid-island, solid-client) > ${main}){--k2b-workspace-main-min:${appWorkspaceWidthCss(value, "100%")}${inverse}}`;
|
|
283
285
|
};
|
|
284
286
|
return [_$createComponent(Show, {
|
|
285
287
|
get when() {
|
|
@@ -291,7 +293,7 @@ function AppWorkspaceMain(props) {
|
|
|
291
293
|
return `k2b-app-workspace__main ${hasPanes() ? "has-panes" : ""} ${props.class ?? ""}`;
|
|
292
294
|
},
|
|
293
295
|
get ["data-workspace-main-min"]() {
|
|
294
|
-
return minWidth();
|
|
296
|
+
return minWidth() === undefined ? undefined : appWorkspaceWidthToken(minWidth());
|
|
295
297
|
},
|
|
296
298
|
get ["data-workspace-levels"]() {
|
|
297
299
|
return levelsMode() ? "" : undefined;
|
|
@@ -341,7 +343,10 @@ function AppWorkspaceMain(props) {
|
|
|
341
343
|
const variable = appWorkspacePanelVariable("pane", panelId);
|
|
342
344
|
const isAnchor = () => region === anchorRegion();
|
|
343
345
|
const resizable = () => !isAnchor() && (pane.props.resizable ?? rootResizable);
|
|
344
|
-
const defaultSize = () =>
|
|
346
|
+
const defaultSize = () => {
|
|
347
|
+
const value = pane.props.defaultSize;
|
|
348
|
+
return typeof value === "number" || isAppWorkspaceWidthShare(value) ? value : APP_WORKSPACE_PANE_DEFAULT;
|
|
349
|
+
};
|
|
345
350
|
const minSize = () => pane.props.minSize ?? APP_WORKSPACE_PANE_MIN;
|
|
346
351
|
const maxSize = () => Math.max(minSize(), pane.props.maxSize ?? APP_WORKSPACE_PANE_MAX);
|
|
347
352
|
const before = () => levelsMode() || region.index < (anchorRegion()?.index ?? 0);
|
|
@@ -387,7 +392,7 @@ function AppWorkspaceMain(props) {
|
|
|
387
392
|
}
|
|
388
393
|
}), _$ssr(_tmpl$7, _$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(isAnchor() ? undefined : {
|
|
389
394
|
// A stored width keeps to this pane's limits before the controller attaches.
|
|
390
|
-
"--k2b-workspace-panel-size": `clamp(${minSize()}px, var(${variable}, ${defaultSize()}
|
|
395
|
+
"--k2b-workspace-panel-size": `clamp(${minSize()}px, var(${variable}, ${appWorkspaceWidthCss(defaultSize(), "var(--k2b-workspace-width)")}), ${maxSize()}px)`,
|
|
391
396
|
"--k2b-workspace-panel-min": `${minSize()}px`
|
|
392
397
|
}), levelsMode() ? _$escape([_$createComponent(LevelHead, {
|
|
393
398
|
get label() {
|
|
@@ -443,11 +448,14 @@ function AppWorkspaceMain(props) {
|
|
|
443
448
|
}
|
|
444
449
|
})), false)];
|
|
445
450
|
}
|
|
451
|
+
|
|
452
|
+
/** The Detail region's DOM id, for application controls that target it with aria-controls. */
|
|
453
|
+
export const appWorkspaceDetailElementId = id => `k2b-workspace-detail-${assertStableUiId(id, "AppWorkspace.Detail id")}`;
|
|
446
454
|
function AppWorkspaceDetail(props) {
|
|
447
455
|
const workspaceMessages = useWorkspaceMessages();
|
|
448
456
|
const rootResizable = useContext(ResizeContext);
|
|
449
457
|
const panelId = () => assertStableUiId(props.id, "AppWorkspace.Detail id");
|
|
450
|
-
const domId = () =>
|
|
458
|
+
const domId = () => appWorkspaceDetailElementId(props.id);
|
|
451
459
|
const variable = () => appWorkspacePanelVariable("detail", panelId());
|
|
452
460
|
// Start widths of 20, 26, 30, and 34 rem. They feed `aria-valuenow` and the
|
|
453
461
|
// `var(…, Npx)` first-paint fallback, so they are behaviour, not taste.
|
|
@@ -478,15 +486,20 @@ function AppWorkspaceDetail(props) {
|
|
|
478
486
|
let aside;
|
|
479
487
|
onMount(() => {
|
|
480
488
|
const close = () => props.onClose?.();
|
|
489
|
+
const open = () => {
|
|
490
|
+
if (props.available !== false) props.onOpen?.();
|
|
491
|
+
};
|
|
481
492
|
const isStep = detail => typeof detail === "object" && detail !== null && "direction" in detail && (detail.direction === 1 || detail.direction === -1);
|
|
482
493
|
const step = event => {
|
|
483
494
|
if (!(event instanceof CustomEvent) || !isStep(event.detail)) return;
|
|
484
495
|
const item = props.onStep?.(event.detail.direction);
|
|
485
496
|
if (item instanceof HTMLElement) event.detail.item = item;
|
|
486
497
|
};
|
|
498
|
+
aside?.addEventListener(APP_WORKSPACE_DETAIL_OPEN_EVENT, open);
|
|
487
499
|
aside?.addEventListener(APP_WORKSPACE_DETAIL_CLOSE_EVENT, close);
|
|
488
500
|
aside?.addEventListener(APP_WORKSPACE_DETAIL_STEP_EVENT, step);
|
|
489
501
|
onCleanup(() => {
|
|
502
|
+
aside?.removeEventListener(APP_WORKSPACE_DETAIL_OPEN_EVENT, open);
|
|
490
503
|
aside?.removeEventListener(APP_WORKSPACE_DETAIL_CLOSE_EVENT, close);
|
|
491
504
|
aside?.removeEventListener(APP_WORKSPACE_DETAIL_STEP_EVENT, step);
|
|
492
505
|
});
|
|
@@ -499,6 +512,12 @@ function AppWorkspaceDetail(props) {
|
|
|
499
512
|
},
|
|
500
513
|
"aria-expanded": "false",
|
|
501
514
|
"data-app-workspace-detail-toggle": "",
|
|
515
|
+
get ["data-workspace-detail-reopen"]() {
|
|
516
|
+
return props.onOpen ? "true" : undefined;
|
|
517
|
+
},
|
|
518
|
+
get disabled() {
|
|
519
|
+
return props.available === false;
|
|
520
|
+
},
|
|
502
521
|
"class": "k2b-app-workspace__detail-toggle",
|
|
503
522
|
get children() {
|
|
504
523
|
return [_$ssr(_tmpl$0), workspaceMessages().details];
|
|
@@ -526,12 +545,13 @@ function AppWorkspaceDetail(props) {
|
|
|
526
545
|
get maxSize() {
|
|
527
546
|
return maxWidth();
|
|
528
547
|
},
|
|
548
|
+
shadow: true,
|
|
529
549
|
get style() {
|
|
530
550
|
return sizeStyle();
|
|
531
551
|
}
|
|
532
552
|
});
|
|
533
553
|
}
|
|
534
|
-
}), _$ssr(_tmpl$1, _$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-closable", props.onClose ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-detail-steppable", props.onStep ? "true" : _$escape(undefined, true), false), _$ssrAttribute("hidden", !props.open, true), _$ssrStyle({
|
|
554
|
+
}), _$ssr(_tmpl$1, _$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({
|
|
535
555
|
...sizeStyle(),
|
|
536
556
|
"view-transition-name": props.viewTransitionName
|
|
537
557
|
}), _$ssrAttribute("aria-label", _$escape(workspaceMessages().detailFullHeight, true), false), _$escape(props.children))];
|
|
@@ -1700,9 +1720,23 @@ function AppWorkspaceHead(props) {
|
|
|
1700
1720
|
const resolvedCount = children(() => props.head?.count);
|
|
1701
1721
|
// A nested workspace is part of a page that already shows its title.
|
|
1702
1722
|
const trail = props.nested ? () => undefined : usePageTrail();
|
|
1723
|
+
// Main already publishes the active region in SSR and on each selection.
|
|
1724
|
+
// Scope both sides to this workspace, including transparent island hosts;
|
|
1725
|
+
// a nested Main must never decide whether its parent's head is visible.
|
|
1726
|
+
const mobilePane = () => props.head?.mobilePane === undefined ? undefined : assertStableUiId(props.head.mobilePane, "AppWorkspace.Head mobilePane");
|
|
1727
|
+
const mobilePaneRule = pane => {
|
|
1728
|
+
const main = `.k2b-app-workspace__main.has-panes:not([data-workspace-levels]) > [data-workspace-mobile-active="true"]:not([data-workspace-main-region="${pane}"])`;
|
|
1729
|
+
const host = `.k2b-ui .k2b-app-workspace:has(> .k2b-app-workspace__head[data-workspace-head-pane="${pane}"]):has(> .k2b-app-workspace__content > ${main}, > .k2b-app-workspace__content > :is(solid-island, solid-client) > ${main})`;
|
|
1730
|
+
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
|
+
};
|
|
1703
1732
|
const resetContent = () => filters().reset;
|
|
1704
1733
|
const primaryContent = () => [_$ssr(_tmpl$47, _$ssrAttribute("class", _$escape(props.head?.primary?.icon, true), false)), _$ssr(_tmpl$48, _$escape(props.head?.primary?.label))];
|
|
1705
|
-
return _$ssr(_tmpl$54, _$ssrAttribute("data-trail", trail()?.ancestors.length ? "up" : trail() ? "title" : _$escape(undefined, true), false) + _$ssrAttribute("data-row", props.head ? "" : _$escape(undefined, true), false), _$escape(_$createComponent(
|
|
1734
|
+
return _$ssr(_tmpl$54, _$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
|
+
get when() {
|
|
1736
|
+
return mobilePane();
|
|
1737
|
+
},
|
|
1738
|
+
children: pane => _$ssr(_tmpl$5, mobilePaneRule(pane()))
|
|
1739
|
+
})), _$escape(_$createComponent(IconButton, {
|
|
1706
1740
|
"class": "k2b-app-workspace__head-toggle",
|
|
1707
1741
|
get label() {
|
|
1708
1742
|
return messages().showNavigation;
|
|
@@ -1864,14 +1898,17 @@ const AppWorkspace = props => {
|
|
|
1864
1898
|
const slots = createMemo(() => flatten(resolved()));
|
|
1865
1899
|
// Same props object, same memo value: a sibling change must not rebuild the head's slots.
|
|
1866
1900
|
const head = createMemo(() => slots().find(headSlot)?.props);
|
|
1867
|
-
|
|
1868
|
-
|
|
1901
|
+
// Keep one head instance at the explicit slot's position. Object links
|
|
1902
|
+
// before it must also precede its view controls in SSR and keyboard order.
|
|
1903
|
+
// Callers without a slot retain the automatic leading head.
|
|
1904
|
+
const renderedHead = _$createComponent(AppWorkspaceHead, {
|
|
1869
1905
|
sidebarId: sidebarId,
|
|
1870
1906
|
nested: nested,
|
|
1871
1907
|
get head() {
|
|
1872
1908
|
return head();
|
|
1873
1909
|
}
|
|
1874
|
-
})
|
|
1910
|
+
});
|
|
1911
|
+
return head() ? slots().map(value => headSlot(value) ? value.props === head() ? renderedHead : null : value) : [renderedHead, ...slots()];
|
|
1875
1912
|
};
|
|
1876
1913
|
return _$createComponent(ResizeContext.Provider, {
|
|
1877
1914
|
get value() {
|