viur-ui 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -0
- package/index.d.ts +351 -0
- package/index.js +46 -0
- package/package.json +84 -0
- package/src/components/Browser/Browser.vue +496 -0
- package/src/components/Browser/TreeNav.vue +408 -0
- package/src/components/Browser/ViurBrowser.d.vue.ts +64 -0
- package/src/components/Browser/ViurBrowser.vue +271 -0
- package/src/components/Browser/dragSession.ts +134 -0
- package/src/components/Browser/index.ts +14 -0
- package/src/components/Browser/types.ts +30 -0
- package/src/components/DataTable/ColumnFilterPanel.vue +225 -0
- package/src/components/DataTable/DataTable.vue +3155 -0
- package/src/components/DataTable/ViurDataTable.d.vue.ts +72 -0
- package/src/components/DataTable/ViurDataTable.vue +331 -0
- package/src/components/DataTable/columns.ts +400 -0
- package/src/components/DataTable/index.ts +60 -0
- package/src/components/DataTable/rows.ts +446 -0
- package/src/components/DataTable/types.ts +267 -0
- package/src/components/DataTable/useColumnLayout.ts +294 -0
- package/src/components/DataTable/useGridNavigation.ts +193 -0
- package/src/components/DataTable/useVirtualRows.ts +126 -0
- package/src/components/DataTable/viurColumns.ts +330 -0
- package/src/forms/ViForm.d.vue.ts +106 -0
- package/src/forms/ViForm.vue +592 -0
- package/src/forms/ViFormCategory.vue +57 -0
- package/src/forms/bones/Bone.vue +1023 -0
- package/src/forms/bones/BoneActions.vue +127 -0
- package/src/forms/bones/BoneLabel.vue +122 -0
- package/src/forms/bones/BoneMultipleList.vue +91 -0
- package/src/forms/bones/BoneMultipleWrapper.vue +105 -0
- package/src/forms/bones/BoneNestedWrapper.vue +155 -0
- package/src/forms/bones/BoneSingleEntry.vue +51 -0
- package/src/forms/bones/FilterBone.vue +694 -0
- package/src/forms/bones/actionbar/defaultBar.vue +98 -0
- package/src/forms/bones/actionbar/fileBar.vue +165 -0
- package/src/forms/bones/actionbar/relationalBar.vue +125 -0
- package/src/forms/bones/actions/ActionDialog.vue +70 -0
- package/src/forms/bones/actions/Debug.vue +106 -0
- package/src/forms/bones/actions/Delete.vue +13 -0
- package/src/forms/bones/actions/DescribeImage.vue +201 -0
- package/src/forms/bones/actions/Download.vue +27 -0
- package/src/forms/bones/actions/Placeholder.vue +14 -0
- package/src/forms/bones/actions/Translation.vue +238 -0
- package/src/forms/bones/actions/index.js +280 -0
- package/src/forms/bones/bone.d.ts +45 -0
- package/src/forms/bones/country_information.json +779 -0
- package/src/forms/bones/index.js +225 -0
- package/src/forms/bones/uploadAdapter.js +46 -0
- package/src/forms/bones/utils.js +284 -0
- package/src/forms/bones/view/base_item.vue +35 -0
- package/src/forms/bones/view/boneLogic.js +202 -0
- package/src/forms/bones/view/index.js +5 -0
- package/src/forms/bones/widgets/booleanBone.vue +83 -0
- package/src/forms/bones/widgets/booleanBoneChoose.vue +57 -0
- package/src/forms/bones/widgets/booleanBoneSelect.vue +58 -0
- package/src/forms/bones/widgets/codeBone.vue +214 -0
- package/src/forms/bones/widgets/colorBone.vue +75 -0
- package/src/forms/bones/widgets/dateBone.vue +114 -0
- package/src/forms/bones/widgets/emailBone.vue +100 -0
- package/src/forms/bones/widgets/fileBone.vue +273 -0
- package/src/forms/bones/widgets/jsonBone.vue +63 -0
- package/src/forms/bones/widgets/keyBone.vue +71 -0
- package/src/forms/bones/widgets/numericBone.vue +125 -0
- package/src/forms/bones/widgets/passwordBone.vue +215 -0
- package/src/forms/bones/widgets/phoneBone.vue +173 -0
- package/src/forms/bones/widgets/rawBone.vue +94 -0
- package/src/forms/bones/widgets/recordBone.vue +64 -0
- package/src/forms/bones/widgets/relationalBone.vue +164 -0
- package/src/forms/bones/widgets/relationalBoneSelect.vue +120 -0
- package/src/forms/bones/widgets/selectBone.vue +122 -0
- package/src/forms/bones/widgets/selectBoneChoose.vue +104 -0
- package/src/forms/bones/widgets/spatialBone.vue +111 -0
- package/src/forms/bones/widgets/stringBone.vue +139 -0
- package/src/forms/bones/widgets/textBone.vue +641 -0
- package/src/forms/install.d.ts +4 -0
- package/src/forms/install.js +43 -0
- package/src/forms/layouts/LayloutList2Columns.vue +57 -0
- package/src/forms/layouts/LayoutCategory.vue +38 -0
- package/src/forms/layouts/LayoutList.vue +31 -0
- package/src/forms/utils.js +601 -0
- package/src/public/assets/icons/fontawesome-manifest.json +8 -0
- package/src/public/assets/icons/regular/file.svg +1 -0
- package/src/public/assets/icons/solid/arrows-left-right.svg +1 -0
- package/src/public/assets/icons/solid/bug.svg +1 -0
- package/src/public/assets/icons/solid/check.svg +1 -0
- package/src/public/assets/icons/solid/circle-info.svg +1 -0
- package/src/public/assets/icons/solid/compress.svg +1 -0
- package/src/public/assets/icons/solid/download.svg +1 -0
- package/src/public/assets/icons/solid/expand.svg +1 -0
- package/src/public/assets/icons/solid/grip-vertical.svg +1 -0
- package/src/public/assets/icons/solid/plus.svg +1 -0
- package/src/public/assets/icons/solid/question.svg +1 -0
- package/src/public/assets/icons/solid/triangle-exclamation.svg +1 -0
- package/src/public/assets/icons/solid/upload.svg +1 -0
- package/src/public/assets/icons/solid/xmark.svg +1 -0
- package/src/request/cache.js +183 -0
- package/src/request/configStore.js +516 -0
- package/src/request/envelope.js +211 -0
- package/src/request/index.js +35 -0
- package/src/request/messageStore.js +201 -0
- package/src/request/request.js +752 -0
- package/src/request/skel.js +90 -0
- package/src/theme/colorStore.js +168 -0
- package/src/translations/de.js +178 -0
- package/src/translations/en.js +177 -0
- package/src/user/LoginScreen.d.vue.ts +54 -0
- package/src/user/LoginScreen.vue +627 -0
- package/src/user/google.js +75 -0
- package/src/user/index.js +3 -0
- package/src/user/store.d.ts +59 -0
- package/src/user/store.js +183 -0
- package/src/webawesomeCompat.css +72 -0
- package/src/webawesomeConfig.js +61 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Werte des UserSkel, wie das Backend sie liefert. Nur die Felder, auf die sich
|
|
3
|
+
* der Store selbst stützt, sind benannt — der Rest bleibt offen, weil das Skel
|
|
4
|
+
* pro Projekt erweitert wird.
|
|
5
|
+
*/
|
|
6
|
+
export interface UserSkelValues {
|
|
7
|
+
key?: string
|
|
8
|
+
name?: string
|
|
9
|
+
firstname?: string
|
|
10
|
+
lastname?: string
|
|
11
|
+
access?: string[]
|
|
12
|
+
status?: number | string
|
|
13
|
+
[field: string]: unknown
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export type UserStatus = "unknown" | "loading" | "authenticated" | "anonymous"
|
|
17
|
+
|
|
18
|
+
export interface UserStoreState {
|
|
19
|
+
/** Angemeldeter Benutzer oder null. */
|
|
20
|
+
user: UserSkelValues | null
|
|
21
|
+
status: UserStatus
|
|
22
|
+
/** Renderer der Requests (Standard: VITE_DEFAULT_RENDERER oder "json"). */
|
|
23
|
+
renderer: string
|
|
24
|
+
googleClientId: string | null
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Der Store, wie ihn `useUserStore()` liefert. Die Getter stehen als Werte da,
|
|
29
|
+
* weil Pinia die Refs eines Setup-Stores am Store-Objekt entpackt.
|
|
30
|
+
*/
|
|
31
|
+
export interface UserStore {
|
|
32
|
+
state: UserStoreState
|
|
33
|
+
isLoggedIn: boolean
|
|
34
|
+
/** Rechte des Benutzers (leer, wenn keiner angemeldet ist). */
|
|
35
|
+
access: string[]
|
|
36
|
+
isRoot: boolean
|
|
37
|
+
isAdmin: boolean
|
|
38
|
+
/** Root gilt immer als berechtigt. */
|
|
39
|
+
hasAccess: (right: string) => boolean
|
|
40
|
+
/** Kurzform des Namens für Oberflächen, "-" ohne Benutzer. */
|
|
41
|
+
shortName: string
|
|
42
|
+
configure: (options?: { renderer?: string; googleClientId?: string | null }) => void
|
|
43
|
+
/** Session laden. Ergibt null, wenn niemand angemeldet ist (401). */
|
|
44
|
+
fetchSelf: () => Promise<UserSkelValues | null>
|
|
45
|
+
logout: () => Promise<void>
|
|
46
|
+
reset: () => void
|
|
47
|
+
/**
|
|
48
|
+
* Klassische Kette (viur-core 3.9): einen Schritt per GET rendern — Endpunkt
|
|
49
|
+
* unterhalb von `user` (Standard "login") oder eine Server-URL. Liefert die
|
|
50
|
+
* normalisierte Antwort; wirft bei einem Transportfehler.
|
|
51
|
+
*/
|
|
52
|
+
loadLoginStep: (target?: string) => Promise<Record<string, any>>
|
|
53
|
+
/** Primären Provider ohne eigenes Widget wählen; `next_url` ist sein erster Schritt. */
|
|
54
|
+
selectAuthenticationProvider: (provider: string) => Promise<Record<string, any>>
|
|
55
|
+
/** Google-Identity-Token anmelden; liefert die normalisierte Antwort. */
|
|
56
|
+
loginWithGoogle: (token: string) => Promise<Record<string, any> | null>
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export declare function useUserStore(): UserStore
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { defineStore } from "pinia"
|
|
2
|
+
import { reactive, computed } from "vue"
|
|
3
|
+
import { createControllerFetch, resetState } from "../request/index.js"
|
|
4
|
+
|
|
5
|
+
// --------------------------------------------------------------------------- //
|
|
6
|
+
// User / session store (ViUR core 3.9, envelope v2) //
|
|
7
|
+
// --------------------------------------------------------------------------- //
|
|
8
|
+
//
|
|
9
|
+
// The LOGIN FLOW itself is driven generically by the multistep form component
|
|
10
|
+
// — `<ViForm module="user" action="login" multistep>` — which walks the v2
|
|
11
|
+
// envelope's `status`/`step`/`follow` chain (chooser → userpassword → 2FA →
|
|
12
|
+
// success). This store owns what does NOT fit a generic form step:
|
|
13
|
+
// • the SESSION: the current user + access gating (`fetchSelf`, `logout`)
|
|
14
|
+
// • Google sign-in via the Identity SDK token (`loginWithGoogle`)
|
|
15
|
+
// • the requests of the CLASSIC chain (viur-core 3.9, v1 JSON) that are not a
|
|
16
|
+
// form submit (`loadLoginStep`, `selectAuthenticationProvider`)
|
|
17
|
+
// On a completed login the consumer calls `fetchSelf()` to load the user.
|
|
18
|
+
|
|
19
|
+
const DEFAULT_RENDERER = import.meta.env.VITE_DEFAULT_RENDERER || "json"
|
|
20
|
+
|
|
21
|
+
/** Split a ViUR url into the parts createControllerFetch needs. */
|
|
22
|
+
function specFromUrl(url) {
|
|
23
|
+
const parsed = new URL(url, window.location.origin)
|
|
24
|
+
const segments = parsed.pathname.split("/").filter(Boolean)
|
|
25
|
+
return {
|
|
26
|
+
renderer: segments[0],
|
|
27
|
+
controller: segments.slice(1, -1),
|
|
28
|
+
endpoint: segments.at(-1),
|
|
29
|
+
query: parsed.search ? parsed.search.slice(1) : "",
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** One request through the viur-ui request layer → normalized (v2) body.
|
|
34
|
+
* Rejection propagates to the caller. */
|
|
35
|
+
async function apiRequest(url, { method = "GET", data = {}, secure = false, messages = true } = {}) {
|
|
36
|
+
const spec = specFromUrl(url)
|
|
37
|
+
const request = createControllerFetch({ endpoint: spec.endpoint, method, secure })
|
|
38
|
+
const result = request(spec.controller, "/", data, {
|
|
39
|
+
renderer: spec.renderer,
|
|
40
|
+
query: spec.query,
|
|
41
|
+
immediate: false,
|
|
42
|
+
messages,
|
|
43
|
+
})
|
|
44
|
+
await result.execute()
|
|
45
|
+
return result.data.value
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export const useUserStore = defineStore("viurUser", () => {
|
|
49
|
+
const state = reactive({
|
|
50
|
+
user: null, // UserSkel values, or null
|
|
51
|
+
status: "unknown", // "unknown" | "loading" | "authenticated" | "anonymous"
|
|
52
|
+
renderer: DEFAULT_RENDERER,
|
|
53
|
+
googleClientId: null,
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
const userUrl = (endpoint) => `/${state.renderer}/user/${endpoint}`
|
|
57
|
+
|
|
58
|
+
// ── getters ────────────────────────────────────────────────────────────────
|
|
59
|
+
const isLoggedIn = computed(() => state.status === "authenticated" && !!state.user)
|
|
60
|
+
const access = computed(() => (Array.isArray(state.user?.access) ? state.user.access : []))
|
|
61
|
+
const isRoot = computed(() => access.value.includes("root"))
|
|
62
|
+
const isAdmin = computed(() => isRoot.value || access.value.includes("admin"))
|
|
63
|
+
function hasAccess(right) {
|
|
64
|
+
return isRoot.value || access.value.includes(right)
|
|
65
|
+
}
|
|
66
|
+
const shortName = computed(() => {
|
|
67
|
+
const u = state.user
|
|
68
|
+
if (!u) return "-"
|
|
69
|
+
if (u.firstname && u.lastname) return `${u.firstname[0]}. ${u.lastname}`
|
|
70
|
+
return u.lastname || u.firstname || u.name || "-"
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
function configure({ renderer, googleClientId } = {}) {
|
|
74
|
+
if (renderer) state.renderer = renderer
|
|
75
|
+
if (googleClientId !== undefined) state.googleClientId = googleClientId
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// ── session ──────────────────────────────────────────────────────────────────
|
|
79
|
+
async function fetchSelf() {
|
|
80
|
+
state.status = "loading"
|
|
81
|
+
try {
|
|
82
|
+
// a 401 here is the normal "not logged in" answer — no feedback message
|
|
83
|
+
const body = await apiRequest(userUrl("view/self"), { method: "GET", messages: false })
|
|
84
|
+
state.user = body?.data ?? null
|
|
85
|
+
state.status = state.user ? "authenticated" : "anonymous"
|
|
86
|
+
return state.user
|
|
87
|
+
} catch (error) {
|
|
88
|
+
// 401 → not logged in (the expected "anonymous" signal)
|
|
89
|
+
state.user = null
|
|
90
|
+
state.status = "anonymous"
|
|
91
|
+
return null
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
async function logout() {
|
|
96
|
+
let follow = null
|
|
97
|
+
try {
|
|
98
|
+
const body = await apiRequest(userUrl("logout"), { method: "POST", secure: true })
|
|
99
|
+
follow = body?.follow ?? null
|
|
100
|
+
state.user = null
|
|
101
|
+
state.status = "anonymous"
|
|
102
|
+
await resetState() // drop cached skeys + request cache
|
|
103
|
+
} catch (error) {
|
|
104
|
+
// clear the session locally regardless of a failed request
|
|
105
|
+
state.user = null
|
|
106
|
+
state.status = "anonymous"
|
|
107
|
+
}
|
|
108
|
+
if (typeof follow === "string" && /^https?:\/\//.test(follow)) {
|
|
109
|
+
window.location.href = follow
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function reset() {
|
|
114
|
+
state.user = null
|
|
115
|
+
state.status = "unknown"
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// ── classic login chain (viur-core 3.9) ─────────────────────────────────────
|
|
119
|
+
// viur-core 3.9 answers in the classic v1 shape: `/user/login` offers the
|
|
120
|
+
// providers, every further step is a form of its own whose url the server
|
|
121
|
+
// hands out (provider / second factor targets, `params.action_url`). The
|
|
122
|
+
// login screen reports failures itself, so these requests stay silent.
|
|
123
|
+
|
|
124
|
+
/** GET-render a step: an endpoint below `user` ("login") or a server url. */
|
|
125
|
+
async function loadLoginStep(target = "login") {
|
|
126
|
+
const url = /^(\/|https?:\/\/)/.test(target) ? target : userUrl(target)
|
|
127
|
+
return apiRequest(url, { method: "GET", messages: false })
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/** Choose a primary provider without a widget of its own; the answer's
|
|
131
|
+
* `next_url` is its first step. */
|
|
132
|
+
async function selectAuthenticationProvider(provider) {
|
|
133
|
+
return apiRequest(userUrl("select_authentication_provider"), {
|
|
134
|
+
method: "POST",
|
|
135
|
+
secure: true,
|
|
136
|
+
data: { provider },
|
|
137
|
+
messages: false,
|
|
138
|
+
})
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// ── Google sign-in ────────────────────────────────────────────────────────────
|
|
142
|
+
// POST the GSI id-token. Returns the normalized envelope so the caller can
|
|
143
|
+
// complete (status success → the session was loaded via fetchSelf) or hand a
|
|
144
|
+
// 2FA `follow` to the multistep ViForm to continue in the generic flow.
|
|
145
|
+
// Returns null on a transport error.
|
|
146
|
+
async function loginWithGoogle(token) {
|
|
147
|
+
try {
|
|
148
|
+
const body = await apiRequest(userUrl("auth_googleaccount/login"), {
|
|
149
|
+
method: "POST",
|
|
150
|
+
secure: true,
|
|
151
|
+
data: { token },
|
|
152
|
+
})
|
|
153
|
+
if (body?.status === "success" || body?.action === "login_success") {
|
|
154
|
+
await fetchSelf()
|
|
155
|
+
}
|
|
156
|
+
return body
|
|
157
|
+
} catch (error) {
|
|
158
|
+
return null
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return {
|
|
163
|
+
state,
|
|
164
|
+
// getters
|
|
165
|
+
isLoggedIn,
|
|
166
|
+
access,
|
|
167
|
+
isRoot,
|
|
168
|
+
isAdmin,
|
|
169
|
+
hasAccess,
|
|
170
|
+
shortName,
|
|
171
|
+
// config
|
|
172
|
+
configure,
|
|
173
|
+
// session
|
|
174
|
+
fetchSelf,
|
|
175
|
+
logout,
|
|
176
|
+
reset,
|
|
177
|
+
// classic login chain
|
|
178
|
+
loadLoginStep,
|
|
179
|
+
selectAuthenticationProvider,
|
|
180
|
+
// google
|
|
181
|
+
loginWithGoogle,
|
|
182
|
+
}
|
|
183
|
+
})
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--sl-spacing-x-small: var(--wa-space-xs);
|
|
3
|
+
--sl-spacing-small: var(--wa-space-s);
|
|
4
|
+
--sl-spacing-medium: var(--wa-space-m);
|
|
5
|
+
--sl-spacing-large: var(--wa-space-l);
|
|
6
|
+
|
|
7
|
+
--sl-border-radius-medium: var(--wa-border-radius-m);
|
|
8
|
+
--sl-input-border-radius-medium: var(--wa-form-control-border-radius);
|
|
9
|
+
--sl-input-height-medium: var(--wa-form-control-height);
|
|
10
|
+
--sl-input-font-size-medium: var(--wa-font-size-m);
|
|
11
|
+
|
|
12
|
+
--sl-color-neutral-0: var(--wa-color-surface-default);
|
|
13
|
+
--sl-color-neutral-50: var(--wa-color-neutral-95);
|
|
14
|
+
--sl-color-neutral-100: var(--wa-color-neutral-90);
|
|
15
|
+
--sl-color-neutral-200: var(--wa-color-neutral-fill-normal);
|
|
16
|
+
--sl-color-neutral-300: var(--wa-color-surface-border);
|
|
17
|
+
--sl-color-neutral-400: var(--wa-color-neutral-border-normal);
|
|
18
|
+
--sl-color-neutral-500: var(--wa-color-neutral-60);
|
|
19
|
+
--sl-color-neutral-600: var(--wa-color-neutral-50);
|
|
20
|
+
--sl-color-neutral-700: var(--wa-color-neutral-40);
|
|
21
|
+
--sl-color-neutral-800: var(--wa-color-neutral-20);
|
|
22
|
+
--sl-color-neutral-900: var(--wa-color-text-normal);
|
|
23
|
+
|
|
24
|
+
--sl-color-gray-200: var(--wa-color-neutral-95);
|
|
25
|
+
--sl-color-gray-400: var(--wa-color-neutral-60);
|
|
26
|
+
--sl-color-gray-500: var(--wa-color-neutral-border-normal);
|
|
27
|
+
|
|
28
|
+
--sl-color-primary-500: var(--wa-color-brand-50);
|
|
29
|
+
--sl-color-primary-600: var(--wa-color-brand-60);
|
|
30
|
+
--sl-color-success-500: var(--wa-color-success-50);
|
|
31
|
+
--sl-color-success-600: var(--wa-color-success-60);
|
|
32
|
+
--sl-color-danger-500: var(--wa-color-danger-50);
|
|
33
|
+
--sl-color-danger-700: var(--wa-color-danger-70);
|
|
34
|
+
|
|
35
|
+
--sl-color-info-50: var(--wa-color-brand-95);
|
|
36
|
+
--sl-color-info-300: var(--wa-color-brand-90);
|
|
37
|
+
--sl-color-info-500: var(--wa-color-brand-60);
|
|
38
|
+
--sl-color-info-900: var(--wa-color-brand-30);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
wa-input,
|
|
42
|
+
wa-textarea,
|
|
43
|
+
wa-select,
|
|
44
|
+
wa-combobox,
|
|
45
|
+
wa-checkbox,
|
|
46
|
+
wa-switch,
|
|
47
|
+
wa-radio-group,
|
|
48
|
+
wa-date-picker,
|
|
49
|
+
wa-color-picker {
|
|
50
|
+
--wa-form-control-required-content: "";
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
wa-input::part(form-control-label),
|
|
54
|
+
wa-input::part(label),
|
|
55
|
+
wa-textarea::part(form-control-label),
|
|
56
|
+
wa-textarea::part(label),
|
|
57
|
+
wa-select::part(form-control-label),
|
|
58
|
+
wa-select::part(label),
|
|
59
|
+
wa-combobox::part(form-control-label),
|
|
60
|
+
wa-combobox::part(label),
|
|
61
|
+
wa-checkbox::part(form-control-label),
|
|
62
|
+
wa-checkbox::part(label),
|
|
63
|
+
wa-switch::part(form-control-label),
|
|
64
|
+
wa-switch::part(label),
|
|
65
|
+
wa-radio-group::part(form-control-label),
|
|
66
|
+
wa-radio-group::part(label),
|
|
67
|
+
wa-date-picker::part(form-control-label),
|
|
68
|
+
wa-date-picker::part(label),
|
|
69
|
+
wa-color-picker::part(form-control-label),
|
|
70
|
+
wa-color-picker::part(label) {
|
|
71
|
+
display: none;
|
|
72
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Theme & base styles
|
|
2
|
+
import "@viur/webawesome/dist/styles/themes/awesome.css"
|
|
3
|
+
import "@viur/webawesome/dist/styles/webawesome.css"
|
|
4
|
+
import "./webawesomeCompat.css"
|
|
5
|
+
|
|
6
|
+
// Components
|
|
7
|
+
import "@viur/webawesome/dist/components/accordion/accordion"
|
|
8
|
+
import "@viur/webawesome/dist/components/alert/alert"
|
|
9
|
+
import "@viur/webawesome/dist/components/animation/animation"
|
|
10
|
+
import "@viur/webawesome/dist/components/avatar/avatar"
|
|
11
|
+
import "@viur/webawesome/dist/components/badge/badge"
|
|
12
|
+
import "@viur/webawesome/dist/components/breadcrumb/breadcrumb"
|
|
13
|
+
import "@viur/webawesome/dist/components/breadcrumb-item/breadcrumb-item"
|
|
14
|
+
import "@viur/webawesome/dist/components/button/button"
|
|
15
|
+
import "@viur/webawesome/dist/components/button-group/button-group"
|
|
16
|
+
import "@viur/webawesome/dist/components/callout/callout"
|
|
17
|
+
import "@viur/webawesome/dist/components/card/card"
|
|
18
|
+
import "@viur/webawesome/dist/components/checkbox/checkbox"
|
|
19
|
+
import "@viur/webawesome/dist/components/color-picker/color-picker"
|
|
20
|
+
import "@viur/webawesome/dist/components/combobox/combobox"
|
|
21
|
+
import "@viur/webawesome/dist/components/copy-button/copy-button"
|
|
22
|
+
import "@viur/webawesome/dist/components/details/details"
|
|
23
|
+
import "@viur/webawesome/dist/components/dialog/dialog"
|
|
24
|
+
import "@viur/webawesome/dist/components/divider/divider"
|
|
25
|
+
import "@viur/webawesome/dist/components/drawer/drawer"
|
|
26
|
+
import "@viur/webawesome/dist/components/dropdown/dropdown"
|
|
27
|
+
import "@viur/webawesome/dist/components/dropdown-item/dropdown-item"
|
|
28
|
+
import "@viur/webawesome/dist/components/format-bytes/format-bytes"
|
|
29
|
+
import "@viur/webawesome/dist/components/format-date/format-date"
|
|
30
|
+
import "@viur/webawesome/dist/components/format-number/format-number"
|
|
31
|
+
import "@viur/webawesome/dist/components/icon/icon"
|
|
32
|
+
import "@viur/webawesome/dist/components/input/input"
|
|
33
|
+
import "@viur/webawesome/dist/components/number-input/number-input"
|
|
34
|
+
import "@viur/webawesome/dist/components/option/option"
|
|
35
|
+
import "@viur/webawesome/dist/components/popover/popover"
|
|
36
|
+
import "@viur/webawesome/dist/components/progress-bar/progress-bar"
|
|
37
|
+
import "@viur/webawesome/dist/components/progress-ring/progress-ring"
|
|
38
|
+
import "@viur/webawesome/dist/components/radio/radio"
|
|
39
|
+
import "@viur/webawesome/dist/components/radio-group/radio-group"
|
|
40
|
+
import "@viur/webawesome/dist/components/select/select"
|
|
41
|
+
import "@viur/webawesome/dist/components/skeleton/skeleton"
|
|
42
|
+
import "@viur/webawesome/dist/components/slider/slider"
|
|
43
|
+
import "@viur/webawesome/dist/components/spinner/spinner"
|
|
44
|
+
import "@viur/webawesome/dist/components/split-panel/split-panel"
|
|
45
|
+
import "@viur/webawesome/dist/components/switch/switch"
|
|
46
|
+
import "@viur/webawesome/dist/components/tab/tab"
|
|
47
|
+
import "@viur/webawesome/dist/components/tab-group/tab-group"
|
|
48
|
+
import "@viur/webawesome/dist/components/tab-panel/tab-panel"
|
|
49
|
+
import "@viur/webawesome/dist/components/tag/tag"
|
|
50
|
+
import "@viur/webawesome/dist/components/textarea/textarea"
|
|
51
|
+
import "@viur/webawesome/dist/components/tooltip/tooltip"
|
|
52
|
+
import "@viur/webawesome/dist/components/tree/tree"
|
|
53
|
+
import "@viur/webawesome/dist/components/tree-item/tree-item"
|
|
54
|
+
|
|
55
|
+
import { setBasePath } from "@viur/webawesome/dist/utilities/base-path"
|
|
56
|
+
|
|
57
|
+
if (import.meta.env.DEV) {
|
|
58
|
+
setBasePath("/webawesome")
|
|
59
|
+
} else {
|
|
60
|
+
setBasePath("webawesome")
|
|
61
|
+
}
|