@htlkg/components 0.0.11 → 0.0.13
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/{AdminWrapper.vue_vue_type_script_setup_true_lang-B32IylcT.js → AdminWrapper.vue_vue_type_script_setup_true_lang-BhnWQ-b0.js} +26 -29
- package/dist/AdminWrapper.vue_vue_type_script_setup_true_lang-BhnWQ-b0.js.map +1 -0
- package/dist/Alert.vue_vue_type_script_setup_true_lang-DxPCS-Hx.js.map +1 -1
- package/dist/DateRange.vue_vue_type_script_setup_true_lang-BLVg1Hah.js.map +1 -1
- package/dist/ProductBadge.vue_vue_type_script_setup_true_lang-Cmr2f4Cy.js.map +1 -1
- package/dist/components.css +4 -4
- package/dist/composables/index.js +23 -22
- package/dist/data/index.js +10 -10
- package/dist/{filterHelpers-DgRyoYSa.js → filterHelpers-DpHSlTuh.js} +11 -11
- package/dist/filterHelpers-DpHSlTuh.js.map +1 -0
- package/dist/index-QK97OdqQ.js.map +1 -1
- package/dist/index.js +34 -33
- package/dist/navigation/index.js +1 -1
- package/dist/{useAdminPage-GhgXp0x8.js → useAdminPage-AgWRvw6o.js} +150 -26
- package/dist/useAdminPage-AgWRvw6o.js.map +1 -0
- package/package.json +3 -3
- package/src/composables/index.ts +1 -0
- package/src/composables/useJsonForm.test.ts +272 -0
- package/src/composables/useJsonForm.ts +261 -0
- package/src/composables/useModal.test.ts +264 -0
- package/src/composables/useModal.ts +54 -8
- package/src/data/Chart/index.ts +2 -0
- package/src/data/DataList/index.ts +1 -0
- package/src/data/{DataTable.vue → DataTable/DataTable.vue} +2 -2
- package/src/data/DataTable/index.ts +8 -0
- package/src/data/SearchableSelect/index.ts +1 -0
- package/src/data/Table/index.ts +1 -0
- package/src/data/index.ts +5 -15
- package/src/domain/BrandCard/index.ts +1 -0
- package/src/domain/BrandSelector/index.ts +1 -0
- package/src/domain/ProductBadge/index.ts +1 -0
- package/src/domain/UserAvatar/index.ts +1 -0
- package/src/domain/index.ts +4 -4
- package/src/forms/DateRange/index.ts +2 -0
- package/src/forms/JsonSchemaForm/index.ts +1 -0
- package/src/forms/index.ts +2 -3
- package/src/navigation/{AdminWrapper.vue → AdminWrapper/AdminWrapper.vue} +41 -30
- package/src/navigation/AdminWrapper/index.ts +1 -0
- package/src/navigation/Breadcrumbs/index.ts +1 -0
- package/src/navigation/Stepper/index.ts +2 -0
- package/src/navigation/Tabs/index.ts +2 -0
- package/src/navigation/index.ts +4 -6
- package/src/overlays/Alert/index.ts +1 -0
- package/src/overlays/Drawer/index.ts +1 -0
- package/src/overlays/Modal/index.ts +1 -0
- package/src/overlays/Notification/index.ts +1 -0
- package/src/overlays/index.ts +4 -4
- package/src/patterns/DASHBOARD_PAGE.md +642 -0
- package/src/patterns/DETAIL_PAGE.md +446 -0
- package/src/patterns/FORM_PAGE.md +439 -0
- package/src/patterns/LIST_PAGE.md +340 -0
- package/src/patterns/PAGE_PATTERNS.md +110 -0
- package/src/patterns/WIZARD_PAGE.md +733 -0
- package/dist/AdminWrapper.vue_vue_type_script_setup_true_lang-B32IylcT.js.map +0 -1
- package/dist/filterHelpers-DgRyoYSa.js.map +0 -1
- package/dist/useAdminPage-GhgXp0x8.js.map +0 -1
- package/src/data/Table.vue +0 -295
- /package/src/data/{Chart.demo.vue → Chart/Chart.demo.vue} +0 -0
- /package/src/data/{Chart.md → Chart/Chart.md} +0 -0
- /package/src/data/{Chart.vue → Chart/Chart.vue} +0 -0
- /package/src/data/{DataList.md → DataList/DataList.md} +0 -0
- /package/src/data/{DataList.test.ts → DataList/DataList.test.ts} +0 -0
- /package/src/data/{DataList.vue → DataList/DataList.vue} +0 -0
- /package/src/data/{SearchableSelect.md → SearchableSelect/SearchableSelect.md} +0 -0
- /package/src/data/{SearchableSelect.vue → SearchableSelect/SearchableSelect.vue} +0 -0
- /package/src/data/{Table.demo.vue → Table/Table.demo.vue} +0 -0
- /package/src/data/{Table.md → Table/Table.md} +0 -0
- /package/src/data/{Table.property.test.ts → Table/Table.property.test.ts} +0 -0
- /package/src/data/{Table.test.ts → Table/Table.test.ts} +0 -0
- /package/src/data/{Table.unit.test.ts → Table/Table.unit.test.ts} +0 -0
- /package/src/domain/{BrandCard.md → BrandCard/BrandCard.md} +0 -0
- /package/src/domain/{BrandCard.vue → BrandCard/BrandCard.vue} +0 -0
- /package/src/domain/{BrandSelector.md → BrandSelector/BrandSelector.md} +0 -0
- /package/src/domain/{BrandSelector.vue → BrandSelector/BrandSelector.vue} +0 -0
- /package/src/domain/{ProductBadge.md → ProductBadge/ProductBadge.md} +0 -0
- /package/src/domain/{ProductBadge.vue → ProductBadge/ProductBadge.vue} +0 -0
- /package/src/domain/{UserAvatar.md → UserAvatar/UserAvatar.md} +0 -0
- /package/src/domain/{UserAvatar.vue → UserAvatar/UserAvatar.vue} +0 -0
- /package/src/forms/{DateRange.demo.vue → DateRange/DateRange.demo.vue} +0 -0
- /package/src/forms/{DateRange.md → DateRange/DateRange.md} +0 -0
- /package/src/forms/{DateRange.vue → DateRange/DateRange.vue} +0 -0
- /package/src/forms/{JsonSchemaForm.demo.vue → JsonSchemaForm/JsonSchemaForm.demo.vue} +0 -0
- /package/src/forms/{JsonSchemaForm.md → JsonSchemaForm/JsonSchemaForm.md} +0 -0
- /package/src/forms/{JsonSchemaForm.property.test.ts → JsonSchemaForm/JsonSchemaForm.property.test.ts} +0 -0
- /package/src/forms/{JsonSchemaForm.test.ts → JsonSchemaForm/JsonSchemaForm.test.ts} +0 -0
- /package/src/forms/{JsonSchemaForm.unit.test.ts → JsonSchemaForm/JsonSchemaForm.unit.test.ts} +0 -0
- /package/src/forms/{JsonSchemaForm.vue → JsonSchemaForm/JsonSchemaForm.vue} +0 -0
- /package/src/navigation/{Breadcrumbs.demo.vue → Breadcrumbs/Breadcrumbs.demo.vue} +0 -0
- /package/src/navigation/{Breadcrumbs.md → Breadcrumbs/Breadcrumbs.md} +0 -0
- /package/src/navigation/{Breadcrumbs.test.ts → Breadcrumbs/Breadcrumbs.test.ts} +0 -0
- /package/src/navigation/{Breadcrumbs.vue → Breadcrumbs/Breadcrumbs.vue} +0 -0
- /package/src/navigation/{Stepper.demo.vue → Stepper/Stepper.demo.vue} +0 -0
- /package/src/navigation/{Stepper.md → Stepper/Stepper.md} +0 -0
- /package/src/navigation/{Stepper.vue → Stepper/Stepper.vue} +0 -0
- /package/src/navigation/{Tabs.demo.vue → Tabs/Tabs.demo.vue} +0 -0
- /package/src/navigation/{Tabs.md → Tabs/Tabs.md} +0 -0
- /package/src/navigation/{Tabs.test.ts → Tabs/Tabs.test.ts} +0 -0
- /package/src/navigation/{Tabs.vue → Tabs/Tabs.vue} +0 -0
- /package/src/overlays/{Alert.demo.vue → Alert/Alert.demo.vue} +0 -0
- /package/src/overlays/{Alert.md → Alert/Alert.md} +0 -0
- /package/src/overlays/{Alert.test.ts → Alert/Alert.test.ts} +0 -0
- /package/src/overlays/{Alert.vue → Alert/Alert.vue} +0 -0
- /package/src/overlays/{Drawer.md → Drawer/Drawer.md} +0 -0
- /package/src/overlays/{Drawer.test.ts → Drawer/Drawer.test.ts} +0 -0
- /package/src/overlays/{Drawer.vue → Drawer/Drawer.vue} +0 -0
- /package/src/overlays/{Modal.demo.vue → Modal/Modal.demo.vue} +0 -0
- /package/src/overlays/{Modal.md → Modal/Modal.md} +0 -0
- /package/src/overlays/{Modal.test.ts → Modal/Modal.test.ts} +0 -0
- /package/src/overlays/{Modal.vue → Modal/Modal.vue} +0 -0
- /package/src/overlays/{Notification.md → Notification/Notification.md} +0 -0
- /package/src/overlays/{Notification.test.ts → Notification/Notification.test.ts} +0 -0
- /package/src/overlays/{Notification.vue → Notification/Notification.vue} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as JsonSchemaForm } from './JsonSchemaForm.vue';
|
package/src/forms/index.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export type { DateRangeValue, DateRangeLiterals } from './DateRange.vue';
|
|
1
|
+
export * from './JsonSchemaForm';
|
|
2
|
+
export * from './DateRange';
|
|
@@ -25,7 +25,14 @@ import type { SelectItemType } from "@hotelinking/ui";
|
|
|
25
25
|
import { uiWrapper } from "@hotelinking/ui";
|
|
26
26
|
import { useStore } from "@nanostores/vue";
|
|
27
27
|
import { computed, ref } from "vue";
|
|
28
|
-
import { $user } from "
|
|
28
|
+
import { $user } from "../../stores/user";
|
|
29
|
+
|
|
30
|
+
// Profile menu item interface
|
|
31
|
+
interface ProfileMenuItem {
|
|
32
|
+
name: string;
|
|
33
|
+
id: string;
|
|
34
|
+
href: string;
|
|
35
|
+
}
|
|
29
36
|
|
|
30
37
|
// Props interface (user is now from nanostore)
|
|
31
38
|
interface Props {
|
|
@@ -56,6 +63,7 @@ interface Props {
|
|
|
56
63
|
icon: string;
|
|
57
64
|
active?: boolean;
|
|
58
65
|
}>;
|
|
66
|
+
profileMenuItems?: ProfileMenuItem[];
|
|
59
67
|
sidebarOpenByDefault?: boolean;
|
|
60
68
|
}
|
|
61
69
|
|
|
@@ -66,6 +74,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
66
74
|
selectItems: () => [],
|
|
67
75
|
selectedItem: () => ({ name: "", id: "" }),
|
|
68
76
|
productsSidebar: () => [],
|
|
77
|
+
profileMenuItems: () => [],
|
|
69
78
|
sidebarOpenByDefault: true,
|
|
70
79
|
});
|
|
71
80
|
|
|
@@ -80,29 +89,22 @@ const sidebarOpen = ref(props.sidebarOpenByDefault);
|
|
|
80
89
|
// Get user from nanostore (no props needed!)
|
|
81
90
|
const user = useStore($user);
|
|
82
91
|
|
|
92
|
+
// Default profile menu items (used when none provided via props)
|
|
93
|
+
const defaultProfileMenu: ProfileMenuItem[] = [
|
|
94
|
+
{ name: "Profile", id: "profile", href: "/admin/user" },
|
|
95
|
+
{ name: "Settings", id: "settings", href: "/admin/settings" },
|
|
96
|
+
{ name: "Logout", id: "logout", href: "#" },
|
|
97
|
+
];
|
|
98
|
+
|
|
83
99
|
// Computed properties for UI configuration
|
|
84
100
|
const topbarConfig = computed(() => {
|
|
85
101
|
return {
|
|
86
102
|
logo: props.sidebarLogo,
|
|
87
103
|
accountLogo: user.value?.avatar || "",
|
|
88
104
|
alerted: false,
|
|
89
|
-
profileMenu:
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
id: "profile",
|
|
93
|
-
href: "/profile",
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
name: "Settings",
|
|
97
|
-
id: "settings",
|
|
98
|
-
href: "/settings",
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
name: "Logout",
|
|
102
|
-
id: "logout",
|
|
103
|
-
href: "#",
|
|
104
|
-
},
|
|
105
|
-
],
|
|
105
|
+
profileMenu: props.profileMenuItems.length > 0
|
|
106
|
+
? props.profileMenuItems
|
|
107
|
+
: defaultProfileMenu,
|
|
106
108
|
brand: {
|
|
107
109
|
name: user.value?.username || "User",
|
|
108
110
|
description: user.value?.email || "",
|
|
@@ -139,25 +141,34 @@ const handleSelectChanged = (item: SelectItemType | SelectItemType[]) => {
|
|
|
139
141
|
|
|
140
142
|
const handleTopBarClick = (event: unknown) => {
|
|
141
143
|
// Handle different possible event formats
|
|
142
|
-
let
|
|
144
|
+
let menuItemId: string | undefined;
|
|
145
|
+
let menuItemHref: string | undefined;
|
|
143
146
|
|
|
144
147
|
if (typeof event === "string") {
|
|
145
|
-
|
|
148
|
+
menuItemId = event;
|
|
146
149
|
} else if (event && typeof event === "object") {
|
|
147
|
-
// Check if it's an object with name or href property
|
|
148
150
|
const eventObj = event as Record<string, unknown>;
|
|
149
|
-
|
|
151
|
+
menuItemId = (eventObj.id as string) || (eventObj.name as string);
|
|
152
|
+
menuItemHref = eventObj.href as string;
|
|
150
153
|
}
|
|
151
154
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
// The event is the menu item name
|
|
155
|
-
if (menuItem === "logout") {
|
|
155
|
+
// Handle logout separately
|
|
156
|
+
if (menuItemId === "logout") {
|
|
156
157
|
handleLogout();
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Navigate using href from the event object or find it from profile menu
|
|
162
|
+
if (menuItemHref && menuItemHref !== "#") {
|
|
163
|
+
window.location.href = menuItemHref;
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Fallback: find the menu item by id and use its href
|
|
168
|
+
const profileMenu = topbarConfig.value.profileMenu;
|
|
169
|
+
const menuItem = profileMenu.find((item) => item.id === menuItemId || item.name === menuItemId);
|
|
170
|
+
if (menuItem?.href && menuItem.href !== "#") {
|
|
171
|
+
window.location.href = menuItem.href;
|
|
161
172
|
}
|
|
162
173
|
};
|
|
163
174
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as AdminWrapper } from './AdminWrapper.vue';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Breadcrumbs } from './Breadcrumbs.vue';
|
package/src/navigation/index.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export { default as Breadcrumbs } from './Breadcrumbs.vue';
|
|
6
|
-
export { default as AdminWrapper } from './AdminWrapper.vue';
|
|
1
|
+
export * from './Tabs';
|
|
2
|
+
export * from './Stepper';
|
|
3
|
+
export * from './Breadcrumbs';
|
|
4
|
+
export * from './AdminWrapper';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Alert } from './Alert.vue';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Drawer } from './Drawer.vue';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Modal } from './Modal.vue';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Notification } from './Notification.vue';
|
package/src/overlays/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
1
|
+
export * from './Modal';
|
|
2
|
+
export * from './Drawer';
|
|
3
|
+
export * from './Notification';
|
|
4
|
+
export * from './Alert';
|