feather-k-demo-utils 0.0.28 → 0.0.30
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/DEMO-UTILS.md +133 -4
- package/README.md +31 -4
- package/lib/DemoSettings.vue_vue_type_script_setup_true_lang-oD1BkxXn.js +82 -0
- package/lib/components/DemoDebug.vue.d.ts +17 -0
- package/lib/components/DemoSettings.vue.d.ts +17 -0
- package/lib/components/DemoStats.vue.d.ts +1 -1
- package/lib/components/Main.vue.d.ts +1 -1
- package/lib/components/index.d.ts +2 -0
- package/lib/components/index.es.js +4 -2
- package/lib/index.es.js +9 -7
- package/lib/styles/demo.css +147 -24
- package/lib/utils/index.es.js +9 -7
- package/package.json +1 -1
- package/lib/DemoStats.vue_vue_type_script_setup_true_lang-JUBFuGaw.js +0 -32
package/DEMO-UTILS.md
CHANGED
|
@@ -79,17 +79,19 @@ Notes:
|
|
|
79
79
|
- `FEATHERK_STYLES_CDN_URL` should point at the exact `@featherk/styles` CSS you want to showcase.
|
|
80
80
|
- `PUBLISH_DATE` can be injected at build time (for CI) or defaulted as shown.
|
|
81
81
|
|
|
82
|
-
## 4) Render DemoStats in your app
|
|
83
82
|
|
|
84
|
-
|
|
83
|
+
## 4) Render DemoStats, DemoDebug, and DemoSettings in your app
|
|
84
|
+
|
|
85
|
+
### DemoStats
|
|
86
|
+
|
|
87
|
+
```vue
|
|
85
88
|
<script setup lang="ts">
|
|
86
89
|
import { computed } from "vue";
|
|
87
90
|
import { DemoStats } from "feather-k-demo-utils";
|
|
88
91
|
import { getFeatherkStylesVersionFromUrl } from "feather-k-demo-utils/utils";
|
|
89
92
|
|
|
90
93
|
const PUBLISH_DATE = import.meta.env.PUBLISH_DATE;
|
|
91
|
-
const version = computed(() => getFeatherkStylesVersionFromUrl(import.meta.env.FEATHERK_STYLES_CDN_URL)
|
|
92
|
-
);
|
|
94
|
+
const version = computed(() => getFeatherkStylesVersionFromUrl(import.meta.env.FEATHERK_STYLES_CDN_URL));
|
|
93
95
|
</script>
|
|
94
96
|
|
|
95
97
|
<template>
|
|
@@ -99,6 +101,39 @@ const version = computed(() => getFeatherkStylesVersionFromUrl(import.meta.env.F
|
|
|
99
101
|
|
|
100
102
|
`DemoStats` renders the version and publish date, and links to the demo-utils README if the publish date is missing.
|
|
101
103
|
|
|
104
|
+
### DemoDebug
|
|
105
|
+
|
|
106
|
+
Collapsible debug panel. Slot content is only shown if provided.
|
|
107
|
+
|
|
108
|
+
```vue
|
|
109
|
+
<script setup lang="ts">
|
|
110
|
+
import { DemoDebug } from "feather-k-demo-utils";
|
|
111
|
+
const debugInfo = { foo: 'bar', count: 42 };
|
|
112
|
+
</script>
|
|
113
|
+
|
|
114
|
+
<template>
|
|
115
|
+
<DemoDebug>
|
|
116
|
+
<pre>{{ debugInfo }}</pre>
|
|
117
|
+
</DemoDebug>
|
|
118
|
+
</template>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### DemoSettings
|
|
122
|
+
|
|
123
|
+
Collapsible settings panel. Slot content is only shown if provided.
|
|
124
|
+
|
|
125
|
+
```vue
|
|
126
|
+
<script setup lang="ts">
|
|
127
|
+
import { DemoSettings } from "feather-k-demo-utils";
|
|
128
|
+
</script>
|
|
129
|
+
|
|
130
|
+
<template>
|
|
131
|
+
<DemoSettings>
|
|
132
|
+
<div>Settings content here</div>
|
|
133
|
+
</DemoSettings>
|
|
134
|
+
</template>
|
|
135
|
+
```
|
|
136
|
+
|
|
102
137
|
## 5) (Optional) Pin the dependency version
|
|
103
138
|
|
|
104
139
|
```json
|
|
@@ -131,3 +166,97 @@ const version = computed(() => getFeatherkStylesVersionFromUrl(import.meta.env.F
|
|
|
131
166
|
</div>
|
|
132
167
|
|
|
133
168
|
Keep this aligned with whichever demo-utils release you want to display.
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Required Demo Shell Structure
|
|
172
|
+
|
|
173
|
+
All demo components must use the following structure for consistent styling:
|
|
174
|
+
|
|
175
|
+
```html
|
|
176
|
+
<div class="demo-app">
|
|
177
|
+
<div class="featherk-demo">
|
|
178
|
+
<form class="demo-form">
|
|
179
|
+
<div class="fk-field-block">
|
|
180
|
+
<!-- Field content here -->
|
|
181
|
+
</div>
|
|
182
|
+
<div class="demo-actions">
|
|
183
|
+
<!-- Action buttons here -->
|
|
184
|
+
</div>
|
|
185
|
+
</form>
|
|
186
|
+
<div class="demo-notes">
|
|
187
|
+
<!-- Notes content here -->
|
|
188
|
+
</div>
|
|
189
|
+
</div>
|
|
190
|
+
</div>
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**Always use these class names and hierarchy in your demo components.**
|
|
194
|
+
This ensures demo-utils styles and features work as intended.
|
|
195
|
+
|
|
196
|
+
# Multi-Demo Navigation with DropDownList
|
|
197
|
+
|
|
198
|
+
In projects where multiple demos or feature showcases are included in a single repository, it's helpful to provide a simple navigation mechanism for users to switch between demos. A common and user-friendly approach is to use a DropDownList to select and display the desired demo component.
|
|
199
|
+
|
|
200
|
+
## Example: Demo Navigation in a Vue App
|
|
201
|
+
|
|
202
|
+
Below is a pattern used in the `feather-k-autocomplete` repo, which you can adapt for your own multi-demo projects. This approach uses the Kendo UI for Vue `DropDownList` to allow users to select a demo from a list, and then conditionally renders the selected demo component.
|
|
203
|
+
|
|
204
|
+
### 1. Add the DropDownList for Demo Selection
|
|
205
|
+
|
|
206
|
+
```vue
|
|
207
|
+
<template>
|
|
208
|
+
<div>
|
|
209
|
+
<Label for="demo-selection">Select a demo:</Label>
|
|
210
|
+
<DropDownList
|
|
211
|
+
id="demo-selection"
|
|
212
|
+
:dataItems="[ 'Basic', 'ComboBox', 'Complex', 'ComplexComboBox', 'FastForm', 'TabularComboBox', 'Yup' ]"
|
|
213
|
+
:value="demo"
|
|
214
|
+
@change="(e) => (demo = e.value)"
|
|
215
|
+
/>
|
|
216
|
+
<!-- Render the selected demo -->
|
|
217
|
+
<Basic v-if="demo === 'Basic'" />
|
|
218
|
+
<ComboBox v-if="demo === 'ComboBox'" />
|
|
219
|
+
<Complex v-if="demo === 'Complex'" />
|
|
220
|
+
<ComplexComboBox v-if="demo === 'ComplexComboBox'" />
|
|
221
|
+
<FastForm v-if="demo === 'FastForm'" />
|
|
222
|
+
<Yup v-if="demo === 'Yup'" />
|
|
223
|
+
<TabularComboBox v-if="demo === 'TabularComboBox'" />
|
|
224
|
+
</div>
|
|
225
|
+
</template>
|
|
226
|
+
|
|
227
|
+
<script setup lang="ts">
|
|
228
|
+
import { ref } from "vue";
|
|
229
|
+
import { DropDownList } from "@progress/kendo-vue-dropdowns";
|
|
230
|
+
import { Label } from "@progress/kendo-vue-labels";
|
|
231
|
+
import Basic from "./components/Basic.vue";
|
|
232
|
+
import ComboBox from "./components/ComboBox.vue";
|
|
233
|
+
import Complex from "./components/Complex.vue";
|
|
234
|
+
import ComplexComboBox from "./components/ComplexComboBox.vue";
|
|
235
|
+
import FastForm from "./components/FastForm.vue";
|
|
236
|
+
import TabularComboBox from "./components/TabularComboBox.vue";
|
|
237
|
+
import Yup from "./components/Yup.vue";
|
|
238
|
+
|
|
239
|
+
const demo = ref("TabularComboBox");
|
|
240
|
+
</script>
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### 2. How It Works
|
|
244
|
+
- The `DropDownList` is populated with the names of your demo components.
|
|
245
|
+
- This uses Kendo UI for Vue's DropDownList v6.4.1
|
|
246
|
+
- The `demo` ref holds the currently selected demo name.
|
|
247
|
+
- The `@change` event updates the `demo` value.
|
|
248
|
+
- Each demo component is conditionally rendered using `v-if` based on the current selection.
|
|
249
|
+
|
|
250
|
+
### 3. Adapting for Your Project
|
|
251
|
+
- Replace the items in `dataItems` with your own demo/component names.
|
|
252
|
+
- Import your demo components and add the corresponding `v-if` blocks.
|
|
253
|
+
- Set the initial value of `demo` to the default demo you want to show.
|
|
254
|
+
|
|
255
|
+
### 4. Prompt for Setup in Other Projects
|
|
256
|
+
When setting up multi-demo navigation in a new project, prompt yourself or your team with:
|
|
257
|
+
- Create the options list with a single default "Demo" option.
|
|
258
|
+
- I'll take care of importing and registering
|
|
259
|
+
- Is the DropDownList visible and accessible at the top of the demo page? Yes.
|
|
260
|
+
- Is the default demo selection appropriate for your audience? Yes.
|
|
261
|
+
|
|
262
|
+
This pattern keeps your demo navigation simple, scalable, and user-friendly.
|
package/README.md
CHANGED
|
@@ -4,20 +4,25 @@ Shared demo utilities for Feather K Vue component demo repositories.
|
|
|
4
4
|
|
|
5
5
|
## Purpose
|
|
6
6
|
|
|
7
|
+
|
|
7
8
|
`feather-k-demo-utils` centralizes common demo functionality used across feather-k-<control> demo projects, including:
|
|
8
9
|
|
|
9
10
|
- Shared demo styles
|
|
10
|
-
- Shared demo UI components (such as `DemoStats`)
|
|
11
|
+
- Shared demo UI components (such as `DemoStats`, `DemoDebug`, and `DemoSettings`)
|
|
11
12
|
- Shared utility helpers (for example, CDN/version helpers)
|
|
12
13
|
|
|
13
14
|
This package is intended for internal/demo scenarios and consistency across Feather K demos, not as a general-purpose application UI library.
|
|
14
15
|
|
|
16
|
+
|
|
15
17
|
## What's Included
|
|
16
18
|
|
|
17
19
|
- `feather-k-demo-utils` (root exports)
|
|
18
20
|
- Demo components and top-level exports
|
|
19
21
|
- `feather-k-demo-utils/components`
|
|
20
|
-
- Component-focused exports
|
|
22
|
+
- Component-focused exports:
|
|
23
|
+
- `DemoStats`: Demo stats footer
|
|
24
|
+
- `DemoDebug`: Collapsible debug panel (slot-based)
|
|
25
|
+
- `DemoSettings`: Collapsible settings panel (slot-based)
|
|
21
26
|
- `feather-k-demo-utils/utils`
|
|
22
27
|
- Utility helpers used by demo apps
|
|
23
28
|
- `feather-k-demo-utils/styles/demo.css`
|
|
@@ -37,14 +42,36 @@ Import demo styles once in your app entry:
|
|
|
37
42
|
import "feather-k-demo-utils/styles/demo.css";
|
|
38
43
|
```
|
|
39
44
|
|
|
45
|
+
|
|
40
46
|
Import what you need:
|
|
41
47
|
|
|
42
48
|
```ts
|
|
43
|
-
import { DemoStats } from "feather-k-demo-utils";
|
|
49
|
+
import { DemoStats, DemoDebug, DemoSettings } from "feather-k-demo-utils";
|
|
44
50
|
import { getFeatherkStylesVersionFromUrl } from "feather-k-demo-utils/utils";
|
|
45
51
|
```
|
|
46
52
|
|
|
47
|
-
|
|
53
|
+
### DemoDebug
|
|
54
|
+
|
|
55
|
+
Collapsible debug panel. Slot content is only shown if provided.
|
|
56
|
+
|
|
57
|
+
```vue
|
|
58
|
+
<DemoDebug>
|
|
59
|
+
<pre>{{ debugInfo }}</pre>
|
|
60
|
+
</DemoDebug>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### DemoSettings
|
|
64
|
+
|
|
65
|
+
Collapsible settings panel. Slot content is only shown if provided.
|
|
66
|
+
|
|
67
|
+
```vue
|
|
68
|
+
<DemoSettings>
|
|
69
|
+
<div>Settings content here</div>
|
|
70
|
+
</DemoSettings>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
For full integration steps (Vite env setup, stylesheet injection, and component usage), see [DEMO-UTILS.md](https://github.com/NantHealth/feather-k-demo-utils/blob/integration/DEMO-UTILS.md).
|
|
48
75
|
|
|
49
76
|
## Publishing
|
|
50
77
|
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { defineComponent as c, openBlock as o, createElementBlock as a, toDisplayString as u, createCommentVNode as d, createElementVNode as h, computed as i, useSlots as m, normalizeClass as g, renderSlot as b } from "vue";
|
|
2
|
+
const v = { key: 0 }, _ = { key: 1 }, f = { key: 2 }, k = /* @__PURE__ */ c({
|
|
3
|
+
__name: "DemoStats",
|
|
4
|
+
props: {
|
|
5
|
+
publishDate: {},
|
|
6
|
+
version: {}
|
|
7
|
+
},
|
|
8
|
+
setup(t) {
|
|
9
|
+
const l = () => {
|
|
10
|
+
const s = document.querySelector(".demo-stats");
|
|
11
|
+
s && s.classList.toggle("active");
|
|
12
|
+
};
|
|
13
|
+
return (s, n) => t.publishDate || t.version ? (o(), a("div", {
|
|
14
|
+
key: 0,
|
|
15
|
+
class: "demo-stats tb-v8_2_0 active",
|
|
16
|
+
tabindex: "0",
|
|
17
|
+
role: "region",
|
|
18
|
+
"aria-label": "Demo Stats",
|
|
19
|
+
onClick: l
|
|
20
|
+
}, [
|
|
21
|
+
t.version ? (o(), a("div", v, "using @featherk/styles@" + u(t.version), 1)) : d("", !0),
|
|
22
|
+
t.publishDate ? (o(), a("div", _, "Published: " + u(t.publishDate), 1)) : (o(), a("div", f, [...n[0] || (n[0] = [
|
|
23
|
+
h("a", {
|
|
24
|
+
href: "https://github.com/NantHealth/feather-k-demo-utils/blob/integration/README.md",
|
|
25
|
+
target: "_blank",
|
|
26
|
+
rel: "noopener noreferrer",
|
|
27
|
+
style: { "pointer-events": "auto !important" }
|
|
28
|
+
}, " Setup Publish Date ", -1)
|
|
29
|
+
])]))
|
|
30
|
+
])) : d("", !0);
|
|
31
|
+
}
|
|
32
|
+
}), D = /* @__PURE__ */ c({
|
|
33
|
+
__name: "DemoDebug",
|
|
34
|
+
setup(t) {
|
|
35
|
+
const l = i(() => {
|
|
36
|
+
const e = m();
|
|
37
|
+
return !!e.default && e.default().some((r) => r.children);
|
|
38
|
+
}), s = () => {
|
|
39
|
+
const e = document.querySelector(".demo-debug");
|
|
40
|
+
e && e.classList.toggle("active");
|
|
41
|
+
}, n = i(() => ({
|
|
42
|
+
"demo-debug": !0,
|
|
43
|
+
"tb-v8_2_0": !0,
|
|
44
|
+
hidden: !l.value
|
|
45
|
+
}));
|
|
46
|
+
return (e, r) => (o(), a("div", {
|
|
47
|
+
class: g(n.value),
|
|
48
|
+
onClick: s,
|
|
49
|
+
tabindex: "0"
|
|
50
|
+
}, [
|
|
51
|
+
b(e.$slots, "default")
|
|
52
|
+
], 2));
|
|
53
|
+
}
|
|
54
|
+
}), y = /* @__PURE__ */ c({
|
|
55
|
+
__name: "DemoSettings",
|
|
56
|
+
setup(t) {
|
|
57
|
+
const l = i(() => {
|
|
58
|
+
const e = m();
|
|
59
|
+
return !!e.default && e.default().some((r) => r.children);
|
|
60
|
+
}), s = () => {
|
|
61
|
+
const e = document.querySelector(".demo-settings");
|
|
62
|
+
e && e.classList.toggle("active");
|
|
63
|
+
}, n = i(() => ({
|
|
64
|
+
"demo-settings": !0,
|
|
65
|
+
"tb-v8_2_0": !0,
|
|
66
|
+
hidden: !l.value
|
|
67
|
+
// active: true,
|
|
68
|
+
}));
|
|
69
|
+
return (e, r) => (o(), a("div", {
|
|
70
|
+
class: g(n.value),
|
|
71
|
+
onClick: s,
|
|
72
|
+
tabindex: "0"
|
|
73
|
+
}, [
|
|
74
|
+
b(e.$slots, "default")
|
|
75
|
+
], 2));
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
export {
|
|
79
|
+
D as _,
|
|
80
|
+
y as a,
|
|
81
|
+
k as b
|
|
82
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
declare function __VLS_template(): {
|
|
2
|
+
attrs: Partial<{}>;
|
|
3
|
+
slots: {
|
|
4
|
+
default?(_: {}): any;
|
|
5
|
+
};
|
|
6
|
+
refs: {};
|
|
7
|
+
rootEl: HTMLDivElement;
|
|
8
|
+
};
|
|
9
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
10
|
+
declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
11
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
12
|
+
export default _default;
|
|
13
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
14
|
+
new (): {
|
|
15
|
+
$slots: S;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
declare function __VLS_template(): {
|
|
2
|
+
attrs: Partial<{}>;
|
|
3
|
+
slots: {
|
|
4
|
+
default?(_: {}): any;
|
|
5
|
+
};
|
|
6
|
+
refs: {};
|
|
7
|
+
rootEl: HTMLDivElement;
|
|
8
|
+
};
|
|
9
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
10
|
+
declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
11
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
12
|
+
export default _default;
|
|
13
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
14
|
+
new (): {
|
|
15
|
+
$slots: S;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
@@ -2,5 +2,5 @@ type __VLS_Props = {
|
|
|
2
2
|
publishDate?: string;
|
|
3
3
|
version?: string;
|
|
4
4
|
};
|
|
5
|
-
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {},
|
|
5
|
+
declare const _default: 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>;
|
|
6
6
|
export default _default;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {},
|
|
1
|
+
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
2
2
|
export default _default;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { _ as a } from "../
|
|
1
|
+
import { _ as o, a as s, b as t } from "../DemoSettings.vue_vue_type_script_setup_true_lang-oD1BkxXn.js";
|
|
2
2
|
export {
|
|
3
|
-
|
|
3
|
+
o as DemoDebug,
|
|
4
|
+
s as DemoSettings,
|
|
5
|
+
t as DemoStats
|
|
4
6
|
};
|
package/lib/index.es.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { F as
|
|
2
|
-
import { _ as F } from "./
|
|
1
|
+
import { F as a, a as t, f as r, g as o, b as S } from "./cdnVersion-DGJCb4AH.js";
|
|
2
|
+
import { _ as m, a as F, b as _ } from "./DemoSettings.vue_vue_type_script_setup_true_lang-oD1BkxXn.js";
|
|
3
3
|
export {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
m as DemoDebug,
|
|
5
|
+
F as DemoSettings,
|
|
6
|
+
_ as DemoStats,
|
|
7
|
+
a as FEATHERK_STYLES_CDN_URL,
|
|
6
8
|
t as FEATHERK_STYLES_VERSION,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
r as featherkStylesVersion,
|
|
10
|
+
o as getFeatherKStylesCdnUrl,
|
|
11
|
+
S as getFeatherkStylesVersionFromUrl
|
|
10
12
|
};
|
package/lib/styles/demo.css
CHANGED
|
@@ -145,30 +145,153 @@
|
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
+
.demo-debug {
|
|
149
|
+
position: fixed;
|
|
150
|
+
font-family: var(--kendo-font-family-monospace);
|
|
151
|
+
left: var(--kendo-spacing-4);
|
|
152
|
+
bottom: var(--kendo-spacing-4);
|
|
153
|
+
background-color: var(--kendo-color-light);
|
|
154
|
+
color: var(--kendo-color-light);
|
|
155
|
+
font-size: var(--kendo-font-size-sm);
|
|
156
|
+
margin: var(--kendo-spacing-2);
|
|
157
|
+
padding: var(--kendo-spacing-2);
|
|
158
|
+
padding-left: 2em;
|
|
159
|
+
border-radius: var(--kendo-border-radius-md);
|
|
160
|
+
width: 30rem;
|
|
161
|
+
overflow-wrap: break-word;
|
|
162
|
+
word-break: break-word;
|
|
163
|
+
left: -30rem;
|
|
164
|
+
transition: left 0.3s ease;
|
|
165
|
+
&:hover {
|
|
166
|
+
background-color: hsl(from var(--kendo-color-light) h s 85% / 0.9);
|
|
167
|
+
color: var(--kendo-color-dark);
|
|
168
|
+
}
|
|
169
|
+
&.active,
|
|
170
|
+
&:focus-visible {
|
|
171
|
+
left: -2em;
|
|
172
|
+
outline: 2px solid var(--kendo-color-primary-subtle-active);
|
|
173
|
+
outline-offset: 4px;
|
|
174
|
+
color: initial;
|
|
175
|
+
}
|
|
176
|
+
&::before {
|
|
177
|
+
content: "DEBUG";
|
|
178
|
+
font-weight: bold;
|
|
179
|
+
font-size: var(--kendo-font-size-lg);
|
|
180
|
+
display: block;
|
|
181
|
+
margin-bottom: var(--kendo-spacing-2);
|
|
182
|
+
}
|
|
183
|
+
&::after {
|
|
184
|
+
content: "🐛";
|
|
185
|
+
content: "🐜";
|
|
186
|
+
content: "🪳";
|
|
187
|
+
content: "🐞";
|
|
188
|
+
font-size: var(--kendo-font-size-xl);
|
|
189
|
+
color: var(--kendo-color-secondary);
|
|
190
|
+
position: absolute;
|
|
191
|
+
top: 0.25em;
|
|
192
|
+
right: 0.25em;
|
|
193
|
+
display: block;
|
|
194
|
+
margin-top: 0;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.demo-settings {
|
|
199
|
+
position: fixed;
|
|
200
|
+
left: var(--kendo-spacing-4);
|
|
201
|
+
top: var(--kendo-spacing-4);
|
|
202
|
+
background-color: hsl(from var(--kendo-color-light) h s l / 0.95);
|
|
203
|
+
color: hsl(from var(--kendo-color-light) h s l / 0.95);
|
|
204
|
+
font-size: var(--kendo-font-size-sm);
|
|
205
|
+
margin: var(--kendo-spacing-2);
|
|
206
|
+
padding: var(--kendo-spacing-2);
|
|
207
|
+
padding-left: 2em;
|
|
208
|
+
border-radius: var(--kendo-border-radius-md);
|
|
209
|
+
width: 30rem;
|
|
210
|
+
overflow-wrap: break-word;
|
|
211
|
+
word-break: break-word;
|
|
212
|
+
left: -30rem;
|
|
213
|
+
transition: left 0.3s ease;
|
|
214
|
+
&:hover {
|
|
215
|
+
background-color: hsl(from var(--kendo-color-light) h s 85% / 0.9);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
&.active,
|
|
219
|
+
&:focus-visible {
|
|
220
|
+
left: -2em;
|
|
221
|
+
outline: 2px solid var(--kendo-color-primary-emphasis);
|
|
222
|
+
outline-offset: 4px;
|
|
223
|
+
color: initial;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
&::before {
|
|
227
|
+
content: "SETTINGS";
|
|
228
|
+
font-weight: bold;
|
|
229
|
+
font-size: var(--kendo-font-size-lg);
|
|
230
|
+
display: block;
|
|
231
|
+
margin-bottom: var(--kendo-spacing-2);
|
|
232
|
+
}
|
|
233
|
+
&::after {
|
|
234
|
+
content: "\2699";
|
|
235
|
+
content: "⚙️";
|
|
236
|
+
font-size: var(--kendo-font-size-xl);
|
|
237
|
+
position: absolute;
|
|
238
|
+
top: 0.25em;
|
|
239
|
+
right: 0.25em;
|
|
240
|
+
display: block;
|
|
241
|
+
margin-top: 0;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
148
245
|
/* TODO: DemoStats.vue SCOPED STYLES NOT WORKING - moved to demo.css */
|
|
149
|
-
.demo-stats
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
color: var(--kendo-color-surface);
|
|
170
|
-
outline: 2px solid var(--kendo-color-primary);
|
|
171
|
-
outline-offset: 2px;
|
|
172
|
-
}
|
|
246
|
+
.demo-stats {
|
|
247
|
+
position: fixed;
|
|
248
|
+
text-align: right;
|
|
249
|
+
bottom: var(--kendo-spacing-4);
|
|
250
|
+
right: var(--kendo-spacing-4);
|
|
251
|
+
background-color: var(--kendo-color-light);
|
|
252
|
+
color: var(--kendo-color-light);
|
|
253
|
+
font-size: var(--kendo-font-size-sm);
|
|
254
|
+
/* color: var(--kendo-color-primary-subtle); */
|
|
255
|
+
margin: var(--kendo-spacing-2);
|
|
256
|
+
padding: var(--kendo-spacing-2);
|
|
257
|
+
padding-right: 2em;
|
|
258
|
+
border-radius: var(--kendo-border-radius-md);
|
|
259
|
+
width: 30rem;
|
|
260
|
+
overflow-wrap: break-word;
|
|
261
|
+
word-break: break-word;
|
|
262
|
+
transition: right 0.3s ease;
|
|
263
|
+
right: -30rem;
|
|
264
|
+
&:hover {
|
|
265
|
+
background-color: hsl(from var(--kendo-color-light) h s 85% / 0.9);
|
|
173
266
|
}
|
|
267
|
+
&.active,
|
|
268
|
+
&:focus-visible {
|
|
269
|
+
right: -2em;
|
|
270
|
+
outline: 2px solid var(--kendo-color-primary-emphasis);
|
|
271
|
+
outline-offset: 4px;
|
|
272
|
+
color: initial;
|
|
273
|
+
}
|
|
274
|
+
&::before {
|
|
275
|
+
content: "STATS";
|
|
276
|
+
font-weight: bold;
|
|
277
|
+
font-size: var(--kendo-font-size-lg);
|
|
278
|
+
display: block;
|
|
279
|
+
margin-bottom: var(--kendo-spacing-2);
|
|
280
|
+
/* position: absolute; */
|
|
281
|
+
left: 0.5em;
|
|
282
|
+
top: 0.25em;
|
|
283
|
+
}
|
|
284
|
+
&::after {
|
|
285
|
+
content: "📊";
|
|
286
|
+
font-size: var(--kendo-font-size-xl);
|
|
287
|
+
position: absolute;
|
|
288
|
+
top: 0.25em;
|
|
289
|
+
left: 0.25em;
|
|
290
|
+
display: block;
|
|
291
|
+
margin-top: 0;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
.hidden {
|
|
296
|
+
display: none;
|
|
174
297
|
}
|
package/lib/utils/index.es.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { F as
|
|
2
|
-
import { _ as F } from "../
|
|
1
|
+
import { F as a, a as t, f as r, g as o, b as S } from "../cdnVersion-DGJCb4AH.js";
|
|
2
|
+
import { _ as m, a as F, b as _ } from "../DemoSettings.vue_vue_type_script_setup_true_lang-oD1BkxXn.js";
|
|
3
3
|
export {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
m as DemoDebug,
|
|
5
|
+
F as DemoSettings,
|
|
6
|
+
_ as DemoStats,
|
|
7
|
+
a as FEATHERK_STYLES_CDN_URL,
|
|
6
8
|
t as FEATHERK_STYLES_VERSION,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
r as featherkStylesVersion,
|
|
10
|
+
o as getFeatherKStylesCdnUrl,
|
|
11
|
+
S as getFeatherkStylesVersionFromUrl
|
|
10
12
|
};
|
package/package.json
CHANGED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { defineComponent as a, openBlock as t, createElementBlock as o, toDisplayString as i, createCommentVNode as n, createElementVNode as r } from "vue";
|
|
2
|
-
const l = { class: "demo-stats-wrapper tb-v8_2_0" }, d = {
|
|
3
|
-
key: 0,
|
|
4
|
-
class: "demo-stats",
|
|
5
|
-
tabindex: "0",
|
|
6
|
-
role: "region",
|
|
7
|
-
"aria-label": "Demo Stats"
|
|
8
|
-
}, m = { key: 0 }, h = { key: 1 }, u = { key: 2 }, v = /* @__PURE__ */ a({
|
|
9
|
-
__name: "DemoStats",
|
|
10
|
-
props: {
|
|
11
|
-
publishDate: {},
|
|
12
|
-
version: {}
|
|
13
|
-
},
|
|
14
|
-
setup(e) {
|
|
15
|
-
return (c, s) => (t(), o("div", l, [
|
|
16
|
-
e.publishDate || e.version ? (t(), o("div", d, [
|
|
17
|
-
e.version ? (t(), o("div", m, "using @featherk/styles@" + i(e.version), 1)) : n("", !0),
|
|
18
|
-
e.publishDate ? (t(), o("div", h, "Published: " + i(e.publishDate), 1)) : (t(), o("div", u, [...s[0] || (s[0] = [
|
|
19
|
-
r("a", {
|
|
20
|
-
href: "https://github.com/NantHealth/feather-k-demo-utils/blob/integration/README.md",
|
|
21
|
-
target: "_blank",
|
|
22
|
-
rel: "noopener noreferrer",
|
|
23
|
-
style: { "pointer-events": "auto !important" }
|
|
24
|
-
}, " Setup Publish Date ", -1)
|
|
25
|
-
])]))
|
|
26
|
-
])) : n("", !0)
|
|
27
|
-
]));
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
export {
|
|
31
|
-
v as _
|
|
32
|
-
};
|