@oneclick.dev/cms-core-modules 0.0.122 → 0.0.124
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/{ContentEditor-CoJjsV-m.js → ContentEditor-BcIUumah.js} +63 -59
- package/dist/{ContentEditor-DIwqplfB.mjs → ContentEditor-DX1bTQKs.mjs} +27894 -26319
- package/dist/{Detail-Dk8E6_uF.mjs → Detail-B7pe808q.mjs} +15 -14
- package/dist/Detail-BESGmY7z.js +1 -0
- package/dist/{Detail-Cn9Bk0u0.mjs → Detail-B_Q7Qkuz.mjs} +26 -25
- package/dist/Detail-CNiLIEh9.js +1 -0
- package/dist/{Detail-B_scnidb.mjs → Detail-DNxAzeCs.mjs} +35 -34
- package/dist/Detail-t3tOcy3X.js +1 -0
- package/dist/Editor-D4evcdhv.mjs +768 -0
- package/dist/Editor-gLLtuJbY.js +1 -0
- package/dist/FormStatusBadge.vue_vue_type_script_setup_true_lang-BjKpsqT9.js +1 -0
- package/dist/FormStatusBadge.vue_vue_type_script_setup_true_lang-D5v5AhLe.mjs +76 -0
- package/dist/Knowledge-B66vxz--.js +1 -0
- package/dist/Knowledge-BnMTTuJ7.mjs +742 -0
- package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-bZidw6RT.mjs → NewReservationDialog.vue_vue_type_script_setup_true_lang-8I_Z9cD_.mjs} +530 -530
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BVE_uURZ.js +1 -0
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BdFa-xNf.mjs +3566 -0
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DzPOadcU.js +925 -0
- package/dist/Overview-BE4uYPx0.mjs +745 -0
- package/dist/Overview-CQRpFhbJ.mjs +286 -0
- package/dist/Overview-CTs7sX4d.js +1 -0
- package/dist/Overview-Cj89XXKN.js +1 -0
- package/dist/Overview-D_c18mbR.mjs +248 -0
- package/dist/Overview-g4Rcj245.js +1 -0
- package/dist/TableCalculationWidget-CkQPrVUd.js +59 -0
- package/dist/TableCalculationWidget-CrqcLGfU.mjs +254 -0
- package/dist/TableDataWidget-7qvC3Egd.js +1 -0
- package/dist/TableDataWidget-DMTSoGRO.mjs +121 -0
- package/dist/TableOverviewCard-AFq-puJs.js +1 -0
- package/dist/TableOverviewCard-Ci0d4o4w.mjs +391 -0
- package/dist/TableResultView.vue_vue_type_script_setup_true_lang-CBn-Oxl9.mjs +534 -0
- package/dist/TableResultView.vue_vue_type_script_setup_true_lang-C_Lv-SmJ.js +1 -0
- package/dist/TableRowActionCard-BhdnnPaq.mjs +266 -0
- package/dist/TableRowActionCard-IzB6tNN-.js +1 -0
- package/dist/TableView-6mdrL3zx.js +4 -0
- package/dist/TableView-Du5nOE6R.mjs +8228 -0
- package/dist/Test-CzmOmi53.mjs +447 -0
- package/dist/Test-USDtNFY1.js +1 -0
- package/dist/UserDetail-DpUL3mhk.mjs +1483 -0
- package/dist/UserDetail-KRIfxaYd.js +1 -0
- package/dist/{agenda-BCKDYOeF.mjs → agenda-DWdbWUbb.mjs} +10 -9
- package/dist/agenda-r9Gl85GL.js +1 -0
- package/dist/cms-core-modules.css +1 -1
- package/dist/dateRangePresets-B-l5b_wR.mjs +48 -0
- package/dist/dateRangePresets-CPWqst_x.js +1 -0
- package/dist/fuse-Deb-Iq39.mjs +1473 -0
- package/dist/fuse-_CGUd5Zq.js +1 -0
- package/dist/{index-DU3Ib10Z.mjs → index-B_qaX29C.mjs} +7 -6
- package/dist/index-CQuN5rKx.js +1 -0
- package/dist/index-CnDGeInm.js +1 -0
- package/dist/index-CqDTc5Ig.mjs +20 -0
- package/dist/index-CyvvAdt4.js +1 -0
- package/dist/index-DIRD7t5_.mjs +20 -0
- package/dist/index-OJuBYR60.mjs +57 -0
- package/dist/{index-Bk3yLv_G.js → index-yHLT6gaZ.js} +3 -3
- package/dist/index.cjs.js +1 -1
- package/dist/index.mjs +671 -118
- package/dist/{orders-CElKNc1v.mjs → orders-BfTLIm7U.mjs} +10 -9
- package/dist/orders-DUa2PVoa.js +1 -0
- package/dist/reports-ChCsd1Gk.mjs +1107 -0
- package/dist/reports-DmJPm8uP.js +158 -0
- package/dist/row-item-C1dUyimV.mjs +204 -0
- package/dist/row-item-Cyo3m3MZ.js +1 -0
- package/dist/server-handlers.cjs.js +1 -1
- package/dist/server-handlers.mjs +1764 -605
- package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +9 -3
- package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +2 -0
- package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +4 -2
- package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +9 -3
- package/dist/src/appointments/pages/edit/orders.vue.d.ts +9 -3
- package/dist/src/appointments/pages/edit/reports.vue.d.ts +229 -1
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Container.d.ts +1 -1
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Row.d.ts +7 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/Stack.d.ts +7 -0
- package/dist/src/contentManager/components/content-editor/tiptap-extensions/helpers/resizeHistory.d.ts +9 -0
- package/dist/src/contentManager/components/content-editor/tiptap-menus/ElementEditorMenu.vue.d.ts +3 -1
- package/dist/src/firebaseAuthManager/components/DeleteUserDialog.vue.d.ts +25 -0
- package/dist/src/firebaseAuthManager/components/ReasonActionDialog.vue.d.ts +23 -0
- package/dist/src/firebaseAuthManager/components/UserStatusBadge.vue.d.ts +5 -0
- package/dist/src/firebaseAuthManager/config.d.ts +151 -0
- package/dist/src/firebaseAuthManager/index.d.ts +163 -0
- package/dist/src/firebaseAuthManager/index.vue.d.ts +14 -0
- package/dist/src/firebaseAuthManager/metadata.d.ts +2 -0
- package/dist/src/firebaseAuthManager/pages/Overview.vue.d.ts +2 -0
- package/dist/src/firebaseAuthManager/pages/UserDetail.vue.d.ts +2 -0
- package/dist/src/firebaseAuthManager/permissions.d.ts +5 -0
- package/dist/src/firebaseAuthManager/routes.d.ts +5 -0
- package/dist/src/firebaseAuthManager/server.d.ts +162 -0
- package/dist/src/firebaseAuthManager/types.d.ts +84 -0
- package/dist/src/formBuilder/components/FormPreviewDialog.vue.d.ts +12 -0
- package/dist/src/formBuilder/components/FormStatusBadge.vue.d.ts +9 -0
- package/dist/src/formBuilder/config.d.ts +31 -0
- package/dist/src/formBuilder/index.d.ts +44 -0
- package/dist/src/formBuilder/index.vue.d.ts +14 -0
- package/dist/src/formBuilder/lib/forms.d.ts +11 -0
- package/dist/src/formBuilder/metadata.d.ts +2 -0
- package/dist/src/formBuilder/pages/Editor.vue.d.ts +2 -0
- package/dist/src/formBuilder/pages/Overview.vue.d.ts +2 -0
- package/dist/src/formBuilder/permissions.d.ts +5 -0
- package/dist/src/formBuilder/routes.d.ts +5 -0
- package/dist/src/formBuilder/server.d.ts +87 -0
- package/dist/src/formBuilder/tools.d.ts +1 -0
- package/dist/src/formBuilder/types.d.ts +46 -0
- package/dist/src/helpbot/composables/useHelpbotApi.d.ts +18 -0
- package/dist/src/helpbot/config.d.ts +17 -0
- package/dist/src/helpbot/index.d.ts +29 -0
- package/dist/src/helpbot/index.vue.d.ts +2 -0
- package/dist/src/helpbot/metadata.d.ts +2 -0
- package/dist/src/helpbot/pages/Knowledge.vue.d.ts +4 -0
- package/dist/src/helpbot/pages/Overview.vue.d.ts +2 -0
- package/dist/src/helpbot/pages/Test.vue.d.ts +4 -0
- package/dist/src/helpbot/permissions.d.ts +5 -0
- package/dist/src/helpbot/routes.d.ts +5 -0
- package/dist/src/helpbot/types.d.ts +42 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/server-handlers.d.ts +2 -0
- package/dist/src/table/chat-components/TableCalculationWidget.vue.d.ts +15 -0
- package/dist/src/table/chat-components/TableDataWidget.vue.d.ts +15 -0
- package/dist/src/table/chat-components/TableOverviewCard.vue.d.ts +61 -0
- package/dist/src/table/chat-components/TableResultView.vue.d.ts +48 -0
- package/dist/src/table/chat-components/TableRowActionCard.vue.d.ts +15 -0
- package/dist/src/table/components/filters/DialogTableFilterOptionItem.vue.d.ts +16 -0
- package/dist/src/table/components/filters/NumberComparisonFilter.vue.d.ts +12 -0
- package/dist/src/table/components/filters/NumberComparisonFilterSettings.vue.d.ts +12 -0
- package/dist/src/table/components/filters/NumberRangeFilter.vue.d.ts +12 -0
- package/dist/src/table/components/filters/NumberRangeFilterSettings.vue.d.ts +12 -0
- package/dist/src/table/components/filters/filter-utils.d.ts +14 -0
- package/dist/src/table/composables/useTableAgentTools.d.ts +33 -0
- package/dist/src/table/index.d.ts +339 -0
- package/dist/src/table/tool-sandbox.d.ts +13 -0
- package/dist/src/table/tool-utils.d.ts +11 -0
- package/dist/src/table/tools.d.ts +333 -1
- package/dist/src/table/types.d.ts +79 -0
- package/dist/tool-sandbox-DdkMLkDK.mjs +182 -0
- package/dist/tool-sandbox-DoF1PsyS.js +115 -0
- package/dist/types-9N-DKxNj.mjs +250 -0
- package/dist/types-BMraG1kN.js +1 -0
- package/dist/types-Cem0vPo_.js +1 -0
- package/dist/types-ibC3-e1N.mjs +2630 -0
- package/dist/useHelpbotApi-BIIungOh.js +1 -0
- package/dist/useHelpbotApi-HC9JSiSn.mjs +229 -0
- package/dist/useTableAgentTools-D5mzGf3A.js +1 -0
- package/dist/useTableAgentTools-DcN3kYRL.mjs +131 -0
- package/dist/vee-validate-zod-BQElPD0m.js +1 -0
- package/dist/vee-validate-zod-CN16K2x9.mjs +1780 -0
- package/package.json +17 -17
- package/src/formBuilder/tools.ts +1 -0
- package/src/table/tools.ts +304 -1
- package/dist/Detail-BCUUNWvp.js +0 -1
- package/dist/Detail-DGg_xXZc.js +0 -1
- package/dist/Detail-Sc2qZdxj.js +0 -1
- package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BdZbcubW.js +0 -1
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BYSeUW_V.js +0 -925
- package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DwAUYR8p.mjs +0 -5021
- package/dist/TableView-Ctnep-Qu.mjs +0 -6247
- package/dist/TableView-DJqyJL9L.js +0 -4
- package/dist/agenda-B54F8cEr.js +0 -1
- package/dist/orders-BMosTk6r.js +0 -1
- package/dist/reports-BQT_GZzU.js +0 -158
- package/dist/reports-DksZCTOw.mjs +0 -837
- package/dist/vee-validate-zod-SjDT8X35.mjs +0 -4404
- package/dist/vee-validate-zod-VCmLnrtQ.js +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oneclick.dev/cms-core-modules",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.124",
|
|
4
4
|
"main": "dist/index.cjs.js",
|
|
5
5
|
"module": "dist/index.mjs",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"peerDependencies": {
|
|
29
29
|
"@formkit/drag-and-drop": "^0.5.3",
|
|
30
30
|
"@internationalized/date": "^3.8.0",
|
|
31
|
-
"@oneclick.dev/cms-kit": "0.0.
|
|
31
|
+
"@oneclick.dev/cms-kit": "0.0.148",
|
|
32
32
|
"@tanstack/vue-table": "^8.21.3",
|
|
33
33
|
"@vee-validate/zod": "^4.15.0",
|
|
34
34
|
"@vue-flow/core": "^1.48.1",
|
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@floating-ui/dom": "^1.7.4",
|
|
52
|
-
"@tiptap/extension-collaboration": "3.
|
|
53
|
-
"@tiptap/extension-node-range": "3.
|
|
52
|
+
"@tiptap/extension-collaboration": "3.30.2",
|
|
53
|
+
"@tiptap/extension-node-range": "3.30.2",
|
|
54
54
|
"@tiptap/y-tiptap": "3.0.2",
|
|
55
55
|
"@vitejs/plugin-vue": "^6.0.3",
|
|
56
56
|
"@vue-flow/core": "^1.48.1",
|
|
@@ -60,19 +60,19 @@
|
|
|
60
60
|
"vite-plugin-dts": "^4.5.4"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@tiptap/core": "3.
|
|
64
|
-
"@tiptap/extension-bubble-menu": "3.
|
|
65
|
-
"@tiptap/extension-collaboration": "3.
|
|
66
|
-
"@tiptap/extension-collaboration-caret": "3.
|
|
67
|
-
"@tiptap/extension-document": "3.
|
|
68
|
-
"@tiptap/extension-link": "3.
|
|
69
|
-
"@tiptap/extension-node-range": "3.
|
|
70
|
-
"@tiptap/extension-underline": "3.
|
|
71
|
-
"@tiptap/extension-unique-id": "3.
|
|
72
|
-
"@tiptap/extensions": "3.
|
|
73
|
-
"@tiptap/pm": "3.
|
|
74
|
-
"@tiptap/starter-kit": "3.
|
|
75
|
-
"@tiptap/vue-3": "3.
|
|
63
|
+
"@tiptap/core": "3.30.2",
|
|
64
|
+
"@tiptap/extension-bubble-menu": "3.30.2",
|
|
65
|
+
"@tiptap/extension-collaboration": "3.30.2",
|
|
66
|
+
"@tiptap/extension-collaboration-caret": "3.30.2",
|
|
67
|
+
"@tiptap/extension-document": "3.30.2",
|
|
68
|
+
"@tiptap/extension-link": "3.30.2",
|
|
69
|
+
"@tiptap/extension-node-range": "3.30.2",
|
|
70
|
+
"@tiptap/extension-underline": "3.30.2",
|
|
71
|
+
"@tiptap/extension-unique-id": "3.30.2",
|
|
72
|
+
"@tiptap/extensions": "3.30.2",
|
|
73
|
+
"@tiptap/pm": "3.30.2",
|
|
74
|
+
"@tiptap/starter-kit": "3.30.2",
|
|
75
|
+
"@tiptap/vue-3": "3.30.2",
|
|
76
76
|
"@tiptap/y-tiptap": "3.0.2",
|
|
77
77
|
"@unovis/ts": "^1.5.2",
|
|
78
78
|
"@unovis/vue": "^1.5.2",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const tools: any[] = []
|
package/src/table/tools.ts
CHANGED
|
@@ -1 +1,304 @@
|
|
|
1
|
-
export const tools = [
|
|
1
|
+
export const tools = [
|
|
2
|
+
{
|
|
3
|
+
name: 'inspectTable',
|
|
4
|
+
description: 'Inspect this table before querying it. Returns the available columns and their data types, configured date-range capability, row actions, saved statistics, and a small sample of rows. Use this first whenever you do not yet know the exact property names or action IDs.',
|
|
5
|
+
executionMode: 'component',
|
|
6
|
+
chatComponent: 'TableOverviewCard',
|
|
7
|
+
parameters: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {
|
|
10
|
+
sampleLimit: {
|
|
11
|
+
type: 'number',
|
|
12
|
+
description: 'How many example rows to inspect. Use a small sample only. Default: 3, minimum: 1, maximum: 10.',
|
|
13
|
+
default: 3,
|
|
14
|
+
minimum: 1,
|
|
15
|
+
maximum: 10,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
required: [],
|
|
19
|
+
additionalProperties: false,
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'queryTableData',
|
|
24
|
+
description: 'Fetch, filter, sort, and display rows from this table. Use inspectTable first if column property names are unknown. Date ranges are inclusive. The result is shown directly in chat as a table, or as a card when exactly one row is returned.',
|
|
25
|
+
executionMode: 'component',
|
|
26
|
+
chatComponent: 'TableDataWidget',
|
|
27
|
+
parameters: {
|
|
28
|
+
type: 'object',
|
|
29
|
+
properties: {
|
|
30
|
+
startDate: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
format: 'date',
|
|
33
|
+
description: 'Inclusive start date in YYYY-MM-DD format. Omit when no date range is requested.',
|
|
34
|
+
},
|
|
35
|
+
endDate: {
|
|
36
|
+
type: 'string',
|
|
37
|
+
format: 'date',
|
|
38
|
+
description: 'Inclusive end date in YYYY-MM-DD format. Omit when no date range is requested.',
|
|
39
|
+
},
|
|
40
|
+
dateProperty: {
|
|
41
|
+
type: 'string',
|
|
42
|
+
description: 'Row property containing the date to filter, using dot notation for nested values. Use the property reported by inspectTable. It may be omitted when the table has a configured date-range fetch flow.',
|
|
43
|
+
},
|
|
44
|
+
useDefaultDateRange: {
|
|
45
|
+
type: 'boolean',
|
|
46
|
+
description: 'Whether to apply the table\'s configured default date range when startDate and endDate are omitted. Set false for all-time data. Default: true.',
|
|
47
|
+
default: true,
|
|
48
|
+
},
|
|
49
|
+
filters: {
|
|
50
|
+
type: 'array',
|
|
51
|
+
description: 'Additional row filters. Every filter is combined with AND. Use the values array for in/notIn and value for the other operators.',
|
|
52
|
+
default: [],
|
|
53
|
+
items: {
|
|
54
|
+
type: 'object',
|
|
55
|
+
properties: {
|
|
56
|
+
property: {
|
|
57
|
+
type: 'string',
|
|
58
|
+
description: 'Column property to filter, with dot notation allowed for nested values.',
|
|
59
|
+
},
|
|
60
|
+
operator: {
|
|
61
|
+
type: 'string',
|
|
62
|
+
enum: ['==', '!=', '>', '>=', '<', '<=', 'contains', 'startsWith', 'endsWith', 'in', 'notIn', 'isEmpty', 'isNotEmpty'],
|
|
63
|
+
description: 'Comparison operator. contains/startsWith/endsWith are case-insensitive for text; in/notIn compare against values.',
|
|
64
|
+
},
|
|
65
|
+
value: {
|
|
66
|
+
description: 'Comparison value for single-value operators. Preserve the natural string, number, boolean, or null type.',
|
|
67
|
+
anyOf: [
|
|
68
|
+
{ type: 'string' },
|
|
69
|
+
{ type: 'number' },
|
|
70
|
+
{ type: 'boolean' },
|
|
71
|
+
{ type: 'null' },
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
values: {
|
|
75
|
+
type: 'array',
|
|
76
|
+
description: 'Candidate values for the in or notIn operator.',
|
|
77
|
+
items: {
|
|
78
|
+
anyOf: [
|
|
79
|
+
{ type: 'string' },
|
|
80
|
+
{ type: 'number' },
|
|
81
|
+
{ type: 'boolean' },
|
|
82
|
+
{ type: 'null' },
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
required: ['property', 'operator'],
|
|
88
|
+
additionalProperties: false,
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
sortBy: {
|
|
92
|
+
type: 'string',
|
|
93
|
+
description: 'Optional property to sort by, with dot notation allowed for nested values.',
|
|
94
|
+
},
|
|
95
|
+
sortDirection: {
|
|
96
|
+
type: 'string',
|
|
97
|
+
enum: ['asc', 'desc'],
|
|
98
|
+
description: 'Sort direction. Default: asc.',
|
|
99
|
+
default: 'asc',
|
|
100
|
+
},
|
|
101
|
+
columns: {
|
|
102
|
+
type: 'array',
|
|
103
|
+
description: 'Optional ordered list of column properties to show. Omit to use the table\'s configured visible columns.',
|
|
104
|
+
items: {
|
|
105
|
+
type: 'string',
|
|
106
|
+
},
|
|
107
|
+
uniqueItems: true,
|
|
108
|
+
},
|
|
109
|
+
limit: {
|
|
110
|
+
type: 'number',
|
|
111
|
+
description: 'Maximum number of matching rows to display and return. Default: 20, minimum: 1, maximum: 100.',
|
|
112
|
+
default: 20,
|
|
113
|
+
minimum: 1,
|
|
114
|
+
maximum: 100,
|
|
115
|
+
},
|
|
116
|
+
title: {
|
|
117
|
+
type: 'string',
|
|
118
|
+
description: 'Short user-facing title for the result widget, for example "Orders from the last 3 weeks".',
|
|
119
|
+
},
|
|
120
|
+
view: {
|
|
121
|
+
type: 'string',
|
|
122
|
+
enum: ['auto', 'table', 'card'],
|
|
123
|
+
description: 'Preferred presentation. auto uses a card for one row and a table for multiple rows. Default: auto.',
|
|
124
|
+
default: 'auto',
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
required: [],
|
|
128
|
+
additionalProperties: false,
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: 'calculateTableData',
|
|
133
|
+
description: 'Calculate a count, sum, average, minimum, maximum, median, unique count, grouped result, or custom JavaScript result from this table. Use inspectTable first when property names are unknown. Filtering happens before the calculation, and date ranges are inclusive.',
|
|
134
|
+
executionMode: 'component',
|
|
135
|
+
chatComponent: 'TableCalculationWidget',
|
|
136
|
+
parameters: {
|
|
137
|
+
type: 'object',
|
|
138
|
+
properties: {
|
|
139
|
+
startDate: {
|
|
140
|
+
type: 'string',
|
|
141
|
+
format: 'date',
|
|
142
|
+
description: 'Inclusive start date in YYYY-MM-DD format. Omit when no date range is requested.',
|
|
143
|
+
},
|
|
144
|
+
endDate: {
|
|
145
|
+
type: 'string',
|
|
146
|
+
format: 'date',
|
|
147
|
+
description: 'Inclusive end date in YYYY-MM-DD format. Omit when no date range is requested.',
|
|
148
|
+
},
|
|
149
|
+
dateProperty: {
|
|
150
|
+
type: 'string',
|
|
151
|
+
description: 'Row property containing the date to filter, using dot notation for nested values. It may be omitted when the table has a configured date-range fetch flow.',
|
|
152
|
+
},
|
|
153
|
+
useDefaultDateRange: {
|
|
154
|
+
type: 'boolean',
|
|
155
|
+
description: 'Whether to apply the table\'s configured default date range when startDate and endDate are omitted. Set false for an all-time calculation. Default: true.',
|
|
156
|
+
default: true,
|
|
157
|
+
},
|
|
158
|
+
filters: {
|
|
159
|
+
type: 'array',
|
|
160
|
+
description: 'Optional row filters applied before calculating. Every filter is combined with AND.',
|
|
161
|
+
default: [],
|
|
162
|
+
items: {
|
|
163
|
+
type: 'object',
|
|
164
|
+
properties: {
|
|
165
|
+
property: {
|
|
166
|
+
type: 'string',
|
|
167
|
+
description: 'Column property to filter, with dot notation allowed for nested values.',
|
|
168
|
+
},
|
|
169
|
+
operator: {
|
|
170
|
+
type: 'string',
|
|
171
|
+
enum: ['==', '!=', '>', '>=', '<', '<=', 'contains', 'startsWith', 'endsWith', 'in', 'notIn', 'isEmpty', 'isNotEmpty'],
|
|
172
|
+
description: 'Comparison operator. Use in/notIn with values.',
|
|
173
|
+
},
|
|
174
|
+
value: {
|
|
175
|
+
description: 'Comparison value for single-value operators.',
|
|
176
|
+
anyOf: [
|
|
177
|
+
{ type: 'string' },
|
|
178
|
+
{ type: 'number' },
|
|
179
|
+
{ type: 'boolean' },
|
|
180
|
+
{ type: 'null' },
|
|
181
|
+
],
|
|
182
|
+
},
|
|
183
|
+
values: {
|
|
184
|
+
type: 'array',
|
|
185
|
+
description: 'Candidate values for the in or notIn operator.',
|
|
186
|
+
items: {
|
|
187
|
+
anyOf: [
|
|
188
|
+
{ type: 'string' },
|
|
189
|
+
{ type: 'number' },
|
|
190
|
+
{ type: 'boolean' },
|
|
191
|
+
{ type: 'null' },
|
|
192
|
+
],
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
required: ['property', 'operator'],
|
|
197
|
+
additionalProperties: false,
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
operation: {
|
|
201
|
+
type: 'string',
|
|
202
|
+
enum: ['count', 'sum', 'average', 'min', 'max', 'median', 'unique_count', 'custom'],
|
|
203
|
+
description: 'Calculation to perform. property is required for sum, average, min, max, median, and unique_count. code is required for custom.',
|
|
204
|
+
},
|
|
205
|
+
property: {
|
|
206
|
+
type: 'string',
|
|
207
|
+
description: 'Property to calculate, using dot notation for nested values. Not needed for count or custom.',
|
|
208
|
+
},
|
|
209
|
+
groupBy: {
|
|
210
|
+
type: 'string',
|
|
211
|
+
description: 'Optional property to group rows by before applying the operation. Grouped calculations are displayed as multiple result rows.',
|
|
212
|
+
},
|
|
213
|
+
code: {
|
|
214
|
+
type: 'string',
|
|
215
|
+
description: 'JavaScript function body used only when operation is custom. The filtered rows are available as data (and rows); return a JSON-serializable value, object, or array. Do not access the network, browser APIs, or global state. Example: return data.reduce((total, row) => total + Number(row.amount || 0), 0) / Math.max(data.length, 1)',
|
|
216
|
+
},
|
|
217
|
+
title: {
|
|
218
|
+
type: 'string',
|
|
219
|
+
description: 'Short user-facing title for the result, for example "Average order value".',
|
|
220
|
+
},
|
|
221
|
+
precision: {
|
|
222
|
+
type: 'number',
|
|
223
|
+
description: 'Maximum number of decimal places for numeric results. Default: 2, minimum: 0, maximum: 10.',
|
|
224
|
+
default: 2,
|
|
225
|
+
minimum: 0,
|
|
226
|
+
maximum: 10,
|
|
227
|
+
},
|
|
228
|
+
view: {
|
|
229
|
+
type: 'string',
|
|
230
|
+
enum: ['auto', 'metric', 'card', 'table'],
|
|
231
|
+
description: 'Preferred presentation. auto chooses a metric/card for a single result and a table for grouped or tabular results. Default: auto.',
|
|
232
|
+
default: 'auto',
|
|
233
|
+
},
|
|
234
|
+
},
|
|
235
|
+
required: ['operation'],
|
|
236
|
+
additionalProperties: false,
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
name: 'performTableRowAction',
|
|
241
|
+
description: 'Prepare a configured action for exactly one matching table row and show a confirmation card before running it. Always call inspectTable first to obtain the action ID and exact row property names. Never guess an action or run it when the row match is ambiguous.',
|
|
242
|
+
executionMode: 'component',
|
|
243
|
+
chatComponent: 'TableRowActionCard',
|
|
244
|
+
parameters: {
|
|
245
|
+
type: 'object',
|
|
246
|
+
properties: {
|
|
247
|
+
action: {
|
|
248
|
+
type: 'string',
|
|
249
|
+
description: 'Action ID returned by inspectTable. An exact action label may only be used when it uniquely identifies one configured action.',
|
|
250
|
+
},
|
|
251
|
+
match: {
|
|
252
|
+
type: 'array',
|
|
253
|
+
description: 'Exact property/value conditions that identify one row. All conditions are combined with AND. Prefer a stable unique ID property.',
|
|
254
|
+
minItems: 1,
|
|
255
|
+
items: {
|
|
256
|
+
type: 'object',
|
|
257
|
+
properties: {
|
|
258
|
+
property: {
|
|
259
|
+
type: 'string',
|
|
260
|
+
description: 'Row property to match, with dot notation allowed for nested values.',
|
|
261
|
+
},
|
|
262
|
+
value: {
|
|
263
|
+
description: 'Exact value to match. Preserve the natural string, number, boolean, or null type.',
|
|
264
|
+
anyOf: [
|
|
265
|
+
{ type: 'string' },
|
|
266
|
+
{ type: 'number' },
|
|
267
|
+
{ type: 'boolean' },
|
|
268
|
+
{ type: 'null' },
|
|
269
|
+
],
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
required: ['property', 'value'],
|
|
273
|
+
additionalProperties: false,
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
startDate: {
|
|
277
|
+
type: 'string',
|
|
278
|
+
format: 'date',
|
|
279
|
+
description: 'Optional inclusive start date in YYYY-MM-DD format used while fetching the candidate row.',
|
|
280
|
+
},
|
|
281
|
+
endDate: {
|
|
282
|
+
type: 'string',
|
|
283
|
+
format: 'date',
|
|
284
|
+
description: 'Optional inclusive end date in YYYY-MM-DD format used while fetching the candidate row.',
|
|
285
|
+
},
|
|
286
|
+
dateProperty: {
|
|
287
|
+
type: 'string',
|
|
288
|
+
description: 'Optional row date property for the date range, with dot notation allowed for nested values.',
|
|
289
|
+
},
|
|
290
|
+
useDefaultDateRange: {
|
|
291
|
+
type: 'boolean',
|
|
292
|
+
description: 'Whether to apply the table\'s configured default date range when startDate and endDate are omitted. Set false to search all time. Default: true.',
|
|
293
|
+
default: true,
|
|
294
|
+
},
|
|
295
|
+
confirmationMessage: {
|
|
296
|
+
type: 'string',
|
|
297
|
+
description: 'Short, explicit confirmation text explaining what will happen to the matched row. The user still has to approve the action in the widget.',
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
required: ['action', 'match'],
|
|
301
|
+
additionalProperties: false,
|
|
302
|
+
},
|
|
303
|
+
},
|
|
304
|
+
]
|
package/dist/Detail-BCUUNWvp.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),l=require("./vee-validate-zod-VCmLnrtQ.js"),y=require("./countries-CgZ081No.js"),g=require("lucide-vue-next"),$=require("@oneclick.dev/cms-kit"),E=require("./index-ijdf0d9-.js"),M={class:"flex flex-col gap-4"},F={class:"flex flex-col gap-2"},L={key:0,class:"text-red-500 text-sm mt-1"},R={class:"flex flex-col gap-4"},z={class:"flex flex-col gap-2"},U={key:0,class:"text-red-500 text-sm mt-1"},j={class:"flex flex-col gap-4"},P={class:"flex flex-col gap-2"},q={key:0,class:"text-red-500 text-sm mt-1"},G=e.defineComponent({__name:"Main",setup(B){const d=e.inject("isLoadingCompleted",e.ref(!1)),{errors:o}=l.useFormContext(),{value:i}=l.useField("title"),{value:n}=l.useField("description"),{value:s}=l.useField("price");return(u,t)=>{const c=e.resolveComponent("Label"),p=e.resolveComponent("Input"),m=e.resolveComponent("Textarea"),v=e.resolveComponent("CardContent"),h=e.resolveComponent("Card");return e.openBlock(),e.createBlock(h,null,{default:e.withCtx(()=>[e.createVNode(v,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[e.createElementVNode("div",M,[e.createElementVNode("div",F,[e.createVNode(c,{for:"title",class:"text-sm"},{default:e.withCtx(()=>[...t[3]||(t[3]=[e.createTextVNode("Name",-1)])]),_:1}),e.createVNode(p,{type:"text",id:"title",placeholder:e.unref(d)?"Fast shipping":"",modelValue:e.unref(i),"onUpdate:modelValue":t[0]||(t[0]=N=>e.isRef(i)?i.value=N:null)},null,8,["placeholder","modelValue"]),e.unref(o).title?(e.openBlock(),e.createElementBlock("p",L,e.toDisplayString(e.unref(o).title),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",R,[e.createElementVNode("div",z,[e.createVNode(c,{for:"description",class:"text-sm"},{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode("Description (optional)",-1)])]),_:1}),e.createVNode(m,{id:"description",placeholder:e.unref(d)?"Ships next day":"",modelValue:e.unref(n),"onUpdate:modelValue":t[1]||(t[1]=N=>e.isRef(n)?n.value=N:null)},null,8,["placeholder","modelValue"]),e.unref(o).description?(e.openBlock(),e.createElementBlock("p",U,e.toDisplayString(e.unref(o).description),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",j,[e.createElementVNode("div",P,[e.createVNode(c,{for:"price",class:"text-sm"},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode("Price",-1)])]),_:1}),e.createVNode(p,{type:"number",min:"0",id:"price",placeholder:e.unref(d)?"Free":"",modelValue:e.unref(s),"onUpdate:modelValue":t[2]||(t[2]=N=>e.isRef(s)?s.value=N:null),class:"no-spinner"},null,8,["placeholder","modelValue"]),e.unref(o).price?(e.openBlock(),e.createElementBlock("p",q,e.toDisplayString(e.unref(o).price),1)):e.createCommentVNode("",!0)])])]),_:1})]),_:1})}}}),A={class:"flex flex-col gap-4"},J={class:"flex flex-col gap-2"},K={class:"truncate"},W={class:"relative w-full max-w-sm items-center"},X={class:"absolute start-0 inset-y-0 flex items-center justify-center px-3"},Z={class:"truncate"},H={key:0,class:"text-red-500 text-sm mt-1"},Q={key:0},Y={class:"group flex items-center gap-2 bg-muted/50 rounded-md mb-1 p-2"},ee={class:"w-6"},te={class:"text-muted-foreground group-hover:text-black dark:group-hover:text-white"},oe=e.defineComponent({__name:"Countries",setup(B){const{errors:d}=l.useFormContext(),{value:o}=l.useField("countries");return e.watch(o,i=>{let n=i?.sort((u,t)=>!u||!t?0:y.rawCountries.find(c=>c.cca2===u)?.name.common.localeCompare(y.rawCountries.find(c=>c.cca2===t)?.name.common)),s=!0;for(let u=0;u<i.length;u++)if(i[u]!==o.value[u]){s=!1;break}s||(o.value=n)}),(i,n)=>{const s=e.resolveComponent("Label"),u=e.resolveComponent("Button"),t=e.resolveComponent("ComboboxTrigger"),c=e.resolveComponent("ComboboxAnchor"),p=e.resolveComponent("ComboboxInput"),m=e.resolveComponent("ComboboxEmpty"),v=e.resolveComponent("ComboboxItemIndicator"),h=e.resolveComponent("ComboboxItem"),N=e.resolveComponent("ComboboxGroup"),f=e.resolveComponent("ComboboxList"),T=e.resolveComponent("Combobox"),S=e.resolveComponent("CardContent"),w=e.resolveComponent("Card");return e.openBlock(),e.createBlock(w,null,{default:e.withCtx(()=>[e.createVNode(S,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[n[3]||(n[3]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Countries",-1)),e.createElementVNode("div",A,[e.createElementVNode("div",J,[e.createVNode(s,{class:"text-sm mb-2"},{default:e.withCtx(()=>[...n[1]||(n[1]=[e.createTextVNode("For which countries should this option be available?",-1)])]),_:1}),e.createVNode(T,{modelValue:e.unref(o),"onUpdate:modelValue":n[0]||(n[0]=x=>e.isRef(o)?o.value=x:null),multiple:!0},{default:e.withCtx(()=>[e.createVNode(c,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(t,{"as-child":""},{default:e.withCtx(()=>[e.createVNode(u,{variant:"outline",class:"justify-between"},{default:e.withCtx(()=>[e.createElementVNode("span",K,e.toDisplayString(e.unref(o)?.length>0?e.unref(o).slice(0,4).map(x=>e.unref(y.rawCountries).find(b=>b.cca2===x)?.name.common).join(", "):"Select countries"),1),e.createVNode(e.unref(g.ChevronsUpDown),{class:"ml-2 size-4 shrink-0 opacity-50"})]),_:1})]),_:1})]),_:1}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createElementVNode("div",W,[e.createVNode(p,{class:"pl-9 focus-visible:ring-0 border-0 border-b rounded-none h-10",placeholder:"Find country..."}),e.createElementVNode("span",X,[e.createVNode(e.unref(g.Search),{class:"size-4 text-muted-foreground"})])]),e.createVNode(m,null,{default:e.withCtx(()=>[...n[2]||(n[2]=[e.createTextVNode(" No countries found. ",-1)])]),_:1}),e.createVNode(N,{class:"max-h-72 overflow-y-scroll"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y.rawCountries),x=>(e.openBlock(),e.createBlock(h,{key:x.cca2,value:x.cca2},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(x.flag)+" ",1),e.createElementVNode("span",Z,e.toDisplayString(x.name.common),1),e.createVNode(v,null,{default:e.withCtx(()=>[e.createVNode(e.unref(g.Check),{class:"size-4"})]),_:1})]),_:2},1032,["value"]))),128))]),_:1})]),_:1})]),_:1},8,["modelValue"]),e.unref(d).countries?(e.openBlock(),e.createElementBlock("p",H,e.toDisplayString(e.unref(d).countries),1)):e.createCommentVNode("",!0)])]),e.unref(o)?.length>0?(e.openBlock(),e.createElementBlock("div",Q,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(o),x=>(e.openBlock(),e.createElementBlock("div",Y,[e.createElementVNode("div",ee,e.toDisplayString(e.unref(y.rawCountries).find(b=>b.cca2===x)?.flag),1),e.createElementVNode("p",te,e.toDisplayString(e.unref(y.rawCountries).find(b=>b.cca2===x)?.name.common),1),e.createVNode(u,{variant:"ghost",size:"icon",onClick:b=>o.value=e.unref(o).filter(O=>O!==x),class:"hidden group-hover:flex ml-auto size-6"},{default:e.withCtx(()=>[e.createVNode(e.unref(g.X),{class:"size-3"})]),_:1},8,["onClick"])]))),256))])):e.createCommentVNode("",!0)]),_:1})]),_:1})}}}),ne={class:"flex items-center space-x-2"},le={class:"flex items-center space-x-2"},se={class:"flex items-center space-x-2"},re={key:0,class:"flex gap-2 w-full mt-4"},ie={class:"flex flex-col gap-4 w-full"},ae={class:"flex flex-col gap-2"},ce={class:"relative"},de={key:0,class:"text-red-500 text-sm mt-1"},ue={class:"flex flex-col gap-4 w-full"},pe={class:"flex flex-col gap-2"},me={class:"relative"},fe={key:0,class:"text-red-500 text-sm mt-1"},xe={key:1,class:"flex gap-2 w-full mt-4"},_e={class:"flex flex-col gap-4 w-full"},Ce={class:"flex flex-col gap-2"},Ve={class:"relative"},ve={key:0,class:"text-red-500 text-sm mt-1"},Ne={class:"flex flex-col gap-4 w-full"},ge={class:"flex flex-col gap-2"},be={class:"relative"},he={key:0,class:"text-red-500 text-sm mt-1"},we=e.defineComponent({__name:"Condition",setup(B){const d=e.inject("isLoadingCompleted",e.ref(!1)),{errors:o}=l.useFormContext(),{value:i}=l.useField("condition"),{value:n}=l.useField("condition_min"),{value:s}=l.useField("condition_max");return(u,t)=>{const c=e.resolveComponent("RadioGroupItem"),p=e.resolveComponent("Label"),m=e.resolveComponent("RadioGroup"),v=e.resolveComponent("Input"),h=e.resolveComponent("CardContent"),N=e.resolveComponent("Card");return e.openBlock(),e.createBlock(N,null,{default:e.withCtx(()=>[e.createVNode(h,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[t[16]||(t[16]=e.createElementVNode("h3",{class:"text-lg font-semibold mb-4"},"Condition",-1)),t[17]||(t[17]=e.createElementVNode("p",null," Specify when this option should be available ",-1)),e.createVNode(m,{"default-value":"always",modelValue:e.unref(i),"onUpdate:modelValue":t[0]||(t[0]=f=>e.isRef(i)?i.value=f:null),class:e.normalizeClass(["flex flex-col transition-all duration-300",{"opacity-0 pointer-events-none":!e.unref(d)}])},{default:e.withCtx(()=>[e.createElementVNode("div",ne,[e.createVNode(c,{id:"always",value:"always"}),e.createVNode(p,{for:"always"},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode("Always",-1)])]),_:1})]),e.createElementVNode("div",le,[e.createVNode(c,{id:"weight_based",value:"weight_based"}),e.createVNode(p,{for:"weight_based"},{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createTextVNode("Weight based",-1)])]),_:1})]),e.createElementVNode("div",se,[e.createVNode(c,{id:"price_based",value:"price_based"}),e.createVNode(p,{for:"price_based"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createTextVNode("Price based",-1)])]),_:1})])]),_:1},8,["modelValue","class"]),e.unref(i)==="weight_based"?(e.openBlock(),e.createElementBlock("div",re,[e.createElementVNode("div",ie,[e.createElementVNode("div",ae,[e.createVNode(p,{for:"condition_min",class:"text-sm"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode("Minimum weight",-1)])]),_:1}),e.createElementVNode("div",ce,[e.createVNode(v,{type:"number",id:"condition_min",min:"0",placeholder:"0",modelValue:e.unref(n),"onUpdate:modelValue":t[1]||(t[1]=f=>e.isRef(n)?n.value=f:null),class:"no-spinner pr-10"},null,8,["modelValue"]),t[9]||(t[9]=e.createElementVNode("span",{class:"absolute pointer-events-none top-1/2 right-3 -translate-y-1/2 text-sm text-muted-foreground"},"kg",-1))]),e.unref(o).condition_min?(e.openBlock(),e.createElementBlock("p",de,e.toDisplayString(e.unref(o).condition_min),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",ue,[e.createElementVNode("div",pe,[e.createVNode(p,{for:"condition_max",class:"text-sm"},{default:e.withCtx(()=>[...t[10]||(t[10]=[e.createTextVNode("Maximum weight",-1)])]),_:1}),e.createElementVNode("div",me,[e.createVNode(v,{type:"number",id:"condition_max",min:"0",placeholder:"No limit",modelValue:e.unref(s),"onUpdate:modelValue":t[2]||(t[2]=f=>e.isRef(s)?s.value=f:null),class:"no-spinner pr-10"},null,8,["modelValue"]),t[11]||(t[11]=e.createElementVNode("span",{class:"absolute pointer-events-none top-1/2 right-3 -translate-y-1/2 text-sm text-muted-foreground"},"kg",-1))]),e.unref(o).condition_max?(e.openBlock(),e.createElementBlock("p",fe,e.toDisplayString(e.unref(o).condition_max),1)):e.createCommentVNode("",!0)])])])):e.unref(i)==="price_based"?(e.openBlock(),e.createElementBlock("div",xe,[e.createElementVNode("div",_e,[e.createElementVNode("div",Ce,[e.createVNode(p,{for:"condition_min",class:"text-sm"},{default:e.withCtx(()=>[...t[12]||(t[12]=[e.createTextVNode("Minimum price",-1)])]),_:1}),e.createElementVNode("div",Ve,[e.createVNode(v,{type:"number",id:"condition_min",min:"0",placeholder:"0, 00",modelValue:e.unref(n),"onUpdate:modelValue":t[3]||(t[3]=f=>e.isRef(n)?n.value=f:null),class:"no-spinner pl-8"},null,8,["modelValue"]),t[13]||(t[13]=e.createElementVNode("span",{class:"absolute pointer-events-none top-1/2 left-3 -translate-y-1/2 text-sm text-muted-foreground"},"€",-1))]),e.unref(o).condition_min?(e.openBlock(),e.createElementBlock("p",ve,e.toDisplayString(e.unref(o).condition_min),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Ne,[e.createElementVNode("div",ge,[e.createVNode(p,{for:"condition_max",class:"text-sm"},{default:e.withCtx(()=>[...t[14]||(t[14]=[e.createTextVNode("Maximum price",-1)])]),_:1}),e.createElementVNode("div",be,[e.createVNode(v,{type:"number",id:"condition_max",min:"0",placeholder:"No limit",modelValue:e.unref(s),"onUpdate:modelValue":t[4]||(t[4]=f=>e.isRef(s)?s.value=f:null),class:"no-spinner pl-8"},null,8,["modelValue"]),t[15]||(t[15]=e.createElementVNode("span",{class:"absolute pointer-events-none top-1/2 left-3 -translate-y-1/2 text-sm text-muted-foreground"},"€",-1))]),e.unref(o).condition_max?(e.openBlock(),e.createElementBlock("p",he,e.toDisplayString(e.unref(o).condition_max),1)):e.createCommentVNode("",!0)])])])):e.createCommentVNode("",!0)]),_:1})]),_:1})}}}),ke={class:"flex gap-2 rounded-lg p-2 bg-white text-black overflow-hidden shadow border"},ye={class:"w-full overflow-hidden"},Ee={class:"truncate"},Be={key:0,class:"text-sm text-muted-foreground"},$e={class:"ml-auto shrink-0"},Se={class:"font-bold"},Te=e.defineComponent({__name:"Example",setup(B){const{value:d}=l.useField("title"),{value:o}=l.useField("description"),{value:i}=l.useField("price");return(n,s)=>{const u=e.resolveComponent("CardContent"),t=e.resolveComponent("Card");return e.openBlock(),e.createBlock(t,null,{default:e.withCtx(()=>[e.createVNode(u,null,{default:e.withCtx(()=>[s[1]||(s[1]=e.createElementVNode("p",{class:"text-md font-semibold mb-2"},"Example",-1)),e.createElementVNode("div",ke,[s[0]||(s[0]=e.createElementVNode("div",{class:"pt-1 shrink-0"},[e.createElementVNode("div",{class:"size-4 rounded-full bg-primary flex items-center justify-center"},[e.createElementVNode("div",{class:"size-2 rounded-full bg-white"})])],-1)),e.createElementVNode("div",ye,[e.createElementVNode("p",Ee,e.toDisplayString(e.unref(d)||"Option Name"),1),e.unref(o)?(e.openBlock(),e.createElementBlock("p",Be,e.toDisplayString(e.unref(o)),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",$e,[e.createElementVNode("p",Se,e.toDisplayString(e.unref(i)?"€"+e.unref(i).toFixed(2):"FREE"),1)])])]),_:1})]),_:1})}}}),Oe={class:"relative @container"},Ie={class:"flex flex-row gap-4 justify-between max-w-5xl mx-auto mt-4 mb-6"},De={class:"flex items-center"},Me={class:"text-lg font-semibold mx-2"},Fe={class:"flex flex-col @3xl:flex-row gap-4 max-w-5xl mx-auto pb-24"},Le={class:"flex flex-col gap-4 w-full @3xl:w-2/3"},Re={class:"flex flex-col gap-4 w-full @3xl:w-1/3"},ze={key:0,class:"fixed bottom-4 left-0 md:left-12 right-0 min-w-xs max-w-5xl w-[calc(100%-2rem)] md:w-[calc(100%-5rem)] xl:w-[calc(100%-2rem)] h-16 border border-white/10 backdrop-blur-sm border-t border-border flex items-center justify-center px-4 mx-auto z-[9999] rounded-xl overflow-hidden shadow bg-[radial-gradient(#ffffff80,transparent)] dark:bg-[radial-gradient(#00000080,transparent)]"},Ue={class:"w-full max-w-5xl flex items-center justify-end mx-auto"},je=e.defineComponent({__name:"Detail",props:{config:{type:Object,required:!0}},setup(B){const d=B,{hasPermission:o,hasAnyPermission:i}=$.useModulePermissions(),{params:n,navigateTo:s}=$.useModuleRoute(),{confirm:u}=$.useConfirmation(),t=$.useFirebaseIntegration(d.config.project),c=e.computed(()=>!n.value.optionId||n.value.optionId==="new"),p=e.ref(!1),m=e.ref(!1),v=l.toTypedSchema(l.objectType({id:l.stringType().optional(),status:l.stringType().optional(),title:l.stringType().min(1,"Title is required"),description:l.stringType().optional(),price:l.preprocessType(a=>a===""?void 0:a,l.coerce.number().positive("Must be positive").optional()),countries:l.arrayType(l.stringType()).optional(),condition:l.stringType(),condition_min:l.preprocessType(a=>a===""?void 0:a,l.coerce.number().positive("Must be positive").optional()),condition_max:l.preprocessType(a=>a===""?void 0:a,l.coerce.number().positive("Must be positive").optional())})),{handleSubmit:h,errors:N,values:f,setValues:T}=l.useForm({validationSchema:v,initialValues:{status:"published",countries:[],condition:"always"}});$.useModuleBreadcrumbs(()=>[{text:f.title??"New Option"}]);const S=h(async a=>{m.value=!0;let r=await w()||[];if(c.value){let _=JSON.parse(JSON.stringify(a));_.id=crypto.randomUUID();const V=[...r,_],C=d.config.shippingOptionsCollection.split(":");await t.update(C[0],null,{[C[1]]:V}),s(_.id),E.toast.success("Shipping option created")}else{let _=JSON.parse(JSON.stringify(a));const V=r.map(k=>k.id===n.value.optionId?_:k),C=d.config.shippingOptionsCollection.split(":");await t.update(C[0],null,{[C[1]]:V}),s(`${n.value.optionId}`),E.toast.success("Shipping option updated")}m.value=!1}),w=async()=>{if(!d.config.shippingOptionsCollection)return[];const a=d.config.shippingOptionsCollection.split(":");return a.length!==2?[]:(await t.get(a[0]))?.[a[1]]||[]},x=async()=>{const r=(await w()).find(_=>_.id===n.value.optionId);T(r),p.value=!0},b=async()=>{try{let r={...[...await w()||[]].find(k=>k.id===n.value.optionId)};r.id=crypto.randomUUID(),r.status="published",r.title=r.title+" (copy)";const V=[...await w()||[],r],C=d.config.shippingOptionsCollection.split(":");await t.update(C[0],null,{[C[1]]:V}),s(r.id),E.toast.success("Option duplicated")}catch{E.toast.error("Failed to duplicate option")}},O=async()=>{if(await u("Are you sure you want to delete this option?"))try{const r=await w()||[];if(r.length===0||!n.value.optionId)throw new Error("Error loading values");const _=r.filter(C=>C.id!==n.value.optionId),V=d.config.shippingOptionsCollection.split(":");await t.update(V[0],null,{[V[1]]:_}),s(""),E.toast.success("Option deleted")}catch{E.toast.error("Failed to delete option")}};return e.onMounted(()=>{c.value?p.value=!0:x()}),e.provide("isLoadingCompleted",p),(a,r)=>{const _=e.resolveComponent("Button"),V=e.resolveComponent("MenubarTrigger"),C=e.resolveComponent("MenubarMenu"),k=e.resolveComponent("MenubarItem"),I=e.resolveComponent("MenubarContent"),D=e.resolveComponent("Menubar");return e.openBlock(),e.createElementBlock("div",Oe,[e.createElementVNode("div",Ie,[e.createElementVNode("div",De,[e.createVNode(_,{variant:"ghost",onClick:r[0]||(r[0]=Pe=>e.unref(s)(""))},{default:e.withCtx(()=>[e.createVNode(e.unref(g.Tag),{class:"size-4"})]),_:1}),e.createVNode(e.unref(g.ChevronRight),{class:"size-3"}),e.createElementVNode("h1",Me,e.toDisplayString(c.value?"New Option":e.unref(f).title),1)]),c.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(D,{key:0,class:"bg-sidebar"},{default:e.withCtx(()=>[e.unref(o)("create-collection")?(e.openBlock(),e.createBlock(C,{key:0},{default:e.withCtx(()=>[e.createVNode(V,{onClick:b},{default:e.withCtx(()=>[...r[1]||(r[1]=[e.createTextVNode("Duplicate",-1)])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.unref(i)("edit-collection","delete-option")?(e.openBlock(),e.createBlock(C,{key:1},{default:e.withCtx(()=>[e.createVNode(V,null,{default:e.withCtx(()=>[...r[2]||(r[2]=[e.createTextVNode("More actions",-1)])]),_:1}),e.createVNode(I,null,{default:e.withCtx(()=>[e.unref(o)("delete-option")?(e.openBlock(),e.createBlock(k,{key:0,variant:"destructive",onClick:O},{default:e.withCtx(()=>[e.createVNode(e.unref(g.Trash),{class:"size-4"}),r[3]||(r[3]=e.createTextVNode(" Delete option ",-1))]),_:1})):e.createCommentVNode("",!0)]),_:1})]),_:1})):e.createCommentVNode("",!0)]),_:1}))]),e.createElementVNode("div",Fe,[e.createElementVNode("div",Le,[e.createVNode(G),e.createVNode(oe),e.createVNode(we)]),e.createElementVNode("div",Re,[e.createVNode(Te)])]),e.unref(i)("create-option","edit-option")?(e.openBlock(),e.createElementBlock("div",ze,[e.createElementVNode("div",Ue,[c.value&&e.unref(o)("create-option")?(e.openBlock(),e.createBlock(_,{key:0,onClick:e.unref(S),disabled:m.value},{default:e.withCtx(()=>[m.value?(e.openBlock(),e.createBlock(e.unref(g.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(m.value?"Creating":"Create")+" New Option ",1)]),_:1},8,["onClick","disabled"])):e.unref(o)("edit-option")?(e.openBlock(),e.createBlock(_,{key:1,onClick:e.unref(S),disabled:m.value},{default:e.withCtx(()=>[m.value?(e.openBlock(),e.createBlock(e.unref(g.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(m.value?"Saving":"Save")+" Changes ",1)]),_:1},8,["onClick","disabled"])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)])}}});exports.default=je;
|
package/dist/Detail-DGg_xXZc.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),u=require("./vee-validate-zod-VCmLnrtQ.js"),C=require("lucide-vue-next"),U=require("@oneclick.dev/cms-kit"),$=require("./index-ijdf0d9-.js"),X={class:"flex flex-col gap-4"},K={class:"flex flex-col gap-2"},Z={key:0,class:"text-red-500 text-sm mt-1"},H={class:"flex flex-col gap-4"},Q={class:"flex flex-col gap-2"},W={key:0,class:"text-red-500 text-sm mt-1"},Y={class:"flex flex-col gap-4"},ee={class:"flex flex-col gap-2"},te={key:0,class:"text-red-500 text-sm mt-1"},oe={class:"flex flex-col gap-4"},le={class:"flex flex-col gap-2"},ne={class:"flex items-center gap-2 mb-2"},se={class:"flex items-center gap-2"},ae=["src"],ce={key:0,class:"text-red-500 text-sm mt-1"},re=e.defineComponent({__name:"Main",setup(M){const V=e.inject("sources"),{errors:f}=u.useFormContext(),{value:v}=u.useField("title"),{value:r}=u.useField("description"),{value:x}=u.useField("thumbnail"),{value:k}=u.useField("slug"),N=i=>{x.value=Array.isArray(i)?i[0]||"":i};function h(i){return i?i.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").trim().replace(/[-\s]+/g,"-"):""}return e.watch(v,(i,c)=>{(!k.value||h(c)===k.value)&&(k.value=h(i))}),(i,c)=>{const b=e.resolveComponent("Label"),S=e.resolveComponent("Input"),E=e.resolveComponent("Textarea"),T=e.resolveComponent("Button"),y=e.resolveComponent("MediaPickerDialog"),I=e.resolveComponent("CardContent"),z=e.resolveComponent("Card");return e.openBlock(),e.createBlock(z,null,{default:e.withCtx(()=>[e.createVNode(I,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[e.createElementVNode("div",X,[e.createElementVNode("div",K,[e.createVNode(b,{for:"title",class:"text-sm mb-2"},{default:e.withCtx(()=>[...c[6]||(c[6]=[e.createTextVNode("Title",-1)])]),_:1}),e.createVNode(S,{type:"text",id:"title",placeholder:"Summer collection",modelValue:e.unref(v),"onUpdate:modelValue":c[0]||(c[0]=g=>e.isRef(v)?v.value=g:null)},null,8,["modelValue"]),e.unref(f).title?(e.openBlock(),e.createElementBlock("p",Z,e.toDisplayString(e.unref(f).title),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",H,[e.createElementVNode("div",Q,[e.createVNode(b,{for:"slug",class:"text-sm mb-2"},{default:e.withCtx(()=>[...c[7]||(c[7]=[e.createTextVNode("Slug",-1)])]),_:1}),e.createVNode(S,{id:"slug",placeholder:"summer-collection",modelValue:e.unref(k),"onUpdate:modelValue":c[1]||(c[1]=g=>e.isRef(k)?k.value=g:null)},null,8,["modelValue"]),e.unref(f).slug?(e.openBlock(),e.createElementBlock("p",W,e.toDisplayString(e.unref(f).slug),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Y,[e.createElementVNode("div",ee,[e.createVNode(b,{for:"description",class:"text-sm mb-2"},{default:e.withCtx(()=>[...c[8]||(c[8]=[e.createTextVNode("Description",-1)])]),_:1}),e.createVNode(E,{id:"description",placeholder:"Fresh, vibrant, and bold. The perfect collection for the summer season.",modelValue:e.unref(r),"onUpdate:modelValue":c[2]||(c[2]=g=>e.isRef(r)?r.value=g:null)},null,8,["modelValue"]),e.unref(f).description?(e.openBlock(),e.createElementBlock("p",te,e.toDisplayString(e.unref(f).description),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",oe,[e.createElementVNode("div",le,[e.createElementVNode("div",ne,[e.createVNode(b,{for:"media",class:"text-sm"},{default:e.withCtx(()=>[...c[9]||(c[9]=[e.createTextVNode("Thumbnail",-1)])]),_:1}),e.unref(x)?(e.openBlock(),e.createBlock(T,{key:0,variant:"ghost",size:"icon",onClick:c[3]||(c[3]=g=>x.value="")},{default:e.withCtx(()=>[e.createVNode(e.unref(C.X),{class:"size-4"})]),_:1})):e.createCommentVNode("",!0)]),e.createElementVNode("div",se,[e.createVNode(y,{sources:e.unref(V),maxFiles:1,"initial-value":e.unref(x)?[e.unref(x)]:[],onSubmit:c[5]||(c[5]=g=>N(g))},{default:e.withCtx(()=>[e.createElementVNode("button",{onClick:c[4]||(c[4]=e.withModifiers(()=>{},["stop"])),tabindex:"-1",class:"cursor-pointer block"},[e.unref(x)?(e.openBlock(),e.createElementBlock("img",{key:1,src:e.unref(x),class:"size-42 rounded-md object-cover",draggable:"false"},null,8,ae)):(e.openBlock(),e.createBlock(T,{key:0,variant:"outline",class:"size-42 border-dashed cursor-pointer"},{default:e.withCtx(()=>[e.createVNode(e.unref(C.ImagePlus))]),_:1}))])]),_:1},8,["sources","initial-value"]),e.unref(f).thumbnail?(e.openBlock(),e.createElementBlock("p",ce,e.toDisplayString(e.unref(f).thumbnail),1)):e.createCommentVNode("",!0)])])])]),_:1})]),_:1})}}}),ie={class:"flex items-center gap-2"},de={key:0,class:"size-3 rounded-full bg-green-500"},ue={key:1,class:"size-3 rounded-full bg-blue-500"},me=e.defineComponent({__name:"Status",setup(M){const{errors:V}=u.useFormContext(),{value:f}=u.useField("status");return(v,r)=>{const x=e.resolveComponent("SelectValue"),k=e.resolveComponent("SelectTrigger"),N=e.resolveComponent("SelectItem"),h=e.resolveComponent("SelectGroup"),i=e.resolveComponent("SelectContent"),c=e.resolveComponent("Select"),b=e.resolveComponent("CardContent"),S=e.resolveComponent("Card");return e.openBlock(),e.createBlock(S,null,{default:e.withCtx(()=>[e.createVNode(b,null,{default:e.withCtx(()=>[r[3]||(r[3]=e.createElementVNode("p",{class:"text-md font-semibold mb-2"},"Status",-1)),e.createVNode(c,{modelValue:e.unref(f),"onUpdate:modelValue":r[0]||(r[0]=E=>e.isRef(f)?f.value=E:null),class:"w-full"},{default:e.withCtx(()=>[e.createVNode(k,{class:"w-full"},{default:e.withCtx(()=>[e.createElementVNode("div",ie,[e.unref(f)==="published"?(e.openBlock(),e.createElementBlock("span",de)):e.unref(f)==="draft"?(e.openBlock(),e.createElementBlock("span",ue)):e.createCommentVNode("",!0),e.createVNode(x,{placeholder:"Status"})])]),_:1}),e.createVNode(i,null,{default:e.withCtx(()=>[e.createVNode(h,null,{default:e.withCtx(()=>[e.createVNode(N,{value:"published"},{default:e.withCtx(()=>[...r[1]||(r[1]=[e.createElementVNode("span",{class:"size-3 rounded-full bg-green-500"},null,-1),e.createTextVNode(" Published ",-1)])]),_:1}),e.createVNode(N,{value:"draft"},{default:e.withCtx(()=>[...r[2]||(r[2]=[e.createElementVNode("span",{class:"size-3 rounded-full bg-blue-500"},null,-1),e.createTextVNode(" Draft ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1})}}}),pe={class:"flex items-center justify-between gap-4"},fe={class:"text-sm text-muted-foreground"},xe={key:0,class:"border border-dashed rounded-lg p-6 text-center text-sm text-muted-foreground"},ge={key:1,class:"flex flex-col gap-3"},_e={class:"flex items-center gap-3 p-3"},Ce=["onClick"],ve={key:1,class:"size-10 rounded-md border border-dashed flex items-center justify-center text-muted-foreground"},Ve={class:"min-w-0"},ke={class:"flex items-center gap-2"},Ne={class:"font-medium truncate"},he={key:0,class:"bg-green-500 text-green-950 px-2 py-1 rounded-lg text-xs"},be={key:1,class:"bg-blue-500 text-blue-950 px-2 py-1 rounded-lg text-xs"},ye={class:"flex items-center gap-1"},we={key:0,class:"border-t p-4 flex flex-col gap-4"},Se={class:"grid grid-cols-1 @md:grid-cols-2 gap-4"},Be={class:"flex flex-col gap-2"},Ee={key:0,class:"text-red-500 text-sm mt-1"},Te={class:"flex flex-col gap-2"},$e={key:0,class:"text-red-500 text-sm mt-1"},ze={class:"flex flex-col gap-2"},De={class:"flex items-center gap-2"},Ie={key:0,class:"size-3 rounded-full bg-green-500"},Ue={key:1,class:"size-3 rounded-full bg-blue-500"},Me={class:"flex flex-col gap-2"},Ae={class:"flex flex-col gap-2"},Fe={class:"flex items-center gap-2"},Pe=["src"],je=e.defineComponent({__name:"Subcollections",setup(M){const V=e.inject("sources"),{errors:f}=u.useFormContext(),{value:v}=u.useField("subcollections"),r=e.ref([]),x=e.computed(()=>(Array.isArray(v.value)||(v.value=[]),v.value.map(N)));function k(l){return l?l.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^\w\s-]/g,"").trim().replace(/[-\s]+/g,"-"):""}function N(l){const t=l;return t.id||(t.id=crypto.randomUUID()),t.type="manual",t.status||(t.status="draft"),t.slug||(t.slug=k(t.title)),delete t.seo,t}function h(){return{id:crypto.randomUUID(),title:"",type:"manual",description:"",thumbnail:"",slug:"",status:"draft"}}function i(){return Array.isArray(v.value)?v.value.map(N):[]}function c(l){v.value=l}function b(){const l=h();c([...i(),l]),r.value=[l.id]}function S(l){const t=i(),m=t.findIndex(n=>n.id===l.id),o=JSON.parse(JSON.stringify(l));o.id=crypto.randomUUID(),o.type="manual",o.title=`${o.title||"Untitled subcollection"} (copy)`,o.slug=g(o.slug?`${o.slug}-copy`:o.title,o.id),delete o.seo;const a=[...t];a.splice(m+1,0,o),c(a),r.value=[o.id]}function E(l){c(i().filter(t=>t.id!==l)),r.value=r.value.filter(t=>t!==l)}function T(l,t){const m=i(),o=m.findIndex(p=>p.id===l),a=t==="up"?o-1:o+1;if(o<0||a<0||a>=m.length)return;const n=[...m],[d]=n.splice(o,1);n.splice(a,0,d),c(n)}function y(l){r.value=r.value.includes(l)?r.value.filter(t=>t!==l):[...r.value,l]}function I(l,t){const m=l.title;l.title=t,(!l.slug||k(m)===l.slug)&&(l.slug=g(t,l.id))}function z(l,t){l.thumbnail=Array.isArray(t)?t[0]||"":t}function g(l,t){const m=k(l)||"subcollection",o=new Set(i().filter(d=>d.id!==t).map(d=>d.slug).filter(Boolean));if(!o.has(m))return m;let a=2,n=`${m}-${a}`;for(;o.has(n);)a++,n=`${m}-${a}`;return n}function F(l){l.slug=g(l.slug||l.title,l.id)}function B(l){return f.value?.[l]}return(l,t)=>{const m=e.resolveComponent("Button"),o=e.resolveComponent("AvatarImage"),a=e.resolveComponent("AvatarFallback"),n=e.resolveComponent("Avatar"),d=e.resolveComponent("Label"),p=e.resolveComponent("Input"),w=e.resolveComponent("SelectValue"),P=e.resolveComponent("SelectTrigger"),A=e.resolveComponent("SelectItem"),j=e.resolveComponent("SelectGroup"),q=e.resolveComponent("SelectContent"),L=e.resolveComponent("Select"),O=e.resolveComponent("Textarea"),R=e.resolveComponent("MediaPickerDialog"),G=e.resolveComponent("CardContent"),J=e.resolveComponent("Card");return e.openBlock(),e.createBlock(J,null,{default:e.withCtx(()=>[e.createVNode(G,{class:"flex flex-col gap-4"},{default:e.withCtx(()=>[e.createElementVNode("div",pe,[e.createElementVNode("div",null,[t[1]||(t[1]=e.createElementVNode("h3",{class:"text-lg font-semibold"},"Subcollections",-1)),e.createElementVNode("p",fe,e.toDisplayString(x.value.length)+" subcollections",1)]),e.createVNode(m,{variant:"outline",onClick:b},{default:e.withCtx(()=>[e.createVNode(e.unref(C.Plus),{class:"size-4"}),t[2]||(t[2]=e.createTextVNode(" Add ",-1))]),_:1})]),x.value.length===0?(e.openBlock(),e.createElementBlock("div",xe," No subcollections yet. ")):(e.openBlock(),e.createElementBlock("div",ge,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x.value,(s,D)=>(e.openBlock(),e.createElementBlock("div",{key:s.id,class:"border rounded-lg overflow-hidden"},[e.createElementVNode("div",_e,[e.createElementVNode("button",{class:"flex items-center gap-3 min-w-0 flex-1 text-left cursor-pointer",onClick:_=>y(s.id)},[s.thumbnail?(e.openBlock(),e.createBlock(n,{key:0,class:"size-10 rounded-md"},{default:e.withCtx(()=>[e.createVNode(o,{src:s.thumbnail,class:"object-cover"},null,8,["src"]),e.createVNode(a,{class:"rounded-md"})]),_:2},1024)):(e.openBlock(),e.createElementBlock("div",ve,[e.createVNode(e.unref(C.ImagePlus),{class:"size-4"})])),e.createElementVNode("div",Ve,[e.createElementVNode("div",ke,[e.createElementVNode("p",Ne,e.toDisplayString(s.title||"Untitled subcollection"),1),s.status==="published"?(e.openBlock(),e.createElementBlock("span",he,"Published")):(e.openBlock(),e.createElementBlock("span",be,"Draft"))])])],8,Ce),e.createElementVNode("div",ye,[e.createVNode(m,{size:"icon",variant:"ghost",onClick:_=>T(s.id,"up"),disabled:D===0},{default:e.withCtx(()=>[e.createVNode(e.unref(C.ArrowUp),{class:"size-4"})]),_:1},8,["onClick","disabled"]),e.createVNode(m,{size:"icon",variant:"ghost",onClick:_=>T(s.id,"down"),disabled:D===x.value.length-1},{default:e.withCtx(()=>[e.createVNode(e.unref(C.ArrowDown),{class:"size-4"})]),_:1},8,["onClick","disabled"]),e.createVNode(m,{size:"icon",variant:"ghost",onClick:_=>S(s)},{default:e.withCtx(()=>[e.createVNode(e.unref(C.Copy),{class:"size-4"})]),_:1},8,["onClick"]),e.createVNode(m,{size:"icon",variant:"ghost",onClick:_=>E(s.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(C.Trash),{class:"size-4"})]),_:1},8,["onClick"]),e.createVNode(m,{size:"icon",variant:"ghost",onClick:_=>y(s.id)},{default:e.withCtx(()=>[r.value.includes(s.id)?(e.openBlock(),e.createBlock(e.unref(C.ChevronUp),{key:0,class:"size-4"})):(e.openBlock(),e.createBlock(e.unref(C.ChevronDown),{key:1,class:"size-4"}))]),_:2},1032,["onClick"])])]),r.value.includes(s.id)?(e.openBlock(),e.createElementBlock("div",we,[e.createElementVNode("div",Se,[e.createElementVNode("div",Be,[e.createVNode(d,{for:`subcollection-${s.id}-title`,class:"text-sm"},{default:e.withCtx(()=>[...t[3]||(t[3]=[e.createTextVNode("Title",-1)])]),_:1},8,["for"]),e.createVNode(p,{type:"text",id:`subcollection-${s.id}-title`,placeholder:"Summer dresses","model-value":s.title,"onUpdate:modelValue":_=>I(s,String(_||""))},null,8,["id","model-value","onUpdate:modelValue"]),B(`subcollections[${D}].title`)?(e.openBlock(),e.createElementBlock("p",Ee,e.toDisplayString(B(`subcollections[${D}].title`)),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Te,[e.createVNode(d,{for:`subcollection-${s.id}-slug`,class:"text-sm"},{default:e.withCtx(()=>[...t[4]||(t[4]=[e.createTextVNode("Slug",-1)])]),_:1},8,["for"]),e.createVNode(p,{id:`subcollection-${s.id}-slug`,placeholder:"summer-dresses",modelValue:s.slug,"onUpdate:modelValue":_=>s.slug=_,onBlur:_=>F(s)},null,8,["id","modelValue","onUpdate:modelValue","onBlur"]),B(`subcollections[${D}].slug`)?(e.openBlock(),e.createElementBlock("p",$e,e.toDisplayString(B(`subcollections[${D}].slug`)),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",ze,[e.createVNode(d,{for:`subcollection-${s.id}-status`,class:"text-sm"},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode("Status",-1)])]),_:1},8,["for"]),e.createVNode(L,{modelValue:s.status,"onUpdate:modelValue":_=>s.status=_},{default:e.withCtx(()=>[e.createVNode(P,{id:`subcollection-${s.id}-status`,class:"w-full"},{default:e.withCtx(()=>[e.createElementVNode("div",De,[s.status==="published"?(e.openBlock(),e.createElementBlock("span",Ie)):(e.openBlock(),e.createElementBlock("span",Ue)),e.createVNode(w,{placeholder:"Status"})])]),_:2},1032,["id"]),e.createVNode(q,null,{default:e.withCtx(()=>[e.createVNode(j,null,{default:e.withCtx(()=>[e.createVNode(A,{value:"published"},{default:e.withCtx(()=>[...t[6]||(t[6]=[e.createElementVNode("span",{class:"size-3 rounded-full bg-green-500"},null,-1),e.createTextVNode(" Published ",-1)])]),_:1}),e.createVNode(A,{value:"draft"},{default:e.withCtx(()=>[...t[7]||(t[7]=[e.createElementVNode("span",{class:"size-3 rounded-full bg-blue-500"},null,-1),e.createTextVNode(" Draft ",-1)])]),_:1})]),_:1})]),_:1})]),_:2},1032,["modelValue","onUpdate:modelValue"])]),e.createElementVNode("div",Me,[e.createVNode(d,{for:`subcollection-${s.id}-description`,class:"text-sm"},{default:e.withCtx(()=>[...t[8]||(t[8]=[e.createTextVNode("Description",-1)])]),_:1},8,["for"]),e.createVNode(O,{id:`subcollection-${s.id}-description`,placeholder:"Fresh, vibrant, and bold. The perfect collection for the summer season.",modelValue:s.description,"onUpdate:modelValue":_=>s.description=_},null,8,["id","modelValue","onUpdate:modelValue"])]),e.createElementVNode("div",Ae,[e.createElementVNode("div",Fe,[e.createVNode(d,{for:`subcollection-${s.id}-media`,class:"text-sm"},{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode("Thumbnail",-1)])]),_:1},8,["for"]),s.thumbnail?(e.openBlock(),e.createBlock(m,{key:0,variant:"ghost",size:"icon",onClick:_=>s.thumbnail=""},{default:e.withCtx(()=>[e.createVNode(e.unref(C.X),{class:"size-4"})]),_:1},8,["onClick"])):e.createCommentVNode("",!0)]),e.createVNode(R,{sources:e.unref(V),maxFiles:1,"initial-value":s.thumbnail?[s.thumbnail]:[],onSubmit:_=>z(s,_)},{default:e.withCtx(()=>[e.createElementVNode("button",{onClick:t[0]||(t[0]=e.withModifiers(()=>{},["stop"])),tabindex:"-1",class:"cursor-pointer block"},[s.thumbnail?(e.openBlock(),e.createElementBlock("img",{key:1,src:s.thumbnail,class:"size-32 rounded-md object-cover",draggable:"false"},null,8,Pe)):(e.openBlock(),e.createBlock(m,{key:0,variant:"outline",class:"size-32 border-dashed cursor-pointer"},{default:e.withCtx(()=>[e.createVNode(e.unref(C.ImagePlus))]),_:1}))])]),_:2},1032,["sources","initial-value","onSubmit"])])])):e.createCommentVNode("",!0)]))),128))]))]),_:1})]),_:1})}}}),qe={class:"relative @container"},Le={class:"flex flex-row gap-4 justify-between max-w-5xl mx-auto mt-4 mb-6"},Oe={class:"flex items-center"},Re={class:"text-lg font-semibold mx-2"},Ge={key:0,class:"bg-green-500 text-green-950 px-2 py-1 rounded-lg text-xs"},Je={key:1,class:"bg-blue-500 text-blue-950 px-2 py-1 rounded-lg text-xs"},Xe={class:"flex flex-col @3xl:flex-row gap-4 max-w-5xl mx-auto pb-24"},Ke={class:"flex flex-col gap-4 w-full @3xl:w-2/3"},Ze={class:"flex flex-col gap-4 w-full @3xl:w-1/3"},He={key:0,class:"fixed bottom-4 left-0 md:left-12 right-0 min-w-xs max-w-5xl w-[calc(100%-2rem)] md:w-[calc(100%-5rem)] xl:w-[calc(100%-2rem)] h-16 border border-white/10 backdrop-blur-sm border-t border-border flex items-center justify-center px-4 mx-auto z-[9999] rounded-xl overflow-hidden shadow bg-[radial-gradient(#ffffff80,transparent)] dark:bg-[radial-gradient(#00000080,transparent)]"},Qe={class:"w-full max-w-5xl flex items-center justify-end mx-auto"},We=e.defineComponent({__name:"Detail",props:{config:{type:Object,required:!0}},setup(M){const V=M,{hasPermission:f,hasAnyPermission:v}=U.useModulePermissions(),{params:r,navigateTo:x}=U.useModuleRoute(),{confirm:k}=U.useConfirmation(),N=U.useFirebaseIntegration(V.config.project);e.provide("sources",V.config.allowedMediaSources),e.provide("defaultSource",V.config.defaultUploadMediaSource);const h=e.computed(()=>!r.value.collectionId||r.value.collectionId==="new"),i=e.ref(!1),c=u.objectType({field:u.stringType(),operator:u.enumType(["==","!=","<",">","<=",">=","in","not-in","array-contains","array-contains-any"]),value:u.anyType()}),b=u.objectType({title:u.stringType().min(1,"Title is required"),type:u.stringType(),description:u.stringType().optional(),thumbnail:u.stringType().optional(),slug:u.stringType(),conditions:u.arrayType(c).optional(),status:u.stringType()}),S=b.extend({id:u.stringType().min(1,"ID is required")}),E=u.toTypedSchema(b.extend({id:u.stringType().optional(),subcollections:u.arrayType(S).optional()})),{handleSubmit:T,values:y,setValues:I}=u.useForm({validationSchema:E,initialValues:{status:"draft",type:"manual",subcollections:[]}});U.useModuleBreadcrumbs(()=>[{text:h.value?"New Collection":y.title||"Collection"}]);const z=T(async o=>{i.value=!0;let a=await g()||[];if(h.value){let n=B(o);if(n.id=crypto.randomUUID(),await m(n.slug)){$.toast.error("Collection with this slug already exists"),i.value=!1;return}const d=[...a,n],p=V.config.collectionsCollection.split(":");await N.update(p[0],null,{[p[1]]:d}),x("/"),$.toast.success("Collection created")}else{let n=B(o);const d=a.map(w=>w.id===r.value.collectionId?n:w),p=V.config.collectionsCollection.split(":");await N.update(p[0],null,{[p[1]]:d}),x("/"),$.toast.success("Collection updated")}i.value=!1}),g=async()=>{if(!V.config.collectionsCollection)return[];const o=V.config.collectionsCollection.split(":");return o.length!==2?[]:(await N.get(o[0]))?.[o[1]]||[]},F=async()=>{const a=(await g()).find(n=>n.id===r.value.collectionId);I(a)},B=(o,a=!1)=>{const n=JSON.parse(JSON.stringify(o));return n.type||="manual",n.status||="draft",delete n.seo,n.subcollections=(n.subcollections||[]).map(d=>{const p={...d,id:a||!d.id?crypto.randomUUID():d.id,type:"manual",status:d.status||"draft",slug:d.slug||""};return delete p.seo,delete p.subcollections,p}),n},l=async()=>{try{let o=B(y,!0),a=o.slug+"-copy",n=2;for(;await m(a);)a=o.slug+"-copy-"+n,n++;o.id=crypto.randomUUID(),o.slug=a,o.status="draft",o.title=o.title+" (copy)";const p=[...await g()||[],o],w=V.config.collectionsCollection.split(":");await N.update(w[0],null,{[w[1]]:p}),x(o.id),$.toast.success("Collection duplicated")}catch{$.toast.error("Failed to duplicate collection")}},t=async()=>{const o=Array.isArray(y.subcollections)&&y.subcollections.length>0;if(await k(o?"Are you sure you want to delete this collection? All subcollections will also be deleted.":"Are you sure you want to delete this collection?"))try{const n=await g()||[];if(n.length===0||!r.value.collectionId)throw new Error("Error loading values");const d=n.filter(w=>w.id!==r.value.collectionId),p=V.config.collectionsCollection.split(":");await N.update(p[0],null,{[p[1]]:d}),x(""),$.toast.success("Collection deleted")}catch{$.toast.error("Failed to delete collection")}},m=async o=>!!(await g()||[]).find(n=>n.slug===o);return e.onMounted(()=>{h.value||F()}),(o,a)=>{const n=e.resolveComponent("Button"),d=e.resolveComponent("MenubarTrigger"),p=e.resolveComponent("MenubarMenu"),w=e.resolveComponent("MenubarItem"),P=e.resolveComponent("MenubarContent"),A=e.resolveComponent("Menubar");return e.openBlock(),e.createElementBlock("div",qe,[e.createElementVNode("div",Le,[e.createElementVNode("div",Oe,[e.createVNode(n,{variant:"ghost",onClick:a[0]||(a[0]=j=>e.unref(x)(""))},{default:e.withCtx(()=>[e.createVNode(e.unref(C.Tag),{class:"size-4"})]),_:1}),e.createVNode(e.unref(C.ChevronRight),{class:"size-3"}),e.createElementVNode("h1",Re,e.toDisplayString(h.value?"New Collection":e.unref(y).title),1),e.unref(y).status==="published"?(e.openBlock(),e.createElementBlock("span",Ge,"Published")):e.unref(y).status==="draft"?(e.openBlock(),e.createElementBlock("span",Je,"Draft")):e.createCommentVNode("",!0)]),h.value?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(A,{key:0,class:"bg-sidebar"},{default:e.withCtx(()=>[e.unref(f)("create-collection")?(e.openBlock(),e.createBlock(p,{key:0},{default:e.withCtx(()=>[e.createVNode(d,{onClick:l},{default:e.withCtx(()=>[...a[1]||(a[1]=[e.createTextVNode("Duplicate",-1)])]),_:1})]),_:1})):e.createCommentVNode("",!0),e.unref(v)("edit-collection","delete-collection")?(e.openBlock(),e.createBlock(p,{key:1},{default:e.withCtx(()=>[e.createVNode(d,null,{default:e.withCtx(()=>[...a[2]||(a[2]=[e.createTextVNode("More actions",-1)])]),_:1}),e.createVNode(P,null,{default:e.withCtx(()=>[e.unref(f)("delete-collection")?(e.openBlock(),e.createBlock(w,{key:0,variant:"destructive",onClick:t},{default:e.withCtx(()=>[e.createVNode(e.unref(C.Trash),{class:"size-4"}),a[3]||(a[3]=e.createTextVNode(" Delete collection ",-1))]),_:1})):e.createCommentVNode("",!0)]),_:1})]),_:1})):e.createCommentVNode("",!0)]),_:1}))]),e.createElementVNode("div",Xe,[e.createElementVNode("div",Ke,[e.createVNode(re),e.createVNode(je)]),e.createElementVNode("div",Ze,[e.createVNode(me)])]),e.unref(v)("create-collection","edit-collection")?(e.openBlock(),e.createElementBlock("div",He,[e.createElementVNode("div",Qe,[h.value&&e.unref(f)("create-collection")?(e.openBlock(),e.createBlock(n,{key:0,onClick:e.unref(z),disabled:i.value},{default:e.withCtx(()=>[i.value?(e.openBlock(),e.createBlock(e.unref(C.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(i.value?"Creating":"Create")+" New Collection ",1)]),_:1},8,["onClick","disabled"])):e.unref(f)("edit-collection")?(e.openBlock(),e.createBlock(n,{key:1,onClick:e.unref(z),disabled:i.value},{default:e.withCtx(()=>[i.value?(e.openBlock(),e.createBlock(e.unref(C.Loader2),{key:0,class:"size-4 animate-spin"})):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(i.value?"Saving":"Save")+" Changes ",1)]),_:1},8,["onClick","disabled"])):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)])}}});exports.default=We;
|