@expcat/tigercat-vue 2.0.19 → 2.1.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.
Files changed (177) hide show
  1. package/README.md +20 -10
  2. package/dist/chunk-26QCTL2E.mjs +180 -0
  3. package/dist/{chunk-GS4SV2HK.mjs → chunk-32X54QKW.mjs} +1 -1
  4. package/dist/chunk-3ONCXHE5.mjs +184 -0
  5. package/dist/{chunk-KOG3HKOF.mjs → chunk-6AMWX5K4.mjs} +1 -4
  6. package/dist/chunk-6GR3XC5V.mjs +281 -0
  7. package/dist/chunk-6GR5U4UB.mjs +225 -0
  8. package/dist/chunk-7DWWNFRP.mjs +302 -0
  9. package/dist/chunk-AECXFT7D.mjs +121 -0
  10. package/dist/chunk-AOLRZG4E.mjs +347 -0
  11. package/dist/chunk-AY7CGLMO.mjs +368 -0
  12. package/dist/chunk-BBNCP55O.mjs +156 -0
  13. package/dist/chunk-F3ZVVVYD.mjs +257 -0
  14. package/dist/{chunk-OTGGPXDT.mjs → chunk-IEAEB4TX.mjs} +255 -44
  15. package/dist/chunk-P6FMU4AT.mjs +54 -0
  16. package/dist/chunk-PFIV5MXD.mjs +48 -0
  17. package/dist/chunk-TBOXTAIA.mjs +94 -0
  18. package/dist/{chunk-EDBMWZKH.mjs → chunk-TPESRDUG.mjs} +5 -1
  19. package/dist/{chunk-2XCXK3NQ.mjs → chunk-U4B5QT72.mjs} +1 -1
  20. package/dist/chunk-UUWPSRNV.mjs +337 -0
  21. package/dist/chunk-UXJRH72H.mjs +834 -0
  22. package/dist/chunk-VFS5XAZ3.mjs +602 -0
  23. package/dist/{chunk-WC5MKASU.mjs → chunk-VN2TWPRC.mjs} +169 -55
  24. package/dist/components/ActivityFeed.d.mts +3 -3
  25. package/dist/components/ActivityFeed.mjs +1 -1
  26. package/dist/components/Affix.d.mts +4 -4
  27. package/dist/components/Alert.d.mts +4 -4
  28. package/dist/components/Anchor.d.mts +3 -3
  29. package/dist/components/AreaChart.mjs +2 -2
  30. package/dist/components/AspectRatio.d.mts +44 -0
  31. package/dist/components/AspectRatio.mjs +8 -0
  32. package/dist/components/AutoComplete.d.mts +2 -2
  33. package/dist/components/Avatar.d.mts +1 -1
  34. package/dist/components/AvatarGroup.d.mts +1 -1
  35. package/dist/components/BackTop.d.mts +1 -1
  36. package/dist/components/Badge.d.mts +2 -2
  37. package/dist/components/BarChart.mjs +2 -2
  38. package/dist/components/Breadcrumb.d.mts +2 -2
  39. package/dist/components/Button.d.mts +2 -2
  40. package/dist/components/ButtonGroup.d.mts +1 -1
  41. package/dist/components/Calendar.d.mts +1 -1
  42. package/dist/components/Card.d.mts +2 -2
  43. package/dist/components/Carousel.d.mts +3 -3
  44. package/dist/components/Cascader.d.mts +34 -0
  45. package/dist/components/Cascader.mjs +1 -1
  46. package/dist/components/ChartLegend.d.mts +1 -1
  47. package/dist/components/ChartTooltip.d.mts +1 -1
  48. package/dist/components/ChatWindow.d.mts +1 -1
  49. package/dist/components/ChatWindow.mjs +1 -1
  50. package/dist/components/CodeEditor.d.mts +3 -3
  51. package/dist/components/CodeEditor.mjs +1 -1
  52. package/dist/components/CollapsePanel.d.mts +1 -1
  53. package/dist/components/ColorSwatch.d.mts +1 -1
  54. package/dist/components/CommentThread.d.mts +1 -1
  55. package/dist/components/ContextMenu.d.mts +234 -0
  56. package/dist/components/ContextMenu.mjs +17 -0
  57. package/dist/components/Countdown.d.mts +3 -3
  58. package/dist/components/CropUpload.d.mts +1 -1
  59. package/dist/components/DataExport.d.mts +1 -1
  60. package/dist/components/DataTableWithToolbar.d.mts +4 -4
  61. package/dist/components/DataTableWithToolbar.mjs +2 -2
  62. package/dist/components/DatePicker.d.mts +3 -3
  63. package/dist/components/Descriptions.d.mts +1 -1
  64. package/dist/components/DonutChart.mjs +3 -3
  65. package/dist/components/Drawer.d.mts +5 -5
  66. package/dist/components/Dropdown.d.mts +1 -1
  67. package/dist/components/Empty.d.mts +1 -1
  68. package/dist/components/FileManager.d.mts +1 -1
  69. package/dist/components/FloatButton.d.mts +4 -4
  70. package/dist/components/FormWizard.d.mts +2 -2
  71. package/dist/components/FunnelChart.d.mts +2 -2
  72. package/dist/components/FunnelChart.mjs +2 -2
  73. package/dist/components/Gantt.d.mts +1 -1
  74. package/dist/components/GaugeChart.d.mts +2 -2
  75. package/dist/components/Header.d.mts +1 -1
  76. package/dist/components/HeatmapChart.d.mts +1 -1
  77. package/dist/components/Highlight.d.mts +146 -0
  78. package/dist/components/Highlight.mjs +8 -0
  79. package/dist/components/Icon.d.mts +1 -1
  80. package/dist/components/ImageAnnotation.d.mts +3 -3
  81. package/dist/components/ImageCompare.d.mts +284 -0
  82. package/dist/components/ImageCompare.mjs +8 -0
  83. package/dist/components/ImageCropper.d.mts +1 -1
  84. package/dist/components/ImagePreview.d.mts +1 -1
  85. package/dist/components/ImageViewer.d.mts +1 -1
  86. package/dist/components/InfiniteScroll.d.mts +1 -1
  87. package/dist/components/Input.d.mts +4 -4
  88. package/dist/components/InputGroup.d.mts +1 -1
  89. package/dist/components/InputNumber.d.mts +3 -3
  90. package/dist/components/InputOTP.d.mts +261 -0
  91. package/dist/components/InputOTP.mjs +11 -0
  92. package/dist/components/Kanban.d.mts +1 -1
  93. package/dist/components/Kbd.d.mts +118 -0
  94. package/dist/components/Kbd.mjs +8 -0
  95. package/dist/components/LineChart.mjs +2 -2
  96. package/dist/components/List.d.mts +3 -3
  97. package/dist/components/List.mjs +1 -1
  98. package/dist/components/Loading.d.mts +2 -2
  99. package/dist/components/LoadingBar.d.mts +8 -0
  100. package/dist/components/LoadingBar.mjs +114 -0
  101. package/dist/components/LoadingBarContainer.d.mts +78 -0
  102. package/dist/components/LoadingBarContainer.mjs +8 -0
  103. package/dist/components/LoadingBarRoot.d.mts +6 -0
  104. package/dist/components/LoadingBarRoot.mjs +6 -0
  105. package/dist/components/MarkdownEditor.d.mts +5 -5
  106. package/dist/components/Marquee.d.mts +158 -0
  107. package/dist/components/Marquee.mjs +8 -0
  108. package/dist/components/MaskInput.d.mts +201 -0
  109. package/dist/components/MaskInput.mjs +11 -0
  110. package/dist/components/Masonry.d.mts +66 -0
  111. package/dist/components/Masonry.mjs +8 -0
  112. package/dist/components/Mentions.d.mts +2 -2
  113. package/dist/components/Menu.d.mts +5 -5
  114. package/dist/components/Modal.d.mts +7 -7
  115. package/dist/components/NavigationMenu.d.mts +411 -0
  116. package/dist/components/NavigationMenu.mjs +25 -0
  117. package/dist/components/NotificationCenter.d.mts +3 -3
  118. package/dist/components/NotificationCenter.mjs +2 -2
  119. package/dist/components/NumberKeyboard.d.mts +3 -3
  120. package/dist/components/OrgChart.d.mts +2 -2
  121. package/dist/components/PageHeader.d.mts +140 -0
  122. package/dist/components/PageHeader.mjs +11 -0
  123. package/dist/components/Pagination.d.mts +2 -2
  124. package/dist/components/PieChart.mjs +2 -2
  125. package/dist/components/Popconfirm.d.mts +5 -5
  126. package/dist/components/Popover.d.mts +5 -5
  127. package/dist/components/Progress.d.mts +6 -6
  128. package/dist/components/QRCode.d.mts +1 -1
  129. package/dist/components/RadarChart.mjs +2 -2
  130. package/dist/components/Result.d.mts +1 -1
  131. package/dist/components/RichTextEditor.d.mts +4 -4
  132. package/dist/components/ScatterChart.d.mts +2 -2
  133. package/dist/components/ScatterChart.mjs +2 -2
  134. package/dist/components/ScrollArea.d.mts +136 -0
  135. package/dist/components/ScrollArea.mjs +8 -0
  136. package/dist/components/ScrollSpy.d.mts +3 -3
  137. package/dist/components/Segmented.d.mts +2 -2
  138. package/dist/components/Signature.d.mts +5 -5
  139. package/dist/components/Skeleton.d.mts +1 -1
  140. package/dist/components/Slider.d.mts +1 -1
  141. package/dist/components/SplitButton.d.mts +286 -0
  142. package/dist/components/SplitButton.mjs +12 -0
  143. package/dist/components/Splitter.d.mts +1 -1
  144. package/dist/components/Spotlight.d.mts +5 -5
  145. package/dist/components/Statistic.d.mts +1 -1
  146. package/dist/components/Steps.d.mts +3 -3
  147. package/dist/components/SunburstChart.mjs +2 -2
  148. package/dist/components/Tabs.d.mts +3 -3
  149. package/dist/components/Tag.d.mts +2 -2
  150. package/dist/components/TagsInput.d.mts +214 -0
  151. package/dist/components/TagsInput.mjs +12 -0
  152. package/dist/components/TaskBoard.d.mts +2 -2
  153. package/dist/components/Textarea.d.mts +1 -1
  154. package/dist/components/TimePicker.d.mts +3 -3
  155. package/dist/components/Timeline.d.mts +4 -4
  156. package/dist/components/Tooltip.d.mts +2 -2
  157. package/dist/components/Tour.d.mts +4 -4
  158. package/dist/components/Tree.d.mts +3 -3
  159. package/dist/components/TreeMapChart.d.mts +1 -1
  160. package/dist/components/TreeMapChart.mjs +2 -2
  161. package/dist/components/TreeSelect.d.mts +51 -0
  162. package/dist/components/TreeSelect.mjs +2 -1
  163. package/dist/components/Upload.d.mts +5 -5
  164. package/dist/components/VirtualTable.d.mts +3 -3
  165. package/dist/components/Watermark.d.mts +5 -5
  166. package/dist/index.d.mts +17 -1
  167. package/dist/index.mjs +355 -0
  168. package/package.json +117 -2
  169. package/dist/{chunk-MAKOSWR6.mjs → chunk-37W7XTA6.mjs} +3 -3
  170. package/dist/{chunk-WUQMFKQ6.mjs → chunk-66OS5A4D.mjs} +3 -3
  171. package/dist/{chunk-NNC75I7F.mjs → chunk-CHEXI7MO.mjs} +3 -3
  172. package/dist/{chunk-KFJIZED5.mjs → chunk-EHGFW5GX.mjs} +3 -3
  173. package/dist/{chunk-ZGA66PSG.mjs → chunk-EZYOCPMM.mjs} +3 -3
  174. package/dist/{chunk-XGXZF27U.mjs → chunk-JHMT5Q6P.mjs} +3 -3
  175. package/dist/{chunk-NGAA73CV.mjs → chunk-VLW3UBIR.mjs} +3 -3
  176. package/dist/{chunk-OTHJIFDV.mjs → chunk-W5XFWVNV.mjs} +3 -3
  177. package/dist/{chunk-3KITFMBJ.mjs → chunk-ZOYHZF4N.mjs} +3 -3
@@ -0,0 +1,281 @@
1
+ // src/components/ScrollArea.ts
2
+ import {
3
+ defineComponent,
4
+ h,
5
+ ref,
6
+ shallowRef,
7
+ onMounted,
8
+ onBeforeUnmount,
9
+ nextTick,
10
+ watch
11
+ } from "vue";
12
+ import {
13
+ classNames,
14
+ coerceClassValue,
15
+ mergeStyleValues,
16
+ computeScrollAreaState,
17
+ computeScrollFromThumbOffset,
18
+ computeScrollFromTrackPoint,
19
+ createDocumentDragSession,
20
+ createEmptyScrollAreaState,
21
+ getScrollAreaBoxStyle,
22
+ getScrollAreaContentClasses,
23
+ getScrollAreaScrollbarClasses,
24
+ getScrollAreaShadowClasses,
25
+ getScrollAreaShadowSides,
26
+ getScrollAreaThumbClasses,
27
+ getScrollAreaThumbStyle,
28
+ getScrollAreaViewportClasses,
29
+ observeScrollAreaSize,
30
+ readScrollAreaMetrics,
31
+ scrollAreaRootClasses,
32
+ shouldRenderScrollAreaScrollbar,
33
+ SCROLL_AREA_MIN_THUMB_SIZE
34
+ } from "@expcat/tigercat-core";
35
+ var ScrollArea = defineComponent({
36
+ name: "TigerScrollArea",
37
+ inheritAttrs: false,
38
+ props: {
39
+ direction: {
40
+ type: String,
41
+ default: "vertical"
42
+ },
43
+ scrollbar: {
44
+ type: String,
45
+ default: "auto"
46
+ },
47
+ scrollbarSize: {
48
+ type: String,
49
+ default: "md"
50
+ },
51
+ shadow: { type: Boolean, default: false },
52
+ minThumbSize: { type: Number, default: SCROLL_AREA_MIN_THUMB_SIZE },
53
+ height: { type: [Number, String], default: void 0 },
54
+ maxHeight: { type: [Number, String], default: void 0 },
55
+ width: { type: [Number, String], default: void 0 },
56
+ maxWidth: { type: [Number, String], default: void 0 },
57
+ ariaLabel: { type: String, default: void 0 },
58
+ className: { type: String, default: void 0 },
59
+ viewportClassName: { type: String, default: void 0 }
60
+ },
61
+ emits: ["scroll"],
62
+ setup(props, { slots, emit, attrs, expose }) {
63
+ const viewportRef = ref(null);
64
+ const contentRef = ref(null);
65
+ const scrollState = shallowRef(createEmptyScrollAreaState());
66
+ const draggingAxis = ref(null);
67
+ let dragSession = null;
68
+ let stopObserving = null;
69
+ function syncState() {
70
+ const viewport = viewportRef.value;
71
+ if (!viewport) return;
72
+ scrollState.value = computeScrollAreaState(
73
+ readScrollAreaMetrics(viewport),
74
+ props.minThumbSize
75
+ );
76
+ }
77
+ function handleScroll() {
78
+ const viewport = viewportRef.value;
79
+ if (!viewport) return;
80
+ syncState();
81
+ emit("scroll", {
82
+ scrollTop: viewport.scrollTop,
83
+ scrollLeft: viewport.scrollLeft,
84
+ state: scrollState.value
85
+ });
86
+ }
87
+ function applyScroll(axis, position) {
88
+ const viewport = viewportRef.value;
89
+ if (!viewport) return;
90
+ if (axis === "y") viewport.scrollTop = position;
91
+ else viewport.scrollLeft = position;
92
+ handleScroll();
93
+ }
94
+ function trackSizeOf(axis) {
95
+ const viewport = viewportRef.value;
96
+ if (!viewport) return 0;
97
+ return axis === "y" ? viewport.clientHeight : viewport.clientWidth;
98
+ }
99
+ function scrollSizeOf(axis) {
100
+ const viewport = viewportRef.value;
101
+ if (!viewport) return 0;
102
+ return axis === "y" ? viewport.scrollHeight : viewport.scrollWidth;
103
+ }
104
+ function startThumbDrag(axis, event) {
105
+ const viewport = viewportRef.value;
106
+ if (!viewport) return;
107
+ event.preventDefault();
108
+ event.stopPropagation();
109
+ const axisState = axis === "y" ? scrollState.value.y : scrollState.value.x;
110
+ const startOffset = axisState.thumbOffset;
111
+ const startPoint = axis === "y" ? event.clientY : event.clientX;
112
+ dragSession?.dispose();
113
+ draggingAxis.value = axis;
114
+ dragSession = createDocumentDragSession({
115
+ startX: event.clientX,
116
+ startY: event.clientY,
117
+ ownerDocument: viewport.ownerDocument,
118
+ onMove: ({ currentX, currentY }) => {
119
+ const current = axis === "y" ? currentY : currentX;
120
+ const trackSize = trackSizeOf(axis);
121
+ applyScroll(
122
+ axis,
123
+ computeScrollFromThumbOffset(
124
+ startOffset + (current - startPoint),
125
+ trackSize,
126
+ axisState.thumbSize,
127
+ scrollSizeOf(axis),
128
+ trackSize
129
+ )
130
+ );
131
+ },
132
+ onEnd: () => {
133
+ draggingAxis.value = null;
134
+ dragSession = null;
135
+ }
136
+ });
137
+ }
138
+ function handleTrackMouseDown(axis, event) {
139
+ const target = event.target;
140
+ if (target?.dataset.scrollAreaThumb) {
141
+ startThumbDrag(axis, event);
142
+ return;
143
+ }
144
+ const track = event.currentTarget;
145
+ const rect = track.getBoundingClientRect();
146
+ const point = axis === "y" ? event.clientY - rect.top : event.clientX - rect.left;
147
+ const axisState = axis === "y" ? scrollState.value.y : scrollState.value.x;
148
+ const trackSize = trackSizeOf(axis);
149
+ applyScroll(
150
+ axis,
151
+ computeScrollFromTrackPoint(
152
+ point,
153
+ trackSize,
154
+ axisState.thumbSize,
155
+ scrollSizeOf(axis),
156
+ trackSize
157
+ )
158
+ );
159
+ }
160
+ function scrollTo(options) {
161
+ const viewport = viewportRef.value;
162
+ if (!viewport) return;
163
+ const behavior = options.behavior ?? "auto";
164
+ if (typeof viewport.scrollTo === "function") {
165
+ viewport.scrollTo({ top: options.top, left: options.left, behavior });
166
+ } else {
167
+ if (options.top !== void 0) viewport.scrollTop = options.top;
168
+ if (options.left !== void 0) viewport.scrollLeft = options.left;
169
+ }
170
+ handleScroll();
171
+ }
172
+ function scrollToTop(behavior) {
173
+ scrollTo({ top: 0, behavior });
174
+ }
175
+ function scrollToBottom(behavior) {
176
+ const viewport = viewportRef.value;
177
+ if (!viewport) return;
178
+ scrollTo({ top: viewport.scrollHeight, behavior });
179
+ }
180
+ onMounted(() => {
181
+ syncState();
182
+ stopObserving = observeScrollAreaSize([viewportRef.value, contentRef.value], syncState);
183
+ });
184
+ onBeforeUnmount(() => {
185
+ dragSession?.dispose();
186
+ dragSession = null;
187
+ stopObserving?.();
188
+ stopObserving = null;
189
+ });
190
+ watch(
191
+ () => [props.direction, props.minThumbSize],
192
+ () => {
193
+ void nextTick(syncState);
194
+ }
195
+ );
196
+ expose({
197
+ scrollTo,
198
+ scrollToTop,
199
+ scrollToBottom,
200
+ getViewport: () => viewportRef.value,
201
+ getState: () => scrollState.value
202
+ });
203
+ function renderScrollbar(axis) {
204
+ const axisState = axis === "y" ? scrollState.value.y : scrollState.value.x;
205
+ if (!shouldRenderScrollAreaScrollbar(props.scrollbar, props.direction, axis, axisState)) {
206
+ return null;
207
+ }
208
+ return h(
209
+ "div",
210
+ {
211
+ key: `scrollbar-${axis}`,
212
+ class: getScrollAreaScrollbarClasses(axis, props.scrollbarSize, props.scrollbar),
213
+ "data-scroll-area-scrollbar": axis,
214
+ "aria-hidden": "true",
215
+ onMousedown: (event) => handleTrackMouseDown(axis, event)
216
+ },
217
+ [
218
+ h("div", {
219
+ class: getScrollAreaThumbClasses(axis, draggingAxis.value === axis),
220
+ style: getScrollAreaThumbStyle(axis, axisState),
221
+ "data-scroll-area-thumb": axis
222
+ })
223
+ ]
224
+ );
225
+ }
226
+ return () => {
227
+ const shadows = props.shadow ? getScrollAreaShadowSides(scrollState.value, props.direction) : [];
228
+ return h(
229
+ "div",
230
+ {
231
+ ...attrs,
232
+ class: classNames(scrollAreaRootClasses, props.className, coerceClassValue(attrs.class)),
233
+ style: mergeStyleValues(attrs.style),
234
+ "data-scroll-area": ""
235
+ },
236
+ [
237
+ h(
238
+ "div",
239
+ {
240
+ ref: viewportRef,
241
+ class: getScrollAreaViewportClasses(props.direction, props.viewportClassName),
242
+ style: getScrollAreaBoxStyle(props),
243
+ tabindex: 0,
244
+ role: props.ariaLabel ? "region" : void 0,
245
+ "aria-label": props.ariaLabel,
246
+ "data-scroll-area-viewport": "",
247
+ onScroll: handleScroll
248
+ },
249
+ [
250
+ h(
251
+ "div",
252
+ {
253
+ ref: contentRef,
254
+ class: getScrollAreaContentClasses(props.direction),
255
+ "data-scroll-area-content": ""
256
+ },
257
+ slots.default?.()
258
+ )
259
+ ]
260
+ ),
261
+ ...shadows.map(
262
+ (side) => h("div", {
263
+ key: `shadow-${side}`,
264
+ class: getScrollAreaShadowClasses(side),
265
+ "data-scroll-area-shadow": side,
266
+ "aria-hidden": "true"
267
+ })
268
+ ),
269
+ renderScrollbar("y"),
270
+ renderScrollbar("x")
271
+ ]
272
+ );
273
+ };
274
+ }
275
+ });
276
+ var ScrollArea_default = ScrollArea;
277
+
278
+ export {
279
+ ScrollArea,
280
+ ScrollArea_default
281
+ };
@@ -0,0 +1,225 @@
1
+ import {
2
+ Button
3
+ } from "./chunk-YZBQ6IR7.mjs";
4
+ import {
5
+ Link
6
+ } from "./chunk-3MO7A4GU.mjs";
7
+
8
+ // src/components/PageHeader.ts
9
+ import { defineComponent, getCurrentInstance, h } from "vue";
10
+ import {
11
+ chevronLeftSolidIcon20PathD,
12
+ coerceClassValue,
13
+ composeComponentClasses,
14
+ getPageHeaderBackButtonClasses,
15
+ getPageHeaderRootClasses,
16
+ hasPageHeaderHeadingContent,
17
+ icon20ViewBox,
18
+ mergeStyleValues,
19
+ pageHeaderActionsClasses,
20
+ pageHeaderBackIconClasses,
21
+ pageHeaderBackWrapClasses,
22
+ pageHeaderContentClasses,
23
+ pageHeaderHeadingRowClasses,
24
+ pageHeaderMainClasses,
25
+ pageHeaderStartClasses,
26
+ pageHeaderSubtitleClasses,
27
+ pageHeaderTitleClasses,
28
+ pageHeaderTitleRowClasses,
29
+ resolvePageHeaderBackAriaLabel,
30
+ resolvePageHeaderBackVisibility
31
+ } from "@expcat/tigercat-core";
32
+ function hasSlotContent(nodes) {
33
+ return Array.isArray(nodes) && nodes.length > 0;
34
+ }
35
+ function createBackIcon() {
36
+ return h(
37
+ "svg",
38
+ {
39
+ class: pageHeaderBackIconClasses,
40
+ xmlns: "http://www.w3.org/2000/svg",
41
+ viewBox: icon20ViewBox,
42
+ fill: "currentColor",
43
+ "aria-hidden": "true",
44
+ focusable: "false"
45
+ },
46
+ [
47
+ h("path", {
48
+ "fill-rule": "evenodd",
49
+ d: chevronLeftSolidIcon20PathD,
50
+ "clip-rule": "evenodd"
51
+ })
52
+ ]
53
+ );
54
+ }
55
+ var PageHeader = defineComponent({
56
+ name: "TigerPageHeader",
57
+ inheritAttrs: false,
58
+ props: {
59
+ /**
60
+ * Whether to show the back control.
61
+ * When omitted, the control is shown if `@back`, `backHref`, or a `#back`
62
+ * slot is provided. Set `false` to force-hide.
63
+ */
64
+ showBack: {
65
+ type: Boolean,
66
+ default: void 0
67
+ },
68
+ /**
69
+ * Navigation URL for the default back control. Renders a Link instead of
70
+ * a Button when set and no `#back` slot is provided.
71
+ */
72
+ backHref: {
73
+ type: String,
74
+ default: void 0
75
+ },
76
+ /**
77
+ * Accessible name for the default back control
78
+ * @default 'Back'
79
+ */
80
+ backAriaLabel: {
81
+ type: String,
82
+ default: void 0
83
+ },
84
+ /**
85
+ * Page title
86
+ */
87
+ title: {
88
+ type: String,
89
+ default: void 0
90
+ },
91
+ /**
92
+ * Secondary text shown beside the title
93
+ */
94
+ subTitle: {
95
+ type: String,
96
+ default: void 0
97
+ },
98
+ /**
99
+ * Additional CSS classes
100
+ */
101
+ className: {
102
+ type: String,
103
+ default: void 0
104
+ },
105
+ /**
106
+ * Inline styles
107
+ */
108
+ style: {
109
+ type: Object,
110
+ default: void 0
111
+ }
112
+ },
113
+ emits: {
114
+ /**
115
+ * Emitted when the default back control is activated
116
+ */
117
+ back: (event) => event instanceof MouseEvent
118
+ },
119
+ setup(props, { slots, emit, attrs }) {
120
+ const instance = getCurrentInstance();
121
+ const handleBack = (event) => {
122
+ emit("back", event);
123
+ };
124
+ return () => {
125
+ const attrsRecord = attrs;
126
+ const vnodeProps = instance?.vnode.props;
127
+ const breadcrumb = slots.breadcrumb?.();
128
+ const titleSlot = slots.title?.();
129
+ const subTitleSlot = slots.subTitle?.();
130
+ const actions = slots.actions?.();
131
+ const backOverride = slots.back?.();
132
+ const body = slots.default?.();
133
+ const hasBreadcrumb = hasSlotContent(breadcrumb);
134
+ const hasTitleSlot = hasSlotContent(titleSlot);
135
+ const hasSubTitleSlot = hasSlotContent(subTitleSlot);
136
+ const hasActions = hasSlotContent(actions);
137
+ const hasBackOverride = hasSlotContent(backOverride);
138
+ const hasBody = hasSlotContent(body);
139
+ const titleContent = hasTitleSlot ? titleSlot : props.title;
140
+ const subTitleContent = hasSubTitleSlot ? subTitleSlot : props.subTitle;
141
+ const hasTitle = hasTitleSlot || Boolean(props.title);
142
+ const hasSubtitle = hasSubTitleSlot || Boolean(props.subTitle);
143
+ const showBack = resolvePageHeaderBackVisibility({
144
+ showBack: props.showBack,
145
+ hasHandler: Boolean(vnodeProps && "onBack" in vnodeProps),
146
+ hasBackHref: Boolean(props.backHref),
147
+ hasBackOverride
148
+ });
149
+ const showHeading = hasPageHeaderHeadingContent({
150
+ showBack,
151
+ hasBreadcrumb,
152
+ hasTitle,
153
+ hasSubtitle,
154
+ hasActions
155
+ });
156
+ const backAriaLabel = resolvePageHeaderBackAriaLabel(props.backAriaLabel);
157
+ const backControl = showBack ? h("div", { class: pageHeaderBackWrapClasses, "data-page-header-back": "" }, [
158
+ hasBackOverride ? backOverride : props.backHref ? h(
159
+ Link,
160
+ {
161
+ href: props.backHref,
162
+ underline: false,
163
+ variant: "default",
164
+ class: getPageHeaderBackButtonClasses(),
165
+ "aria-label": backAriaLabel,
166
+ onClick: handleBack
167
+ },
168
+ { default: () => [createBackIcon()] }
169
+ ) : h(
170
+ Button,
171
+ {
172
+ variant: "ghost",
173
+ size: "sm",
174
+ className: getPageHeaderBackButtonClasses(),
175
+ "aria-label": backAriaLabel,
176
+ onClick: handleBack
177
+ },
178
+ { default: () => [createBackIcon()] }
179
+ )
180
+ ]) : null;
181
+ const mainColumn = hasBreadcrumb || hasTitle || hasSubtitle ? h("div", { class: pageHeaderMainClasses }, [
182
+ hasBreadcrumb ? breadcrumb : null,
183
+ hasTitle || hasSubtitle ? h("div", { class: pageHeaderTitleRowClasses }, [
184
+ hasTitle ? h(
185
+ "div",
186
+ { class: pageHeaderTitleClasses, "data-page-header-title": "" },
187
+ titleContent
188
+ ) : null,
189
+ hasSubtitle ? h(
190
+ "div",
191
+ { class: pageHeaderSubtitleClasses, "data-page-header-subtitle": "" },
192
+ subTitleContent
193
+ ) : null
194
+ ]) : null
195
+ ]) : null;
196
+ const heading = showHeading ? h("div", { class: pageHeaderHeadingRowClasses, "data-page-header-heading": "" }, [
197
+ h("div", { class: pageHeaderStartClasses }, [backControl, mainColumn]),
198
+ hasActions ? h(
199
+ "div",
200
+ { class: pageHeaderActionsClasses, "data-page-header-actions": "" },
201
+ actions
202
+ ) : null
203
+ ]) : null;
204
+ return h(
205
+ "header",
206
+ {
207
+ ...attrs,
208
+ class: composeComponentClasses(
209
+ getPageHeaderRootClasses(props.className),
210
+ coerceClassValue(attrsRecord.class)
211
+ ),
212
+ style: mergeStyleValues(attrsRecord.style, props.style),
213
+ "data-page-header": ""
214
+ },
215
+ [heading, hasBody ? h("div", { class: pageHeaderContentClasses }, body) : null]
216
+ );
217
+ };
218
+ }
219
+ });
220
+ var PageHeader_default = PageHeader;
221
+
222
+ export {
223
+ PageHeader,
224
+ PageHeader_default
225
+ };