@vc-shell/vc-app-skill 2.0.0-alpha.33 → 2.0.0-alpha.34
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/CHANGELOG.md +78 -54
- package/README.md +42 -12
- package/package.json +4 -4
- package/runtime/VERSION +1 -1
- package/runtime/agents/api-analyzer.md +31 -16
- package/runtime/agents/blade-enhancer.md +15 -9
- package/runtime/agents/details-blade-generator.md +47 -31
- package/runtime/agents/list-blade-generator.md +21 -37
- package/runtime/agents/locales-generator.md +3 -0
- package/runtime/agents/migration-agent.md +18 -7
- package/runtime/agents/module-analyzer.md +2 -0
- package/runtime/agents/module-assembler.md +15 -0
- package/runtime/agents/promote-agent.md +15 -4
- package/runtime/agents/type-checker.md +11 -0
- package/runtime/knowledge/docs/_BUILD_HASH.md +1 -1
- package/runtime/knowledge/docs/core/api/platform.docs.md +30 -30
- package/runtime/knowledge/docs/core/blade-navigation/blade-nav-composables.docs.md +41 -41
- package/runtime/knowledge/docs/core/composables/bladeContext/index.docs.md +12 -10
- package/runtime/knowledge/docs/core/composables/useApiClient/useApiClient.docs.md +11 -14
- package/runtime/knowledge/docs/core/composables/useAppBarMobileButtons/useAppBarMobileButtons.docs.md +35 -35
- package/runtime/knowledge/docs/core/composables/useAppBarWidget/useAppBarWidget.docs.md +35 -35
- package/runtime/knowledge/docs/core/composables/useAppInsights/useAppInsights.docs.md +15 -15
- package/runtime/knowledge/docs/core/composables/useAssets/useAssets.docs.md +21 -18
- package/runtime/knowledge/docs/core/composables/useAssetsManager/useAssetsManager.docs.md +28 -24
- package/runtime/knowledge/docs/core/composables/useAsync/useAsync.docs.md +90 -61
- package/runtime/knowledge/docs/core/composables/useBeforeUnload/useBeforeUnload.docs.md +19 -18
- package/runtime/knowledge/docs/core/composables/useBlade/useBlade.docs.md +89 -68
- package/runtime/knowledge/docs/core/composables/useBladeForm/useBladeForm.docs.md +27 -25
- package/runtime/knowledge/docs/core/composables/useBladeRegistry/useBladeRegistry.docs.md +15 -15
- package/runtime/knowledge/docs/core/composables/useBladeWidgets/index.docs.md +43 -47
- package/runtime/knowledge/docs/core/composables/useBreadcrumbs/useBreadcrumbs.docs.md +11 -11
- package/runtime/knowledge/docs/core/composables/useConnectionStatus/useConnectionStatus.docs.md +27 -15
- package/runtime/knowledge/docs/core/composables/useDashboard/useDashboard.docs.md +30 -30
- package/runtime/knowledge/docs/core/composables/useDynamicProperties/useDynamicProperties.docs.md +34 -36
- package/runtime/knowledge/docs/core/composables/useErrorHandler/useErrorHandler.docs.md +44 -23
- package/runtime/knowledge/docs/core/composables/useFunctions/useFunctions.docs.md +14 -11
- package/runtime/knowledge/docs/core/composables/useKeyboardNavigation/useKeyboardNavigation.docs.md +47 -38
- package/runtime/knowledge/docs/core/composables/useLanguages/useLanguages.docs.md +37 -28
- package/runtime/knowledge/docs/core/composables/useLoading/useLoading.docs.md +23 -17
- package/runtime/knowledge/docs/core/composables/useMenuExpanded/index.docs.md +9 -9
- package/runtime/knowledge/docs/core/composables/useMenuService/useMenuService.docs.md +42 -42
- package/runtime/knowledge/docs/core/composables/useModificationTracker/useModificationTracker.docs.md +22 -12
- package/runtime/knowledge/docs/core/composables/useNotifications/useNotifications.docs.md +33 -41
- package/runtime/knowledge/docs/core/composables/usePermissions/usePermissions.docs.md +16 -16
- package/runtime/knowledge/docs/core/composables/usePlatformLocaleSync/usePlatformLocaleSync.docs.md +28 -0
- package/runtime/knowledge/docs/core/composables/usePopup/usePopup.docs.md +32 -24
- package/runtime/knowledge/docs/core/composables/useResponsive/useResponsive.docs.md +32 -11
- package/runtime/knowledge/docs/core/composables/useSettings/useSettings.docs.md +22 -13
- package/runtime/knowledge/docs/core/composables/useSettingsMenu/useSettingsMenu.docs.md +7 -7
- package/runtime/knowledge/docs/core/composables/useSidebarState/useSidebarState.docs.md +32 -24
- package/runtime/knowledge/docs/core/composables/useSlowNetworkDetection/useSlowNetworkDetection.docs.md +21 -17
- package/runtime/knowledge/docs/core/composables/useTheme/useTheme.docs.md +24 -24
- package/runtime/knowledge/docs/core/composables/useToolbar/useToolbar.docs.md +28 -31
- package/runtime/knowledge/docs/core/composables/useUser/useUser.docs.md +43 -24
- package/runtime/knowledge/docs/core/composables/useUserManagement/useUserManagement.docs.md +68 -48
- package/runtime/knowledge/docs/core/composables/useWebVitals/useWebVitals.docs.md +19 -19
- package/runtime/knowledge/docs/core/composables/useWidgets/useWidgets.docs.md +42 -47
- package/runtime/knowledge/docs/core/directives/autofocus/autofocus.docs.md +10 -4
- package/runtime/knowledge/docs/core/directives/loading/loading.docs.md +35 -20
- package/runtime/knowledge/docs/core/notifications/notifications.docs.md +36 -35
- package/runtime/knowledge/docs/core/plugins/ai-agent/ai-agent.docs.md +38 -38
- package/runtime/knowledge/docs/core/plugins/extension-points/extension-points.docs.md +79 -62
- package/runtime/knowledge/docs/core/plugins/global-error-handler/global-error-handler.docs.md +10 -10
- package/runtime/knowledge/docs/core/plugins/i18n/i18n.docs.md +21 -23
- package/runtime/knowledge/docs/core/plugins/modularity/modularity.docs.md +91 -83
- package/runtime/knowledge/docs/core/plugins/permissions/permissions.docs.md +10 -16
- package/runtime/knowledge/docs/core/plugins/signalR/signalR.docs.md +9 -9
- package/runtime/knowledge/docs/core/plugins/validation/validation.docs.md +65 -22
- package/runtime/knowledge/docs/core/services/services.docs.md +19 -22
- package/runtime/knowledge/docs/core/types/types.docs.md +40 -40
- package/runtime/knowledge/docs/core/utilities/date/date-utilities.docs.md +27 -27
- package/runtime/knowledge/docs/core/utilities/shared-utilities.docs.md +23 -23
- package/runtime/knowledge/docs/core/utilities/thumbnail/thumbnail.docs.md +22 -25
- package/runtime/knowledge/docs/core/utilities/utilities.docs.md +64 -64
- package/runtime/knowledge/docs/injection-keys.docs.md +52 -51
- package/runtime/knowledge/docs/modules/assets-manager/assets-manager.docs.md +9 -9
- package/runtime/knowledge/docs/shell/_internal/popup/common/popup-common.docs.md +23 -43
- package/runtime/knowledge/docs/shell/auth/ChangePasswordPage/change-password-page.docs.md +5 -5
- package/runtime/knowledge/docs/shell/auth/ForgotPasswordPage/forgot-password-page.docs.md +5 -5
- package/runtime/knowledge/docs/shell/auth/InvitePage/invite-page.docs.md +8 -7
- package/runtime/knowledge/docs/shell/auth/LoginPage/login-page.docs.md +7 -7
- package/runtime/knowledge/docs/shell/auth/ResetPasswordPage/reset-password-page.docs.md +8 -7
- package/runtime/knowledge/docs/shell/auth/sign-in/sign-in.docs.md +29 -13
- package/runtime/knowledge/docs/shell/components/change-password/change-password.docs.md +13 -16
- package/runtime/knowledge/docs/shell/components/change-password-button/change-password-button.docs.md +1 -7
- package/runtime/knowledge/docs/shell/components/error-interceptor/error-interceptor.docs.md +5 -5
- package/runtime/knowledge/docs/shell/components/language-selector/language-selector.docs.md +1 -1
- package/runtime/knowledge/docs/shell/components/logout-button/logout-button.docs.md +1 -1
- package/runtime/knowledge/docs/shell/components/notification-template/notification-template.docs.md +17 -9
- package/runtime/knowledge/docs/shell/components/settings-menu/settings-menu.docs.md +11 -17
- package/runtime/knowledge/docs/shell/components/settings-menu-item/settings-menu-item.docs.md +34 -65
- package/runtime/knowledge/docs/shell/components/sidebar/sidebar.docs.md +16 -26
- package/runtime/knowledge/docs/shell/components/theme-selector/theme-selector.docs.md +2 -2
- package/runtime/knowledge/docs/shell/components/user-dropdown-button/user-dropdown-button.docs.md +7 -9
- package/runtime/knowledge/docs/shell/dashboard/dashboard-charts/dashboard-charts.docs.md +30 -40
- package/runtime/knowledge/docs/shell/dashboard/dashboard-widget-card/dashboard-widget-card.docs.md +26 -19
- package/runtime/knowledge/docs/shell/dashboard/draggable-dashboard/draggable-dashboard.docs.md +15 -12
- package/runtime/knowledge/docs/ui/components/atoms/vc-badge/vc-badge.docs.md +15 -26
- package/runtime/knowledge/docs/ui/components/atoms/vc-banner/vc-banner.docs.md +21 -19
- package/runtime/knowledge/docs/ui/components/atoms/vc-button/vc-button.docs.md +83 -67
- package/runtime/knowledge/docs/ui/components/atoms/vc-card/vc-card.docs.md +100 -59
- package/runtime/knowledge/docs/ui/components/atoms/vc-col/vc-col.docs.md +28 -11
- package/runtime/knowledge/docs/ui/components/atoms/vc-container/vc-container.docs.md +20 -17
- package/runtime/knowledge/docs/ui/components/atoms/vc-hint/vc-hint.docs.md +26 -17
- package/runtime/knowledge/docs/ui/components/atoms/vc-icon/vc-icon.docs.md +30 -32
- package/runtime/knowledge/docs/ui/components/atoms/vc-image/vc-image.docs.md +25 -48
- package/runtime/knowledge/docs/ui/components/atoms/vc-label/vc-label.docs.md +29 -24
- package/runtime/knowledge/docs/ui/components/atoms/vc-link/vc-link.docs.md +23 -15
- package/runtime/knowledge/docs/ui/components/atoms/vc-loading/vc-loading.docs.md +22 -13
- package/runtime/knowledge/docs/ui/components/atoms/vc-progress/vc-progress.docs.md +33 -18
- package/runtime/knowledge/docs/ui/components/atoms/vc-row/vc-row.docs.md +56 -15
- package/runtime/knowledge/docs/ui/components/atoms/vc-scrollable-container/vc-scrollable-container.docs.md +28 -15
- package/runtime/knowledge/docs/ui/components/atoms/vc-skeleton/vc-skeleton.docs.md +40 -20
- package/runtime/knowledge/docs/ui/components/atoms/vc-status/vc-status.docs.md +25 -14
- package/runtime/knowledge/docs/ui/components/atoms/vc-status-icon/vc-status-icon.docs.md +40 -14
- package/runtime/knowledge/docs/ui/components/atoms/vc-tooltip/vc-tooltip.docs.md +54 -42
- package/runtime/knowledge/docs/ui/components/atoms/vc-video/vc-video.docs.md +17 -17
- package/runtime/knowledge/docs/ui/components/atoms/vc-widget/vc-widget.docs.md +21 -21
- package/runtime/knowledge/docs/ui/components/molecules/multilanguage-selector/multilanguage-selector.docs.md +23 -10
- package/runtime/knowledge/docs/ui/components/molecules/vc-accordion/vc-accordion.docs.md +55 -44
- package/runtime/knowledge/docs/ui/components/molecules/vc-breadcrumbs/vc-breadcrumbs.docs.md +23 -20
- package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox/vc-checkbox.docs.md +92 -65
- package/runtime/knowledge/docs/ui/components/molecules/vc-checkbox-group/vc-checkbox-group.docs.md +22 -36
- package/runtime/knowledge/docs/ui/components/molecules/vc-color-input/vc-color-input.docs.md +65 -23
- package/runtime/knowledge/docs/ui/components/molecules/vc-date-picker/vc-date-picker.docs.md +52 -73
- package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown/vc-dropdown.docs.md +91 -85
- package/runtime/knowledge/docs/ui/components/molecules/vc-dropdown-panel/vc-dropdown-panel.docs.md +38 -42
- package/runtime/knowledge/docs/ui/components/molecules/vc-editor/vc-editor.docs.md +56 -73
- package/runtime/knowledge/docs/ui/components/molecules/vc-field/vc-field.docs.md +61 -27
- package/runtime/knowledge/docs/ui/components/molecules/vc-file-upload/vc-file-upload.docs.md +42 -50
- package/runtime/knowledge/docs/ui/components/molecules/vc-form/vc-form.docs.md +35 -64
- package/runtime/knowledge/docs/ui/components/molecules/vc-image-tile/vc-image-tile.docs.md +38 -41
- package/runtime/knowledge/docs/ui/components/molecules/vc-input/vc-input.docs.md +109 -131
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-currency/vc-input-currency.docs.md +47 -88
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-dropdown/vc-input-dropdown.docs.md +50 -64
- package/runtime/knowledge/docs/ui/components/molecules/vc-input-group/vc-input-group.docs.md +29 -24
- package/runtime/knowledge/docs/ui/components/molecules/vc-menu/vc-menu.docs.md +32 -28
- package/runtime/knowledge/docs/ui/components/molecules/vc-multivalue/vc-multivalue.docs.md +57 -65
- package/runtime/knowledge/docs/ui/components/molecules/vc-pagination/vc-pagination.docs.md +28 -26
- package/runtime/knowledge/docs/ui/components/molecules/vc-radio-button/vc-radio-button.docs.md +55 -20
- package/runtime/knowledge/docs/ui/components/molecules/vc-radio-group/vc-radio-group.docs.md +21 -35
- package/runtime/knowledge/docs/ui/components/molecules/vc-rating/vc-rating.docs.md +38 -33
- package/runtime/knowledge/docs/ui/components/molecules/vc-select/vc-select.docs.md +72 -83
- package/runtime/knowledge/docs/ui/components/molecules/vc-slider/vc-slider.docs.md +21 -16
- package/runtime/knowledge/docs/ui/components/molecules/vc-switch/vc-switch.docs.md +55 -64
- package/runtime/knowledge/docs/ui/components/molecules/vc-textarea/vc-textarea.docs.md +51 -70
- package/runtime/knowledge/docs/ui/components/molecules/vc-toast/vc-toast.docs.md +58 -57
- package/runtime/knowledge/docs/ui/components/organisms/vc-app/vc-app.docs.md +49 -26
- package/runtime/knowledge/docs/ui/components/organisms/vc-auth-layout/vc-auth-layout.docs.md +82 -28
- package/runtime/knowledge/docs/ui/components/organisms/vc-blade/vc-blade.docs.md +90 -75
- package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/composables/table-composables.docs.md +99 -48
- package/runtime/knowledge/docs/ui/components/organisms/vc-data-table/vc-data-table.docs.md +548 -367
- package/runtime/knowledge/docs/ui/components/organisms/vc-dynamic-property/vc-dynamic-property.docs.md +35 -52
- package/runtime/knowledge/docs/ui/components/organisms/vc-gallery/vc-gallery.docs.md +33 -62
- package/runtime/knowledge/docs/ui/components/organisms/vc-image-upload/vc-image-upload.docs.md +17 -23
- package/runtime/knowledge/docs/ui/components/organisms/vc-popup/vc-popup.docs.md +109 -68
- package/runtime/knowledge/docs/ui/components/organisms/vc-sidebar/vc-sidebar.docs.md +82 -44
- package/runtime/knowledge/docs/ui/composables/ui-composables.docs.md +8 -8
- package/runtime/knowledge/docs/ui/composables/useDataTablePagination.docs.md +164 -0
- package/runtime/knowledge/docs/ui/composables/useDataTableSort.docs.md +34 -26
- package/runtime/knowledge/docs/ui/composables/useTableSelection.docs.md +48 -40
- package/runtime/knowledge/docs/ui/composables/useTableSort.docs.md +30 -17
- package/runtime/knowledge/docs/ui/types/ui-types.docs.md +40 -29
- package/runtime/knowledge/examples/offers-module.md +15 -13
- package/runtime/knowledge/examples/team-module.md +82 -119
- package/runtime/knowledge/examples/videos-module.md +44 -17
- package/runtime/knowledge/index.md +22 -0
- package/runtime/knowledge/migration-prompts/blade-form-migration.md +17 -8
- package/runtime/knowledge/migration-prompts/blade-props-migration.md +1 -2
- package/runtime/knowledge/migration-prompts/datatable-migration.md +801 -0
- package/runtime/knowledge/migration-prompts/icon-migration.md +97 -0
- package/runtime/knowledge/migration-prompts/manual-migration-audit.md +117 -0
- package/runtime/knowledge/migration-prompts/notifications-migration.md +8 -3
- package/runtime/knowledge/migration-prompts/nswag-migration.md +25 -29
- package/runtime/knowledge/migration-prompts/use-assets-migration.md +164 -0
- package/runtime/knowledge/migration-prompts/use-data-table-pagination-migration.md +176 -0
- package/runtime/knowledge/migration-prompts/widgets-migration.md +48 -27
- package/runtime/knowledge/patterns/assets-management.md +20 -20
- package/runtime/knowledge/patterns/blade-navigation.md +7 -14
- package/runtime/knowledge/patterns/blade-widget.md +19 -17
- package/runtime/knowledge/patterns/child-blade-flow.md +19 -7
- package/runtime/knowledge/patterns/composable-details.md +20 -50
- package/runtime/knowledge/patterns/composable-list.md +43 -31
- package/runtime/knowledge/patterns/dashboard-widget.md +14 -16
- package/runtime/knowledge/patterns/datatable-pattern.md +521 -0
- package/runtime/knowledge/patterns/details-blade-pattern.md +78 -116
- package/runtime/knowledge/patterns/extension-points-usage.md +53 -44
- package/runtime/knowledge/patterns/form-validation.md +28 -64
- package/runtime/knowledge/patterns/list-blade-pattern.md +33 -21
- package/runtime/knowledge/patterns/module-structure.md +7 -1
- package/runtime/knowledge/patterns/multilanguage-fields.md +8 -14
- package/runtime/knowledge/patterns/notification-template.md +21 -14
- package/runtime/knowledge/patterns/signalr-notifications.md +30 -32
- package/runtime/knowledge/patterns/toolbar-pattern.md +18 -20
- package/runtime/vc-app.md +241 -62
|
@@ -5,6 +5,7 @@ The pattern is identical to the details pattern, but the blade is oriented aroun
|
|
|
5
5
|
existing item or creating a new one via an "add URL" flow rather than a traditional form.
|
|
6
6
|
|
|
7
7
|
Key patterns shown here that differ from team-module:
|
|
8
|
+
|
|
8
9
|
- `isWorkspace: false` (child blade, not sidebar nav) — videos is opened FROM another blade
|
|
9
10
|
- `callParent` with multiple methods from the same child blade
|
|
10
11
|
- `rowActions` on VcDataTable — per-row action buttons
|
|
@@ -110,7 +111,7 @@ import { VideosEmptyGridTemplateNew } from "../components";
|
|
|
110
111
|
// PATTERN: defineBlade without isWorkspace — this blade is embedded, not a top-level workspace
|
|
111
112
|
defineBlade({
|
|
112
113
|
name: "Videos",
|
|
113
|
-
isWorkspace: true,
|
|
114
|
+
isWorkspace: true, // true here because it can be a workspace entry-point too
|
|
114
115
|
});
|
|
115
116
|
|
|
116
117
|
// PATTERN: typed options from parent blade
|
|
@@ -274,7 +275,10 @@ exposeToChildren({ reload, markProductDirty });
|
|
|
274
275
|
<div class="tw-p-4">
|
|
275
276
|
<VcForm>
|
|
276
277
|
<!-- PATTERN: v-if="!param" = create-only section -->
|
|
277
|
-
<div
|
|
278
|
+
<div
|
|
279
|
+
v-if="!param"
|
|
280
|
+
class="tw-mb-4 tw-flex tw-flex-row"
|
|
281
|
+
>
|
|
278
282
|
<Field
|
|
279
283
|
v-slot="{ errorMessage, handleChange, errors }"
|
|
280
284
|
:label="t('VIDEOS.PAGES.DETAILS.FIELDS.ADD.TITLE')"
|
|
@@ -296,7 +300,12 @@ exposeToChildren({ reload, markProductDirty });
|
|
|
296
300
|
<VcButton
|
|
297
301
|
:disabled="previewDisabled"
|
|
298
302
|
small
|
|
299
|
-
@click="
|
|
303
|
+
@click="
|
|
304
|
+
async (e: MouseEvent) => {
|
|
305
|
+
await getVideo();
|
|
306
|
+
handleChange(e);
|
|
307
|
+
}
|
|
308
|
+
"
|
|
300
309
|
>
|
|
301
310
|
{{ $t("VIDEOS.PAGES.DETAILS.FIELDS.ADD.ADD_BUTTON") }}
|
|
302
311
|
</VcButton>
|
|
@@ -309,7 +318,12 @@ exposeToChildren({ reload, markProductDirty });
|
|
|
309
318
|
<div v-if="!!param || newVideoLoaded">
|
|
310
319
|
<VcRow>
|
|
311
320
|
<VcCol :size="1">
|
|
312
|
-
<VcImage
|
|
321
|
+
<VcImage
|
|
322
|
+
size="xl"
|
|
323
|
+
:src="video?.thumbnailUrl"
|
|
324
|
+
bordered
|
|
325
|
+
background="contain"
|
|
326
|
+
/>
|
|
313
327
|
</VcCol>
|
|
314
328
|
<VcCol :size="2">
|
|
315
329
|
<!-- PATTERN: VcField for read-only display fields -->
|
|
@@ -326,10 +340,23 @@ exposeToChildren({ reload, markProductDirty });
|
|
|
326
340
|
/>
|
|
327
341
|
</VcCol>
|
|
328
342
|
</VcRow>
|
|
329
|
-
<VcInput
|
|
330
|
-
|
|
343
|
+
<VcInput
|
|
344
|
+
v-model="video.name"
|
|
345
|
+
:label="$t('VIDEOS.PAGES.DETAILS.FIELDS.NAME.TITLE')"
|
|
346
|
+
required
|
|
347
|
+
disabled
|
|
348
|
+
/>
|
|
349
|
+
<VcTextarea
|
|
350
|
+
v-model="video.description"
|
|
351
|
+
:label="t('VIDEOS.PAGES.DETAILS.FIELDS.DESCRIPTION.TITLE')"
|
|
352
|
+
disabled
|
|
353
|
+
/>
|
|
331
354
|
<!-- PATTERN: VcVideo component for embedded video preview -->
|
|
332
|
-
<VcVideo
|
|
355
|
+
<VcVideo
|
|
356
|
+
:source="video?.embedUrl"
|
|
357
|
+
:label="$t('VIDEOS.PAGES.DETAILS.FIELDS.PREVIEW.TITLE')"
|
|
358
|
+
size="xxl"
|
|
359
|
+
/>
|
|
333
360
|
</div>
|
|
334
361
|
</VcForm>
|
|
335
362
|
</div>
|
|
@@ -342,7 +369,7 @@ import { computed, ref, onMounted } from "vue";
|
|
|
342
369
|
import { useI18n } from "vue-i18n";
|
|
343
370
|
import { IBladeToolbar, usePopup, useBlade } from "@vc-shell/framework";
|
|
344
371
|
import { Video } from "../../../api_client/virtocommerce.catalog";
|
|
345
|
-
import { CreateVideoCommand } from "../../../api_client/virtocommerce.
|
|
372
|
+
import { CreateVideoCommand } from "../../../api_client/virtocommerce.mymodule";
|
|
346
373
|
import { useVideo, useVideos } from "../composables";
|
|
347
374
|
import { Field, useForm } from "vee-validate";
|
|
348
375
|
|
|
@@ -385,21 +412,21 @@ const bladeToolbar = ref<IBladeToolbar[]>([
|
|
|
385
412
|
closeSelf();
|
|
386
413
|
},
|
|
387
414
|
disabled: computed(() => !newVideoLoaded.value),
|
|
388
|
-
isVisible: computed(() => !param.value),
|
|
415
|
+
isVisible: computed(() => !param.value), // only visible in create mode
|
|
389
416
|
},
|
|
390
417
|
{
|
|
391
418
|
id: "delete",
|
|
392
419
|
title: computed(() => t("VIDEOS.PAGES.DETAILS.TOOLBAR.DELETE")),
|
|
393
420
|
icon: "lucide-trash-2",
|
|
394
421
|
async clickHandler() {
|
|
395
|
-
if (await showConfirmation(t("VIDEOS.PAGES.DETAILS.DELETE_CONFIRMATION.MESSAGE")) && video.value.id) {
|
|
422
|
+
if ((await showConfirmation(t("VIDEOS.PAGES.DETAILS.DELETE_CONFIRMATION.MESSAGE"))) && video.value.id) {
|
|
396
423
|
await deleteVideos([video.value.id]);
|
|
397
424
|
callParent("reload");
|
|
398
425
|
callParent("markProductDirty");
|
|
399
426
|
closeSelf();
|
|
400
427
|
}
|
|
401
428
|
},
|
|
402
|
-
isVisible: computed(() => !!param.value),
|
|
429
|
+
isVisible: computed(() => !!param.value), // only visible in edit mode
|
|
403
430
|
},
|
|
404
431
|
]);
|
|
405
432
|
|
|
@@ -433,12 +460,12 @@ const validateUrl = async () => {
|
|
|
433
460
|
|
|
434
461
|
## Summary: Edit-blade vs Details-blade naming
|
|
435
462
|
|
|
436
|
-
| Aspect
|
|
437
|
-
|
|
438
|
-
| Name convention | `*Details` (e.g. `TeamMemberDetails`) | `*Edit` (e.g. `VideoEdit`)
|
|
439
|
-
| Typical use
|
|
440
|
-
| `onBeforeClose` | Common (unsaved changes guard)
|
|
441
|
-
| Difference
|
|
463
|
+
| Aspect | Details blade | Edit blade |
|
|
464
|
+
| --------------- | ------------------------------------- | --------------------------------------- |
|
|
465
|
+
| Name convention | `*Details` (e.g. `TeamMemberDetails`) | `*Edit` (e.g. `VideoEdit`) |
|
|
466
|
+
| Typical use | Full form with vee-validate | Lighter editing or multi-step create |
|
|
467
|
+
| `onBeforeClose` | Common (unsaved changes guard) | Optional |
|
|
468
|
+
| Difference | N/A | Same pattern — just a naming convention |
|
|
442
469
|
|
|
443
470
|
Both patterns use identical framework APIs. The "edit" name is used when the blade
|
|
444
471
|
primarily handles a simplified or specialized editing flow.
|
|
@@ -23,6 +23,7 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
|
|
|
23
23
|
**Task:** Generates `<module>-list.vue` + `use<Entity>s` composable.
|
|
24
24
|
|
|
25
25
|
### Pattern files to read:
|
|
26
|
+
|
|
26
27
|
- `knowledge/patterns/list-blade-pattern.md`
|
|
27
28
|
- `knowledge/patterns/composable-list.md`
|
|
28
29
|
- `knowledge/patterns/toolbar-pattern.md`
|
|
@@ -31,11 +32,13 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
|
|
|
31
32
|
### Framework docs to read (basename glob):
|
|
32
33
|
|
|
33
34
|
**Core table components (always read):**
|
|
35
|
+
|
|
34
36
|
- `**/vc-blade.docs.md`
|
|
35
37
|
- `**/vc-data-table.docs.md`
|
|
36
38
|
- `**/vc-pagination.docs.md`
|
|
37
39
|
|
|
38
40
|
**Cell renderer components (read for custom #body slots in VcColumn):**
|
|
41
|
+
|
|
39
42
|
- `**/vc-status.docs.md` — for status/state columns (variant-colored badge)
|
|
40
43
|
- `**/vc-status-icon.docs.md` — for boolean columns (check/cross icon)
|
|
41
44
|
- `**/vc-badge.docs.md` — for count/tag columns (numeric badge, category tag)
|
|
@@ -46,6 +49,7 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
|
|
|
46
49
|
- `**/vc-tooltip.docs.md` — for columns with truncated text that need hover detail
|
|
47
50
|
|
|
48
51
|
**Composable docs (always read):**
|
|
52
|
+
|
|
49
53
|
- `**/useBlade.docs.md`
|
|
50
54
|
- `**/useAsync.docs.md`
|
|
51
55
|
- `**/useLoading.docs.md`
|
|
@@ -58,6 +62,7 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
|
|
|
58
62
|
**Task:** Generates `<module>-details.vue` + `use<Entity>` composable.
|
|
59
63
|
|
|
60
64
|
### Pattern files to read:
|
|
65
|
+
|
|
61
66
|
- `knowledge/patterns/details-blade-pattern.md`
|
|
62
67
|
- `knowledge/patterns/composable-details.md`
|
|
63
68
|
- `knowledge/patterns/toolbar-pattern.md`
|
|
@@ -66,6 +71,7 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
|
|
|
66
71
|
### Framework docs to read (basename glob):
|
|
67
72
|
|
|
68
73
|
**Core form components (always read):**
|
|
74
|
+
|
|
69
75
|
- `**/vc-blade.docs.md`
|
|
70
76
|
- `**/vc-form.docs.md`
|
|
71
77
|
- `**/vc-input.docs.md`
|
|
@@ -73,6 +79,7 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
|
|
|
73
79
|
- `**/vc-switch.docs.md`
|
|
74
80
|
|
|
75
81
|
**Extended form components (read based on field types — see Field Type → Component Mapping in details-blade-pattern.md):**
|
|
82
|
+
|
|
76
83
|
- `**/vc-textarea.docs.md` — for `text` / `rich-text` fields
|
|
77
84
|
- `**/vc-editor.docs.md` — for `rich-text` fields (WYSIWYG HTML editor)
|
|
78
85
|
- `**/vc-date-picker.docs.md` — for `date-time` fields (calendar widget, preferred over VcInput type="datetime-local")
|
|
@@ -88,9 +95,11 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
|
|
|
88
95
|
- `**/vc-input-group.docs.md` — for grouped inputs (prefix/suffix patterns like URL, phone)
|
|
89
96
|
|
|
90
97
|
**Read-only display components (read when blade has view-only fields):**
|
|
98
|
+
|
|
91
99
|
- `**/vc-field.docs.md` — for read-only key-value display (horizontal label:value, copyable, tooltip). Use instead of VcInput for non-editable data.
|
|
92
100
|
|
|
93
101
|
**Layout & display components (read when the form has sections or read-only data):**
|
|
102
|
+
|
|
94
103
|
- `**/vc-card.docs.md` — for grouping form sections visually (ALWAYS use for 3+ field groups)
|
|
95
104
|
- `**/vc-accordion.docs.md` — for collapsible form sections
|
|
96
105
|
- `**/vc-badge.docs.md` — for status indicators in form headers
|
|
@@ -100,11 +109,13 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
|
|
|
100
109
|
- `**/vc-button.docs.md` — for inline action buttons (e.g., inside banners)
|
|
101
110
|
|
|
102
111
|
**Media components (read when entity has images/gallery/video):**
|
|
112
|
+
|
|
103
113
|
- `**/vc-image-upload.docs.md` — for `image` fields (single image upload with preview)
|
|
104
114
|
- `**/vc-gallery.docs.md` — for `gallery` / `images` fields (multi-image management)
|
|
105
115
|
- `**/vc-image.docs.md` — for read-only image display
|
|
106
116
|
|
|
107
117
|
**Composable docs (always read):**
|
|
118
|
+
|
|
108
119
|
- `**/useBlade.docs.md`
|
|
109
120
|
- `**/useAsync.docs.md`
|
|
110
121
|
- `**/useModificationTracker.docs.md`
|
|
@@ -112,11 +123,13 @@ Notable location: `useDataTableSort.docs.md` is under `ui/composables/`, not `co
|
|
|
112
123
|
- `**/validation.docs.md`
|
|
113
124
|
|
|
114
125
|
**Composable docs (read when entity has related sub-entities):**
|
|
126
|
+
|
|
115
127
|
- `**/useBladeWidgets.docs.md` — for blade sidebar widgets (icon buttons with badge counts that open child blades)
|
|
116
128
|
|
|
117
129
|
### Advanced patterns to read (based on design intent):
|
|
118
130
|
|
|
119
131
|
Read `knowledge/patterns/` files when the design requires these patterns:
|
|
132
|
+
|
|
120
133
|
- `knowledge/patterns/blade-widget.md` — when entity has related sub-entities that need sidebar widget navigation
|
|
121
134
|
- `knowledge/patterns/dashboard-widget.md` — when module should contribute a dashboard card
|
|
122
135
|
- `knowledge/patterns/notification-template.md` — when module needs push notification rendering
|
|
@@ -128,9 +141,11 @@ Read `knowledge/patterns/` files when the design requires these patterns:
|
|
|
128
141
|
**Task:** Creates `index.ts`, `pages/index.ts`, `composables/index.ts`, `locales/index.ts`, and registers the module in the app's module registry.
|
|
129
142
|
|
|
130
143
|
### Pattern files to read:
|
|
144
|
+
|
|
131
145
|
- `knowledge/patterns/module-structure.md`
|
|
132
146
|
|
|
133
147
|
### Framework docs to read:
|
|
148
|
+
|
|
134
149
|
_(None required — module assembly is purely structural.)_
|
|
135
150
|
|
|
136
151
|
---
|
|
@@ -140,12 +155,15 @@ _(None required — module assembly is purely structural.)_
|
|
|
140
155
|
**Task:** Generates `locales/en.json` with i18n keys for all requested blades.
|
|
141
156
|
|
|
142
157
|
### Pattern files to read:
|
|
158
|
+
|
|
143
159
|
_(None — reads the already-generated blade files to extract `$t(...)` and `t(...)` calls.)_
|
|
144
160
|
|
|
145
161
|
### Framework docs to read:
|
|
162
|
+
|
|
146
163
|
_(None required.)_
|
|
147
164
|
|
|
148
165
|
### Instructions:
|
|
166
|
+
|
|
149
167
|
1. Read all generated `.vue` files for the module.
|
|
150
168
|
2. Extract every `$t('...')` and `t('...')` call.
|
|
151
169
|
3. Build a nested JSON object from the dot-separated keys (e.g., `"TEAM.PAGES.LIST.TITLE"` → `{ "TEAM": { "PAGES": { "LIST": { "TITLE": "" } } } }`).
|
|
@@ -158,9 +176,11 @@ _(None required.)_
|
|
|
158
176
|
**Task:** Analyzes a generated API client file to discover available types and methods for user selection.
|
|
159
177
|
|
|
160
178
|
### Pattern files to read:
|
|
179
|
+
|
|
161
180
|
_(None — reads the API client file directly.)_
|
|
162
181
|
|
|
163
182
|
### Framework docs to read:
|
|
183
|
+
|
|
164
184
|
- `**/useApiClient.docs.md`
|
|
165
185
|
- `**/useAsync.docs.md`
|
|
166
186
|
|
|
@@ -171,7 +191,9 @@ _(None — reads the API client file directly.)_
|
|
|
171
191
|
**Task:** Runs `vue-tsc --noEmit`, analyzes errors in generated files, proposes and applies fixes.
|
|
172
192
|
|
|
173
193
|
### Pattern files to read:
|
|
194
|
+
|
|
174
195
|
_(All relevant pattern files for the blade types involved — re-read before fixing.)_
|
|
175
196
|
|
|
176
197
|
### Framework docs to read:
|
|
198
|
+
|
|
177
199
|
_(Read docs for any component/composable that appears in the error output.)_
|
|
@@ -19,7 +19,11 @@ const { item, loading, load, save } = useMyDetails();
|
|
|
19
19
|
const { onBeforeClose } = useBlade();
|
|
20
20
|
const { showConfirmation } = usePopup();
|
|
21
21
|
|
|
22
|
-
const {
|
|
22
|
+
const {
|
|
23
|
+
errorBag,
|
|
24
|
+
setFieldError,
|
|
25
|
+
meta: formMeta,
|
|
26
|
+
} = useForm({
|
|
23
27
|
initialValues: item,
|
|
24
28
|
});
|
|
25
29
|
|
|
@@ -34,9 +38,7 @@ onBeforeClose(async () => {
|
|
|
34
38
|
return true;
|
|
35
39
|
});
|
|
36
40
|
|
|
37
|
-
const canSave = computed(
|
|
38
|
-
() => isModified.value && formMeta.value.valid && !loading.value,
|
|
39
|
-
);
|
|
41
|
+
const canSave = computed(() => isModified.value && formMeta.value.valid && !loading.value);
|
|
40
42
|
|
|
41
43
|
async function handleSave() {
|
|
42
44
|
await save(item.value);
|
|
@@ -61,9 +63,13 @@ const { canSave, isModified, setBaseline, revert, setFieldError, errorBag } = us
|
|
|
61
63
|
closeConfirmMessage: () => t("MY_MODULE.ALERTS.CLOSE_CONFIRMATION"),
|
|
62
64
|
});
|
|
63
65
|
|
|
64
|
-
watch(
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
watch(
|
|
67
|
+
item,
|
|
68
|
+
() => {
|
|
69
|
+
if (item.value) setBaseline();
|
|
70
|
+
},
|
|
71
|
+
{ once: true },
|
|
72
|
+
);
|
|
67
73
|
|
|
68
74
|
async function handleSave() {
|
|
69
75
|
await save(item.value);
|
|
@@ -216,7 +222,10 @@ Remove `:modified` prop from `<VcBlade>` — it is auto-detected via provide/inj
|
|
|
216
222
|
|
|
217
223
|
```vue
|
|
218
224
|
<template>
|
|
219
|
-
<VcBlade
|
|
225
|
+
<VcBlade
|
|
226
|
+
:modified="isModified"
|
|
227
|
+
:closable="true"
|
|
228
|
+
>
|
|
220
229
|
<!-- content -->
|
|
221
230
|
</VcBlade>
|
|
222
231
|
</template>
|
|
@@ -75,8 +75,7 @@ const emit = defineEmits<Emits>();
|
|
|
75
75
|
```typescript
|
|
76
76
|
import { useBlade } from "@vc-shell/framework";
|
|
77
77
|
|
|
78
|
-
const { param, options, openBlade, closeSelf, callParent } =
|
|
79
|
-
useBlade<{ sellerProduct?: SellerProduct }>();
|
|
78
|
+
const { param, options, openBlade, closeSelf, callParent } = useBlade<{ sellerProduct?: SellerProduct }>();
|
|
80
79
|
```
|
|
81
80
|
|
|
82
81
|
If the Props interface has other non-blade props, keep only those:
|