@resee-movies/nuxt-ux 0.0.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module.json +1 -1
- package/dist/module.mjs +43 -9
- package/dist/runtime/components/{UiButton.vue → Button.vue} +6 -4
- package/dist/runtime/components/{UiButton.vue.d.ts → Button.vue.d.ts} +6 -6
- package/dist/runtime/components/{UiCard.vue → Card.vue} +4 -0
- package/dist/runtime/components/Card.vue.d.ts +21 -0
- package/dist/runtime/components/CloseButton.vue +14 -0
- package/dist/runtime/components/Dialog.vue +121 -0
- package/dist/runtime/components/Dialog.vue.d.ts +31 -0
- package/dist/runtime/components/Drawer.vue +91 -0
- package/dist/runtime/components/Drawer.vue.d.ts +23 -0
- package/dist/runtime/components/{UiHeading.vue → Heading.vue} +4 -0
- package/dist/runtime/components/Heading.vue.d.ts +17 -0
- package/dist/runtime/components/Icon.vue +24 -0
- package/dist/runtime/components/Icon.vue.d.ts +14 -0
- package/dist/runtime/components/{UiIconTextPair.vue → IconTextPair.vue} +3 -3
- package/dist/runtime/components/{UiIconTextPair.vue.d.ts → IconTextPair.vue.d.ts} +6 -6
- package/dist/runtime/components/Image.vue +149 -0
- package/dist/runtime/components/Image.vue.d.ts +59 -0
- package/dist/runtime/components/{UiLayoutPageColumn.vue → LayoutPageColumn.vue} +1 -1
- package/dist/runtime/components/{UiLayoutPageColumn.vue.d.ts → LayoutPageColumn.vue.d.ts} +3 -3
- package/dist/runtime/components/{UiLayoutPageContainer.vue.d.ts → LayoutPageContainer.vue.d.ts} +3 -3
- package/dist/runtime/components/{UiLink.vue → Link.vue} +6 -4
- package/dist/runtime/components/{UiLink.vue.d.ts → Link.vue.d.ts} +7 -7
- package/dist/runtime/components/{UiLoadingIndicator.vue → LoadingIndicator.vue} +4 -0
- package/dist/runtime/components/LoadingIndicator.vue.d.ts +9 -0
- package/dist/runtime/components/{UiLorem.vue → Lorem.vue} +4 -0
- package/dist/runtime/components/{UiLorem.vue.d.ts → Lorem.vue.d.ts} +3 -3
- package/dist/runtime/components/{UiMessage.vue → Message.vue} +2 -1
- package/dist/runtime/components/{UiMessage.vue.d.ts → Message.vue.d.ts} +3 -3
- package/dist/runtime/components/{UiNotificationContainer.vue → NotificationContainer.vue} +1 -0
- package/dist/runtime/components/NotificationContainer.vue.d.ts +3 -0
- package/dist/runtime/components/{UiProgressBar.vue → ProgressBar.vue} +5 -0
- package/dist/runtime/components/{UiProgressBar.vue.d.ts → ProgressBar.vue.d.ts} +3 -3
- package/dist/runtime/components/{UiTag.vue → Tag.vue} +9 -2
- package/dist/runtime/components/{UiTag.vue.d.ts → Tag.vue.d.ts} +3 -3
- package/dist/runtime/composables/use-load-image.d.ts +23 -0
- package/dist/runtime/composables/use-load-image.js +109 -0
- package/dist/runtime/config.d.ts +18 -0
- package/dist/runtime/config.js +15 -0
- package/dist/runtime/theme/css/brand/theme.css +1 -1
- package/dist/runtime/theme/css/brand/tooltip.css +1 -1
- package/dist/runtime/theme/css/brand/transition.css +1 -1
- package/dist/runtime/theme/css/brand/utilities.css +1 -1
- package/dist/runtime/types/index.d.ts +6 -0
- package/package.json +7 -3
- package/dist/runtime/components/UiCard.vue.d.ts +0 -24
- package/dist/runtime/components/UiHeading.vue.d.ts +0 -20
- package/dist/runtime/components/UiIcon.vue +0 -23
- package/dist/runtime/components/UiIcon.vue.d.ts +0 -12
- package/dist/runtime/components/UiLoadingIndicator.vue.d.ts +0 -9
- package/dist/runtime/composables/use-nuxt-ux-config.d.ts +0 -24
- package/dist/runtime/composables/use-nuxt-ux-config.js +0 -15
- /package/dist/runtime/components/{UiNotificationContainer.vue.d.ts → CloseButton.vue.d.ts} +0 -0
- /package/dist/runtime/components/{UiLayoutPageContainer.vue → LayoutPageContainer.vue} +0 -0
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -105,7 +105,7 @@ async function importCSS(nuxt = useNuxt(), options) {
|
|
|
105
105
|
});
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
function importModules() {
|
|
108
|
+
function importModules(nuxt) {
|
|
109
109
|
const NuxtFonts = {
|
|
110
110
|
defaults: {
|
|
111
111
|
families: [
|
|
@@ -118,6 +118,20 @@ function importModules() {
|
|
|
118
118
|
]
|
|
119
119
|
}
|
|
120
120
|
};
|
|
121
|
+
const primeOptions = nuxt.options.ux?.primevue;
|
|
122
|
+
const componentPrefix = primeOptions?.componentPrefix ?? "Prime";
|
|
123
|
+
const primeComponents = Array.from(
|
|
124
|
+
/* @__PURE__ */ new Set([
|
|
125
|
+
"Dialog",
|
|
126
|
+
"Drawer",
|
|
127
|
+
"Message",
|
|
128
|
+
"ProgressBar",
|
|
129
|
+
"ProgressSpinner",
|
|
130
|
+
"Tag",
|
|
131
|
+
"Toast",
|
|
132
|
+
...primeOptions?.includeComponents ?? []
|
|
133
|
+
])
|
|
134
|
+
);
|
|
121
135
|
const Primevue = {
|
|
122
136
|
defaults: {
|
|
123
137
|
autoImport: false,
|
|
@@ -129,15 +143,15 @@ function importModules() {
|
|
|
129
143
|
unstyled: true
|
|
130
144
|
},
|
|
131
145
|
composables: {
|
|
132
|
-
include: ["useToast"]
|
|
146
|
+
include: ["usePrimeVue", "useToast"]
|
|
133
147
|
},
|
|
134
148
|
directives: {
|
|
135
|
-
prefix:
|
|
149
|
+
prefix: componentPrefix,
|
|
136
150
|
include: ["Tooltip"]
|
|
137
151
|
},
|
|
138
152
|
components: {
|
|
139
|
-
prefix:
|
|
140
|
-
include:
|
|
153
|
+
prefix: componentPrefix,
|
|
154
|
+
include: primeComponents
|
|
141
155
|
}
|
|
142
156
|
}
|
|
143
157
|
};
|
|
@@ -175,32 +189,52 @@ async function importTailwind(nuxt = useNuxt()) {
|
|
|
175
189
|
}
|
|
176
190
|
|
|
177
191
|
const module = defineNuxtModule({
|
|
178
|
-
defaults: {
|
|
192
|
+
defaults: {
|
|
193
|
+
componentPrefix: "Ui"
|
|
194
|
+
},
|
|
179
195
|
meta: {
|
|
180
196
|
name: "@resee-movies/nuxt-ux",
|
|
181
197
|
configKey: "ux"
|
|
182
198
|
},
|
|
183
|
-
moduleDependencies: () => importModules(),
|
|
199
|
+
moduleDependencies: (nuxt) => importModules(nuxt),
|
|
184
200
|
async setup(options, nuxt) {
|
|
185
201
|
const resolver = createResolver(import.meta.url);
|
|
186
202
|
const components = resolver.resolve("./runtime/components/");
|
|
187
203
|
const composables = resolver.resolve("./runtime/composables/");
|
|
188
204
|
const server = resolver.resolve("./runtime/server/");
|
|
189
205
|
const stylesheet = resolver.resolve("./runtime/theme/css/styles.css");
|
|
190
|
-
nuxt.options.alias["#resee-
|
|
206
|
+
nuxt.options.alias["#resee-ux"] = resolver.resolve("./runtime");
|
|
191
207
|
const sources = options.tailwind?.sources?.slice() ?? [];
|
|
192
208
|
const plugins = options.tailwind?.plugins?.slice() ?? [];
|
|
193
209
|
const imports = options.tailwind?.plugins?.slice() ?? [];
|
|
194
210
|
sources.push(components);
|
|
195
211
|
plugins.push(await resolvePath("@egoist/tailwindcss-icons"));
|
|
196
212
|
imports.push(stylesheet);
|
|
197
|
-
addComponentsDir({ path: components });
|
|
213
|
+
addComponentsDir({ path: components, prefix: options.componentPrefix });
|
|
198
214
|
addImportsDir([composables]);
|
|
199
215
|
addServerScanDir([server]);
|
|
200
216
|
await importTailwind(nuxt);
|
|
201
217
|
nuxt.hook("modules:done", async () => {
|
|
202
218
|
await importCSS(nuxt, { sources, plugins, imports });
|
|
203
219
|
});
|
|
220
|
+
let primePassthroughFilename = await resolver.resolvePath("./runtime/theme/primevue/index", {
|
|
221
|
+
extensions: ["ts", "js"]
|
|
222
|
+
});
|
|
223
|
+
if (options.primevue?.passthroughImport) {
|
|
224
|
+
const ownPassthroughFilename = primePassthroughFilename;
|
|
225
|
+
primePassthroughFilename = addTemplate({
|
|
226
|
+
filename: "resee-movies-nuxt-ux-primevue-passthrough.js",
|
|
227
|
+
write: true,
|
|
228
|
+
// language=js
|
|
229
|
+
getContents: () => `
|
|
230
|
+
import OwnPassthrough from '${ownPassthroughFilename}';
|
|
231
|
+
import ExtPassthrough from '${options.primevue?.passthroughImport}';
|
|
232
|
+
|
|
233
|
+
export default { ...OwnPassthrough, ...ExtPassthrough };
|
|
234
|
+
`
|
|
235
|
+
}).dst;
|
|
236
|
+
}
|
|
237
|
+
nuxt.options.alias["#resee-movies-nuxt-ux-primevue-passthrough"] = primePassthroughFilename;
|
|
204
238
|
}
|
|
205
239
|
});
|
|
206
240
|
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
'icon-only': iconOnly
|
|
17
17
|
}
|
|
18
18
|
]"
|
|
19
|
-
v-
|
|
20
|
-
@click
|
|
19
|
+
v-prime-tooltip.top = "{ value: tooltipText, showDelay: 250 }"
|
|
20
|
+
@click = "handleButtonClick"
|
|
21
21
|
>
|
|
22
|
-
<
|
|
22
|
+
<IconTextPair
|
|
23
23
|
:text = "props.text"
|
|
24
24
|
:icon = "props.icon"
|
|
25
25
|
:icon-size = "props.size"
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
:loading = "showLoading"
|
|
30
30
|
>
|
|
31
31
|
<slot />
|
|
32
|
-
</
|
|
32
|
+
</IconTextPair>
|
|
33
33
|
</Component>
|
|
34
34
|
</template>
|
|
35
35
|
|
|
@@ -40,6 +40,8 @@ import { computed, ref, useSlots } from "vue";
|
|
|
40
40
|
</script>
|
|
41
41
|
|
|
42
42
|
<script setup>
|
|
43
|
+
import vPrimeTooltip from "primevue/tooltip";
|
|
44
|
+
import IconTextPair from "./IconTextPair.vue";
|
|
43
45
|
defineEmits(["click"]);
|
|
44
46
|
const props = defineProps({
|
|
45
47
|
is: { type: null, required: false, default: "button" },
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type Component } from 'vue';
|
|
2
2
|
import type { StyleStatusLevel } from '../types/index.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { IconTextPairProps } from './IconTextPair.vue.js';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Button component properties.
|
|
6
6
|
*
|
|
7
7
|
* A note about the `responsive` prop:
|
|
8
8
|
*
|
|
@@ -13,7 +13,7 @@ import type { UiIconTextPairProps } from './UiIconTextPair.vue.js';
|
|
|
13
13
|
* When "grow", causes the button to expand to the full width of its container, and
|
|
14
14
|
* increase its font size when at the small breakpoint.
|
|
15
15
|
*/
|
|
16
|
-
export
|
|
16
|
+
export interface ButtonProps extends IconTextPairProps {
|
|
17
17
|
is?: string | Component;
|
|
18
18
|
severity?: StyleStatusLevel | 'unset';
|
|
19
19
|
bordered?: boolean;
|
|
@@ -25,10 +25,10 @@ export type UiButtonProps = {
|
|
|
25
25
|
tooltip?: string;
|
|
26
26
|
disabledTooltip?: string;
|
|
27
27
|
onClick?: ((evt: Event) => void | Promise<void>) | ((evt: Event) => void | Promise<void>)[];
|
|
28
|
-
}
|
|
29
|
-
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<
|
|
28
|
+
}
|
|
29
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
30
30
|
click: (evt: Event) => any;
|
|
31
|
-
}, string, import("vue").PublicProps, Readonly<
|
|
31
|
+
}, string, import("vue").PublicProps, Readonly<ButtonProps> & Readonly<{
|
|
32
32
|
onClick?: ((evt: Event) => any) | undefined;
|
|
33
33
|
}>, {
|
|
34
34
|
size: "sm" | "lg";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface CardProps {
|
|
2
|
+
is?: string;
|
|
3
|
+
interactive?: boolean;
|
|
4
|
+
}
|
|
5
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<CardProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<CardProps> & Readonly<{}>, {
|
|
6
|
+
is: string;
|
|
7
|
+
interactive: boolean;
|
|
8
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
9
|
+
default?: (props: {}) => any;
|
|
10
|
+
} & {
|
|
11
|
+
image?: (props: {}) => any;
|
|
12
|
+
} & {
|
|
13
|
+
content?: (props: {}) => any;
|
|
14
|
+
}>;
|
|
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
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<Button
|
|
3
|
+
:aria-label = "primevue.config.locale?.aria?.close"
|
|
4
|
+
:tooltip = "primevue.config.locale?.aria?.close"
|
|
5
|
+
:bordered = "false"
|
|
6
|
+
icon = "i-ph-x"
|
|
7
|
+
/>
|
|
8
|
+
</template>
|
|
9
|
+
|
|
10
|
+
<script setup>
|
|
11
|
+
import { usePrimeVue } from "primevue/config";
|
|
12
|
+
import Button from "./Button.vue";
|
|
13
|
+
const primevue = usePrimeVue();
|
|
14
|
+
</script>
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<PrimeDialog
|
|
3
|
+
:visible = "props.visible"
|
|
4
|
+
:modal = "props.modal"
|
|
5
|
+
:closable = "props.closable"
|
|
6
|
+
:draggable = "props.draggable"
|
|
7
|
+
:header = "props.showHeaderText ? props.header : void 0"
|
|
8
|
+
:show-header = "props.showHeader"
|
|
9
|
+
:aria-label = "props.showHeader && props.showHeaderText ? void 0 : props.header"
|
|
10
|
+
:footer = "props.footer"
|
|
11
|
+
:dismissable-mask = "props.dismissableMask"
|
|
12
|
+
:position = "props.position"
|
|
13
|
+
:class = "['dialog', dialogWidth]"
|
|
14
|
+
:content-class = "props.contentClass"
|
|
15
|
+
:pt = "passthroughProps"
|
|
16
|
+
:aria-labelledby = "dialogLabelledBy"
|
|
17
|
+
@update:visible = "(updatedValue) => emits('update:visible', updatedValue)"
|
|
18
|
+
>
|
|
19
|
+
<template #header>
|
|
20
|
+
<div class="title" :id="dialogLabelledBy">
|
|
21
|
+
<slot v-if="props.showHeaderText" name="title">
|
|
22
|
+
{{ props.header }}
|
|
23
|
+
</slot>
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<template #closebutton="{ closeCallback }">
|
|
28
|
+
<CloseButton @click="closeCallback" />
|
|
29
|
+
</template>
|
|
30
|
+
|
|
31
|
+
<template #default>
|
|
32
|
+
<slot />
|
|
33
|
+
</template>
|
|
34
|
+
</PrimeDialog>
|
|
35
|
+
</template>
|
|
36
|
+
|
|
37
|
+
<script>
|
|
38
|
+
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<script setup>
|
|
42
|
+
import { computed, useId, useAttrs } from "vue";
|
|
43
|
+
import PrimeDialog from "primevue/dialog";
|
|
44
|
+
import CloseButton from "./CloseButton.vue";
|
|
45
|
+
const props = defineProps({
|
|
46
|
+
size: { type: String, required: false, default: "md" },
|
|
47
|
+
showHeaderText: { type: Boolean, required: false, default: true },
|
|
48
|
+
header: { type: null, required: false },
|
|
49
|
+
footer: { type: null, required: false },
|
|
50
|
+
visible: { type: Boolean, required: false, skipCheck: true },
|
|
51
|
+
modal: { type: Boolean, required: false, skipCheck: true, default: true },
|
|
52
|
+
contentStyle: { type: null, required: false },
|
|
53
|
+
contentClass: { type: null, required: false, default: void 0 },
|
|
54
|
+
contentProps: { type: null, required: false },
|
|
55
|
+
closable: { type: Boolean, required: false, skipCheck: true, default: true },
|
|
56
|
+
dismissableMask: { type: Boolean, required: false, skipCheck: true, default: true },
|
|
57
|
+
closeOnEscape: { type: Boolean, required: false, skipCheck: true },
|
|
58
|
+
showHeader: { type: Boolean, required: false, skipCheck: true, default: true },
|
|
59
|
+
blockScroll: { type: Boolean, required: false, skipCheck: true },
|
|
60
|
+
baseZIndex: { type: null, required: false },
|
|
61
|
+
autoZIndex: { type: Boolean, required: false, skipCheck: true },
|
|
62
|
+
position: { type: null, required: false, default: void 0 },
|
|
63
|
+
maximizable: { type: Boolean, required: false, skipCheck: true },
|
|
64
|
+
breakpoints: { type: Object, required: false },
|
|
65
|
+
draggable: { type: Boolean, required: false, skipCheck: true, default: false },
|
|
66
|
+
keepInViewport: { type: Boolean, required: false, skipCheck: true },
|
|
67
|
+
minX: { type: null, required: false },
|
|
68
|
+
minY: { type: null, required: false },
|
|
69
|
+
appendTo: { type: null, required: false },
|
|
70
|
+
style: { type: null, required: false },
|
|
71
|
+
closeIcon: { type: null, required: false },
|
|
72
|
+
maximizeIcon: { type: null, required: false },
|
|
73
|
+
minimizeIcon: { type: null, required: false },
|
|
74
|
+
closeButtonProps: { type: null, required: false },
|
|
75
|
+
maximizeButtonProps: { type: null, required: false },
|
|
76
|
+
dt: { type: null, required: false },
|
|
77
|
+
pt: { type: null, required: false },
|
|
78
|
+
ptOptions: { type: Object, required: false },
|
|
79
|
+
unstyled: { type: Boolean, required: false }
|
|
80
|
+
});
|
|
81
|
+
const emits = defineEmits(["update:visible"]);
|
|
82
|
+
const attrs = useAttrs();
|
|
83
|
+
const dialogId = useId();
|
|
84
|
+
const dialogWidth = computed(() => {
|
|
85
|
+
switch (props.size) {
|
|
86
|
+
case "lg":
|
|
87
|
+
return "max-w-5xl";
|
|
88
|
+
case "sm":
|
|
89
|
+
return "max-w-xl";
|
|
90
|
+
case "xs":
|
|
91
|
+
return "max-w-md";
|
|
92
|
+
case "xxs":
|
|
93
|
+
return "max-w-sm";
|
|
94
|
+
default:
|
|
95
|
+
return "max-w-3xl";
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
const dialogLabelledBy = computed(() => {
|
|
99
|
+
return !attrs["aria-label"] ? `${dialogId}_header` : void 0;
|
|
100
|
+
});
|
|
101
|
+
const passthroughProps = computed(() => {
|
|
102
|
+
return {
|
|
103
|
+
header: {
|
|
104
|
+
class: "header"
|
|
105
|
+
},
|
|
106
|
+
content: {
|
|
107
|
+
class: "content"
|
|
108
|
+
},
|
|
109
|
+
mask: {
|
|
110
|
+
class: "occlude-background"
|
|
111
|
+
},
|
|
112
|
+
transition: {
|
|
113
|
+
name: "scale"
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
});
|
|
117
|
+
</script>
|
|
118
|
+
|
|
119
|
+
<style>
|
|
120
|
+
@reference "tailwindcss";.dialog{background-color:var(--color-global-background);border:1px solid var(--color-global-background-accent);border-radius:var(--radius-md);height:calc(100% - --spacing(4));margin:--spacing(2);overflow:clip;width:100%;@variant sm{box-shadow:var(--shadow-heavy);height:auto}}.dialog .header{align-items:center;border-bottom:1px solid var(--color-global-background-accent);display:flex;gap:--spacing(3);margin-inline:--spacing(3);margin-top:--spacing(3);padding-bottom:--spacing(3)}.dialog .header .title{flex-grow:1;font-size:var(--text-lg)}.dialog .content{overflow-y:auto;padding:--spacing(3)}
|
|
121
|
+
</style>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { DialogProps as PrimeDialogProps } from 'primevue';
|
|
2
|
+
export interface DialogProps extends PrimeDialogProps {
|
|
3
|
+
size?: 'xxs' | 'xs' | 'sm' | 'md' | 'lg';
|
|
4
|
+
showHeaderText?: boolean;
|
|
5
|
+
}
|
|
6
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<DialogProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
7
|
+
"update:visible": (visible: boolean) => any;
|
|
8
|
+
}, string, import("vue").PublicProps, Readonly<DialogProps> & Readonly<{
|
|
9
|
+
"onUpdate:visible"?: ((visible: boolean) => any) | undefined;
|
|
10
|
+
}>, {
|
|
11
|
+
size: "xxs" | "xs" | "sm" | "md" | "lg";
|
|
12
|
+
showHeaderText: boolean;
|
|
13
|
+
modal: boolean;
|
|
14
|
+
contentClass: any;
|
|
15
|
+
closable: boolean;
|
|
16
|
+
dismissableMask: boolean;
|
|
17
|
+
showHeader: boolean;
|
|
18
|
+
position: import("@primevue/core").HintedString<"top" | "center" | "bottom" | "left" | "right" | "topleft" | "topright" | "bottomleft" | "bottomright">;
|
|
19
|
+
draggable: boolean;
|
|
20
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
21
|
+
title?: (props: {}) => any;
|
|
22
|
+
} & {
|
|
23
|
+
default?: (props: {}) => any;
|
|
24
|
+
}>;
|
|
25
|
+
declare const _default: typeof __VLS_export;
|
|
26
|
+
export default _default;
|
|
27
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
28
|
+
new (): {
|
|
29
|
+
$slots: S;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<PrimeDrawer
|
|
3
|
+
:class ="['drawer', `drawer-${props.position ?? 'left'}`]"
|
|
4
|
+
:visible = "props.visible"
|
|
5
|
+
:position = "props.position"
|
|
6
|
+
:block-scroll = "props.blockScroll"
|
|
7
|
+
:aria-label = "props.showHeaderText ? void 0 : props.header"
|
|
8
|
+
:pt = "passthroughProps"
|
|
9
|
+
@update:visible = "(updatedValue) => emits('update:visible', updatedValue)"
|
|
10
|
+
>
|
|
11
|
+
<template #closebutton="{ closeCallback }">
|
|
12
|
+
<CloseButton @click="closeCallback" />
|
|
13
|
+
</template>
|
|
14
|
+
|
|
15
|
+
<template #header>
|
|
16
|
+
<div class="title">
|
|
17
|
+
<slot v-if="props.showHeaderText" name="title">
|
|
18
|
+
{{ props.header }}
|
|
19
|
+
</slot>
|
|
20
|
+
</div>
|
|
21
|
+
</template>
|
|
22
|
+
|
|
23
|
+
<template #default>
|
|
24
|
+
<slot />
|
|
25
|
+
</template>
|
|
26
|
+
</PrimeDrawer>
|
|
27
|
+
</template>
|
|
28
|
+
|
|
29
|
+
<script>
|
|
30
|
+
import { calculateBodyScrollbarWidth } from "@primeuix/utils";
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<script setup>
|
|
34
|
+
import { computed } from "vue";
|
|
35
|
+
import PrimeDrawer from "primevue/drawer";
|
|
36
|
+
import CloseButton from "./CloseButton.vue";
|
|
37
|
+
const props = defineProps({
|
|
38
|
+
showHeaderText: { type: Boolean, required: false, default: true },
|
|
39
|
+
visible: { type: Boolean, required: false, skipCheck: true },
|
|
40
|
+
position: { type: null, required: false },
|
|
41
|
+
header: { type: null, required: false },
|
|
42
|
+
baseZIndex: { type: null, required: false },
|
|
43
|
+
autoZIndex: { type: Boolean, required: false, skipCheck: true },
|
|
44
|
+
dismissable: { type: Boolean, required: false, skipCheck: true },
|
|
45
|
+
showCloseIcon: { type: Boolean, required: false, skipCheck: true },
|
|
46
|
+
closeButtonProps: { type: null, required: false },
|
|
47
|
+
closeIcon: { type: null, required: false },
|
|
48
|
+
modal: { type: Boolean, required: false, skipCheck: true },
|
|
49
|
+
blockScroll: { type: Boolean, required: false, skipCheck: true, default: true },
|
|
50
|
+
dt: { type: null, required: false },
|
|
51
|
+
pt: { type: null, required: false },
|
|
52
|
+
ptOptions: { type: Object, required: false },
|
|
53
|
+
unstyled: { type: Boolean, required: false },
|
|
54
|
+
closeOnEscape: { type: Boolean, required: false, skipCheck: true }
|
|
55
|
+
});
|
|
56
|
+
const emits = defineEmits(["update:visible"]);
|
|
57
|
+
const passthroughProps = computed(() => {
|
|
58
|
+
return {
|
|
59
|
+
header() {
|
|
60
|
+
return {
|
|
61
|
+
class: [
|
|
62
|
+
"header",
|
|
63
|
+
{
|
|
64
|
+
"me-3": props.position !== "right" || calculateBodyScrollbarWidth() === 0
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
};
|
|
68
|
+
},
|
|
69
|
+
content: {
|
|
70
|
+
class: "content"
|
|
71
|
+
},
|
|
72
|
+
mask() {
|
|
73
|
+
return {
|
|
74
|
+
class: [
|
|
75
|
+
"occlude-background",
|
|
76
|
+
{
|
|
77
|
+
"replace-scrollbar": props.position === "right"
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
};
|
|
81
|
+
},
|
|
82
|
+
transition: {
|
|
83
|
+
name: `slide-in-${props.position ?? "left"}`
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
});
|
|
87
|
+
</script>
|
|
88
|
+
|
|
89
|
+
<style>
|
|
90
|
+
@reference "tailwindcss";.drawer{background:var(--color-global-background);border-color:var(--color-global-background-accent)}.drawer.drawer-left{border-right-width:1px;box-shadow:var(--shadow-heavy-right);height:100%;width:--spacing(80)}.drawer.drawer-right{border-left-width:1px;box-shadow:var(--shadow-heavy-left);height:100%;width:--spacing(80)}.drawer.drawer-top{border-bottom-width:1px;box-shadow:var(--shadow-heavy);width:100%}.drawer.drawer-bottom{border-top-width:1px;box-shadow:var(--shadow-heavy-top);width:100%}.drawer .header{align-items:center;border-bottom:1px solid var(--color-global-background-accent);display:flex;margin-inline-start:--spacing(3);margin-top:--spacing(3);padding-bottom:--spacing(3)}.drawer .header .title{flex-grow:1;font-size:var(--text-lg)}.drawer .content{height:100%;overflow-y:auto;padding-bottom:--spacing(3);padding-top:--spacing(3);padding-inline-start:--spacing(3);width:100%}
|
|
91
|
+
</style>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { DrawerProps as PrimeDrawerProps } from 'primevue';
|
|
2
|
+
export interface DrawerProps extends PrimeDrawerProps {
|
|
3
|
+
showHeaderText?: boolean;
|
|
4
|
+
}
|
|
5
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<DrawerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
6
|
+
"update:visible": (visible: boolean) => any;
|
|
7
|
+
}, string, import("vue").PublicProps, Readonly<DrawerProps> & Readonly<{
|
|
8
|
+
"onUpdate:visible"?: ((visible: boolean) => any) | undefined;
|
|
9
|
+
}>, {
|
|
10
|
+
showHeaderText: boolean;
|
|
11
|
+
blockScroll: boolean;
|
|
12
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
13
|
+
title?: (props: {}) => any;
|
|
14
|
+
} & {
|
|
15
|
+
default?: (props: {}) => any;
|
|
16
|
+
}>;
|
|
17
|
+
declare const _default: typeof __VLS_export;
|
|
18
|
+
export default _default;
|
|
19
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
20
|
+
new (): {
|
|
21
|
+
$slots: S;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface HeadingProps {
|
|
2
|
+
text?: string | null;
|
|
3
|
+
level?: '1' | '2' | '3' | '4' | '5' | '6' | 1 | 2 | 3 | 4 | 5 | 6;
|
|
4
|
+
}
|
|
5
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<HeadingProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<HeadingProps> & Readonly<{}>, {
|
|
6
|
+
text: string | null;
|
|
7
|
+
level: "1" | "2" | "3" | "4" | "5" | "6" | 1 | 2 | 3 | 4 | 5 | 6;
|
|
8
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
9
|
+
default?: (props: {}) => any;
|
|
10
|
+
}>;
|
|
11
|
+
declare const _default: typeof __VLS_export;
|
|
12
|
+
export default _default;
|
|
13
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
14
|
+
new (): {
|
|
15
|
+
$slots: S;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<Transition name="fade" mode="out-in">
|
|
3
|
+
<LoadingIndicator v-if="props.loading" :size="props.size" class="icon" />
|
|
4
|
+
<span v-else role="presentation" :class="['icon', props.name, props.size, { 'color-cycle': props.colorCycle }]" />
|
|
5
|
+
</Transition>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script>
|
|
9
|
+
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<script setup>
|
|
13
|
+
import LoadingIndicator from "./LoadingIndicator.vue";
|
|
14
|
+
const props = defineProps({
|
|
15
|
+
name: { type: String, required: false, default: void 0 },
|
|
16
|
+
loading: { type: Boolean, required: false, default: false },
|
|
17
|
+
size: { type: String, required: false, default: "md" },
|
|
18
|
+
colorCycle: { type: Boolean, required: false, default: false }
|
|
19
|
+
});
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<style scoped>
|
|
23
|
+
.icon{align-items:center;display:inline-flex}.icon:before{content:var(--zero-width-space)}.icon.sm{font-size:var(--icon-size-small)}.icon.md{font-size:var(--icon-size-medium)}.icon.lg{font-size:var(--icon-size-large)}.icon.xl{font-size:var(--icon-size-jumbo)}.icon.color-cycle{--resee-color-cycle-timing:cubic-bezier(0,.5,1,.5);animation-duration:8s;animation-iteration-count:infinite;animation-name:resee-color-cycle}@keyframes resee-color-cycle{0%{animation-timing-function:var(--resee-color-cycle-timing);color:var(--color-resee-red)}6.25%{animation-timing-function:var(--resee-color-cycle-timing);color:var(--color-resee-orange)}18.75%{animation-timing-function:var(--resee-color-cycle-timing);color:var(--color-resee-yellow)}31.25%{animation-timing-function:var(--resee-color-cycle-timing);color:var(--color-resee-green)}43.75%{animation-timing-function:var(--resee-color-cycle-timing);color:var(--color-resee-seaweed)}56.25%{animation-timing-function:var(--resee-color-cycle-timing);color:var(--color-resee-aqua)}68.75%{animation-timing-function:var(--resee-color-cycle-timing);color:var(--color-resee-blue)}81.25%{animation-timing-function:var(--resee-color-cycle-timing);color:var(--color-resee-indigo)}93.75%{animation-timing-function:var(--resee-color-cycle-timing);color:var(--color-resee-violet)}to{animation-timing-function:var(--resee-color-cycle-timing);color:var(--color-resee-red)}}
|
|
24
|
+
</style>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface IconProps {
|
|
2
|
+
name?: string;
|
|
3
|
+
loading?: boolean;
|
|
4
|
+
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
5
|
+
colorCycle?: boolean;
|
|
6
|
+
}
|
|
7
|
+
declare const __VLS_export: import("vue").DefineComponent<IconProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<IconProps> & Readonly<{}>, {
|
|
8
|
+
size: "sm" | "md" | "lg" | "xl";
|
|
9
|
+
name: string;
|
|
10
|
+
loading: boolean;
|
|
11
|
+
colorCycle: boolean;
|
|
12
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
13
|
+
declare const _default: typeof __VLS_export;
|
|
14
|
+
export default _default;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
props.spacing ? `spacing-${props.spacing}` : void 0
|
|
7
7
|
]"
|
|
8
8
|
>
|
|
9
|
-
<
|
|
9
|
+
<Icon
|
|
10
10
|
v-if = "props.icon || props.loading"
|
|
11
11
|
:name = "props.icon"
|
|
12
12
|
:size = "props.iconSize"
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
</slot>
|
|
20
20
|
</span>
|
|
21
21
|
|
|
22
|
-
<
|
|
22
|
+
<Icon
|
|
23
23
|
v-if = "props.trailingIcon"
|
|
24
24
|
:name = "props.trailingIcon"
|
|
25
25
|
:size = "props.iconSize"
|
|
@@ -32,7 +32,7 @@ import { useSlots } from "vue";
|
|
|
32
32
|
</script>
|
|
33
33
|
|
|
34
34
|
<script setup>
|
|
35
|
-
import
|
|
35
|
+
import Icon from "./Icon.vue";
|
|
36
36
|
const props = defineProps({
|
|
37
37
|
text: { type: String, required: false, default: void 0 },
|
|
38
38
|
icon: { type: String, required: false, default: void 0 },
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export
|
|
1
|
+
import type { IconProps } from './Icon.vue.js';
|
|
2
|
+
export interface IconTextPairProps {
|
|
3
3
|
text?: string;
|
|
4
4
|
icon?: string;
|
|
5
5
|
trailingIcon?: string;
|
|
6
|
-
iconSize?:
|
|
7
|
-
trailingIconSize?:
|
|
6
|
+
iconSize?: IconProps['size'];
|
|
7
|
+
trailingIconSize?: IconProps['size'];
|
|
8
8
|
layout?: 'column' | 'row';
|
|
9
9
|
spacing?: 'wide' | 'normal';
|
|
10
10
|
loading?: boolean;
|
|
11
|
-
}
|
|
12
|
-
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<
|
|
11
|
+
}
|
|
12
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<IconTextPairProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<IconTextPairProps> & Readonly<{}>, {
|
|
13
13
|
loading: boolean;
|
|
14
14
|
icon: string;
|
|
15
15
|
text: string;
|