eco-vue-js 0.26.29 → 0.26.31
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/components/InfiniteList/WInfiniteListWrapper.vue.d.ts.map +1 -1
- package/dist/components/InfiniteList/WInfiniteListWrapper.vue_vue_type_script_setup_true_lang.js +23 -3
- package/dist/components/List/WList.vue.d.ts +14 -1
- package/dist/components/List/WList.vue.d.ts.map +1 -1
- package/dist/components/List/WList.vue_vue_type_script_setup_true_lang.js +25 -4
- package/dist/components/List/components/ListToolbar.vue.d.ts.map +1 -1
- package/dist/components/List/components/ListToolbar.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/Surface/WSection.vue.d.ts.map +1 -1
- package/dist/components/Surface/WSection.vue_vue_type_script_setup_true_lang.js +35 -25
- package/dist/components/Surface/components/SectionHeading.vue.d.ts +22 -0
- package/dist/components/Surface/components/SectionHeading.vue.d.ts.map +1 -0
- package/dist/components/Surface/components/SectionHeading.vue.js +4 -0
- package/dist/components/Surface/components/SectionHeading.vue_vue_type_script_setup_true_lang.js +35 -0
- package/docs/components/list.md +5 -1
- package/docs/llms.txt +1 -1
- package/package.json +1 -1
- package/tailwind-base/css/surfaces.css +73 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WInfiniteListWrapper.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/InfiniteList/WInfiniteListWrapper.vue"],"names":[],"mappings":"AAmDA;
|
|
1
|
+
{"version":3,"file":"WInfiniteListWrapper.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/InfiniteList/WInfiniteListWrapper.vue"],"names":[],"mappings":"AAmDA;AAmRA,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,SAAS,CAAA;AAEpD,OAAO,EAAC,KAAK,KAAK,EAA0E,MAAM,KAAK,CAAA;AAYvG,KAAK,WAAW,GAAG;IACjB,gIAAgI;IAChI,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,kFAAkF;IAClF,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,mGAAmG;IACnG,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAC;AAkMF,KAAK,WAAW,GAAG;IACjB,uGAAuG;IACvG,MAAM,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,KAAK,EAAE,CAAA;IACnD,+EAA+E;IAC/E,OAAO,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,KAAK,EAAE,CAAA;CACrD,CAAC;AA8FF,QAAA,MAAM,UAAU;;oPAGd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
package/dist/components/InfiniteList/WInfiniteListWrapper.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -58,15 +58,27 @@ var WInfiniteListWrapper_vue_vue_type_script_setup_true_lang_default = /*@__PURE
|
|
|
58
58
|
const isPadding = () => !joined && !isContained && !props.noHeaderUpdate;
|
|
59
59
|
const updatePadding = () => {
|
|
60
60
|
if (!isPadding()) return;
|
|
61
|
-
const intersecting = props.inPlace || isIntersecting.value;
|
|
61
|
+
const intersecting = props.inPlace || isSectionInView.value || isIntersecting.value;
|
|
62
62
|
if (intersecting === null) return;
|
|
63
63
|
const offset = indicatorRef.value?.closest(".w-list-page") ? 0 : stickyGap.value;
|
|
64
64
|
const height = headerHeight.value + offset;
|
|
65
65
|
updateHeaderPadding(!intersecting && height ? height : 0);
|
|
66
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* Whether the page list's section fits the screen below the header bar. Its frame then has no room to stick, so the
|
|
69
|
+
* section's top scrolls away above where a stuck header would draw it: the header scrolls along, as in a section.
|
|
70
|
+
*/
|
|
71
|
+
const isSectionInView = ref(false);
|
|
72
|
+
const updateSectionInView = () => {
|
|
73
|
+
const page = indicatorRef.value?.closest(".w-list-page");
|
|
74
|
+
const surface = page?.querySelector(":scope > .w-list-page-surface");
|
|
75
|
+
const frame = page?.querySelector(":scope > .w-list-page-frame");
|
|
76
|
+
isSectionInView.value = !!surface && !!frame && getComputedStyle(frame).top !== "auto" && frame.getBoundingClientRect().height >= surface.getBoundingClientRect().height - 1;
|
|
77
|
+
};
|
|
67
78
|
watch(() => [
|
|
68
79
|
props.inPlace,
|
|
69
80
|
isIntersecting.value,
|
|
81
|
+
isSectionInView.value,
|
|
70
82
|
headerHeight.value,
|
|
71
83
|
stickyGap.value
|
|
72
84
|
], updatePadding);
|
|
@@ -97,8 +109,10 @@ var WInfiniteListWrapper_vue_vue_type_script_setup_true_lang_default = /*@__PURE
|
|
|
97
109
|
const onResize = () => {
|
|
98
110
|
updateHeaderTop();
|
|
99
111
|
observe();
|
|
112
|
+
updateSectionInView();
|
|
100
113
|
};
|
|
101
114
|
let resizeObserver = null;
|
|
115
|
+
let sectionObserver = null;
|
|
102
116
|
onMounted(() => {
|
|
103
117
|
if (!getIsClientSide() || joined || !headerRef.value) return;
|
|
104
118
|
resizeObserver = new ResizeObserver((entries) => {
|
|
@@ -108,12 +122,18 @@ var WInfiniteListWrapper_vue_vue_type_script_setup_true_lang_default = /*@__PURE
|
|
|
108
122
|
updateHeaderTop();
|
|
109
123
|
});
|
|
110
124
|
resizeObserver.observe(headerRef.value);
|
|
125
|
+
const page = indicatorRef.value?.closest(".w-list-page");
|
|
126
|
+
if (page && !isContained) {
|
|
127
|
+
sectionObserver = new ResizeObserver(updateSectionInView);
|
|
128
|
+
sectionObserver.observe(page);
|
|
129
|
+
}
|
|
111
130
|
observe();
|
|
112
131
|
window.addEventListener("resize", onResize);
|
|
113
132
|
});
|
|
114
133
|
onBeforeUnmount(() => {
|
|
115
134
|
window.removeEventListener("resize", onResize);
|
|
116
135
|
resizeObserver?.disconnect();
|
|
136
|
+
sectionObserver?.disconnect();
|
|
117
137
|
intersectionObserver?.disconnect();
|
|
118
138
|
if (isPadding()) updateHeaderPadding(0);
|
|
119
139
|
});
|
|
@@ -139,10 +159,10 @@ var WInfiniteListWrapper_vue_vue_type_script_setup_true_lang_default = /*@__PURE
|
|
|
139
159
|
createElementVNode("div", {
|
|
140
160
|
ref: "header",
|
|
141
161
|
class: normalizeClass(["print:hidden", __props.inPlace ? void 0 : {
|
|
142
|
-
"sticky":
|
|
162
|
+
"sticky": !isSectionInView.value,
|
|
143
163
|
"top-(--w-header-inner)": !unref(isContained),
|
|
144
164
|
"w-infinite-list-header": !unref(isContained) && !__props.noHeaderUpdate,
|
|
145
|
-
"w-infinite-list-header-stuck": !unref(isContained) && !__props.noHeaderUpdate && isIntersecting.value === false,
|
|
165
|
+
"w-infinite-list-header-stuck": !unref(isContained) && !__props.noHeaderUpdate && !isSectionInView.value && isIntersecting.value === false,
|
|
146
166
|
"top-0 not-empty:pt-(--w-list-contained-top,0.75rem)": unref(isContained) && !unref(isModal),
|
|
147
167
|
"top---modal-header-height": unref(isModal),
|
|
148
168
|
"bg-surface": __props.noHeaderUpdate || unref(isContained)
|
|
@@ -7,6 +7,13 @@ import { Selection } from '../../utils/useSelected';
|
|
|
7
7
|
import { ListMode } from '../../utils/utils';
|
|
8
8
|
declare const __VLS_export: <Data extends DefaultData, QueryParams, Fields extends ListFields<Data, QueryParams>, CardColumns extends readonly GridCol[]>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
9
9
|
props: import('vue').PublicProps & __VLS_PrettifyLocal<{
|
|
10
|
+
/**
|
|
11
|
+
* Heading of the list, as a section's: the list is a section of its own on the page, and a part of a section or a
|
|
12
|
+
* modal, with a smaller heading and a line above it after other content. The `title` slot replaces it.
|
|
13
|
+
*/
|
|
14
|
+
title?: string;
|
|
15
|
+
/** A line under the heading on what the list holds. The `description` slot replaces it. */
|
|
16
|
+
description?: string;
|
|
10
17
|
/** Total number of items, when known in advance. Sizes the skeleton and the select-all. Defaults to the count the query returns. */
|
|
11
18
|
count?: number;
|
|
12
19
|
/** Field components, one per column, each with a `meta` export for its title, label, ordering field and classes. A meta with `fields` groups nested fields. */
|
|
@@ -114,7 +121,13 @@ declare const __VLS_export: <Data extends DefaultData, QueryParams, Fields exten
|
|
|
114
121
|
expose: (exposed: {}) => void;
|
|
115
122
|
attrs: any;
|
|
116
123
|
slots: {
|
|
117
|
-
/**
|
|
124
|
+
/** Heading of the list, in place of `title`, with the count returned by the query. */
|
|
125
|
+
title?: (props: {
|
|
126
|
+
count: number | undefined;
|
|
127
|
+
}) => void;
|
|
128
|
+
/** Line under the heading, in place of `description`. */
|
|
129
|
+
description?: () => void;
|
|
130
|
+
/** Content above the selection bar, under the heading, with the count returned by the query. */
|
|
118
131
|
header?: (props: {
|
|
119
132
|
count: number | undefined;
|
|
120
133
|
}) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WList.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/List/WList.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WList.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/List/WList.vue"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import WEmptyComponent_default from "../EmptyComponent/WEmptyComponent.vue.js";
|
|
|
2
2
|
import WInfiniteList_default from "../InfiniteList/WInfiniteList.vue.js";
|
|
3
3
|
import { wScrollingElement } from "../InfiniteList/models/injection.js";
|
|
4
4
|
import { wIsModal } from "../Modal/models/injection.js";
|
|
5
|
+
import SectionHeading_default from "../Surface/components/SectionHeading.vue.js";
|
|
5
6
|
import { wSectionNested } from "../Surface/models/injection.js";
|
|
6
7
|
import { useIsMobile } from "../../utils/mobile.js";
|
|
7
8
|
import { encodeOrdering, parseOrdering } from "../../utils/order.js";
|
|
@@ -18,7 +19,7 @@ import { isField } from "./models/utils.js";
|
|
|
18
19
|
import "./types.js";
|
|
19
20
|
import { filterFields, forEachField, getFieldStylesSticky, getFieldTracks, sortFieldsDeep, useListConfig } from "./use/useListConfig.js";
|
|
20
21
|
import { usePageTableMark, useStickyPath } from "./use/useStickyPath.js";
|
|
21
|
-
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createVNode, defineComponent, guardReactiveProps, inject, normalizeClass, normalizeProps, normalizeStyle, onBeforeUnmount, onMounted, openBlock, provide, ref, renderList, renderSlot, resolveDynamicComponent, toRef, unref, useTemplateRef, watch, watchEffect, withCtx } from "vue";
|
|
22
|
+
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createVNode, defineComponent, guardReactiveProps, inject, normalizeClass, normalizeProps, normalizeStyle, onBeforeUnmount, onMounted, openBlock, provide, ref, renderList, renderSlot, resolveDynamicComponent, toRef, unref, useSlots, useTemplateRef, watch, watchEffect, withCtx } from "vue";
|
|
22
23
|
// src/components/List/WList.vue?vue&type=script&setup=true&lang.ts
|
|
23
24
|
var _hoisted_1 = { class: "w-list-page-strip" };
|
|
24
25
|
var _hoisted_2 = { class: "w-list-page-strip-track" };
|
|
@@ -26,6 +27,8 @@ var WList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
|
|
|
26
27
|
inheritAttrs: false,
|
|
27
28
|
__name: "WList",
|
|
28
29
|
props: {
|
|
30
|
+
title: { default: void 0 },
|
|
31
|
+
description: { default: void 0 },
|
|
29
32
|
count: { default: void 0 },
|
|
30
33
|
fields: {},
|
|
31
34
|
expansion: {
|
|
@@ -114,6 +117,9 @@ var WList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
|
|
|
114
117
|
const isPage = !isModal && inject(wScrollingElement, null) === null && !isSectionNested;
|
|
115
118
|
const frame = isPage ? inject(wListPageFrame, null) : null;
|
|
116
119
|
const isPageOwn = isPage && !frame;
|
|
120
|
+
const slots = useSlots();
|
|
121
|
+
const hasHeading = computed(() => !!(props.title || props.description || slots.title || slots.description));
|
|
122
|
+
const isHeadingNested = !isPageOwn;
|
|
117
123
|
provide(wListPageFrame, null);
|
|
118
124
|
provide(wListPageFrameHeader, frame ? {
|
|
119
125
|
target: computed(() => frame.shown.value ? frame.target.value : null),
|
|
@@ -290,7 +296,8 @@ var WList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
|
|
|
290
296
|
class: normalizeClass([listClasses.value, {
|
|
291
297
|
"w-list-page": unref(isPageOwn),
|
|
292
298
|
"w-list-page-table": unref(isPageOwn) && !unref(isGrid),
|
|
293
|
-
"w-list-page-repaint": unref(isPageOwn) && isRepaint.value
|
|
299
|
+
"w-list-page-repaint": unref(isPageOwn) && isRepaint.value,
|
|
300
|
+
"w-list-section": hasHeading.value
|
|
294
301
|
}])
|
|
295
302
|
}, [(openBlock(), createBlock(resolveDynamicComponent(unref(isPageOwn) ? ListPageSurface_default : WEmptyComponent_default), null, {
|
|
296
303
|
default: withCtx(() => [createVNode(WInfiniteList_default, {
|
|
@@ -365,9 +372,23 @@ var WList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
|
|
|
365
372
|
"onSave:width": unref(save),
|
|
366
373
|
"onClick:reset": resetConfig
|
|
367
374
|
}, createSlots({ _: 2 }, [
|
|
368
|
-
_ctx.$slots.header ? {
|
|
375
|
+
_ctx.$slots.header || hasHeading.value ? {
|
|
369
376
|
name: "header",
|
|
370
|
-
fn: withCtx((scope) => [
|
|
377
|
+
fn: withCtx((scope) => [hasHeading.value ? (openBlock(), createBlock(SectionHeading_default, {
|
|
378
|
+
key: 0,
|
|
379
|
+
title: __props.title,
|
|
380
|
+
description: __props.description,
|
|
381
|
+
nested: isHeadingNested,
|
|
382
|
+
class: "w-list-heading pb-2"
|
|
383
|
+
}, createSlots({ _: 2 }, [_ctx.$slots.title ? {
|
|
384
|
+
name: "title",
|
|
385
|
+
fn: withCtx(() => [renderSlot(_ctx.$slots, "title", normalizeProps(guardReactiveProps(scope)))]),
|
|
386
|
+
key: "0"
|
|
387
|
+
} : void 0, _ctx.$slots.description ? {
|
|
388
|
+
name: "description",
|
|
389
|
+
fn: withCtx(() => [renderSlot(_ctx.$slots, "description")]),
|
|
390
|
+
key: "1"
|
|
391
|
+
} : void 0]), 1032, ["title", "description"])) : createCommentVNode("", true), renderSlot(_ctx.$slots, "header", normalizeProps(guardReactiveProps(scope)))]),
|
|
371
392
|
key: "0"
|
|
372
393
|
} : void 0,
|
|
373
394
|
_ctx.$slots.filter ? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListToolbar.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/List/components/ListToolbar.vue"],"names":[],"mappings":"AA4NA;AAoUA,OAAO,KAAK,EAAC,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAC,MAAM,UAAU,CAAA;AACpG,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAA;AAsB3C,QAAA,MAAM,YAAY,GAAK,IAAI,SAAS,WAAW,EAAE,WAAW,EAC3D,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,gBAAgB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAClE;
|
|
1
|
+
{"version":3,"file":"ListToolbar.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/List/components/ListToolbar.vue"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock
|
|
|
15
15
|
// src/components/List/components/ListToolbar.vue?vue&type=script&setup=true&lang.ts
|
|
16
16
|
var _hoisted_1 = {
|
|
17
17
|
key: 0,
|
|
18
|
-
class: "w-list-header"
|
|
18
|
+
class: "w-list-header list:left---left-inner list:w---width-inner list:sticky"
|
|
19
19
|
};
|
|
20
20
|
var _hoisted_2 = { class: "grid grid-cols-[1fr_auto] gap-4" };
|
|
21
21
|
var _hoisted_3 = { class: "text-description whitespace-nowrap" };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WSection.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Surface/WSection.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WSection.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/Surface/WSection.vue"],"names":[],"mappings":"AA0DA;AAmIA,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAA;AAMjD,KAAK,WAAW,GAAG;IACf,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAC;AAYJ,KAAK,WAAW,GAAG;IACjB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;IAClB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,IAAI,CAAA;IACjB,kGAAkG;IAClG,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB,CAAC;AA2IF,QAAA,MAAM,UAAU;WA5LJ,MAAM;iBAOA,MAAM;kBAOL,YAAY;SALrB,MAAM;aAPF,MAAM;6EA6LlB,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -1,27 +1,15 @@
|
|
|
1
1
|
import { wIsModal } from "../Modal/models/injection.js";
|
|
2
2
|
import { SemanticType } from "../../utils/SemanticType.js";
|
|
3
|
+
import SectionHeading_default from "./components/SectionHeading.vue.js";
|
|
3
4
|
import { wSectionNested } from "./models/injection.js";
|
|
4
5
|
import { sectionToneMap } from "./models/utils.js";
|
|
5
|
-
import { createBlock, createCommentVNode, createElementBlock,
|
|
6
|
+
import { createBlock, createCommentVNode, createElementBlock, createSlots, defineComponent, inject, normalizeClass, openBlock, provide, renderSlot, resolveDynamicComponent, unref, withCtx } from "vue";
|
|
6
7
|
// src/components/Surface/WSection.vue?vue&type=script&setup=true&lang.ts
|
|
7
8
|
var _hoisted_1 = {
|
|
8
|
-
key: 0,
|
|
9
|
-
class: "flex flex-wrap items-center gap-x-4 gap-y-2"
|
|
10
|
-
};
|
|
11
|
-
var _hoisted_2 = { class: "mr-auto grid gap-1" };
|
|
12
|
-
var _hoisted_3 = {
|
|
13
|
-
key: 0,
|
|
14
|
-
class: "text-description text-xs font-semibold tracking-wider uppercase"
|
|
15
|
-
};
|
|
16
|
-
var _hoisted_4 = {
|
|
17
|
-
key: 1,
|
|
18
|
-
class: "text-description max-w-prose text-sm text-pretty"
|
|
19
|
-
};
|
|
20
|
-
var _hoisted_5 = {
|
|
21
9
|
key: 1,
|
|
22
10
|
class: "surface-section-body grid content-start gap-4"
|
|
23
11
|
};
|
|
24
|
-
var
|
|
12
|
+
var _hoisted_2 = {
|
|
25
13
|
key: 3,
|
|
26
14
|
class: "surface-section-footer flex flex-wrap items-center gap-2"
|
|
27
15
|
};
|
|
@@ -41,17 +29,39 @@ var WSection_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
41
29
|
return (_ctx, _cache) => {
|
|
42
30
|
return openBlock(), createBlock(resolveDynamicComponent(__props.tag), { class: normalizeClass(["surface-section gap-4", [__props.scroll ? "surface-section-scroll flex flex-col" : "grid", __props.semanticType && __props.semanticType !== unref(SemanticType).SECONDARY ? ["surface-section-tone", unref(sectionToneMap)[__props.semanticType]] : void 0]]) }, {
|
|
43
31
|
default: withCtx(() => [
|
|
44
|
-
__props.title || __props.eyebrow || __props.description || _ctx.$slots.title || _ctx.$slots.description || _ctx.$slots.actions ? (openBlock(),
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
__props.
|
|
51
|
-
|
|
32
|
+
__props.title || __props.eyebrow || __props.description || _ctx.$slots.title || _ctx.$slots.description || _ctx.$slots.actions ? (openBlock(), createBlock(SectionHeading_default, {
|
|
33
|
+
key: 0,
|
|
34
|
+
title: __props.title,
|
|
35
|
+
eyebrow: __props.eyebrow,
|
|
36
|
+
description: __props.description,
|
|
37
|
+
nested: unref(isNested),
|
|
38
|
+
toned: !!__props.semanticType && __props.semanticType !== unref(SemanticType).SECONDARY
|
|
39
|
+
}, createSlots({ _: 2 }, [
|
|
40
|
+
_ctx.$slots.title ? {
|
|
41
|
+
name: "title",
|
|
42
|
+
fn: withCtx(() => [renderSlot(_ctx.$slots, "title")]),
|
|
43
|
+
key: "0"
|
|
44
|
+
} : void 0,
|
|
45
|
+
_ctx.$slots.description ? {
|
|
46
|
+
name: "description",
|
|
47
|
+
fn: withCtx(() => [renderSlot(_ctx.$slots, "description")]),
|
|
48
|
+
key: "1"
|
|
49
|
+
} : void 0,
|
|
50
|
+
_ctx.$slots.actions ? {
|
|
51
|
+
name: "actions",
|
|
52
|
+
fn: withCtx(() => [renderSlot(_ctx.$slots, "actions")]),
|
|
53
|
+
key: "2"
|
|
54
|
+
} : void 0
|
|
55
|
+
]), 1032, [
|
|
56
|
+
"title",
|
|
57
|
+
"eyebrow",
|
|
58
|
+
"description",
|
|
59
|
+
"nested",
|
|
60
|
+
"toned"
|
|
61
|
+
])) : createCommentVNode("", true),
|
|
52
62
|
renderSlot(_ctx.$slots, "head"),
|
|
53
|
-
__props.scroll ? (openBlock(), createElementBlock("div",
|
|
54
|
-
_ctx.$slots.footer ? (openBlock(), createElementBlock("div",
|
|
63
|
+
__props.scroll ? (openBlock(), createElementBlock("div", _hoisted_1, [renderSlot(_ctx.$slots, "default")])) : renderSlot(_ctx.$slots, "default", {}, void 0, void 0, 2),
|
|
64
|
+
_ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_2, [renderSlot(_ctx.$slots, "footer")])) : createCommentVNode("", true)
|
|
55
65
|
]),
|
|
56
66
|
_: 3
|
|
57
67
|
}, 8, ["class"]);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
title?: string;
|
|
3
|
+
eyebrow?: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
nested: boolean;
|
|
6
|
+
toned?: boolean;
|
|
7
|
+
};
|
|
8
|
+
type __VLS_Slots = {
|
|
9
|
+
title?: () => void;
|
|
10
|
+
description?: () => void;
|
|
11
|
+
actions?: () => void;
|
|
12
|
+
};
|
|
13
|
+
declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
14
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
15
|
+
declare const _default: typeof __VLS_export;
|
|
16
|
+
export default _default;
|
|
17
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
18
|
+
new (): {
|
|
19
|
+
$slots: S;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=SectionHeading.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionHeading.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/Surface/components/SectionHeading.vue"],"names":[],"mappings":"AAiCA;AAmDA,KAAK,WAAW,GAAG;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAC;AAGF,KAAK,WAAW,GAAG;IACjB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,CAAC;AA6EF,QAAA,MAAM,UAAU,kSAEd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import SectionHeading_vue_vue_type_script_setup_true_lang_default from "./SectionHeading.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
// src/components/Surface/components/SectionHeading.vue
|
|
3
|
+
var SectionHeading_default = SectionHeading_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
export { SectionHeading_default as default };
|
package/dist/components/Surface/components/SectionHeading.vue_vue_type_script_setup_true_lang.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, normalizeClass, openBlock, renderSlot, resolveDynamicComponent, toDisplayString, withCtx } from "vue";
|
|
2
|
+
// src/components/Surface/components/SectionHeading.vue?vue&type=script&setup=true&lang.ts
|
|
3
|
+
var _hoisted_1 = { class: "flex flex-wrap items-center gap-x-4 gap-y-2" };
|
|
4
|
+
var _hoisted_2 = { class: "mr-auto grid gap-1" };
|
|
5
|
+
var _hoisted_3 = {
|
|
6
|
+
key: 0,
|
|
7
|
+
class: "text-description text-xs font-semibold tracking-wider uppercase"
|
|
8
|
+
};
|
|
9
|
+
var _hoisted_4 = {
|
|
10
|
+
key: 1,
|
|
11
|
+
class: "text-description max-w-prose text-sm text-pretty"
|
|
12
|
+
};
|
|
13
|
+
var SectionHeading_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
14
|
+
__name: "SectionHeading",
|
|
15
|
+
props: {
|
|
16
|
+
title: {},
|
|
17
|
+
eyebrow: {},
|
|
18
|
+
description: {},
|
|
19
|
+
nested: { type: Boolean },
|
|
20
|
+
toned: { type: Boolean }
|
|
21
|
+
},
|
|
22
|
+
setup(__props) {
|
|
23
|
+
return (_ctx, _cache) => {
|
|
24
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [
|
|
25
|
+
__props.eyebrow ? (openBlock(), createElementBlock("div", _hoisted_3, toDisplayString(__props.eyebrow), 1)) : createCommentVNode("", true),
|
|
26
|
+
(openBlock(), createBlock(resolveDynamicComponent(__props.nested ? "h3" : "h2"), { class: normalizeClass(["font-semibold", [__props.nested ? "text-base" : "text-xl", __props.toned ? "text-tone" : "text-accent"]]) }, {
|
|
27
|
+
default: withCtx(() => [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])]),
|
|
28
|
+
_: 3
|
|
29
|
+
}, 8, ["class"])),
|
|
30
|
+
__props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("p", _hoisted_4, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(__props.description), 1)])])) : createCommentVNode("", true)
|
|
31
|
+
]), renderSlot(_ctx.$slots, "actions")]);
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
export { SectionHeading_vue_vue_type_script_setup_true_lang_default as default };
|
package/docs/components/list.md
CHANGED
|
@@ -101,6 +101,8 @@ import WList from 'eco-vue-js/dist/components/List/WList.vue'
|
|
|
101
101
|
|
|
102
102
|
| Prop | Type | Default | Description |
|
|
103
103
|
| --- | --- | --- | --- |
|
|
104
|
+
| `title` | `string` | — | Heading of the list, as a section's: the list is a section of its own on the page, and a part of a section or a modal, with a smaller heading and a line above it after other content. The `title` slot replaces it. |
|
|
105
|
+
| `description` | `string` | — | A line under the heading on what the list holds. The `description` slot replaces it. |
|
|
104
106
|
| `count` | `number` | — | Total number of items, when known in advance. Sizes the skeleton and the select-all. Defaults to the count the query returns. |
|
|
105
107
|
| `fields` | `Fields` | **required** | Field components, one per column, each with a `meta` export for its title, label, ordering field and classes. A meta with `fields` groups nested fields. |
|
|
106
108
|
| `expansion` | `ExpansionComponent<Data, QueryParams>` | — | Detail component shown under a row when the row is clicked. Receives the same props as a field, except `config`. |
|
|
@@ -162,7 +164,9 @@ import WList from 'eco-vue-js/dist/components/List/WList.vue'
|
|
|
162
164
|
|
|
163
165
|
| Slot | Props | Description |
|
|
164
166
|
| --- | --- | --- |
|
|
165
|
-
| `
|
|
167
|
+
| `title` | `{ count: number \| undefined; }` | Heading of the list, in place of `title`, with the count returned by the query. |
|
|
168
|
+
| `description` | — | Line under the heading, in place of `description`. |
|
|
169
|
+
| `header` | `{ count: number \| undefined; }` | Content above the selection bar, under the heading, with the count returned by the query. |
|
|
166
170
|
| `filter` | — | Filters at the start of the selection bar, usually a WListFilter. They keep to one line, the chips that do not fit go to a menu, the list actions move to the end and fold into More first, and a selection replaces them. `--w-list-toolbar-height` sets the bar's height, the inherited input height by default. |
|
|
167
171
|
| `selection` | — | Replaces the buttons at the end of the selection bar — range select, refetch, sort and column settings. |
|
|
168
172
|
| `group` | `{ item: Data; previous: Data \| undefined; skeleton: boolean; }` | Content of the heading before each group of rows, with `groupBy`. The heading spans the whole row, sticks under the toolbar and, in list mode, to the left edge while the rows scroll sideways. Its content is laid out by the slot. `skeleton` is true while the page loads. |
|
package/docs/llms.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# eco-vue-js
|
|
2
2
|
|
|
3
|
-
> Vue 3 UI kit with Tailwind v4 — components, utilities, icons and recipes. These are the docs of version 0.26.
|
|
3
|
+
> Vue 3 UI kit with Tailwind v4 — components, utilities, icons and recipes. These are the docs of version 0.26.31, the one installed next to them. Start with Getting started and Conventions; each component page lists its props, events and slots with examples.
|
|
4
4
|
|
|
5
5
|
Release notes, for what changed between versions: https://github.com/rsmple/eco-vue-js/releases. The docs site, with live demos: https://rsmple.github.io/eco-vue-js/
|
|
6
6
|
|
package/package.json
CHANGED
|
@@ -253,6 +253,36 @@
|
|
|
253
253
|
padding-top: max(0px, 1rem - var(--w-section-padding));
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
+
/*
|
|
257
|
+
* A joined section has no top edge, so neither the lit top edge of a glass shadow. Its shadow is drawn from a box
|
|
258
|
+
* running on up behind the head, and stops at the section's top as the head's stops at its bottom: clipping the section
|
|
259
|
+
* itself would leave a seam between the two fills. A section after another in a stack there is not joined, and its
|
|
260
|
+
* shadow box is its own. Positioned under the utilities, so a sticky section stays sticky.
|
|
261
|
+
*/
|
|
262
|
+
@layer components {
|
|
263
|
+
:where(.surface-section-joined .surface-section:not(.surface-section *, .surface-section-tone)) {
|
|
264
|
+
--w-joined-reach: calc(3rem * var(--w-joined, 0));
|
|
265
|
+
|
|
266
|
+
position: relative;
|
|
267
|
+
|
|
268
|
+
&::before {
|
|
269
|
+
content: "";
|
|
270
|
+
position: absolute;
|
|
271
|
+
inset: calc(var(--w-joined-reach) * -1 - var(--w-section-border) * (1 - var(--w-joined, 0))) calc(var(--w-section-border) * -1) calc(var(--w-section-border) * -1);
|
|
272
|
+
border-radius: inherit;
|
|
273
|
+
box-shadow: var(--w-section-shadow);
|
|
274
|
+
clip-path: inset(calc(var(--w-joined-reach) - 100vh * (1 - var(--w-joined, 0))) -100vw -100vh);
|
|
275
|
+
pointer-events: none;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
@layer utilities {
|
|
281
|
+
.surface-section-joined .surface-section:not(.surface-section *, .surface-section-tone) {
|
|
282
|
+
box-shadow: none;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
256
286
|
/* Reaches into the page gutter like a section: for a row of cards on the canvas. On phones the cards keep the page inset. */
|
|
257
287
|
@utility w-page-bleed {
|
|
258
288
|
margin-inline: calc(var(--w-page-bleed, 0px) * -1);
|
|
@@ -322,16 +352,24 @@
|
|
|
322
352
|
|
|
323
353
|
/*
|
|
324
354
|
* Blocks one after another on the page — sections, stacks of them, page lists, rows of cards, tabs over a section —
|
|
325
|
-
* are apart through the wrappers of any page, as in `surface-stack-divided`: a page needs no stack of its own. In card
|
|
355
|
+
* are apart through the wrappers of any page, and after a wrapper that ends with one, such as a form of sections, as in `surface-stack-divided`: a page needs no stack of its own. In card
|
|
326
356
|
* and glass `--w-section-gap` separates the surfaces; in flat, where sections paint nothing, the blocks are
|
|
327
357
|
* `--w-stack-divide` apart and a section after a section has a line above its content, so its groups read apart there
|
|
328
358
|
* too. Only in block flow, as a grid or a flex box spaces its children itself, not inside a section, where blocks are
|
|
329
359
|
* its parts, and not in a stack the page sets, which spaces its own: `surface-stack` runs sections together in flat.
|
|
330
360
|
*/
|
|
331
361
|
@layer components {
|
|
362
|
+
/*
|
|
363
|
+
* A page list is a section of its own: apart from the content before it, as sections in a `surface-stack` are. In
|
|
364
|
+
* this layer, under the page's spacing below, which wins in block flow; a stack the list is in sets its own.
|
|
365
|
+
*/
|
|
366
|
+
:where(* + .w-list-page-table) {
|
|
367
|
+
margin-top: var(--w-section-gap);
|
|
368
|
+
}
|
|
369
|
+
|
|
332
370
|
@scope (.w-page) to (.surface-section *, .surface-root *) {
|
|
333
371
|
:where(:scope, :scope :not(.grid, .flex, .inline-grid, .inline-flex, .surface-columns, .surface-stack, .surface-stack-divided))
|
|
334
|
-
> :where(.surface-section, .surface-stack, .surface-stack-divided, .surface-columns, .w-list-page, .w-page-bleed, .w-tabs-section)
|
|
372
|
+
> :where(.surface-section, .surface-stack, .surface-stack-divided, .surface-columns, .w-list-page, .w-page-bleed, .w-tabs-section, :has(> :where(.surface-section, .surface-stack, .surface-stack-divided, .surface-columns, .w-list-page, .w-page-bleed, .w-tabs-section):last-child))
|
|
335
373
|
+ :where(.surface-section, .surface-stack, .surface-stack-divided, .surface-columns, .w-list-page, .w-page-bleed, .w-tabs-section) {
|
|
336
374
|
/* 1 in flat, where sections paint nothing, 0 where they do. */
|
|
337
375
|
--w-stack-flat: calc(1 - min(1, var(--w-section-opacity) * 100));
|
|
@@ -354,6 +392,12 @@
|
|
|
354
392
|
padding-top: calc(var(--w-section-padding) + var(--w-stack-divide, 2rem) * var(--w-stack-flat));
|
|
355
393
|
border-top-width: calc(var(--w-section-border) + 1px * var(--w-stack-flat));
|
|
356
394
|
}
|
|
395
|
+
|
|
396
|
+
/* A page list is a section: after a block, the line goes on its surface, which keeps to the view. */
|
|
397
|
+
:where(:scope, :scope :not(.grid, .flex, .inline-grid, .inline-flex, .surface-columns, .surface-stack, .surface-stack-divided))
|
|
398
|
+
> :where(.surface-section, .surface-stack, .surface-stack-divided, .surface-columns, .w-list-page, .w-page-bleed, .w-tabs-section, :has(> :where(.surface-section, .surface-stack, .surface-stack-divided, .surface-columns, .w-list-page, .w-page-bleed, .w-tabs-section):last-child)) + .w-list-page {
|
|
399
|
+
--w-list-line: var(--w-stack-flat);
|
|
400
|
+
}
|
|
357
401
|
}
|
|
358
402
|
}
|
|
359
403
|
|
|
@@ -484,9 +528,11 @@
|
|
|
484
528
|
}
|
|
485
529
|
|
|
486
530
|
/* A part after other content: a line above it, as between the groups of a form. */
|
|
487
|
-
:scope * + .surface-section
|
|
531
|
+
:scope * + .surface-section,
|
|
532
|
+
:scope * + .w-list-section .w-list-heading {
|
|
488
533
|
border-top: 1px solid var(--w-line-subtle);
|
|
489
|
-
padding-top: var(--w-subsection-divide,
|
|
534
|
+
padding-top: var(--w-subsection-divide, 2rem);
|
|
535
|
+
margin-top: var(--w-subsection-divide, 2rem);
|
|
490
536
|
}
|
|
491
537
|
}
|
|
492
538
|
|
|
@@ -995,19 +1041,17 @@
|
|
|
995
1041
|
transparent
|
|
996
1042
|
);
|
|
997
1043
|
|
|
1044
|
+
/* 1 after a block on the page in flat: a line above the list, `--w-stack-divide` over its content. */
|
|
1045
|
+
--w-list-divide: calc(var(--w-stack-divide, 2rem) * var(--w-list-line, 0));
|
|
1046
|
+
|
|
998
1047
|
display: grid;
|
|
999
|
-
padding-block: var(--w-section-padding);
|
|
1048
|
+
padding-block: calc(var(--w-section-padding) + var(--w-list-divide)) var(--w-section-padding);
|
|
1000
1049
|
|
|
1001
1050
|
@variant sm-not {
|
|
1002
1051
|
--w-section-border: 0px;
|
|
1003
1052
|
}
|
|
1004
1053
|
}
|
|
1005
1054
|
|
|
1006
|
-
/* A section of its own: apart from the page content before it, as sections in a `surface-stack` are. A stack it is in sets its own. */
|
|
1007
|
-
:where(* + .w-list-page-table) {
|
|
1008
|
-
margin-top: var(--w-section-gap);
|
|
1009
|
-
}
|
|
1010
|
-
|
|
1011
1055
|
/* As wide as its rows, plus the right inset: the last column scrolls clear of the sticky menu column. */
|
|
1012
1056
|
.w-list-page-table {
|
|
1013
1057
|
width: max-content;
|
|
@@ -1055,6 +1099,23 @@
|
|
|
1055
1099
|
}
|
|
1056
1100
|
}
|
|
1057
1101
|
|
|
1102
|
+
/*
|
|
1103
|
+
* A page list of cards wraps and never scrolls sideways: while a table scrolls the window, its content keeps to the
|
|
1104
|
+
* view as content beside the table does. Its parts stick on their own, as a table's toolbar does, and not as one
|
|
1105
|
+
* box: the stuck header would stick inside another sticky box, which browsers move apart from it while scrolling,
|
|
1106
|
+
* and the box's layer would hold the header and the edges under the frame. The surface, frame and edges keep to the
|
|
1107
|
+
* view already.
|
|
1108
|
+
*/
|
|
1109
|
+
:root[data-w-page-table] .w-list-page:not(.w-list-page-table) {
|
|
1110
|
+
@variant sm {
|
|
1111
|
+
& :where(.w-list-page-content > :not(.w-infinite-list-header, .w-list-page-end), .w-infinite-list-header > :not(.w-infinite-list-header-edge)) {
|
|
1112
|
+
position: sticky;
|
|
1113
|
+
left: var(--w-left-inner);
|
|
1114
|
+
max-width: var(--w-width-inner);
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1118
|
+
|
|
1058
1119
|
/* What a page sets in the list's header, such as its title, keeps the page inset there. */
|
|
1059
1120
|
.w-list-page .w-list-header {
|
|
1060
1121
|
@variant sm-not {
|
|
@@ -1079,8 +1140,10 @@
|
|
|
1079
1140
|
}
|
|
1080
1141
|
|
|
1081
1142
|
.w-list-page-surface {
|
|
1143
|
+
margin-top: calc((var(--w-section-padding) + var(--w-list-divide)) * -1);
|
|
1082
1144
|
background-color: var(--w-section-paint);
|
|
1083
1145
|
border: var(--w-section-border) solid var(--w-line-subtle);
|
|
1146
|
+
border-top-width: calc(var(--w-section-border) + 1px * var(--w-list-line, 0));
|
|
1084
1147
|
backdrop-filter: var(--w-section-backdrop);
|
|
1085
1148
|
}
|
|
1086
1149
|
|