@conduction/nextcloud-vue 2.56.0-beta.37 → 2.56.0-beta.39
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/esm/components/CnAdvancedFormDialog/CnMetadataTab.vue.js +1 -1
- package/dist/esm/components/CnAdvancedFormDialog/CnMetadataTab.vue2.js +3 -2
- package/dist/esm/components/CnAdvancedFormDialog/CnMetadataTab.vue2.js.map +1 -1
- package/dist/esm/components/CnAdvancedFormDialog/CnMetadataTab.vue3.js.map +1 -1
- package/dist/esm/components/CnAdvancedFormDialog/CnPropertyValueCell.vue.js +1 -1
- package/dist/esm/components/CnAdvancedFormDialog/CnPropertyValueCell.vue2.js +5 -4
- package/dist/esm/components/CnAdvancedFormDialog/CnPropertyValueCell.vue2.js.map +1 -1
- package/dist/esm/components/CnAdvancedFormDialog/CnPropertyValueCell.vue3.js.map +1 -1
- package/dist/esm/components/CnAnalyticsReportPicker/CnAnalyticsReportPicker.vue.js +1 -1
- package/dist/esm/components/CnAnalyticsReportPicker/CnAnalyticsReportPicker.vue2.js +2 -1
- package/dist/esm/components/CnAnalyticsReportPicker/CnAnalyticsReportPicker.vue2.js.map +1 -1
- package/dist/esm/components/CnAnalyticsReportPicker/CnAnalyticsReportPicker.vue3.js.map +1 -1
- package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue.js +1 -1
- package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue2.js +2 -1
- package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue2.js.map +1 -1
- package/dist/esm/components/CnAuditTrailCard/CnAuditTrailCard.vue3.js.map +1 -1
- package/dist/esm/components/CnBoardView/CnBoardView.vue.js +1 -1
- package/dist/esm/components/CnBoardView/CnBoardView.vue2.js +156 -14
- package/dist/esm/components/CnBoardView/CnBoardView.vue2.js.map +1 -1
- package/dist/esm/components/CnBoardView/CnBoardView.vue3.js +105 -74
- package/dist/esm/components/CnBoardView/CnBoardView.vue3.js.map +1 -1
- package/dist/esm/components/CnCalendarEventPicker/CnCalendarEventPicker.vue.js +1 -1
- package/dist/esm/components/CnCalendarEventPicker/CnCalendarEventPicker.vue2.js +2 -1
- package/dist/esm/components/CnCalendarEventPicker/CnCalendarEventPicker.vue2.js.map +1 -1
- package/dist/esm/components/CnCalendarEventPicker/CnCalendarEventPicker.vue3.js.map +1 -1
- package/dist/esm/components/CnCalendarWidget/CnCalendarWidget.vue.js +1 -1
- package/dist/esm/components/CnCalendarWidget/CnCalendarWidget.vue2.js +2 -1
- package/dist/esm/components/CnCalendarWidget/CnCalendarWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnCalendarWidget/CnCalendarWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnChartWidget/CnChartWidget.vue.js +1 -1
- package/dist/esm/components/CnChartWidget/CnChartWidget.vue2.js +6 -5
- package/dist/esm/components/CnChartWidget/CnChartWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnChartWidget/CnChartWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnCollectivePagePicker/CnCollectivePagePicker.vue.js +1 -1
- package/dist/esm/components/CnCollectivePagePicker/CnCollectivePagePicker.vue2.js +2 -1
- package/dist/esm/components/CnCollectivePagePicker/CnCollectivePagePicker.vue2.js.map +1 -1
- package/dist/esm/components/CnCollectivePagePicker/CnCollectivePagePicker.vue3.js.map +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue.js +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue2.js +2 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue2.js.map +1 -1
- package/dist/esm/components/CnConversationThread/CnConversationThread.vue3.js.map +1 -1
- package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue.js +1 -1
- package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue2.js +2 -1
- package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnCountdownWidget/CnCountdownWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue.js +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js +2 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
- package/dist/esm/components/CnDataMatrix/CnDataMatrix.vue.js +1 -1
- package/dist/esm/components/CnDataMatrix/CnDataMatrix.vue2.js +3 -1
- package/dist/esm/components/CnDataMatrix/CnDataMatrix.vue2.js.map +1 -1
- package/dist/esm/components/CnDataMatrix/CnDataMatrix.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailHeaderChips.vue2.js +2 -1
- package/dist/esm/components/CnDetailPage/CnDetailHeaderChips.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailPage/CnDetailHeaderChips.vue3.js.map +1 -1
- package/dist/esm/components/CnEmailPicker/CnEmailPicker.vue.js +1 -1
- package/dist/esm/components/CnEmailPicker/CnEmailPicker.vue2.js +2 -1
- package/dist/esm/components/CnEmailPicker/CnEmailPicker.vue2.js.map +1 -1
- package/dist/esm/components/CnEmailPicker/CnEmailPicker.vue3.js.map +1 -1
- package/dist/esm/components/CnFederationStatus/CnFederationStatus.vue.js +1 -1
- package/dist/esm/components/CnFederationStatus/CnFederationStatus.vue2.js +3 -1
- package/dist/esm/components/CnFederationStatus/CnFederationStatus.vue2.js.map +1 -1
- package/dist/esm/components/CnFederationStatus/CnFederationStatus.vue3.js.map +1 -1
- package/dist/esm/components/CnFileManager/CnFileManager.vue.js +1 -1
- package/dist/esm/components/CnFileManager/CnFileManager.vue2.js +3 -1
- package/dist/esm/components/CnFileManager/CnFileManager.vue2.js.map +1 -1
- package/dist/esm/components/CnFileManager/CnFileManager.vue3.js.map +1 -1
- package/dist/esm/components/CnFilePreview/CnFilePreview.vue.js +1 -1
- package/dist/esm/components/CnFilePreview/CnFilePreview.vue2.js +2 -1
- package/dist/esm/components/CnFilePreview/CnFilePreview.vue2.js.map +1 -1
- package/dist/esm/components/CnFilePreview/CnFilePreview.vue3.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue.js +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js +49 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue2.js.map +1 -1
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js +3 -3
- package/dist/esm/components/CnFilesBrowser/CnFilesBrowser.vue3.js.map +1 -1
- package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue.js +1 -1
- package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue2.js +2 -1
- package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue2.js.map +1 -1
- package/dist/esm/components/CnFollowToggle/CnFollowToggle.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +30 -5
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue.js +1 -1
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue2.js +2 -1
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue2.js.map +1 -1
- package/dist/esm/components/CnNotesCard/CnNotesCard.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectCalendar/CnObjectCalendar.vue.js +1 -1
- package/dist/esm/components/CnObjectCalendar/CnObjectCalendar.vue2.js +3 -2
- package/dist/esm/components/CnObjectCalendar/CnObjectCalendar.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectCalendar/CnObjectCalendar.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue.js +1 -1
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js +28 -0
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue3.js +82 -75
- package/dist/esm/components/CnObjectDataWidget/CnObjectDataWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectMetadataWidget/CnObjectMetadataWidget.vue.js +1 -1
- package/dist/esm/components/CnObjectMetadataWidget/CnObjectMetadataWidget.vue2.js +5 -4
- package/dist/esm/components/CnObjectMetadataWidget/CnObjectMetadataWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectMetadataWidget/CnObjectMetadataWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnAuditTrailTab.vue.js +1 -1
- package/dist/esm/components/CnObjectSidebar/CnAuditTrailTab.vue2.js +2 -1
- package/dist/esm/components/CnObjectSidebar/CnAuditTrailTab.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnAuditTrailTab.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFlowTasksPanel.vue.js +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFlowTasksPanel.vue2.js +2 -1
- package/dist/esm/components/CnObjectSidebar/CnFlowTasksPanel.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnFlowTasksPanel.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnNotesTab.vue.js +1 -1
- package/dist/esm/components/CnObjectSidebar/CnNotesTab.vue2.js +2 -1
- package/dist/esm/components/CnObjectSidebar/CnNotesTab.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnNotesTab.vue3.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnTasksTab.vue.js +1 -1
- package/dist/esm/components/CnObjectSidebar/CnTasksTab.vue2.js +2 -1
- package/dist/esm/components/CnObjectSidebar/CnTasksTab.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectSidebar/CnTasksTab.vue3.js.map +1 -1
- package/dist/esm/components/CnPropertySourceField/CnPropertySourceField.vue.js +1 -1
- package/dist/esm/components/CnPropertySourceField/CnPropertySourceField.vue2.js +2 -1
- package/dist/esm/components/CnPropertySourceField/CnPropertySourceField.vue2.js.map +1 -1
- package/dist/esm/components/CnPropertySourceField/CnPropertySourceField.vue3.js.map +1 -1
- package/dist/esm/components/CnRoadmapItem/CnRoadmapItem.vue.js +1 -1
- package/dist/esm/components/CnRoadmapItem/CnRoadmapItem.vue2.js +2 -1
- package/dist/esm/components/CnRoadmapItem/CnRoadmapItem.vue2.js.map +1 -1
- package/dist/esm/components/CnRoadmapItem/CnRoadmapItem.vue3.js.map +1 -1
- package/dist/esm/components/CnSchemaFormDialog/CnSchemaFormDialog.vue2.js +2 -0
- package/dist/esm/components/CnSchemaFormDialog/CnSchemaFormDialog.vue2.js.map +1 -1
- package/dist/esm/components/CnSchemaFormDialog/CnSchemaFormDialog.vue3.js +2 -2
- package/dist/esm/components/CnSchemaFormDialog/CnSchemaFormDialog.vue3.js.map +1 -1
- package/dist/esm/components/CnStatsBlock/CnStatsBlock.vue.js +1 -1
- package/dist/esm/components/CnStatsBlock/CnStatsBlock.vue2.js +2 -1
- package/dist/esm/components/CnStatsBlock/CnStatsBlock.vue2.js.map +1 -1
- package/dist/esm/components/CnStatsBlock/CnStatsBlock.vue3.js.map +1 -1
- package/dist/esm/components/CnSummaryAggregates/CnSummaryAggregates.vue.js +1 -1
- package/dist/esm/components/CnSummaryAggregates/CnSummaryAggregates.vue2.js +2 -1
- package/dist/esm/components/CnSummaryAggregates/CnSummaryAggregates.vue2.js.map +1 -1
- package/dist/esm/components/CnSummaryAggregates/CnSummaryAggregates.vue3.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue.js +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js +36 -0
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js +55 -40
- package/dist/esm/components/CnTabsWidget/CnTabsWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnTasksCard/CnTasksCard.vue.js +1 -1
- package/dist/esm/components/CnTasksCard/CnTasksCard.vue2.js +2 -1
- package/dist/esm/components/CnTasksCard/CnTasksCard.vue2.js.map +1 -1
- package/dist/esm/components/CnTasksCard/CnTasksCard.vue3.js.map +1 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue.js +1 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue2.js +2 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnTranslatedBadge/CnTranslatedBadge.vue.js +1 -1
- package/dist/esm/components/CnTranslatedBadge/CnTranslatedBadge.vue2.js +2 -1
- package/dist/esm/components/CnTranslatedBadge/CnTranslatedBadge.vue2.js.map +1 -1
- package/dist/esm/components/CnVersionHistory/CnVersionHistory.vue.js +1 -1
- package/dist/esm/components/CnVersionHistory/CnVersionHistory.vue2.js +2 -1
- package/dist/esm/components/CnVersionHistory/CnVersionHistory.vue2.js.map +1 -1
- package/dist/esm/components/CnVersionHistory/CnVersionHistory.vue3.js.map +1 -1
- package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue.js +1 -1
- package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js +3 -26
- package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue2.js.map +1 -1
- package/dist/esm/components/CnWidgetWrapper/CnWidgetWrapper.vue3.js.map +1 -1
- package/dist/esm/dialogs/CnNoteHistoryDialog.vue.js +1 -1
- package/dist/esm/dialogs/CnNoteHistoryDialog.vue2.js +2 -1
- package/dist/esm/dialogs/CnNoteHistoryDialog.vue2.js.map +1 -1
- package/dist/esm/dialogs/CnNoteHistoryDialog.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/activity/CnActivityCard.vue.js +1 -1
- package/dist/esm/integrations/builtin/activity/CnActivityCard.vue2.js +3 -2
- package/dist/esm/integrations/builtin/activity/CnActivityCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/activity/CnActivityCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/activity/CnActivityTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/activity/CnActivityTab.vue2.js +4 -3
- package/dist/esm/integrations/builtin/activity/CnActivityTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/activity/CnActivityTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/analytics/CnAnalyticsTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/analytics/CnAnalyticsTab.vue2.js +3 -2
- package/dist/esm/integrations/builtin/analytics/CnAnalyticsTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/analytics/CnAnalyticsTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarCard.vue.js +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarCard.vue2.js +2 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarTab.vue2.js +6 -5
- package/dist/esm/integrations/builtin/calendar/CnCalendarTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/calendar/CnCalendarTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/contactmoment/CnContactmomentCard.vue.js +1 -1
- package/dist/esm/integrations/builtin/contactmoment/CnContactmomentCard.vue2.js +2 -1
- package/dist/esm/integrations/builtin/contactmoment/CnContactmomentCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/contactmoment/CnContactmomentCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/cospend/CnCospendTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/cospend/CnCospendTab.vue2.js +2 -1
- package/dist/esm/integrations/builtin/cospend/CnCospendTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/cospend/CnCospendTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue2.js +2 -1
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/deck/CnDeckTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/email/CnEmailCard.vue.js +1 -1
- package/dist/esm/integrations/builtin/email/CnEmailCard.vue2.js +2 -1
- package/dist/esm/integrations/builtin/email/CnEmailCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/email/CnEmailCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionCard.vue.js +1 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionCard.vue2.js +2 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionCard.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionCard.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionTab.vue2.js +2 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/field-inspection/CnFieldInspectionTab.vue3.js.map +1 -1
- package/dist/esm/integrations/builtin/photos/CnPhotosTab.vue.js +1 -1
- package/dist/esm/integrations/builtin/photos/CnPhotosTab.vue2.js +2 -1
- package/dist/esm/integrations/builtin/photos/CnPhotosTab.vue2.js.map +1 -1
- package/dist/esm/integrations/builtin/photos/CnPhotosTab.vue3.js.map +1 -1
- package/dist/esm/l10n/en.json.js +35 -2
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +38 -2
- package/dist/esm/l10n/nl.json.js.map +1 -1
- package/dist/esm/library-style.js +1 -1
- package/dist/esm/nextcloud-vue.css +1068 -962
- package/dist/esm/store/useObjectStore.js +7 -2
- package/dist/esm/store/useObjectStore.js.map +1 -1
- package/dist/esm/utils/boardColumns.js +50 -1
- package/dist/esm/utils/boardColumns.js.map +1 -1
- package/dist/esm/utils/boardReferenceColumns.js +115 -4
- package/dist/esm/utils/boardReferenceColumns.js.map +1 -1
- package/dist/esm/utils/contentHeaderLink.js +48 -1
- package/dist/esm/utils/contentHeaderLink.js.map +1 -1
- package/dist/esm/utils/schema.js +5 -4
- package/dist/esm/utils/schema.js.map +1 -1
- package/dist/esm/utils/userLocale.js +30 -0
- package/dist/esm/utils/userLocale.js.map +1 -0
- package/dist/esm/utils/validateManifestV2.compiled.js +2 -2
- package/dist/esm/utils/validateManifestV2.compiled.js.map +1 -1
- package/dist/nextcloud-vue.cjs.js +1088 -476
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +1068 -962
- package/l10n/en.json +35 -2
- package/l10n/nl.json +38 -2
- package/package.json +1 -1
- package/src/components/CnAdvancedFormDialog/CnMetadataTab.vue +3 -2
- package/src/components/CnAdvancedFormDialog/CnPropertyValueCell.vue +5 -4
- package/src/components/CnAnalyticsReportPicker/CnAnalyticsReportPicker.vue +2 -1
- package/src/components/CnAuditTrailCard/CnAuditTrailCard.vue +2 -1
- package/src/components/CnBoardView/CnBoardView.vue +189 -24
- package/src/components/CnCalendarEventPicker/CnCalendarEventPicker.vue +2 -1
- package/src/components/CnCalendarWidget/CnCalendarWidget.vue +2 -1
- package/src/components/CnChartWidget/CnChartWidget.vue +6 -5
- package/src/components/CnCollectivePagePicker/CnCollectivePagePicker.vue +2 -1
- package/src/components/CnConversationThread/CnConversationThread.vue +2 -1
- package/src/components/CnCountdownWidget/CnCountdownWidget.vue +2 -1
- package/src/components/CnDashboardPage/CnDashboardPage.vue +2 -1
- package/src/components/CnDataMatrix/CnDataMatrix.vue +2 -1
- package/src/components/CnDetailPage/CnDetailHeaderChips.vue +2 -1
- package/src/components/CnEmailPicker/CnEmailPicker.vue +2 -1
- package/src/components/CnFederationStatus/CnFederationStatus.vue +3 -1
- package/src/components/CnFileManager/CnFileManager.vue +2 -1
- package/src/components/CnFilePreview/CnFilePreview.vue +2 -1
- package/src/components/CnFilesBrowser/CnFilesBrowser.vue +54 -6
- package/src/components/CnFollowToggle/CnFollowToggle.vue +2 -1
- package/src/components/CnIndexPage/CnIndexPage.vue +30 -4
- package/src/components/CnNotesCard/CnNotesCard.vue +2 -1
- package/src/components/CnObjectCalendar/CnObjectCalendar.vue +3 -2
- package/src/components/CnObjectDataWidget/CnObjectDataWidget.vue +36 -0
- package/src/components/CnObjectMetadataWidget/CnObjectMetadataWidget.vue +5 -4
- package/src/components/CnObjectSidebar/CnAuditTrailTab.vue +2 -1
- package/src/components/CnObjectSidebar/CnFlowTasksPanel.vue +2 -1
- package/src/components/CnObjectSidebar/CnNotesTab.vue +2 -1
- package/src/components/CnObjectSidebar/CnTasksTab.vue +2 -1
- package/src/components/CnPropertySourceField/CnPropertySourceField.vue +2 -1
- package/src/components/CnRoadmapItem/CnRoadmapItem.vue +2 -1
- package/src/components/CnSchemaFormDialog/CnSchemaFormDialog.vue +4 -2
- package/src/components/CnStatsBlock/CnStatsBlock.vue +2 -1
- package/src/components/CnSummaryAggregates/CnSummaryAggregates.vue +2 -1
- package/src/components/CnTabsWidget/CnTabsWidget.vue +71 -0
- package/src/components/CnTasksCard/CnTasksCard.vue +2 -1
- package/src/components/CnTimelineWidget/CnTimelineWidget.vue +2 -1
- package/src/components/CnTranslatedBadge/CnTranslatedBadge.vue +2 -1
- package/src/components/CnVersionHistory/CnVersionHistory.vue +2 -1
- package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +3 -26
- package/src/css/board.css +40 -0
- package/src/dialogs/CnNoteHistoryDialog.vue +2 -1
- package/src/integrations/builtin/activity/CnActivityCard.vue +3 -2
- package/src/integrations/builtin/activity/CnActivityTab.vue +4 -3
- package/src/integrations/builtin/analytics/CnAnalyticsTab.vue +3 -2
- package/src/integrations/builtin/calendar/CnCalendarCard.vue +2 -1
- package/src/integrations/builtin/calendar/CnCalendarTab.vue +6 -5
- package/src/integrations/builtin/contactmoment/CnContactmomentCard.vue +2 -1
- package/src/integrations/builtin/cospend/CnCospendTab.vue +2 -1
- package/src/integrations/builtin/deck/CnDeckTab.vue +2 -1
- package/src/integrations/builtin/email/CnEmailCard.vue +2 -1
- package/src/integrations/builtin/field-inspection/CnFieldInspectionCard.vue +2 -1
- package/src/integrations/builtin/field-inspection/CnFieldInspectionTab.vue +2 -1
- package/src/integrations/builtin/photos/CnPhotosTab.vue +2 -1
- package/src/schemas/app-manifest-v2.schema.json +4 -1
- package/src/store/useObjectStore.js +7 -2
- package/src/utils/boardColumns.js +49 -0
- package/src/utils/boardReferenceColumns.js +114 -3
- package/src/utils/contentHeaderLink.js +47 -0
- package/src/utils/schema.js +5 -4
- package/src/utils/userLocale.js +26 -0
- package/src/utils/validateManifestV2.compiled.js +2 -2
|
@@ -2,7 +2,7 @@ import script from './CnMetadataTab.vue2.js';
|
|
|
2
2
|
import { render } from './CnMetadataTab.vue3.js';
|
|
3
3
|
|
|
4
4
|
script.render = render;
|
|
5
|
-
script.__scopeId = "data-v-
|
|
5
|
+
script.__scopeId = "data-v-88689872";
|
|
6
6
|
const __sfc_main = script;
|
|
7
7
|
|
|
8
8
|
export { __sfc_main as default };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { translate } from '@nextcloud/l10n';
|
|
2
|
+
import { userLocale } from '../../utils/userLocale.js';
|
|
2
3
|
|
|
3
4
|
var script = {
|
|
4
5
|
name: 'CnMetadataTab',
|
|
@@ -31,13 +32,13 @@ var script = {
|
|
|
31
32
|
metadataCreated() {
|
|
32
33
|
const o = this.item?.['@self'];
|
|
33
34
|
const v = o?.created;
|
|
34
|
-
return v ? new Date(v).toLocaleString() : '—'
|
|
35
|
+
return v ? new Date(v).toLocaleString(userLocale()) : '—'
|
|
35
36
|
},
|
|
36
37
|
|
|
37
38
|
metadataUpdated() {
|
|
38
39
|
const o = this.item?.['@self'];
|
|
39
40
|
const v = o?.updated;
|
|
40
|
-
return v ? new Date(v).toLocaleString() : '—'
|
|
41
|
+
return v ? new Date(v).toLocaleString(userLocale()) : '—'
|
|
41
42
|
},
|
|
42
43
|
|
|
43
44
|
defaultRows() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CnMetadataTab.vue2.js","sources":["../../../../src/components/CnAdvancedFormDialog/CnMetadataTab.vue"],"sourcesContent":["<template>\n\t<div class=\"cn-advanced-form-dialog__table-container\">\n\t\t<table class=\"cn-advanced-form-dialog__table\">\n\t\t\t<thead>\n\t\t\t\t<tr class=\"cn-advanced-form-dialog__table-row\">\n\t\t\t\t\t<th class=\"cn-advanced-form-dialog__table-col-constrained\">\n\t\t\t\t\t\t{{ t('nextcloud-vue', 'Metadata') }}\n\t\t\t\t\t</th>\n\t\t\t\t\t<th class=\"cn-advanced-form-dialog__table-col-expanded\">\n\t\t\t\t\t\t{{ t('nextcloud-vue', 'Value') }}\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t<tr\n\t\t\t\t\tv-for=\"[label, value] in resolvedRows\"\n\t\t\t\t\t:key=\"label\"\n\t\t\t\t\tclass=\"cn-advanced-form-dialog__table-row\">\n\t\t\t\t\t<td class=\"cn-advanced-form-dialog__table-col-constrained\">\n\t\t\t\t\t\t{{ label }}\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class=\"cn-advanced-form-dialog__table-col-expanded\">\n\t\t\t\t\t\t{{ value }}\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</tbody>\n\t\t</table>\n\t</div>\n</template>\n\n<script>\nimport { translate as t } from '@nextcloud/l10n'\n\nexport default {\n\tname: 'CnMetadataTab',\n\n\tprops: {\n\t\t/** The object instance being created or edited */\n\t\titem: { type: Object, default: null },\n\t\t/* eslint-disable vue/no-unused-properties -- CnAdvancedFormDialog binds it next to `item`, and every default row reads `item` */\n\t\t/** Current form data object */\n\t\tformData: { type: Object, default: () => ({}) },\n\t\t/* eslint-enable vue/no-unused-properties */\n\t\t/**\n\t\t * Additional `[label, value]` rows appended to (or, when `replaceRows` is true,\n\t\t * replacing) the default ID/Created/Updated rows. Use this to surface\n\t\t * domain-specific metadata (version, owner, custom timestamps, etc.).\n\t\t */\n\t\textraRows: { type: Array, default: () => [] },\n\t\t/**\n\t\t * When true, render only `extraRows` and skip the default ID/Created/Updated rows.\n\t\t */\n\t\treplaceRows: { type: Boolean, default: false },\n\t},\n\n\tcomputed: {\n\t\tmetadataId() {\n\t\t\tconst o = this.item?.['@self']\n\t\t\treturn o?.id ?? this.item?.id ?? '—'\n\t\t},\n\n\t\tmetadataCreated() {\n\t\t\tconst o = this.item?.['@self']\n\t\t\tconst v = o?.created\n\t\t\treturn v ? new Date(v).toLocaleString() : '—'\n\t\t},\n\n\t\tmetadataUpdated() {\n\t\t\tconst o = this.item?.['@self']\n\t\t\tconst v = o?.updated\n\t\t\treturn v ? new Date(v).toLocaleString() : '—'\n\t\t},\n\n\t\tdefaultRows() {\n\t\t\treturn [\n\t\t\t\t[this.t('nextcloud-vue', 'ID'), this.metadataId],\n\t\t\t\t[this.t('nextcloud-vue', 'Created'), this.metadataCreated],\n\t\t\t\t[this.t('nextcloud-vue', 'Updated'), this.metadataUpdated],\n\t\t\t]\n\t\t},\n\n\t\tresolvedRows() {\n\t\t\tconst extra = Array.isArray(this.extraRows) ? this.extraRows : []\n\t\t\tif (this.replaceRows) {\n\t\t\t\treturn extra\n\t\t\t}\n\t\t\treturn [...this.defaultRows, ...extra]\n\t\t},\n\t},\n\n\tmethods: { t },\n}\n</script>\n\n<style scoped>\n.cn-advanced-form-dialog__table-container {\n\tbackground: var(--color-main-background);\n\tborder-radius: var(--border-radius);\n\toverflow: hidden;\n\tbox-shadow: 0 2px 4px var(--color-box-shadow);\n\tborder: 1px solid var(--color-border);\n\tmargin-bottom: calc(5 * var(--default-grid-baseline));\n}\n\n.cn-advanced-form-dialog__table {\n\twidth: 100%;\n\tborder-collapse: collapse;\n\tbackground-color: var(--color-main-background);\n}\n\n.cn-advanced-form-dialog__table th,\n.cn-advanced-form-dialog__table td {\n\tpadding: calc(3 * var(--default-grid-baseline));\n\ttext-align: left;\n\tborder-bottom: 1px solid var(--color-border);\n\tvertical-align: middle;\n}\n\n.cn-advanced-form-dialog__table th {\n\tbackground: var(--color-background-dark);\n\tfont-weight: 500;\n\tcolor: var(--color-text-maxcontrast);\n}\n\n.cn-advanced-form-dialog__table-row {\n\tcursor: default;\n\tbackground-color: var(--color-main-background);\n}\n\n.cn-advanced-form-dialog__table-col-constrained {\n\twidth: 150px;\n\tmax-width: 150px;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.cn-advanced-form-dialog__table-col-expanded {\n\twidth: auto;\n\tmin-width: 200px;\n}\n</style>\n"],"names":["t"],"mappings":"
|
|
1
|
+
{"version":3,"file":"CnMetadataTab.vue2.js","sources":["../../../../src/components/CnAdvancedFormDialog/CnMetadataTab.vue"],"sourcesContent":["<template>\n\t<div class=\"cn-advanced-form-dialog__table-container\">\n\t\t<table class=\"cn-advanced-form-dialog__table\">\n\t\t\t<thead>\n\t\t\t\t<tr class=\"cn-advanced-form-dialog__table-row\">\n\t\t\t\t\t<th class=\"cn-advanced-form-dialog__table-col-constrained\">\n\t\t\t\t\t\t{{ t('nextcloud-vue', 'Metadata') }}\n\t\t\t\t\t</th>\n\t\t\t\t\t<th class=\"cn-advanced-form-dialog__table-col-expanded\">\n\t\t\t\t\t\t{{ t('nextcloud-vue', 'Value') }}\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t<tr\n\t\t\t\t\tv-for=\"[label, value] in resolvedRows\"\n\t\t\t\t\t:key=\"label\"\n\t\t\t\t\tclass=\"cn-advanced-form-dialog__table-row\">\n\t\t\t\t\t<td class=\"cn-advanced-form-dialog__table-col-constrained\">\n\t\t\t\t\t\t{{ label }}\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class=\"cn-advanced-form-dialog__table-col-expanded\">\n\t\t\t\t\t\t{{ value }}\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</tbody>\n\t\t</table>\n\t</div>\n</template>\n\n<script>\nimport { translate as t } from '@nextcloud/l10n'\nimport { userLocale } from '../../utils/userLocale.js'\n\nexport default {\n\tname: 'CnMetadataTab',\n\n\tprops: {\n\t\t/** The object instance being created or edited */\n\t\titem: { type: Object, default: null },\n\t\t/* eslint-disable vue/no-unused-properties -- CnAdvancedFormDialog binds it next to `item`, and every default row reads `item` */\n\t\t/** Current form data object */\n\t\tformData: { type: Object, default: () => ({}) },\n\t\t/* eslint-enable vue/no-unused-properties */\n\t\t/**\n\t\t * Additional `[label, value]` rows appended to (or, when `replaceRows` is true,\n\t\t * replacing) the default ID/Created/Updated rows. Use this to surface\n\t\t * domain-specific metadata (version, owner, custom timestamps, etc.).\n\t\t */\n\t\textraRows: { type: Array, default: () => [] },\n\t\t/**\n\t\t * When true, render only `extraRows` and skip the default ID/Created/Updated rows.\n\t\t */\n\t\treplaceRows: { type: Boolean, default: false },\n\t},\n\n\tcomputed: {\n\t\tmetadataId() {\n\t\t\tconst o = this.item?.['@self']\n\t\t\treturn o?.id ?? this.item?.id ?? '—'\n\t\t},\n\n\t\tmetadataCreated() {\n\t\t\tconst o = this.item?.['@self']\n\t\t\tconst v = o?.created\n\t\t\treturn v ? new Date(v).toLocaleString(userLocale()) : '—'\n\t\t},\n\n\t\tmetadataUpdated() {\n\t\t\tconst o = this.item?.['@self']\n\t\t\tconst v = o?.updated\n\t\t\treturn v ? new Date(v).toLocaleString(userLocale()) : '—'\n\t\t},\n\n\t\tdefaultRows() {\n\t\t\treturn [\n\t\t\t\t[this.t('nextcloud-vue', 'ID'), this.metadataId],\n\t\t\t\t[this.t('nextcloud-vue', 'Created'), this.metadataCreated],\n\t\t\t\t[this.t('nextcloud-vue', 'Updated'), this.metadataUpdated],\n\t\t\t]\n\t\t},\n\n\t\tresolvedRows() {\n\t\t\tconst extra = Array.isArray(this.extraRows) ? this.extraRows : []\n\t\t\tif (this.replaceRows) {\n\t\t\t\treturn extra\n\t\t\t}\n\t\t\treturn [...this.defaultRows, ...extra]\n\t\t},\n\t},\n\n\tmethods: { t },\n}\n</script>\n\n<style scoped>\n.cn-advanced-form-dialog__table-container {\n\tbackground: var(--color-main-background);\n\tborder-radius: var(--border-radius);\n\toverflow: hidden;\n\tbox-shadow: 0 2px 4px var(--color-box-shadow);\n\tborder: 1px solid var(--color-border);\n\tmargin-bottom: calc(5 * var(--default-grid-baseline));\n}\n\n.cn-advanced-form-dialog__table {\n\twidth: 100%;\n\tborder-collapse: collapse;\n\tbackground-color: var(--color-main-background);\n}\n\n.cn-advanced-form-dialog__table th,\n.cn-advanced-form-dialog__table td {\n\tpadding: calc(3 * var(--default-grid-baseline));\n\ttext-align: left;\n\tborder-bottom: 1px solid var(--color-border);\n\tvertical-align: middle;\n}\n\n.cn-advanced-form-dialog__table th {\n\tbackground: var(--color-background-dark);\n\tfont-weight: 500;\n\tcolor: var(--color-text-maxcontrast);\n}\n\n.cn-advanced-form-dialog__table-row {\n\tcursor: default;\n\tbackground-color: var(--color-main-background);\n}\n\n.cn-advanced-form-dialog__table-col-constrained {\n\twidth: 150px;\n\tmax-width: 150px;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.cn-advanced-form-dialog__table-col-expanded {\n\twidth: auto;\n\tmin-width: 200px;\n}\n</style>\n"],"names":["t"],"mappings":";;;AAkCA,aAAe;AACd,CAAA,IAAI,EAAE,eAAe;;AAErB,CAAA,KAAK,EAAE;AACN;AACA,EAAA,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;;;AAGrC,EAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG;AAC/C;AACA;AACC;;;;AAID,EAAA,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI;AAC7C;AACC;;AAED,EAAA,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;EAC9C;;AAED,CAAA,QAAQ,EAAE;EACT,UAAU,GAAG;GACZ,MAAM,CAAA,GAAI,IAAI,CAAC,IAAI,GAAG,OAAO,EAAA;AAC7B,GAAA,OAAO,CAAC,EAAE,EAAC,IAAK,IAAI,CAAC,IAAI,EAAE,EAAG,IAAG,GAAE;GACnC;;AAED,EAAA,eAAe,GAAG;GACjB,MAAM,CAAA,GAAI,IAAI,CAAC,IAAI,GAAG,OAAO,EAAA;AAC7B,GAAA,MAAM,IAAI,CAAC,EAAE,QAAM;GACnB,OAAO,CAAE,GAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,CAAA,GAAI,GAAE;GACxD;;AAED,EAAA,eAAe,GAAG;GACjB,MAAM,CAAA,GAAI,IAAI,CAAC,IAAI,GAAG,OAAO,EAAA;AAC7B,GAAA,MAAM,IAAI,CAAC,EAAE,QAAM;GACnB,OAAO,CAAE,GAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,CAAA,GAAI,GAAE;GACxD;;EAED,WAAW,GAAG;AACb,GAAA,OAAO;IACN,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;IAChD,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC;IAC1D,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC;AAC3D,IAAA;GACA;;AAED,EAAA,YAAY,GAAG;GACd,MAAM,KAAM,GAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAE,GAAE,IAAI,CAAC,SAAU,GAAE,GAAC;AAChE,GAAA,IAAI,IAAI,CAAC,WAAW,EAAE;IACrB,OAAO,KAAI;AACZ,IAAA;AACA,GAAA,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,KAAK,CAAA;GACrC;EACD;;CAED,OAAO,EAAE,KAAEA,SAAA,EAAG;AACf;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CnMetadataTab.vue3.js","sources":["../../../../src/components/CnAdvancedFormDialog/CnMetadataTab.vue?vue&type=template&id=
|
|
1
|
+
{"version":3,"file":"CnMetadataTab.vue3.js","sources":["../../../../src/components/CnAdvancedFormDialog/CnMetadataTab.vue?vue&type=template&id=88689872&lang.js"],"sourcesContent":["<template>\n\t<div class=\"cn-advanced-form-dialog__table-container\">\n\t\t<table class=\"cn-advanced-form-dialog__table\">\n\t\t\t<thead>\n\t\t\t\t<tr class=\"cn-advanced-form-dialog__table-row\">\n\t\t\t\t\t<th class=\"cn-advanced-form-dialog__table-col-constrained\">\n\t\t\t\t\t\t{{ t('nextcloud-vue', 'Metadata') }}\n\t\t\t\t\t</th>\n\t\t\t\t\t<th class=\"cn-advanced-form-dialog__table-col-expanded\">\n\t\t\t\t\t\t{{ t('nextcloud-vue', 'Value') }}\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t</thead>\n\t\t\t<tbody>\n\t\t\t\t<tr\n\t\t\t\t\tv-for=\"[label, value] in resolvedRows\"\n\t\t\t\t\t:key=\"label\"\n\t\t\t\t\tclass=\"cn-advanced-form-dialog__table-row\">\n\t\t\t\t\t<td class=\"cn-advanced-form-dialog__table-col-constrained\">\n\t\t\t\t\t\t{{ label }}\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class=\"cn-advanced-form-dialog__table-col-expanded\">\n\t\t\t\t\t\t{{ value }}\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</tbody>\n\t\t</table>\n\t</div>\n</template>\n\n<script>\nimport { translate as t } from '@nextcloud/l10n'\nimport { userLocale } from '../../utils/userLocale.js'\n\nexport default {\n\tname: 'CnMetadataTab',\n\n\tprops: {\n\t\t/** The object instance being created or edited */\n\t\titem: { type: Object, default: null },\n\t\t/* eslint-disable vue/no-unused-properties -- CnAdvancedFormDialog binds it next to `item`, and every default row reads `item` */\n\t\t/** Current form data object */\n\t\tformData: { type: Object, default: () => ({}) },\n\t\t/* eslint-enable vue/no-unused-properties */\n\t\t/**\n\t\t * Additional `[label, value]` rows appended to (or, when `replaceRows` is true,\n\t\t * replacing) the default ID/Created/Updated rows. Use this to surface\n\t\t * domain-specific metadata (version, owner, custom timestamps, etc.).\n\t\t */\n\t\textraRows: { type: Array, default: () => [] },\n\t\t/**\n\t\t * When true, render only `extraRows` and skip the default ID/Created/Updated rows.\n\t\t */\n\t\treplaceRows: { type: Boolean, default: false },\n\t},\n\n\tcomputed: {\n\t\tmetadataId() {\n\t\t\tconst o = this.item?.['@self']\n\t\t\treturn o?.id ?? this.item?.id ?? '—'\n\t\t},\n\n\t\tmetadataCreated() {\n\t\t\tconst o = this.item?.['@self']\n\t\t\tconst v = o?.created\n\t\t\treturn v ? new Date(v).toLocaleString(userLocale()) : '—'\n\t\t},\n\n\t\tmetadataUpdated() {\n\t\t\tconst o = this.item?.['@self']\n\t\t\tconst v = o?.updated\n\t\t\treturn v ? new Date(v).toLocaleString(userLocale()) : '—'\n\t\t},\n\n\t\tdefaultRows() {\n\t\t\treturn [\n\t\t\t\t[this.t('nextcloud-vue', 'ID'), this.metadataId],\n\t\t\t\t[this.t('nextcloud-vue', 'Created'), this.metadataCreated],\n\t\t\t\t[this.t('nextcloud-vue', 'Updated'), this.metadataUpdated],\n\t\t\t]\n\t\t},\n\n\t\tresolvedRows() {\n\t\t\tconst extra = Array.isArray(this.extraRows) ? this.extraRows : []\n\t\t\tif (this.replaceRows) {\n\t\t\t\treturn extra\n\t\t\t}\n\t\t\treturn [...this.defaultRows, ...extra]\n\t\t},\n\t},\n\n\tmethods: { t },\n}\n</script>\n\n<style scoped>\n.cn-advanced-form-dialog__table-container {\n\tbackground: var(--color-main-background);\n\tborder-radius: var(--border-radius);\n\toverflow: hidden;\n\tbox-shadow: 0 2px 4px var(--color-box-shadow);\n\tborder: 1px solid var(--color-border);\n\tmargin-bottom: calc(5 * var(--default-grid-baseline));\n}\n\n.cn-advanced-form-dialog__table {\n\twidth: 100%;\n\tborder-collapse: collapse;\n\tbackground-color: var(--color-main-background);\n}\n\n.cn-advanced-form-dialog__table th,\n.cn-advanced-form-dialog__table td {\n\tpadding: calc(3 * var(--default-grid-baseline));\n\ttext-align: left;\n\tborder-bottom: 1px solid var(--color-border);\n\tvertical-align: middle;\n}\n\n.cn-advanced-form-dialog__table th {\n\tbackground: var(--color-background-dark);\n\tfont-weight: 500;\n\tcolor: var(--color-text-maxcontrast);\n}\n\n.cn-advanced-form-dialog__table-row {\n\tcursor: default;\n\tbackground-color: var(--color-main-background);\n}\n\n.cn-advanced-form-dialog__table-col-constrained {\n\twidth: 150px;\n\tmax-width: 150px;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.cn-advanced-form-dialog__table-col-expanded {\n\twidth: auto;\n\tmin-width: 200px;\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_Fragment","_renderList"],"mappings":";;AACM,MAAA,UAAA,GAAA,EAAA,KAAK,EAAC,0CAA0C,GAAA;AAC7C,MAAA,UAAA,GAAA,EAAA,KAAK,EAAC,gCAAgC,GAAA;AAEvC,MAAA,UAAA,GAAA,EAAA,KAAK,EAAC,oCAAoC,GAAA;AACzC,MAAA,UAAA,GAAA,EAAA,KAAK,EAAC,gDAAgD,GAAA;AAGtD,MAAA,UAAA,GAAA,EAAA,KAAK,EAAC,6CAA6C,GAAA;AAUnD,MAAA,UAAA,GAAA,EAAA,KAAK,EAAC,gDAAgD,GAAA;AAGtD,MAAA,UAAA,GAAA,EAAA,KAAK,EAAC,6CAA6C,GAAA;;;AApB3D,EAAA,QAAAA,SAAA,EAAA,EAAAC,kBAAA,CA0BK,OA1BL,UA0BK,EAAA;AAzBJ,IAAAC,kBAAA,CAwBO,SAxBP,UAwBO,EAAA;MAvBNA,kBASO,CAAA,OAAA,EAAA,IAAA,EAAA;AARN,QAAAA,kBAAA,CAOI,MAPJ,UAOI,EAAA;UANHA,kBAEI,CAAA,IAAA,EAFJ,UAEI,EAAAC,eAAA,CADA,QAAC,CAAA,CAAA,CAAA,eAAA,EAAA,UAAA,CAAA,CAAA,EAAA,CAAA,YAAA;UAELD,kBAEI,CAAA,IAAA,EAFJ,UAEI,EAAAC,eAAA,CADA,QAAC,CAAA,CAAA,CAAA,eAAA,EAAA,OAAA,CAAA,CAAA,EAAA,CAAA,YAAA;;;MAIPD,kBAYO,CAAA,OAAA,EAAA,IAAA,EAAA;AAXN,SAAAF,SAAA,CAAA,IAAA,CAAA,EAAAC,kBAAA,CAUIG,QATsB,EAAA,IAAA,EAAAC,UAAA,CAAA,QAAA,CAAA,YAAY,EAA7B,CAAA,CAAA,KAAK,EAAE,KAAK,CAAA,KAAA;+BADrBJ,kBAUI,CAAA,IAAA,EAAA;AARF,YAAA,GAAG,EAAE,KAAK;AACX,YAAA,KAAK,EAAC,oCAAoC;;YAC1CC,kBAEI,CAAA,IAAA,EAFJ,UAEI,EAAAC,eAAA,CADA;YAEJD,kBAEI,CAAA,IAAA,EAFJ,UAEI,EAAAC,eAAA,CADA;;;;;;;;;;"}
|
|
@@ -2,7 +2,7 @@ import script from './CnPropertyValueCell.vue2.js';
|
|
|
2
2
|
import { render } from './CnPropertyValueCell.vue3.js';
|
|
3
3
|
|
|
4
4
|
script.render = render;
|
|
5
|
-
script.__scopeId = "data-v-
|
|
5
|
+
script.__scopeId = "data-v-9ae2b758";
|
|
6
6
|
const __sfc_main = script;
|
|
7
7
|
|
|
8
8
|
export { __sfc_main as default };
|
|
@@ -7,6 +7,7 @@ import Plus from 'vue-material-design-icons/Plus.vue';
|
|
|
7
7
|
import __sfc_main$1 from '../CnColorPicker/CnColorPicker.vue.js';
|
|
8
8
|
import __sfc_main from '../CnJsonViewer/CnJsonViewer.vue.js';
|
|
9
9
|
import { validateValue, formatValue } from '../../utils/schema.js';
|
|
10
|
+
import { userLocale } from '../../utils/userLocale.js';
|
|
10
11
|
|
|
11
12
|
const SUPPORTED_WIDGETS = ['text', 'number', 'boolean', 'datetime', 'textarea', 'array', 'select', 'object', 'objectArray', 'color'];
|
|
12
13
|
|
|
@@ -550,19 +551,19 @@ var script = {
|
|
|
550
551
|
// Same local-midnight parse as datetimeValue to avoid UTC-shift in display.
|
|
551
552
|
if (fmt === 'date' && typeof v === 'string' && /^\d{4}-\d{2}-\d{2}$/.test(v)) {
|
|
552
553
|
const [year, month, day] = v.split('-').map(Number);
|
|
553
|
-
return new Date(year, month - 1, day).toLocaleDateString()
|
|
554
|
+
return new Date(year, month - 1, day).toLocaleDateString(userLocale())
|
|
554
555
|
}
|
|
555
556
|
const d = new Date(v);
|
|
556
557
|
if (Number.isNaN(d.getTime())) {
|
|
557
558
|
return String(v)
|
|
558
559
|
}
|
|
559
560
|
if (fmt === 'date') {
|
|
560
|
-
return d.toLocaleDateString()
|
|
561
|
+
return d.toLocaleDateString(userLocale())
|
|
561
562
|
}
|
|
562
563
|
if (fmt === 'time') {
|
|
563
|
-
return d.toLocaleTimeString()
|
|
564
|
+
return d.toLocaleTimeString(userLocale())
|
|
564
565
|
}
|
|
565
|
-
return d.toLocaleString()
|
|
566
|
+
return d.toLocaleString(userLocale())
|
|
566
567
|
},
|
|
567
568
|
},
|
|
568
569
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CnPropertyValueCell.vue2.js","sources":["../../../../src/components/CnAdvancedFormDialog/CnPropertyValueCell.vue"],"sourcesContent":["<template>\n\t<div class=\"cn-advanced-form-dialog__value-cell-wrapper\">\n\t\t<!-- Edit mode -->\n\t\t<div\n\t\t\tv-if=\"isEditable && (resolvedWidget === 'boolean' || isEditing)\"\n\t\t\tclass=\"cn-advanced-form-dialog__value-input-container\"\n\t\t\t@click.stop>\n\t\t\t<div\n\t\t\t\tv-if=\"resolvedWidget === 'boolean'\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__boolean-input-row\">\n\t\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t\t:modelValue=\"!!value\"\n\t\t\t\t\ttype=\"switch\"\n\t\t\t\t\tclass=\"cn-advanced-form-dialog__boolean-input-row__input\"\n\t\t\t\t\t@update:modelValue=\"emit($event)\">\n\t\t\t\t\t{{ displayName }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<InformationOutline\n\t\t\t\t\tv-if=\"schemaProp && schemaProp.description\"\n\t\t\t\t\t:title=\"schemaProp.description\"\n\t\t\t\t\tclass=\"cn-advanced-form-dialog__info-icon\"\n\t\t\t\t\t:size=\"16\" />\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tv-else-if=\"resolvedWidget === 'color'\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__color-input-row\">\n\t\t\t\t<CnColorPicker\n\t\t\t\t\t:value=\"chromePickerValue\"\n\t\t\t\t\t:disableAlpha=\"!hasAlpha\"\n\t\t\t\t\t:mode=\"colorPickerMode\"\n\t\t\t\t\t@input=\"onChromeColorInput\" />\n\t\t\t\t<NcTextField\n\t\t\t\t\tref=\"inputRef\"\n\t\t\t\t\t:modelValue=\"colorTextValue\"\n\t\t\t\t\t:placeholder=\"colorPlaceholder\"\n\t\t\t\t\t@update:modelValue=\"onColorTextInput($event)\" />\n\t\t\t</div>\n\t\t\t<NcDateTimePicker\n\t\t\t\tv-else-if=\"resolvedWidget === 'datetime'\"\n\t\t\t\t:modelValue=\"datetimeValue\"\n\t\t\t\t:type=\"datetimePickerType\"\n\t\t\t\t:placeholder=\"displayName\"\n\t\t\t\t:inputLabel=\"displayName\"\n\t\t\t\t@update:modelValue=\"emitDatetime($event)\" />\n\t\t\t<NcTextArea\n\t\t\t\tv-else-if=\"resolvedWidget === 'textarea'\"\n\t\t\t\tref=\"inputRef\"\n\t\t\t\t:modelValue=\"stringValue\"\n\t\t\t\t:placeholder=\"displayName\"\n\t\t\t\t:rows=\"textareaRows\"\n\t\t\t\t:maxlength=\"maxLengthAttr\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__textarea\"\n\t\t\t\t@update:modelValue=\"emit($event)\" />\n\t\t\t<NcSelect\n\t\t\t\tv-else-if=\"resolvedWidget === 'select'\"\n\t\t\t\t:modelValue=\"effectiveSelectValue\"\n\t\t\t\t:options=\"effectiveSelectOptions\"\n\t\t\t\t:multiple=\"effectiveSelectMultiple\"\n\t\t\t\t:taggable=\"effectiveSelectTaggable\"\n\t\t\t\t:pushTags=\"effectiveSelectTaggable\"\n\t\t\t\t:keepOpen=\"effectiveSelectMultiple\"\n\t\t\t\t:inputLabel=\"displayName\"\n\t\t\t\t:placeholder=\"displayName\"\n\t\t\t\t@update:modelValue=\"emitSelect($event)\" />\n\t\t\t<CnJsonViewer\n\t\t\t\tv-else-if=\"resolvedWidget === 'object'\"\n\t\t\t\t:value=\"objectJsonString\"\n\t\t\t\t:height=\"objectEditorHeight\"\n\t\t\t\tlanguage=\"json\"\n\t\t\t\t@update:value=\"emitObject($event)\" />\n\t\t\t<div\n\t\t\t\tv-else-if=\"resolvedWidget === 'objectArray'\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__object-array\">\n\t\t\t\t<div class=\"cn-advanced-form-dialog__object-array-chips\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tv-for=\"(item, idx) in objectArrayItems\"\n\t\t\t\t\t\t:key=\"idx\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclass=\"cn-advanced-form-dialog__object-array-chip\"\n\t\t\t\t\t\t:title=\"t('nextcloud-vue', 'Edit item')\"\n\t\t\t\t\t\t@click.stop=\"openObjectArrayItem(idx)\">\n\t\t\t\t\t\t<span class=\"cn-advanced-form-dialog__object-array-chip-label\">{{ objectArrayItemLabel(item, idx) }}</span>\n\t\t\t\t\t\t<NcButton\n\t\t\t\t\t\t\tvariant=\"tertiary-no-background\"\n\t\t\t\t\t\t\t:aria-label=\"t('nextcloud-vue', 'Remove item')\"\n\t\t\t\t\t\t\t:title=\"t('nextcloud-vue', 'Remove item')\"\n\t\t\t\t\t\t\tclass=\"cn-advanced-form-dialog__object-array-chip-remove\"\n\t\t\t\t\t\t\t@click.stop=\"removeObjectArrayItem(idx)\">\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<Close :size=\"14\" />\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<NcButton\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tclass=\"cn-advanced-form-dialog__object-array-add\"\n\t\t\t\t\t@click.stop=\"openObjectArrayItem(null)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Plus :size=\"16\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('nextcloud-vue', 'Add item') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<CnAdvancedFormDialog\n\t\t\t\t\tv-if=\"objectArrayDialogOpen\"\n\t\t\t\t\t:schema=\"schemaProp.items\"\n\t\t\t\t\t:item=\"objectArrayDialogItem\"\n\t\t\t\t\t:dialogTitle=\"objectArrayDialogTitle\"\n\t\t\t\t\t:show-metadata-tab=\"false\"\n\t\t\t\t\t@confirm=\"onObjectArrayConfirm\"\n\t\t\t\t\t@close=\"closeObjectArrayDialog\" />\n\t\t\t</div>\n\t\t\t<NcTextField\n\t\t\t\tv-else\n\t\t\t\tref=\"inputRef\"\n\t\t\t\t:modelValue=\"stringValue\"\n\t\t\t\t:type=\"inputType\"\n\t\t\t\t:placeholder=\"displayName\"\n\t\t\t\t:min=\"minimum\"\n\t\t\t\t:max=\"maximum\"\n\t\t\t\t:step=\"step\"\n\t\t\t\t:pattern=\"pattern\"\n\t\t\t\t:minlength=\"minLengthAttr\"\n\t\t\t\t:maxlength=\"maxLengthAttr\"\n\t\t\t\t@update:modelValue=\"emitConverted($event)\" />\n\t\t</div>\n\n\t\t<!-- Display mode -->\n\t\t<div\n\t\t\tv-else\n\t\t\t:title=\"editabilityWarning\">\n\t\t\t<pre\n\t\t\t\tv-if=\"typeof value === 'object' && value !== null\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__json-value\">{{ formattedObjectValue }}</pre>\n\t\t\t<span\n\t\t\t\tv-else-if=\"resolvedWidget === 'datetime' && isValidDate(value)\">{{\n\t\t\t\tformattedDateValue\n\t\t\t}}</span>\n\t\t\t<span\n\t\t\t\tv-else-if=\"resolvedWidget === 'color' && value\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__color-display\">\n\t\t\t\t<span\n\t\t\t\t\tclass=\"cn-advanced-form-dialog__color-swatch cn-advanced-form-dialog__color-swatch--readonly\"\n\t\t\t\t\t:style=\"colorSwatchStyle\" />\n\t\t\t\t<span>{{ displayValue }}</span>\n\t\t\t</span>\n\t\t\t<span v-else>{{ displayValue }}</span>\n\t\t</div>\n\n\t\t<!-- Help text: description + example -->\n\t\t<div\n\t\t\tv-if=\"showHelpText && (helpDescription || helpExample)\"\n\t\t\tclass=\"cn-advanced-form-dialog__field-help\">\n\t\t\t<span\n\t\t\t\tv-if=\"helpDescription\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__field-description\">{{ helpDescription }}</span>\n\t\t\t<span\n\t\t\t\tv-if=\"helpExample\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__field-example\">{{ t('nextcloud-vue', 'e.g.') }} {{ helpExample }}</span>\n\t\t</div>\n\n\t\t<!-- Inline validation error -->\n\t\t<div\n\t\t\tv-if=\"showHelpText && fieldError\"\n\t\t\tclass=\"cn-advanced-form-dialog__field-error\"\n\t\t\trole=\"alert\">\n\t\t\t{{ fieldError }}\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { translate as t } from '@nextcloud/l10n'\nimport {\n\tNcButton,\n\tNcCheckboxRadioSwitch,\n\tNcDateTimePicker,\n\tNcSelect,\n\tNcTextArea,\n\tNcTextField,\n} from '@nextcloud/vue'\nimport { defineAsyncComponent } from 'vue'\nimport Close from 'vue-material-design-icons/Close.vue'\nimport InformationOutline from 'vue-material-design-icons/InformationOutline.vue'\nimport Plus from 'vue-material-design-icons/Plus.vue'\nimport CnColorPicker from '../CnColorPicker/CnColorPicker.vue'\nimport CnJsonViewer from '../CnJsonViewer/CnJsonViewer.vue'\nimport { formatValue, validateValue } from '../../utils/schema.js'\n\nconst SUPPORTED_WIDGETS = ['text', 'number', 'boolean', 'datetime', 'textarea', 'array', 'select', 'object', 'objectArray', 'color']\n\n/** String formats that map to HTML5 `<input type=\"url\">`. */\nconst URL_FORMATS = new Set([\n\t'url',\n\t'uri',\n\t'uri-reference',\n\t'iri',\n\t'iri-reference',\n\t'uri-template',\n\t'accessUrl',\n\t'shareUrl',\n\t'downloadUrl',\n])\n\n/** All color-related string formats — rendered with the `color` widget (swatch + text input). */\nconst COLOR_FORMATS = new Set([\n\t'color',\n\t'color-hex',\n\t'color-hex-alpha',\n\t'color-rgb',\n\t'color-rgba',\n\t'color-hsl',\n\t'color-hsla',\n])\n\n/** String formats that render as a multi-line textarea instead of a single-line input. */\nconst TEXTAREA_FORMATS = new Set(['html', 'markdown'])\n\nexport default {\n\tname: 'CnPropertyValueCell',\n\n\tcomponents: {\n\t\tNcTextField,\n\t\tNcTextArea,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSelect,\n\t\tNcButton,\n\t\tNcDateTimePicker,\n\t\tInformationOutline,\n\t\tPlus,\n\t\tClose,\n\t\tCnJsonViewer,\n\t\tCnColorPicker,\n\t\t// Lazy-required to break the circular dep with CnAdvancedFormDialog.\n\t\t// defineAsyncComponent is MANDATORY under Vue 3: a bare function in\n\t\t// `components:` is a functional component, so Vue CALLS it on render\n\t\t// and prints the returned Promise as text instead of mounting the\n\t\t// dialog (the same \"[object Promise]\" bug CnActionsMenu shipped).\n\t\t// `.then(m => m.default || m)` unwraps the dynamic-import module namespace\n\t\t// before Vue receives it — with rollup's `inlineDynamicImports: true`\n\t\t// the namespace is frozen, and downstream code attaching bookkeeping\n\t\t// to a frozen object throws.\n\t\tCnAdvancedFormDialog: defineAsyncComponent(() => import('./CnAdvancedFormDialog.vue').then((m) => m.default || m)),\n\t},\n\n\tprops: {\n\t\t/** The schema property key */\n\t\tpropertyKey: { type: String, required: true },\n\t\t/** Full JSON schema object */\n\t\tschema: { type: Object, default: null },\n\t\t/** Resolved current value (formData[key] ?? objectValue) */\n\t\tvalue: { type: [Boolean, String, Number, Object, Array], default: null },\n\t\t/** Whether this property is editable at all */\n\t\tisEditable: { type: Boolean, default: true },\n\t\t/** Whether this row is currently selected for editing */\n\t\tisEditing: { type: Boolean, default: false },\n\t\t/** Display name for the property (used in labels/placeholders) */\n\t\tdisplayName: { type: String, default: '' },\n\t\t/** Editability warning message shown as title when not editable */\n\t\teditabilityWarning: { type: String, default: null },\n\t\t/**\n\t\t * Override the auto-detected widget for this cell. When null (default),\n\t\t * the widget is derived from the schema (boolean/datetime/text/number),\n\t\t * with auto-detection for `format: 'text'` (textarea) and `type: 'array'`.\n\t\t * Accepted: 'text', 'number', 'boolean', 'datetime', 'textarea', 'array', 'select'.\n\t\t */\n\t\twidget: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t\tvalidator: (v) => v === null || SUPPORTED_WIDGETS.includes(v),\n\t\t},\n\n\t\t/** Options for the `select` widget. Each option may be a string, or `{ id, label }`. */\n\t\tselectOptions: { type: Array, default: null },\n\t\t/** Whether the `select` widget allows multiple values. */\n\t\tselectMultiple: { type: Boolean, default: true },\n\t\t/** Number of rows for the `textarea` widget. */\n\t\ttextareaRows: { type: Number, default: 4 },\n\t\t/** CSS height for the `object` widget's CodeMirror editor. */\n\t\tobjectEditorHeight: { type: String, default: '300px' },\n\t},\n\n\temits: ['update:value'],\n\n\tdata() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * Optimistic color value while the user is dragging the native picker.\n\t\t\t * Used for the swatch preview to feel instant; the upstream\n\t\t\t * `update:value` emit is debounced so validation/re-renders don't\n\t\t\t * fire on every drag tick.\n\t\t\t */\n\t\t\tpendingColor: null,\n\t\t\tpendingColorTimer: null,\n\t\t\tcolorPickerOpen: false,\n\t\t\t/** State for the object-array sub-dialog. `null` index means \"add new\". */\n\t\t\tobjectArrayDialogOpen: false,\n\t\t\tobjectArrayDialogIndex: null,\n\t\t\tobjectArrayDialogItem: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tschemaProp() {\n\t\t\treturn this.schema?.properties?.[this.propertyKey] || null\n\t\t},\n\n\t\t/**\n\t\t * Resolved widget after applying explicit override + schema auto-detection.\n\t\t * Arrays and string-with-enum become a `select` widget; the array/enum\n\t\t * shape is inferred from the schema by the `effectiveSelect*` computeds.\n\t\t *\n\t\t * @return {string} one of SUPPORTED_WIDGETS\n\t\t */\n\t\tresolvedWidget() {\n\t\t\tif (this.widget === 'array') {\n\t\t\t\treturn 'select'\n\t\t\t}\n\t\t\tif (this.widget) {\n\t\t\t\treturn this.widget\n\t\t\t}\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (!prop) {\n\t\t\t\treturn 'text'\n\t\t\t}\n\t\t\tif (prop.type === 'boolean') {\n\t\t\t\treturn 'boolean'\n\t\t\t}\n\t\t\tif (prop.type === 'array') {\n\t\t\t\tif (prop.items?.type === 'object') {\n\t\t\t\t\treturn 'objectArray'\n\t\t\t\t}\n\t\t\t\treturn 'select'\n\t\t\t}\n\t\t\tif (prop.type === 'object') {\n\t\t\t\treturn 'object'\n\t\t\t}\n\t\t\tif (prop.type === 'string') {\n\t\t\t\tif (Array.isArray(prop.enum) && prop.enum.length > 0) {\n\t\t\t\t\treturn 'select'\n\t\t\t\t}\n\t\t\t\tconst fmt = prop.format || ''\n\t\t\t\tif (['date', 'time', 'date-time'].includes(fmt)) {\n\t\t\t\t\treturn 'datetime'\n\t\t\t\t}\n\t\t\t\tif (TEXTAREA_FORMATS.has(fmt)) {\n\t\t\t\t\treturn 'textarea'\n\t\t\t\t}\n\t\t\t\tif (COLOR_FORMATS.has(fmt)) {\n\t\t\t\t\treturn 'color'\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (prop.type === 'number' || prop.type === 'integer') {\n\t\t\t\treturn 'number'\n\t\t\t}\n\t\t\treturn 'text'\n\t\t},\n\n\t\tinputType() {\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (!prop) {\n\t\t\t\treturn 'text'\n\t\t\t}\n\t\t\tconst fmt = prop.format || ''\n\t\t\tif (prop.type === 'string') {\n\t\t\t\tif (fmt === 'email' || fmt === 'idn-email') {\n\t\t\t\t\treturn 'email'\n\t\t\t\t}\n\t\t\t\tif (URL_FORMATS.has(fmt)) {\n\t\t\t\t\treturn 'url'\n\t\t\t\t}\n\t\t\t\tif (fmt === 'password') {\n\t\t\t\t\treturn 'password'\n\t\t\t\t}\n\t\t\t\tif (fmt === 'telephone' || fmt === 'phone') {\n\t\t\t\t\treturn 'tel'\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (prop.type === 'number' || prop.type === 'integer') {\n\t\t\t\treturn 'number'\n\t\t\t}\n\t\t\treturn 'text'\n\t\t},\n\n\t\tpattern() {\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (!prop || prop.type !== 'string') {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tif (prop.pattern) {\n\t\t\t\treturn prop.pattern\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\n\t\tcolorPlaceholder() {\n\t\t\tconst fmt = this.schemaProp?.format\n\t\t\tswitch (fmt) {\n\t\t\t\tcase 'color-hex': return '#rrggbb'\n\t\t\t\tcase 'color-hex-alpha': return '#rrggbbaa'\n\t\t\t\tcase 'color-rgb': return 'rgb(0, 0, 0)'\n\t\t\t\tcase 'color-rgba': return 'rgba(0, 0, 0, 1)'\n\t\t\t\tcase 'color-hsl': return 'hsl(0, 0%, 0%)'\n\t\t\t\tcase 'color-hsla': return 'hsla(0, 0%, 0%, 1)'\n\t\t\t\tdefault: return this.displayName || '#rrggbb'\n\t\t\t}\n\t\t},\n\n\t\t/** CSS-renderable representation of the current color value (raw value works for all standard formats). */\n\t\tcolorPreviewValue() {\n\t\t\tif (this.pendingColor) {\n\t\t\t\treturn this.pendingColor\n\t\t\t}\n\t\t\tconst v = this.stringValue\n\t\t\tif (!v) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn v\n\t\t},\n\n\t\t/** Text-field value: shows the optimistic pendingColor while the picker is dragging. */\n\t\tcolorTextValue() {\n\t\t\tif (this.pendingColor) {\n\t\t\t\treturn this.pendingColor\n\t\t\t}\n\t\t\treturn this.stringValue\n\t\t},\n\n\t\t/** True when the schema-declared format includes an alpha channel. */\n\t\thasAlpha() {\n\t\t\tconst fmt = this.schemaProp?.format\n\t\t\treturn fmt === 'color-hex-alpha' || fmt === 'color-rgba' || fmt === 'color-hsla'\n\t\t},\n\n\t\t/**\n\t\t * Lock the picker's numeric-field mode to match the schema format so\n\t\t * the user can't edit, say, an `rgba()` value via hex inputs.\n\t\t */\n\t\tcolorPickerMode() {\n\t\t\tconst fmt = this.schemaProp?.format\n\t\t\tif (fmt === 'color-rgb' || fmt === 'color-rgba') {\n\t\t\t\treturn 'rgb'\n\t\t\t}\n\t\t\tif (fmt === 'color-hsl' || fmt === 'color-hsla') {\n\t\t\t\treturn 'hsl'\n\t\t\t}\n\t\t\treturn 'hex'\n\t\t},\n\n\t\t/**\n\t\t * Value passed to vue-color's `Chrome` picker. We feed the picker the\n\t\t * latest displayable value (pending or committed) so dragging the\n\t\t * picker stays smooth even while the upstream emit is debounced.\n\t\t */\n\t\tchromePickerValue() {\n\t\t\tconst v = this.pendingColor || this.stringValue\n\t\t\tif (v) {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\treturn { hex: this.hexColorValue, a: 1 }\n\t\t},\n\n\t\t/**\n\t\t * Inline style for the color swatch: layers a solid color over the checker\n\t\t * background-image so alpha colors render against the checker pattern.\n\t\t */\n\t\tcolorSwatchStyle() {\n\t\t\tconst c = this.colorPreviewValue\n\t\t\tif (!c) {\n\t\t\t\treturn {}\n\t\t\t}\n\t\t\tconst fill = `linear-gradient(${c}, ${c})`\n\t\t\treturn {\n\t\t\t\tbackgroundImage: `${fill}, var(--cn-color-swatch-checker)`,\n\t\t\t\tbackgroundSize: '100% 100%, 8px 8px',\n\t\t\t\tbackgroundPosition: '0 0, 0 0',\n\t\t\t}\n\t\t},\n\n\t\t/** Hex string used as the value of the native `<input type=\"color\">`. */\n\t\thexColorValue() {\n\t\t\tconst v = this.stringValue\n\t\t\tif (!v) {\n\t\t\t\treturn '#000000'\n\t\t\t}\n\t\t\tconst trimmed = v.trim()\n\t\t\tconst hexMatch = trimmed.match(/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i)\n\t\t\tif (hexMatch) {\n\t\t\t\tconst h = hexMatch[1]\n\t\t\t\tif (h.length === 3 || h.length === 4) {\n\t\t\t\t\treturn '#' + h.slice(0, 3).split('').map((c) => c + c).join('')\n\t\t\t\t}\n\t\t\t\treturn '#' + h.slice(0, 6)\n\t\t\t}\n\t\t\tconst computed = this.cssColorToHex(trimmed)\n\t\t\treturn computed || '#000000'\n\t\t},\n\n\t\tminimum() {\n\t\t\treturn this.schemaProp?.minimum\n\t\t},\n\n\t\tmaximum() {\n\t\t\treturn this.schemaProp?.maximum\n\t\t},\n\n\t\tstep() {\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (prop?.type === 'integer') {\n\t\t\t\treturn '1'\n\t\t\t}\n\t\t\tif (prop?.type === 'number') {\n\t\t\t\treturn 'any'\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\n\t\tminLengthAttr() {\n\t\t\tconst v = this.schemaProp?.minLength\n\t\t\treturn typeof v === 'number' ? v : undefined\n\t\t},\n\n\t\tmaxLengthAttr() {\n\t\t\tconst v = this.schemaProp?.maxLength\n\t\t\treturn typeof v === 'number' ? v : undefined\n\t\t},\n\n\t\tshowHelpText() {\n\t\t\treturn this.isEditable && (this.resolvedWidget === 'boolean' || this.isEditing)\n\t\t},\n\n\t\thelpDescription() {\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (!prop) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn prop.userDescription || prop.description || ''\n\t\t},\n\n\t\thelpExample() {\n\t\t\tconst ex = this.schemaProp?.example\n\t\t\tif (ex === undefined || ex === null || ex === '') {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tif (typeof ex === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.stringify(ex)\n\t\t\t\t} catch {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn String(ex)\n\t\t},\n\n\t\t/**\n\t\t * Inline validation message for the current value, or null when valid.\n\t\t * Required-ness is owned by the parent form so it isn't surfaced here.\n\t\t */\n\t\tfieldError() {\n\t\t\tconst raw = validateValue(this.value, this.schemaProp || {})\n\t\t\treturn raw ? t('nextcloud-vue', raw) : null\n\t\t},\n\n\t\t/** Resolved option list for the `select` widget (explicit prop, schema enum, or items.enum). */\n\t\teffectiveSelectOptions() {\n\t\t\tif (this.selectOptions) {\n\t\t\t\treturn this.selectOptions\n\t\t\t}\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (!prop) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\tif (Array.isArray(prop.enum) && prop.enum.length > 0) {\n\t\t\t\treturn prop.enum\n\t\t\t}\n\t\t\tif (prop.type === 'array' && Array.isArray(prop.items?.enum) && prop.items.enum.length > 0) {\n\t\t\t\treturn prop.items.enum\n\t\t\t}\n\t\t\treturn []\n\t\t},\n\n\t\t/** Whether the `select` widget allows multiple values. */\n\t\teffectiveSelectMultiple() {\n\t\t\tif (this.widget === 'select') {\n\t\t\t\treturn this.selectMultiple\n\t\t\t}\n\t\t\tif (this.widget === 'array') {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (prop?.type === 'array') {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\t/** Whether the `select` widget accepts free-form tags (no fixed enum). */\n\t\teffectiveSelectTaggable() {\n\t\t\tif (this.widget === 'select') {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tconst prop = this.schemaProp\n\t\t\tconst isArray = this.widget === 'array' || prop?.type === 'array'\n\t\t\treturn isArray && this.effectiveSelectOptions.length === 0\n\t\t},\n\n\t\t/** Selected-value object(s) for NcSelect, mapping ids back to option objects when needed. */\n\t\teffectiveSelectValue() {\n\t\t\tconst v = this.value\n\t\t\tconst opts = this.effectiveSelectOptions\n\t\t\tconst lookup = (id) => {\n\t\t\t\tconst match = opts.find((o) => (typeof o === 'object' ? o.id : o) === id)\n\t\t\t\treturn match !== undefined ? match : id\n\t\t\t}\n\t\t\tif (this.effectiveSelectMultiple) {\n\t\t\t\tif (!Array.isArray(v)) {\n\t\t\t\t\treturn []\n\t\t\t\t}\n\t\t\t\treturn v.map(lookup)\n\t\t\t}\n\t\t\tif (v === null || v === undefined || v === '') {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn lookup(v)\n\t\t},\n\n\t\t/** Items array for the `objectArray` widget. Always an array. */\n\t\tobjectArrayItems() {\n\t\t\treturn Array.isArray(this.value) ? this.value : []\n\t\t},\n\n\t\t/** Title shown in the sub-dialog when adding/editing an object item. */\n\t\tobjectArrayDialogTitle() {\n\t\t\tconst itemTitle = this.schemaProp?.items?.title || this.displayName || t('nextcloud-vue', 'Item')\n\t\t\treturn this.objectArrayDialogIndex === null\n\t\t\t\t? t('nextcloud-vue', 'Add {title}', { title: itemTitle })\n\t\t\t\t: t('nextcloud-vue', 'Edit {title}', { title: itemTitle })\n\t\t},\n\n\t\t/**\n\t\t * NcDateTimePicker `type` mapped from the schema's string `format`.\n\t\t * Falls back to `datetime` for unknown date-ish formats.\n\t\t */\n\t\tdatetimePickerType() {\n\t\t\tconst fmt = this.schemaProp?.format\n\t\t\tif (fmt === 'date') {\n\t\t\t\treturn 'date'\n\t\t\t}\n\t\t\tif (fmt === 'time') {\n\t\t\t\treturn 'time'\n\t\t\t}\n\t\t\treturn 'datetime'\n\t\t},\n\n\t\t/** Current value as a `Date` instance for NcDateTimePicker, or null. */\n\t\tdatetimeValue() {\n\t\t\tconst v = this.value\n\t\t\tif (!v) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\t// Date-only strings (YYYY-MM-DD) are parsed as UTC midnight by the spec,\n\t\t\t// which shifts to the previous day in positive-UTC-offset timezones when\n\t\t\t// fed to a picker that renders in local time. Parse them as local midnight.\n\t\t\tif (this.schemaProp?.format === 'date'\n\t\t\t\t&& typeof v === 'string'\n\t\t\t\t&& /^\\d{4}-\\d{2}-\\d{2}$/.test(v)) {\n\t\t\t\tconst [year, month, day] = v.split('-').map(Number)\n\t\t\t\treturn new Date(year, month - 1, day)\n\t\t\t}\n\t\t\tconst d = new Date(v)\n\t\t\treturn Number.isNaN(d.getTime()) ? null : d\n\t\t},\n\n\t\tstringValue() {\n\t\t\tconst v = this.value\n\t\t\tif (v === null || v === undefined) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tif (typeof v === 'string') {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\tif (typeof v === 'object') {\n\t\t\t\treturn JSON.stringify(v)\n\t\t\t}\n\t\t\treturn String(v)\n\t\t},\n\n\t\tobjectJsonString() {\n\t\t\tconst v = this.value\n\t\t\tif (v === null || v === undefined) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tif (typeof v === 'string') {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\ttry {\n\t\t\t\treturn JSON.stringify(v, null, 2)\n\t\t\t} catch {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\n\t\tformattedObjectValue() {\n\t\t\ttry {\n\t\t\t\treturn JSON.stringify(this.value, null, 2)\n\t\t\t} catch {\n\t\t\t\treturn formatValue(this.value, this.schemaProp || {})\n\t\t\t}\n\t\t},\n\n\t\tdisplayValue() {\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (prop?.const !== undefined) {\n\t\t\t\treturn prop.const\n\t\t\t}\n\t\t\tconst v = this.value\n\t\t\tif (v === null || v === undefined || v === '') {\n\t\t\t\treturn '—'\n\t\t\t}\n\t\t\treturn formatValue(v, prop || {})\n\t\t},\n\n\t\tformattedDateValue() {\n\t\t\tconst v = this.value\n\t\t\tif (!v) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tconst fmt = this.schemaProp?.format\n\t\t\t// Same local-midnight parse as datetimeValue to avoid UTC-shift in display.\n\t\t\tif (fmt === 'date' && typeof v === 'string' && /^\\d{4}-\\d{2}-\\d{2}$/.test(v)) {\n\t\t\t\tconst [year, month, day] = v.split('-').map(Number)\n\t\t\t\treturn new Date(year, month - 1, day).toLocaleDateString()\n\t\t\t}\n\t\t\tconst d = new Date(v)\n\t\t\tif (Number.isNaN(d.getTime())) {\n\t\t\t\treturn String(v)\n\t\t\t}\n\t\t\tif (fmt === 'date') {\n\t\t\t\treturn d.toLocaleDateString()\n\t\t\t}\n\t\t\tif (fmt === 'time') {\n\t\t\t\treturn d.toLocaleTimeString()\n\t\t\t}\n\t\t\treturn d.toLocaleString()\n\t\t},\n\t},\n\n\tbeforeUnmount() {\n\t\tif (this.pendingColorTimer) {\n\t\t\tclearTimeout(this.pendingColorTimer)\n\t\t\tthis.pendingColorTimer = null\n\t\t}\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\t/** Focus the underlying text input (called by parent after row click) */\n\t\tfocus() {\n\t\t\tconst ref = this.$refs.inputRef\n\t\t\tif (!ref) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst el = ref.$el || ref\n\t\t\tconst input = el?.querySelector?.('input,textarea')\n\t\t\tif (input) {\n\t\t\t\tinput.focus()\n\t\t\t\tif (typeof input.select === 'function') {\n\t\t\t\t\tinput.select()\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\temit(newVal) {\n\t\t\tthis.$emit('update:value', newVal)\n\t\t},\n\n\t\temitConverted(newVal) {\n\t\t\tconst prop = this.schemaProp\n\t\t\tlet converted = newVal\n\t\t\tif (prop) {\n\t\t\t\tswitch (prop.type) {\n\t\t\t\t\tcase 'number':\n\t\t\t\t\t\tconverted = newVal === '' ? null : parseFloat(newVal)\n\t\t\t\t\t\tif (Number.isNaN(converted)) {\n\t\t\t\t\t\t\tconverted = null\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'integer':\n\t\t\t\t\t\tconverted = newVal === '' ? null : parseInt(newVal, 10)\n\t\t\t\t\t\tif (Number.isNaN(converted)) {\n\t\t\t\t\t\t\tconverted = null\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'boolean':\n\t\t\t\t\t\tconverted = Boolean(newVal)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconverted = newVal\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.$emit('update:value', converted)\n\t\t},\n\n\t\t/**\n\t\t * Emit a `Date` from NcDateTimePicker as the schema-appropriate string:\n\t\t * `date` → `YYYY-MM-DD`, `time` → `HH:MM:SS`, `date-time` → ISO 8601.\n\t\t *\n\t\t * @param {Date|null} date - Date emitted by the picker.\n\t\t */\n\t\temitDatetime(date) {\n\t\t\tif (!date) {\n\t\t\t\tthis.$emit('update:value', null)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst fmt = this.schemaProp?.format\n\t\t\tif (fmt === 'date') {\n\t\t\t\t// Use local-time accessors — toISOString() converts to UTC first,\n\t\t\t\t// which shifts midnight local time to the previous day in UTC+n zones.\n\t\t\t\tconst year = date.getFullYear()\n\t\t\t\tconst month = String(date.getMonth() + 1).padStart(2, '0')\n\t\t\t\tconst day = String(date.getDate()).padStart(2, '0')\n\t\t\t\tthis.$emit('update:value', `${year}-${month}-${day}`)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (fmt === 'time') {\n\t\t\t\tthis.$emit('update:value', date.toTimeString().slice(0, 8))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$emit('update:value', date.toISOString())\n\t\t},\n\n\t\temitObject(jsonString) {\n\t\t\tif (typeof jsonString !== 'string') {\n\t\t\t\tthis.$emit('update:value', jsonString)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst trimmed = jsonString.trim()\n\t\t\tif (trimmed === '') {\n\t\t\t\tthis.$emit('update:value', null)\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tthis.$emit('update:value', JSON.parse(trimmed))\n\t\t\t} catch {\n\t\t\t\t// Invalid JSON: keep the raw string so the user sees what they typed.\n\t\t\t\t// CnJsonViewer surfaces a parse error inline; the parent's save path\n\t\t\t\t// can refuse non-object values if it requires structured data.\n\t\t\t\tthis.$emit('update:value', jsonString)\n\t\t\t}\n\t\t},\n\n\t\temitSelect(selected) {\n\t\t\tconst toId = (item) => (item && typeof item === 'object' ? item.id : item)\n\t\t\tif (this.effectiveSelectMultiple) {\n\t\t\t\tconst arr = Array.isArray(selected) ? selected : []\n\t\t\t\tconst itemType = this.schemaProp?.items?.type\n\t\t\t\t// Coerce taggable input (always emitted as strings) to the\n\t\t\t\t// declared `items.type`. Drop entries that fail to coerce.\n\t\t\t\tconst coerced = arr\n\t\t\t\t\t.map(toId)\n\t\t\t\t\t.map((v) => this.coerceItem(v, itemType))\n\t\t\t\t\t.filter((v) => v !== undefined)\n\t\t\t\tthis.$emit('update:value', coerced)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$emit('update:value', selected === null || selected === undefined ? null : toId(selected))\n\t\t},\n\n\t\t/**\n\t\t * Coerce a raw select-emitted value (typically a string from a\n\t\t * taggable NcSelect) into the array's declared `items.type`. Returns\n\t\t * `undefined` for entries that can't be coerced so the caller can drop\n\t\t * them from the array.\n\t\t *\n\t\t * @param {unknown} v - The raw value.\n\t\t * @param {string} [itemType] - Schema `items.type` (string, number, integer, boolean).\n\t\t * @return {unknown}\n\t\t */\n\t\tcoerceItem(v, itemType) {\n\t\t\tif (v === null || v === undefined) {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\t// No declared item type — pass through untouched (preserves the\n\t\t\t// shape consumers may have set up via `selectOptions` etc).\n\t\t\tif (!itemType) {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\t// Already the right shape — pass through.\n\t\t\tif (itemType === 'number' && typeof v === 'number') {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\tif (itemType === 'integer' && typeof v === 'number' && Number.isInteger(v)) {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\tif (itemType === 'boolean' && typeof v === 'boolean') {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\tif (itemType === 'string' && typeof v === 'string') {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\tconst s = String(v).trim()\n\t\t\tif (s === '') {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tif (itemType === 'number') {\n\t\t\t\tconst n = Number(s)\n\t\t\t\treturn Number.isFinite(n) ? n : undefined\n\t\t\t}\n\t\t\tif (itemType === 'integer') {\n\t\t\t\tconst n = Number(s)\n\t\t\t\treturn Number.isFinite(n) && Number.isInteger(n) ? n : undefined\n\t\t\t}\n\t\t\tif (itemType === 'boolean') {\n\t\t\t\tif (/^(true|1|yes|on)$/i.test(s)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif (/^(false|0|no|off)$/i.test(s)) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn s\n\t\t},\n\n\t\t/**\n\t\t * Open the sub-dialog to add a new object item or edit an existing\n\t\t * one. `idx === null` means add.\n\t\t *\n\t\t * @param {number|null} idx - Index of the item to edit, or `null`.\n\t\t */\n\t\topenObjectArrayItem(idx) {\n\t\t\tthis.objectArrayDialogIndex = idx\n\t\t\tthis.objectArrayDialogItem = idx === null\n\t\t\t\t? null\n\t\t\t\t: JSON.parse(JSON.stringify(this.objectArrayItems[idx] || {}))\n\t\t\tthis.objectArrayDialogOpen = true\n\t\t},\n\n\t\tcloseObjectArrayDialog() {\n\t\t\tthis.objectArrayDialogOpen = false\n\t\t\tthis.objectArrayDialogIndex = null\n\t\t\tthis.objectArrayDialogItem = null\n\t\t},\n\n\t\t/**\n\t\t * Confirmed object from the sub-dialog. Replace the existing item or\n\t\t * append a new one, then emit the updated array.\n\t\t *\n\t\t * @param {object} formData - Form data emitted by CnAdvancedFormDialog.\n\t\t */\n\t\tonObjectArrayConfirm(formData) {\n\t\t\tconst next = [...this.objectArrayItems]\n\t\t\tif (this.objectArrayDialogIndex === null) {\n\t\t\t\tnext.push(formData)\n\t\t\t} else {\n\t\t\t\tnext.splice(this.objectArrayDialogIndex, 1, formData)\n\t\t\t}\n\t\t\tthis.$emit('update:value', next)\n\t\t\tthis.closeObjectArrayDialog()\n\t\t},\n\n\t\t/**\n\t\t * Remove an item from the object array.\n\t\t *\n\t\t * @param {number} idx - Index of the item to remove.\n\t\t */\n\t\tremoveObjectArrayItem(idx) {\n\t\t\tconst next = [...this.objectArrayItems]\n\t\t\tnext.splice(idx, 1)\n\t\t\tthis.$emit('update:value', next)\n\t\t},\n\n\t\t/**\n\t\t * Pick a human-readable label for an item chip. Tries the schema-\n\t\t * declared name field first, then the first non-empty primitive\n\t\t * property, then falls back to \"Item N\".\n\t\t *\n\t\t * @param {object} item - The array item.\n\t\t * @param {number} idx - Index of the item (used for fallback label).\n\t\t * @return {string}\n\t\t */\n\t\tobjectArrayItemLabel(item, idx) {\n\t\t\tconst items = this.schemaProp?.items\n\t\t\tconst nameField = items?.objectConfiguration?.objectNameField\n\t\t\t\t|| items?.configuration?.objectNameField\n\t\t\tif (nameField && item && item[nameField] !== null && item[nameField] !== undefined && item[nameField] !== '') {\n\t\t\t\treturn String(item[nameField])\n\t\t\t}\n\t\t\tif (item && typeof item === 'object') {\n\t\t\t\tfor (const v of Object.values(item)) {\n\t\t\t\t\tif (v === null || v === undefined || v === '') {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean') {\n\t\t\t\t\t\treturn String(v)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn t('nextcloud-vue', 'Item {n}', { n: idx + 1 })\n\t\t},\n\n\t\tisValidDate(v) {\n\t\t\tif (!v) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tconst d = new Date(v)\n\t\t\treturn d instanceof Date && !Number.isNaN(d.getTime())\n\t\t},\n\n\t\t/**\n\t\t * Convert any CSS-recognized color string to a 6-digit hex string by\n\t\t * round-tripping through a detached DOM node. Returns null when the\n\t\t * browser cannot parse the input.\n\t\t *\n\t\t * @param {string} cssValue - The CSS color value to convert.\n\t\t * @return {string|null}\n\t\t */\n\t\tcssColorToHex(cssValue) {\n\t\t\ttry {\n\t\t\t\tconst el = document.createElement('div')\n\t\t\t\tel.style.color = ''\n\t\t\t\tel.style.color = cssValue\n\t\t\t\tif (!el.style.color) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t\tdocument.body.appendChild(el)\n\t\t\t\tconst rgb = getComputedStyle(el).color\n\t\t\t\tdocument.body.removeChild(el)\n\t\t\t\tconst m = rgb.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/)\n\t\t\t\tif (!m) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t\tconst toHex = (n) => parseInt(n, 10).toString(16).padStart(2, '0')\n\t\t\t\treturn `#${toHex(m[1])}${toHex(m[2])}${toHex(m[3])}`\n\t\t\t} catch {\n\t\t\t\treturn null\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Continuous handler for vue-color's `Chrome` picker. Updates the\n\t\t * swatch + text input synchronously via `pendingColor`, but debounces\n\t\t * the upstream `update:value` emit so validation and parent re-renders\n\t\t * don't fire on every drag tick.\n\t\t *\n\t\t * @param {object} color - vue-color emitted color object.\n\t\t * @param {string} color.hex - `#rrggbb`.\n\t\t * @param {string} [color.hex8] - `#rrggbbaa`, when alpha is enabled.\n\t\t * @param {object} color.rgba - RGBA components (`r`, `g`, `b`, `a`).\n\t\t * @param {object} color.hsl - HSL components (`h`, `s`, `l`, `a`).\n\t\t * @param {number} [color.a] - Alpha 0–1.\n\t\t */\n\t\tonChromeColorInput(color) {\n\t\t\tthis.pendingColor = this.chromeColorToFormatValue(color)\n\t\t\tif (this.pendingColorTimer) {\n\t\t\t\tclearTimeout(this.pendingColorTimer)\n\t\t\t}\n\t\t\tthis.pendingColorTimer = setTimeout(() => this.flushPendingColor(), 120)\n\t\t},\n\n\t\t/**\n\t\t * Translate vue-color's emitted color object into the schema-declared\n\t\t * color format string.\n\t\t *\n\t\t * @param {object} color - vue-color color object.\n\t\t * @return {string}\n\t\t */\n\t\tchromeColorToFormatValue(color) {\n\t\t\tconst fmt = this.schemaProp?.format || 'color-hex'\n\t\t\tconst { rgba, hex, hex8 } = color || {}\n\t\t\tconst r = rgba?.r ?? 0\n\t\t\tconst g = rgba?.g ?? 0\n\t\t\tconst b = rgba?.b ?? 0\n\t\t\tconst a = rgba?.a ?? color?.a ?? 1\n\t\t\tif (fmt === 'color-hex' || fmt === 'color') {\n\t\t\t\treturn (hex || '#000000').toLowerCase()\n\t\t\t}\n\t\t\tif (fmt === 'color-hex-alpha') {\n\t\t\t\tif (hex8) {\n\t\t\t\t\treturn hex8.toLowerCase()\n\t\t\t\t}\n\t\t\t\tconst aHex = Math.round(a * 255).toString(16).padStart(2, '0')\n\t\t\t\treturn ((hex || '#000000') + aHex).toLowerCase()\n\t\t\t}\n\t\t\tif (fmt === 'color-rgb') {\n\t\t\t\treturn `rgb(${r}, ${g}, ${b})`\n\t\t\t}\n\t\t\tif (fmt === 'color-rgba') {\n\t\t\t\treturn `rgba(${r}, ${g}, ${b}, ${this.formatAlpha(a)})`\n\t\t\t}\n\t\t\tif (fmt === 'color-hsl' || fmt === 'color-hsla') {\n\t\t\t\tconst { h, s, l } = this.rgbToHsl(r, g, b)\n\t\t\t\tif (fmt === 'color-hsla') {\n\t\t\t\t\treturn `hsla(${h}, ${s}%, ${l}%, ${this.formatAlpha(a)})`\n\t\t\t\t}\n\t\t\t\treturn `hsl(${h}, ${s}%, ${l}%)`\n\t\t\t}\n\t\t\treturn hex || '#000000'\n\t\t},\n\n\t\t/** Emit the pending color upstream and clear local state. */\n\t\tflushPendingColor() {\n\t\t\tif (this.pendingColorTimer) {\n\t\t\t\tclearTimeout(this.pendingColorTimer)\n\t\t\t\tthis.pendingColorTimer = null\n\t\t\t}\n\t\t\tif (this.pendingColor === null) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst out = this.pendingColor\n\t\t\tthis.pendingColor = null\n\t\t\tthis.$emit('update:value', out)\n\t\t},\n\n\t\t/**\n\t\t * Manual text-field edit for a color value. Cancels any in-flight\n\t\t * picker debounce so the typed value isn't immediately overwritten.\n\t\t *\n\t\t * @param {string} v - The new text value.\n\t\t */\n\t\tonColorTextInput(v) {\n\t\t\tif (this.pendingColorTimer) {\n\t\t\t\tclearTimeout(this.pendingColorTimer)\n\t\t\t\tthis.pendingColorTimer = null\n\t\t\t}\n\t\t\tthis.pendingColor = null\n\t\t\tthis.$emit('update:value', v)\n\t\t},\n\n\t\t/**\n\t\t * Format an alpha 0–1 for CSS output (max 2 decimals, drops trailing zeros).\n\t\t *\n\t\t * @param {number} a - Alpha in 0–1 range.\n\t\t * @return {string}\n\t\t */\n\t\tformatAlpha(a) {\n\t\t\treturn Number.isInteger(a) ? String(a) : a.toFixed(2).replace(/\\.?0+$/, '') || '0'\n\t\t},\n\n\t\trgbToHsl(r, g, b) {\n\t\t\tconst rN = r / 255\n\t\t\tconst gN = g / 255\n\t\t\tconst bN = b / 255\n\t\t\tconst max = Math.max(rN, gN, bN)\n\t\t\tconst min = Math.min(rN, gN, bN)\n\t\t\tconst l = (max + min) / 2\n\t\t\tlet h = 0\n\t\t\tlet s = 0\n\t\t\tif (max !== min) {\n\t\t\t\tconst d = max - min\n\t\t\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n\t\t\t\tswitch (max) {\n\t\t\t\t\tcase rN:\n\t\t\t\t\t\th = (gN - bN) / d + (gN < bN ? 6 : 0)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase gN:\n\t\t\t\t\t\th = (bN - rN) / d + 2\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase bN:\n\t\t\t\t\t\th = (rN - gN) / d + 4\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\th /= 6\n\t\t\t}\n\t\t\treturn {\n\t\t\t\th: Math.round(h * 360),\n\t\t\t\ts: Math.round(s * 100),\n\t\t\t\tl: Math.round(l * 100),\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n.cn-advanced-form-dialog__value-input-container {\n\twidth: 100%;\n\tmin-width: 0;\n}\n\n.cn-advanced-form-dialog__value-input-container :deep(.text-field) {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.cn-advanced-form-dialog__boolean-input-row {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n}\n\n.cn-advanced-form-dialog__array-input-row {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n}\n\n.cn-advanced-form-dialog__array-input-row > :first-child {\n\tflex: 1;\n}\n\n/* patch extreme size in field */\n.cn-advanced-form-dialog__boolean-input-row__input > span {\n\tpadding-left: 0;\n\tpadding-block: 0;\n}\n\n.cn-advanced-form-dialog__boolean-input-row__input > input {\n\tmargin: 0;\n}\n\n.cn-advanced-form-dialog__info-icon {\n\tflex-shrink: 0;\n\tcolor: var(--color-text-maxcontrast);\n\tcursor: help;\n}\n\n.cn-advanced-form-dialog__json-value {\n\tmax-height: 200px;\n\toverflow-y: auto;\n\twhite-space: pre-wrap;\n\tfont-family: monospace;\n\tfont-size: 12px;\n\tbackground: var(--color-background-dark);\n\tpadding: 8px;\n\tborder-radius: 4px;\n\tmargin: 0;\n}\n\n/* Textarea: keep it inside the table cell instead of overflowing.\n NcTextArea's wrapper has a fixed height (`calc(var(--default-clickable-area) * 2)`)\n that ignores the `rows` attribute, which causes the textarea to render with a\n too-small viewport. Let the wrapper grow with its content instead. */\n.cn-advanced-form-dialog__textarea {\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n.cn-advanced-form-dialog__textarea :deep(.textarea__main-wrapper) {\n\theight: auto;\n\tmin-height: var(--default-clickable-area);\n}\n\n.cn-advanced-form-dialog__textarea :deep(textarea) {\n\twidth: 100%;\n\tmax-width: 100%;\n\tbox-sizing: border-box;\n\tresize: vertical;\n\tmin-height: 80px;\n\tmax-height: 240px;\n\tdisplay: block;\n}\n\n/* Color widget: clickable swatch (native picker) + visible text input */\n.cn-advanced-form-dialog__color-input-row {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\twidth: 100%;\n}\n\n.cn-advanced-form-dialog__color-input-row > :last-child {\n\tflex: 1;\n\tmin-width: 0;\n}\n\n.cn-advanced-form-dialog__color-swatch {\n\t--cn-color-swatch-checker:\n\t\tlinear-gradient(45deg, var(--color-background-dark) 25%, transparent 25%),\n\t\tlinear-gradient(-45deg, var(--color-background-dark) 25%, transparent 25%),\n\t\tlinear-gradient(45deg, transparent 75%, var(--color-background-dark) 75%),\n\t\tlinear-gradient(-45deg, transparent 75%, var(--color-background-dark) 75%);\n\tdisplay: inline-block;\n\twidth: 32px;\n\theight: 32px;\n\tflex-shrink: 0;\n\tpadding: 0;\n\tborder: 1px solid var(--color-border);\n\tborder-radius: var(--border-radius);\n\tcursor: pointer;\n\tbackground-image: var(--cn-color-swatch-checker);\n\tbackground-size: 8px 8px;\n\tbackground-position: 0 0, 0 4px, 4px -4px, -4px 0;\n\toverflow: hidden;\n\tposition: relative;\n}\n\n.cn-advanced-form-dialog__color-swatch:focus-visible {\n\toutline: 2px solid var(--color-primary-element);\n\toutline-offset: 2px;\n}\n\n.cn-advanced-form-dialog__color-swatch--readonly {\n\tcursor: default;\n\twidth: 20px;\n\theight: 20px;\n\tvertical-align: middle;\n\tmargin-inline-end: 6px;\n}\n\n.cn-advanced-form-dialog__color-display {\n\tdisplay: inline-flex;\n\talign-items: center;\n}\n\n/* Help text & inline validation under the input */\n.cn-advanced-form-dialog__field-help {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px;\n\tmargin-top: 4px;\n\tfont-size: 0.85em;\n\tcolor: var(--color-text-maxcontrast);\n}\n\n.cn-advanced-form-dialog__field-example {\n\tfont-style: italic;\n}\n\n.cn-advanced-form-dialog__field-error {\n\tmargin-top: 4px;\n\tfont-size: 0.85em;\n\tcolor: var(--color-error-text);\n}\n\n.cn-advanced-form-dialog__value-cell-wrapper {\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n}\n\n/* Object-array widget: chip list + add button */\n.cn-advanced-form-dialog__object-array {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n\twidth: 100%;\n}\n\n.cn-advanced-form-dialog__object-array-chips {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 6px;\n}\n\n.cn-advanced-form-dialog__object-array-chip {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 4px;\n\tpadding: 2px 4px 2px 10px;\n\tbackground: var(--color-background-dark);\n\tborder: 1px solid var(--color-border);\n\tborder-radius: var(--border-radius-pill, 14px);\n\tcolor: var(--color-main-text);\n\tcursor: pointer;\n\tfont: inherit;\n\tmax-width: 240px;\n}\n\n.cn-advanced-form-dialog__object-array-chip:hover {\n\tbackground: var(--color-background-hover);\n}\n\n.cn-advanced-form-dialog__object-array-chip-label {\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.cn-advanced-form-dialog__object-array-chip-remove {\n\tflex-shrink: 0;\n}\n\n.cn-advanced-form-dialog__object-array-add {\n\talign-self: flex-start;\n}\n</style>\n"],"names":["CnJsonViewer","CnColorPicker","t"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CnPropertyValueCell.vue2.js","sources":["../../../../src/components/CnAdvancedFormDialog/CnPropertyValueCell.vue"],"sourcesContent":["<template>\n\t<div class=\"cn-advanced-form-dialog__value-cell-wrapper\">\n\t\t<!-- Edit mode -->\n\t\t<div\n\t\t\tv-if=\"isEditable && (resolvedWidget === 'boolean' || isEditing)\"\n\t\t\tclass=\"cn-advanced-form-dialog__value-input-container\"\n\t\t\t@click.stop>\n\t\t\t<div\n\t\t\t\tv-if=\"resolvedWidget === 'boolean'\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__boolean-input-row\">\n\t\t\t\t<NcCheckboxRadioSwitch\n\t\t\t\t\t:modelValue=\"!!value\"\n\t\t\t\t\ttype=\"switch\"\n\t\t\t\t\tclass=\"cn-advanced-form-dialog__boolean-input-row__input\"\n\t\t\t\t\t@update:modelValue=\"emit($event)\">\n\t\t\t\t\t{{ displayName }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<InformationOutline\n\t\t\t\t\tv-if=\"schemaProp && schemaProp.description\"\n\t\t\t\t\t:title=\"schemaProp.description\"\n\t\t\t\t\tclass=\"cn-advanced-form-dialog__info-icon\"\n\t\t\t\t\t:size=\"16\" />\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tv-else-if=\"resolvedWidget === 'color'\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__color-input-row\">\n\t\t\t\t<CnColorPicker\n\t\t\t\t\t:value=\"chromePickerValue\"\n\t\t\t\t\t:disableAlpha=\"!hasAlpha\"\n\t\t\t\t\t:mode=\"colorPickerMode\"\n\t\t\t\t\t@input=\"onChromeColorInput\" />\n\t\t\t\t<NcTextField\n\t\t\t\t\tref=\"inputRef\"\n\t\t\t\t\t:modelValue=\"colorTextValue\"\n\t\t\t\t\t:placeholder=\"colorPlaceholder\"\n\t\t\t\t\t@update:modelValue=\"onColorTextInput($event)\" />\n\t\t\t</div>\n\t\t\t<NcDateTimePicker\n\t\t\t\tv-else-if=\"resolvedWidget === 'datetime'\"\n\t\t\t\t:modelValue=\"datetimeValue\"\n\t\t\t\t:type=\"datetimePickerType\"\n\t\t\t\t:placeholder=\"displayName\"\n\t\t\t\t:inputLabel=\"displayName\"\n\t\t\t\t@update:modelValue=\"emitDatetime($event)\" />\n\t\t\t<NcTextArea\n\t\t\t\tv-else-if=\"resolvedWidget === 'textarea'\"\n\t\t\t\tref=\"inputRef\"\n\t\t\t\t:modelValue=\"stringValue\"\n\t\t\t\t:placeholder=\"displayName\"\n\t\t\t\t:rows=\"textareaRows\"\n\t\t\t\t:maxlength=\"maxLengthAttr\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__textarea\"\n\t\t\t\t@update:modelValue=\"emit($event)\" />\n\t\t\t<NcSelect\n\t\t\t\tv-else-if=\"resolvedWidget === 'select'\"\n\t\t\t\t:modelValue=\"effectiveSelectValue\"\n\t\t\t\t:options=\"effectiveSelectOptions\"\n\t\t\t\t:multiple=\"effectiveSelectMultiple\"\n\t\t\t\t:taggable=\"effectiveSelectTaggable\"\n\t\t\t\t:pushTags=\"effectiveSelectTaggable\"\n\t\t\t\t:keepOpen=\"effectiveSelectMultiple\"\n\t\t\t\t:inputLabel=\"displayName\"\n\t\t\t\t:placeholder=\"displayName\"\n\t\t\t\t@update:modelValue=\"emitSelect($event)\" />\n\t\t\t<CnJsonViewer\n\t\t\t\tv-else-if=\"resolvedWidget === 'object'\"\n\t\t\t\t:value=\"objectJsonString\"\n\t\t\t\t:height=\"objectEditorHeight\"\n\t\t\t\tlanguage=\"json\"\n\t\t\t\t@update:value=\"emitObject($event)\" />\n\t\t\t<div\n\t\t\t\tv-else-if=\"resolvedWidget === 'objectArray'\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__object-array\">\n\t\t\t\t<div class=\"cn-advanced-form-dialog__object-array-chips\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tv-for=\"(item, idx) in objectArrayItems\"\n\t\t\t\t\t\t:key=\"idx\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclass=\"cn-advanced-form-dialog__object-array-chip\"\n\t\t\t\t\t\t:title=\"t('nextcloud-vue', 'Edit item')\"\n\t\t\t\t\t\t@click.stop=\"openObjectArrayItem(idx)\">\n\t\t\t\t\t\t<span class=\"cn-advanced-form-dialog__object-array-chip-label\">{{ objectArrayItemLabel(item, idx) }}</span>\n\t\t\t\t\t\t<NcButton\n\t\t\t\t\t\t\tvariant=\"tertiary-no-background\"\n\t\t\t\t\t\t\t:aria-label=\"t('nextcloud-vue', 'Remove item')\"\n\t\t\t\t\t\t\t:title=\"t('nextcloud-vue', 'Remove item')\"\n\t\t\t\t\t\t\tclass=\"cn-advanced-form-dialog__object-array-chip-remove\"\n\t\t\t\t\t\t\t@click.stop=\"removeObjectArrayItem(idx)\">\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<Close :size=\"14\" />\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<NcButton\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tclass=\"cn-advanced-form-dialog__object-array-add\"\n\t\t\t\t\t@click.stop=\"openObjectArrayItem(null)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Plus :size=\"16\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('nextcloud-vue', 'Add item') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<CnAdvancedFormDialog\n\t\t\t\t\tv-if=\"objectArrayDialogOpen\"\n\t\t\t\t\t:schema=\"schemaProp.items\"\n\t\t\t\t\t:item=\"objectArrayDialogItem\"\n\t\t\t\t\t:dialogTitle=\"objectArrayDialogTitle\"\n\t\t\t\t\t:show-metadata-tab=\"false\"\n\t\t\t\t\t@confirm=\"onObjectArrayConfirm\"\n\t\t\t\t\t@close=\"closeObjectArrayDialog\" />\n\t\t\t</div>\n\t\t\t<NcTextField\n\t\t\t\tv-else\n\t\t\t\tref=\"inputRef\"\n\t\t\t\t:modelValue=\"stringValue\"\n\t\t\t\t:type=\"inputType\"\n\t\t\t\t:placeholder=\"displayName\"\n\t\t\t\t:min=\"minimum\"\n\t\t\t\t:max=\"maximum\"\n\t\t\t\t:step=\"step\"\n\t\t\t\t:pattern=\"pattern\"\n\t\t\t\t:minlength=\"minLengthAttr\"\n\t\t\t\t:maxlength=\"maxLengthAttr\"\n\t\t\t\t@update:modelValue=\"emitConverted($event)\" />\n\t\t</div>\n\n\t\t<!-- Display mode -->\n\t\t<div\n\t\t\tv-else\n\t\t\t:title=\"editabilityWarning\">\n\t\t\t<pre\n\t\t\t\tv-if=\"typeof value === 'object' && value !== null\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__json-value\">{{ formattedObjectValue }}</pre>\n\t\t\t<span\n\t\t\t\tv-else-if=\"resolvedWidget === 'datetime' && isValidDate(value)\">{{\n\t\t\t\tformattedDateValue\n\t\t\t}}</span>\n\t\t\t<span\n\t\t\t\tv-else-if=\"resolvedWidget === 'color' && value\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__color-display\">\n\t\t\t\t<span\n\t\t\t\t\tclass=\"cn-advanced-form-dialog__color-swatch cn-advanced-form-dialog__color-swatch--readonly\"\n\t\t\t\t\t:style=\"colorSwatchStyle\" />\n\t\t\t\t<span>{{ displayValue }}</span>\n\t\t\t</span>\n\t\t\t<span v-else>{{ displayValue }}</span>\n\t\t</div>\n\n\t\t<!-- Help text: description + example -->\n\t\t<div\n\t\t\tv-if=\"showHelpText && (helpDescription || helpExample)\"\n\t\t\tclass=\"cn-advanced-form-dialog__field-help\">\n\t\t\t<span\n\t\t\t\tv-if=\"helpDescription\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__field-description\">{{ helpDescription }}</span>\n\t\t\t<span\n\t\t\t\tv-if=\"helpExample\"\n\t\t\t\tclass=\"cn-advanced-form-dialog__field-example\">{{ t('nextcloud-vue', 'e.g.') }} {{ helpExample }}</span>\n\t\t</div>\n\n\t\t<!-- Inline validation error -->\n\t\t<div\n\t\t\tv-if=\"showHelpText && fieldError\"\n\t\t\tclass=\"cn-advanced-form-dialog__field-error\"\n\t\t\trole=\"alert\">\n\t\t\t{{ fieldError }}\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { translate as t } from '@nextcloud/l10n'\nimport {\n\tNcButton,\n\tNcCheckboxRadioSwitch,\n\tNcDateTimePicker,\n\tNcSelect,\n\tNcTextArea,\n\tNcTextField,\n} from '@nextcloud/vue'\nimport { defineAsyncComponent } from 'vue'\nimport Close from 'vue-material-design-icons/Close.vue'\nimport InformationOutline from 'vue-material-design-icons/InformationOutline.vue'\nimport Plus from 'vue-material-design-icons/Plus.vue'\nimport CnColorPicker from '../CnColorPicker/CnColorPicker.vue'\nimport CnJsonViewer from '../CnJsonViewer/CnJsonViewer.vue'\nimport { formatValue, validateValue } from '../../utils/schema.js'\nimport { userLocale } from '../../utils/userLocale.js'\n\nconst SUPPORTED_WIDGETS = ['text', 'number', 'boolean', 'datetime', 'textarea', 'array', 'select', 'object', 'objectArray', 'color']\n\n/** String formats that map to HTML5 `<input type=\"url\">`. */\nconst URL_FORMATS = new Set([\n\t'url',\n\t'uri',\n\t'uri-reference',\n\t'iri',\n\t'iri-reference',\n\t'uri-template',\n\t'accessUrl',\n\t'shareUrl',\n\t'downloadUrl',\n])\n\n/** All color-related string formats — rendered with the `color` widget (swatch + text input). */\nconst COLOR_FORMATS = new Set([\n\t'color',\n\t'color-hex',\n\t'color-hex-alpha',\n\t'color-rgb',\n\t'color-rgba',\n\t'color-hsl',\n\t'color-hsla',\n])\n\n/** String formats that render as a multi-line textarea instead of a single-line input. */\nconst TEXTAREA_FORMATS = new Set(['html', 'markdown'])\n\nexport default {\n\tname: 'CnPropertyValueCell',\n\n\tcomponents: {\n\t\tNcTextField,\n\t\tNcTextArea,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSelect,\n\t\tNcButton,\n\t\tNcDateTimePicker,\n\t\tInformationOutline,\n\t\tPlus,\n\t\tClose,\n\t\tCnJsonViewer,\n\t\tCnColorPicker,\n\t\t// Lazy-required to break the circular dep with CnAdvancedFormDialog.\n\t\t// defineAsyncComponent is MANDATORY under Vue 3: a bare function in\n\t\t// `components:` is a functional component, so Vue CALLS it on render\n\t\t// and prints the returned Promise as text instead of mounting the\n\t\t// dialog (the same \"[object Promise]\" bug CnActionsMenu shipped).\n\t\t// `.then(m => m.default || m)` unwraps the dynamic-import module namespace\n\t\t// before Vue receives it — with rollup's `inlineDynamicImports: true`\n\t\t// the namespace is frozen, and downstream code attaching bookkeeping\n\t\t// to a frozen object throws.\n\t\tCnAdvancedFormDialog: defineAsyncComponent(() => import('./CnAdvancedFormDialog.vue').then((m) => m.default || m)),\n\t},\n\n\tprops: {\n\t\t/** The schema property key */\n\t\tpropertyKey: { type: String, required: true },\n\t\t/** Full JSON schema object */\n\t\tschema: { type: Object, default: null },\n\t\t/** Resolved current value (formData[key] ?? objectValue) */\n\t\tvalue: { type: [Boolean, String, Number, Object, Array], default: null },\n\t\t/** Whether this property is editable at all */\n\t\tisEditable: { type: Boolean, default: true },\n\t\t/** Whether this row is currently selected for editing */\n\t\tisEditing: { type: Boolean, default: false },\n\t\t/** Display name for the property (used in labels/placeholders) */\n\t\tdisplayName: { type: String, default: '' },\n\t\t/** Editability warning message shown as title when not editable */\n\t\teditabilityWarning: { type: String, default: null },\n\t\t/**\n\t\t * Override the auto-detected widget for this cell. When null (default),\n\t\t * the widget is derived from the schema (boolean/datetime/text/number),\n\t\t * with auto-detection for `format: 'text'` (textarea) and `type: 'array'`.\n\t\t * Accepted: 'text', 'number', 'boolean', 'datetime', 'textarea', 'array', 'select'.\n\t\t */\n\t\twidget: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t\tvalidator: (v) => v === null || SUPPORTED_WIDGETS.includes(v),\n\t\t},\n\n\t\t/** Options for the `select` widget. Each option may be a string, or `{ id, label }`. */\n\t\tselectOptions: { type: Array, default: null },\n\t\t/** Whether the `select` widget allows multiple values. */\n\t\tselectMultiple: { type: Boolean, default: true },\n\t\t/** Number of rows for the `textarea` widget. */\n\t\ttextareaRows: { type: Number, default: 4 },\n\t\t/** CSS height for the `object` widget's CodeMirror editor. */\n\t\tobjectEditorHeight: { type: String, default: '300px' },\n\t},\n\n\temits: ['update:value'],\n\n\tdata() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * Optimistic color value while the user is dragging the native picker.\n\t\t\t * Used for the swatch preview to feel instant; the upstream\n\t\t\t * `update:value` emit is debounced so validation/re-renders don't\n\t\t\t * fire on every drag tick.\n\t\t\t */\n\t\t\tpendingColor: null,\n\t\t\tpendingColorTimer: null,\n\t\t\tcolorPickerOpen: false,\n\t\t\t/** State for the object-array sub-dialog. `null` index means \"add new\". */\n\t\t\tobjectArrayDialogOpen: false,\n\t\t\tobjectArrayDialogIndex: null,\n\t\t\tobjectArrayDialogItem: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tschemaProp() {\n\t\t\treturn this.schema?.properties?.[this.propertyKey] || null\n\t\t},\n\n\t\t/**\n\t\t * Resolved widget after applying explicit override + schema auto-detection.\n\t\t * Arrays and string-with-enum become a `select` widget; the array/enum\n\t\t * shape is inferred from the schema by the `effectiveSelect*` computeds.\n\t\t *\n\t\t * @return {string} one of SUPPORTED_WIDGETS\n\t\t */\n\t\tresolvedWidget() {\n\t\t\tif (this.widget === 'array') {\n\t\t\t\treturn 'select'\n\t\t\t}\n\t\t\tif (this.widget) {\n\t\t\t\treturn this.widget\n\t\t\t}\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (!prop) {\n\t\t\t\treturn 'text'\n\t\t\t}\n\t\t\tif (prop.type === 'boolean') {\n\t\t\t\treturn 'boolean'\n\t\t\t}\n\t\t\tif (prop.type === 'array') {\n\t\t\t\tif (prop.items?.type === 'object') {\n\t\t\t\t\treturn 'objectArray'\n\t\t\t\t}\n\t\t\t\treturn 'select'\n\t\t\t}\n\t\t\tif (prop.type === 'object') {\n\t\t\t\treturn 'object'\n\t\t\t}\n\t\t\tif (prop.type === 'string') {\n\t\t\t\tif (Array.isArray(prop.enum) && prop.enum.length > 0) {\n\t\t\t\t\treturn 'select'\n\t\t\t\t}\n\t\t\t\tconst fmt = prop.format || ''\n\t\t\t\tif (['date', 'time', 'date-time'].includes(fmt)) {\n\t\t\t\t\treturn 'datetime'\n\t\t\t\t}\n\t\t\t\tif (TEXTAREA_FORMATS.has(fmt)) {\n\t\t\t\t\treturn 'textarea'\n\t\t\t\t}\n\t\t\t\tif (COLOR_FORMATS.has(fmt)) {\n\t\t\t\t\treturn 'color'\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (prop.type === 'number' || prop.type === 'integer') {\n\t\t\t\treturn 'number'\n\t\t\t}\n\t\t\treturn 'text'\n\t\t},\n\n\t\tinputType() {\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (!prop) {\n\t\t\t\treturn 'text'\n\t\t\t}\n\t\t\tconst fmt = prop.format || ''\n\t\t\tif (prop.type === 'string') {\n\t\t\t\tif (fmt === 'email' || fmt === 'idn-email') {\n\t\t\t\t\treturn 'email'\n\t\t\t\t}\n\t\t\t\tif (URL_FORMATS.has(fmt)) {\n\t\t\t\t\treturn 'url'\n\t\t\t\t}\n\t\t\t\tif (fmt === 'password') {\n\t\t\t\t\treturn 'password'\n\t\t\t\t}\n\t\t\t\tif (fmt === 'telephone' || fmt === 'phone') {\n\t\t\t\t\treturn 'tel'\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (prop.type === 'number' || prop.type === 'integer') {\n\t\t\t\treturn 'number'\n\t\t\t}\n\t\t\treturn 'text'\n\t\t},\n\n\t\tpattern() {\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (!prop || prop.type !== 'string') {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tif (prop.pattern) {\n\t\t\t\treturn prop.pattern\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\n\t\tcolorPlaceholder() {\n\t\t\tconst fmt = this.schemaProp?.format\n\t\t\tswitch (fmt) {\n\t\t\t\tcase 'color-hex': return '#rrggbb'\n\t\t\t\tcase 'color-hex-alpha': return '#rrggbbaa'\n\t\t\t\tcase 'color-rgb': return 'rgb(0, 0, 0)'\n\t\t\t\tcase 'color-rgba': return 'rgba(0, 0, 0, 1)'\n\t\t\t\tcase 'color-hsl': return 'hsl(0, 0%, 0%)'\n\t\t\t\tcase 'color-hsla': return 'hsla(0, 0%, 0%, 1)'\n\t\t\t\tdefault: return this.displayName || '#rrggbb'\n\t\t\t}\n\t\t},\n\n\t\t/** CSS-renderable representation of the current color value (raw value works for all standard formats). */\n\t\tcolorPreviewValue() {\n\t\t\tif (this.pendingColor) {\n\t\t\t\treturn this.pendingColor\n\t\t\t}\n\t\t\tconst v = this.stringValue\n\t\t\tif (!v) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn v\n\t\t},\n\n\t\t/** Text-field value: shows the optimistic pendingColor while the picker is dragging. */\n\t\tcolorTextValue() {\n\t\t\tif (this.pendingColor) {\n\t\t\t\treturn this.pendingColor\n\t\t\t}\n\t\t\treturn this.stringValue\n\t\t},\n\n\t\t/** True when the schema-declared format includes an alpha channel. */\n\t\thasAlpha() {\n\t\t\tconst fmt = this.schemaProp?.format\n\t\t\treturn fmt === 'color-hex-alpha' || fmt === 'color-rgba' || fmt === 'color-hsla'\n\t\t},\n\n\t\t/**\n\t\t * Lock the picker's numeric-field mode to match the schema format so\n\t\t * the user can't edit, say, an `rgba()` value via hex inputs.\n\t\t */\n\t\tcolorPickerMode() {\n\t\t\tconst fmt = this.schemaProp?.format\n\t\t\tif (fmt === 'color-rgb' || fmt === 'color-rgba') {\n\t\t\t\treturn 'rgb'\n\t\t\t}\n\t\t\tif (fmt === 'color-hsl' || fmt === 'color-hsla') {\n\t\t\t\treturn 'hsl'\n\t\t\t}\n\t\t\treturn 'hex'\n\t\t},\n\n\t\t/**\n\t\t * Value passed to vue-color's `Chrome` picker. We feed the picker the\n\t\t * latest displayable value (pending or committed) so dragging the\n\t\t * picker stays smooth even while the upstream emit is debounced.\n\t\t */\n\t\tchromePickerValue() {\n\t\t\tconst v = this.pendingColor || this.stringValue\n\t\t\tif (v) {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\treturn { hex: this.hexColorValue, a: 1 }\n\t\t},\n\n\t\t/**\n\t\t * Inline style for the color swatch: layers a solid color over the checker\n\t\t * background-image so alpha colors render against the checker pattern.\n\t\t */\n\t\tcolorSwatchStyle() {\n\t\t\tconst c = this.colorPreviewValue\n\t\t\tif (!c) {\n\t\t\t\treturn {}\n\t\t\t}\n\t\t\tconst fill = `linear-gradient(${c}, ${c})`\n\t\t\treturn {\n\t\t\t\tbackgroundImage: `${fill}, var(--cn-color-swatch-checker)`,\n\t\t\t\tbackgroundSize: '100% 100%, 8px 8px',\n\t\t\t\tbackgroundPosition: '0 0, 0 0',\n\t\t\t}\n\t\t},\n\n\t\t/** Hex string used as the value of the native `<input type=\"color\">`. */\n\t\thexColorValue() {\n\t\t\tconst v = this.stringValue\n\t\t\tif (!v) {\n\t\t\t\treturn '#000000'\n\t\t\t}\n\t\t\tconst trimmed = v.trim()\n\t\t\tconst hexMatch = trimmed.match(/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i)\n\t\t\tif (hexMatch) {\n\t\t\t\tconst h = hexMatch[1]\n\t\t\t\tif (h.length === 3 || h.length === 4) {\n\t\t\t\t\treturn '#' + h.slice(0, 3).split('').map((c) => c + c).join('')\n\t\t\t\t}\n\t\t\t\treturn '#' + h.slice(0, 6)\n\t\t\t}\n\t\t\tconst computed = this.cssColorToHex(trimmed)\n\t\t\treturn computed || '#000000'\n\t\t},\n\n\t\tminimum() {\n\t\t\treturn this.schemaProp?.minimum\n\t\t},\n\n\t\tmaximum() {\n\t\t\treturn this.schemaProp?.maximum\n\t\t},\n\n\t\tstep() {\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (prop?.type === 'integer') {\n\t\t\t\treturn '1'\n\t\t\t}\n\t\t\tif (prop?.type === 'number') {\n\t\t\t\treturn 'any'\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\n\t\tminLengthAttr() {\n\t\t\tconst v = this.schemaProp?.minLength\n\t\t\treturn typeof v === 'number' ? v : undefined\n\t\t},\n\n\t\tmaxLengthAttr() {\n\t\t\tconst v = this.schemaProp?.maxLength\n\t\t\treturn typeof v === 'number' ? v : undefined\n\t\t},\n\n\t\tshowHelpText() {\n\t\t\treturn this.isEditable && (this.resolvedWidget === 'boolean' || this.isEditing)\n\t\t},\n\n\t\thelpDescription() {\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (!prop) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn prop.userDescription || prop.description || ''\n\t\t},\n\n\t\thelpExample() {\n\t\t\tconst ex = this.schemaProp?.example\n\t\t\tif (ex === undefined || ex === null || ex === '') {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tif (typeof ex === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.stringify(ex)\n\t\t\t\t} catch {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn String(ex)\n\t\t},\n\n\t\t/**\n\t\t * Inline validation message for the current value, or null when valid.\n\t\t * Required-ness is owned by the parent form so it isn't surfaced here.\n\t\t */\n\t\tfieldError() {\n\t\t\tconst raw = validateValue(this.value, this.schemaProp || {})\n\t\t\treturn raw ? t('nextcloud-vue', raw) : null\n\t\t},\n\n\t\t/** Resolved option list for the `select` widget (explicit prop, schema enum, or items.enum). */\n\t\teffectiveSelectOptions() {\n\t\t\tif (this.selectOptions) {\n\t\t\t\treturn this.selectOptions\n\t\t\t}\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (!prop) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\tif (Array.isArray(prop.enum) && prop.enum.length > 0) {\n\t\t\t\treturn prop.enum\n\t\t\t}\n\t\t\tif (prop.type === 'array' && Array.isArray(prop.items?.enum) && prop.items.enum.length > 0) {\n\t\t\t\treturn prop.items.enum\n\t\t\t}\n\t\t\treturn []\n\t\t},\n\n\t\t/** Whether the `select` widget allows multiple values. */\n\t\teffectiveSelectMultiple() {\n\t\t\tif (this.widget === 'select') {\n\t\t\t\treturn this.selectMultiple\n\t\t\t}\n\t\t\tif (this.widget === 'array') {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (prop?.type === 'array') {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\t/** Whether the `select` widget accepts free-form tags (no fixed enum). */\n\t\teffectiveSelectTaggable() {\n\t\t\tif (this.widget === 'select') {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tconst prop = this.schemaProp\n\t\t\tconst isArray = this.widget === 'array' || prop?.type === 'array'\n\t\t\treturn isArray && this.effectiveSelectOptions.length === 0\n\t\t},\n\n\t\t/** Selected-value object(s) for NcSelect, mapping ids back to option objects when needed. */\n\t\teffectiveSelectValue() {\n\t\t\tconst v = this.value\n\t\t\tconst opts = this.effectiveSelectOptions\n\t\t\tconst lookup = (id) => {\n\t\t\t\tconst match = opts.find((o) => (typeof o === 'object' ? o.id : o) === id)\n\t\t\t\treturn match !== undefined ? match : id\n\t\t\t}\n\t\t\tif (this.effectiveSelectMultiple) {\n\t\t\t\tif (!Array.isArray(v)) {\n\t\t\t\t\treturn []\n\t\t\t\t}\n\t\t\t\treturn v.map(lookup)\n\t\t\t}\n\t\t\tif (v === null || v === undefined || v === '') {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn lookup(v)\n\t\t},\n\n\t\t/** Items array for the `objectArray` widget. Always an array. */\n\t\tobjectArrayItems() {\n\t\t\treturn Array.isArray(this.value) ? this.value : []\n\t\t},\n\n\t\t/** Title shown in the sub-dialog when adding/editing an object item. */\n\t\tobjectArrayDialogTitle() {\n\t\t\tconst itemTitle = this.schemaProp?.items?.title || this.displayName || t('nextcloud-vue', 'Item')\n\t\t\treturn this.objectArrayDialogIndex === null\n\t\t\t\t? t('nextcloud-vue', 'Add {title}', { title: itemTitle })\n\t\t\t\t: t('nextcloud-vue', 'Edit {title}', { title: itemTitle })\n\t\t},\n\n\t\t/**\n\t\t * NcDateTimePicker `type` mapped from the schema's string `format`.\n\t\t * Falls back to `datetime` for unknown date-ish formats.\n\t\t */\n\t\tdatetimePickerType() {\n\t\t\tconst fmt = this.schemaProp?.format\n\t\t\tif (fmt === 'date') {\n\t\t\t\treturn 'date'\n\t\t\t}\n\t\t\tif (fmt === 'time') {\n\t\t\t\treturn 'time'\n\t\t\t}\n\t\t\treturn 'datetime'\n\t\t},\n\n\t\t/** Current value as a `Date` instance for NcDateTimePicker, or null. */\n\t\tdatetimeValue() {\n\t\t\tconst v = this.value\n\t\t\tif (!v) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\t// Date-only strings (YYYY-MM-DD) are parsed as UTC midnight by the spec,\n\t\t\t// which shifts to the previous day in positive-UTC-offset timezones when\n\t\t\t// fed to a picker that renders in local time. Parse them as local midnight.\n\t\t\tif (this.schemaProp?.format === 'date'\n\t\t\t\t&& typeof v === 'string'\n\t\t\t\t&& /^\\d{4}-\\d{2}-\\d{2}$/.test(v)) {\n\t\t\t\tconst [year, month, day] = v.split('-').map(Number)\n\t\t\t\treturn new Date(year, month - 1, day)\n\t\t\t}\n\t\t\tconst d = new Date(v)\n\t\t\treturn Number.isNaN(d.getTime()) ? null : d\n\t\t},\n\n\t\tstringValue() {\n\t\t\tconst v = this.value\n\t\t\tif (v === null || v === undefined) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tif (typeof v === 'string') {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\tif (typeof v === 'object') {\n\t\t\t\treturn JSON.stringify(v)\n\t\t\t}\n\t\t\treturn String(v)\n\t\t},\n\n\t\tobjectJsonString() {\n\t\t\tconst v = this.value\n\t\t\tif (v === null || v === undefined) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tif (typeof v === 'string') {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\ttry {\n\t\t\t\treturn JSON.stringify(v, null, 2)\n\t\t\t} catch {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\n\t\tformattedObjectValue() {\n\t\t\ttry {\n\t\t\t\treturn JSON.stringify(this.value, null, 2)\n\t\t\t} catch {\n\t\t\t\treturn formatValue(this.value, this.schemaProp || {})\n\t\t\t}\n\t\t},\n\n\t\tdisplayValue() {\n\t\t\tconst prop = this.schemaProp\n\t\t\tif (prop?.const !== undefined) {\n\t\t\t\treturn prop.const\n\t\t\t}\n\t\t\tconst v = this.value\n\t\t\tif (v === null || v === undefined || v === '') {\n\t\t\t\treturn '—'\n\t\t\t}\n\t\t\treturn formatValue(v, prop || {})\n\t\t},\n\n\t\tformattedDateValue() {\n\t\t\tconst v = this.value\n\t\t\tif (!v) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\tconst fmt = this.schemaProp?.format\n\t\t\t// Same local-midnight parse as datetimeValue to avoid UTC-shift in display.\n\t\t\tif (fmt === 'date' && typeof v === 'string' && /^\\d{4}-\\d{2}-\\d{2}$/.test(v)) {\n\t\t\t\tconst [year, month, day] = v.split('-').map(Number)\n\t\t\t\treturn new Date(year, month - 1, day).toLocaleDateString(userLocale())\n\t\t\t}\n\t\t\tconst d = new Date(v)\n\t\t\tif (Number.isNaN(d.getTime())) {\n\t\t\t\treturn String(v)\n\t\t\t}\n\t\t\tif (fmt === 'date') {\n\t\t\t\treturn d.toLocaleDateString(userLocale())\n\t\t\t}\n\t\t\tif (fmt === 'time') {\n\t\t\t\treturn d.toLocaleTimeString(userLocale())\n\t\t\t}\n\t\t\treturn d.toLocaleString(userLocale())\n\t\t},\n\t},\n\n\tbeforeUnmount() {\n\t\tif (this.pendingColorTimer) {\n\t\t\tclearTimeout(this.pendingColorTimer)\n\t\t\tthis.pendingColorTimer = null\n\t\t}\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\t/** Focus the underlying text input (called by parent after row click) */\n\t\tfocus() {\n\t\t\tconst ref = this.$refs.inputRef\n\t\t\tif (!ref) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst el = ref.$el || ref\n\t\t\tconst input = el?.querySelector?.('input,textarea')\n\t\t\tif (input) {\n\t\t\t\tinput.focus()\n\t\t\t\tif (typeof input.select === 'function') {\n\t\t\t\t\tinput.select()\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\temit(newVal) {\n\t\t\tthis.$emit('update:value', newVal)\n\t\t},\n\n\t\temitConverted(newVal) {\n\t\t\tconst prop = this.schemaProp\n\t\t\tlet converted = newVal\n\t\t\tif (prop) {\n\t\t\t\tswitch (prop.type) {\n\t\t\t\t\tcase 'number':\n\t\t\t\t\t\tconverted = newVal === '' ? null : parseFloat(newVal)\n\t\t\t\t\t\tif (Number.isNaN(converted)) {\n\t\t\t\t\t\t\tconverted = null\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'integer':\n\t\t\t\t\t\tconverted = newVal === '' ? null : parseInt(newVal, 10)\n\t\t\t\t\t\tif (Number.isNaN(converted)) {\n\t\t\t\t\t\t\tconverted = null\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'boolean':\n\t\t\t\t\t\tconverted = Boolean(newVal)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconverted = newVal\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.$emit('update:value', converted)\n\t\t},\n\n\t\t/**\n\t\t * Emit a `Date` from NcDateTimePicker as the schema-appropriate string:\n\t\t * `date` → `YYYY-MM-DD`, `time` → `HH:MM:SS`, `date-time` → ISO 8601.\n\t\t *\n\t\t * @param {Date|null} date - Date emitted by the picker.\n\t\t */\n\t\temitDatetime(date) {\n\t\t\tif (!date) {\n\t\t\t\tthis.$emit('update:value', null)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst fmt = this.schemaProp?.format\n\t\t\tif (fmt === 'date') {\n\t\t\t\t// Use local-time accessors — toISOString() converts to UTC first,\n\t\t\t\t// which shifts midnight local time to the previous day in UTC+n zones.\n\t\t\t\tconst year = date.getFullYear()\n\t\t\t\tconst month = String(date.getMonth() + 1).padStart(2, '0')\n\t\t\t\tconst day = String(date.getDate()).padStart(2, '0')\n\t\t\t\tthis.$emit('update:value', `${year}-${month}-${day}`)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (fmt === 'time') {\n\t\t\t\tthis.$emit('update:value', date.toTimeString().slice(0, 8))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$emit('update:value', date.toISOString())\n\t\t},\n\n\t\temitObject(jsonString) {\n\t\t\tif (typeof jsonString !== 'string') {\n\t\t\t\tthis.$emit('update:value', jsonString)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst trimmed = jsonString.trim()\n\t\t\tif (trimmed === '') {\n\t\t\t\tthis.$emit('update:value', null)\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tthis.$emit('update:value', JSON.parse(trimmed))\n\t\t\t} catch {\n\t\t\t\t// Invalid JSON: keep the raw string so the user sees what they typed.\n\t\t\t\t// CnJsonViewer surfaces a parse error inline; the parent's save path\n\t\t\t\t// can refuse non-object values if it requires structured data.\n\t\t\t\tthis.$emit('update:value', jsonString)\n\t\t\t}\n\t\t},\n\n\t\temitSelect(selected) {\n\t\t\tconst toId = (item) => (item && typeof item === 'object' ? item.id : item)\n\t\t\tif (this.effectiveSelectMultiple) {\n\t\t\t\tconst arr = Array.isArray(selected) ? selected : []\n\t\t\t\tconst itemType = this.schemaProp?.items?.type\n\t\t\t\t// Coerce taggable input (always emitted as strings) to the\n\t\t\t\t// declared `items.type`. Drop entries that fail to coerce.\n\t\t\t\tconst coerced = arr\n\t\t\t\t\t.map(toId)\n\t\t\t\t\t.map((v) => this.coerceItem(v, itemType))\n\t\t\t\t\t.filter((v) => v !== undefined)\n\t\t\t\tthis.$emit('update:value', coerced)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$emit('update:value', selected === null || selected === undefined ? null : toId(selected))\n\t\t},\n\n\t\t/**\n\t\t * Coerce a raw select-emitted value (typically a string from a\n\t\t * taggable NcSelect) into the array's declared `items.type`. Returns\n\t\t * `undefined` for entries that can't be coerced so the caller can drop\n\t\t * them from the array.\n\t\t *\n\t\t * @param {unknown} v - The raw value.\n\t\t * @param {string} [itemType] - Schema `items.type` (string, number, integer, boolean).\n\t\t * @return {unknown}\n\t\t */\n\t\tcoerceItem(v, itemType) {\n\t\t\tif (v === null || v === undefined) {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\t// No declared item type — pass through untouched (preserves the\n\t\t\t// shape consumers may have set up via `selectOptions` etc).\n\t\t\tif (!itemType) {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\t// Already the right shape — pass through.\n\t\t\tif (itemType === 'number' && typeof v === 'number') {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\tif (itemType === 'integer' && typeof v === 'number' && Number.isInteger(v)) {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\tif (itemType === 'boolean' && typeof v === 'boolean') {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\tif (itemType === 'string' && typeof v === 'string') {\n\t\t\t\treturn v\n\t\t\t}\n\t\t\tconst s = String(v).trim()\n\t\t\tif (s === '') {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tif (itemType === 'number') {\n\t\t\t\tconst n = Number(s)\n\t\t\t\treturn Number.isFinite(n) ? n : undefined\n\t\t\t}\n\t\t\tif (itemType === 'integer') {\n\t\t\t\tconst n = Number(s)\n\t\t\t\treturn Number.isFinite(n) && Number.isInteger(n) ? n : undefined\n\t\t\t}\n\t\t\tif (itemType === 'boolean') {\n\t\t\t\tif (/^(true|1|yes|on)$/i.test(s)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif (/^(false|0|no|off)$/i.test(s)) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn s\n\t\t},\n\n\t\t/**\n\t\t * Open the sub-dialog to add a new object item or edit an existing\n\t\t * one. `idx === null` means add.\n\t\t *\n\t\t * @param {number|null} idx - Index of the item to edit, or `null`.\n\t\t */\n\t\topenObjectArrayItem(idx) {\n\t\t\tthis.objectArrayDialogIndex = idx\n\t\t\tthis.objectArrayDialogItem = idx === null\n\t\t\t\t? null\n\t\t\t\t: JSON.parse(JSON.stringify(this.objectArrayItems[idx] || {}))\n\t\t\tthis.objectArrayDialogOpen = true\n\t\t},\n\n\t\tcloseObjectArrayDialog() {\n\t\t\tthis.objectArrayDialogOpen = false\n\t\t\tthis.objectArrayDialogIndex = null\n\t\t\tthis.objectArrayDialogItem = null\n\t\t},\n\n\t\t/**\n\t\t * Confirmed object from the sub-dialog. Replace the existing item or\n\t\t * append a new one, then emit the updated array.\n\t\t *\n\t\t * @param {object} formData - Form data emitted by CnAdvancedFormDialog.\n\t\t */\n\t\tonObjectArrayConfirm(formData) {\n\t\t\tconst next = [...this.objectArrayItems]\n\t\t\tif (this.objectArrayDialogIndex === null) {\n\t\t\t\tnext.push(formData)\n\t\t\t} else {\n\t\t\t\tnext.splice(this.objectArrayDialogIndex, 1, formData)\n\t\t\t}\n\t\t\tthis.$emit('update:value', next)\n\t\t\tthis.closeObjectArrayDialog()\n\t\t},\n\n\t\t/**\n\t\t * Remove an item from the object array.\n\t\t *\n\t\t * @param {number} idx - Index of the item to remove.\n\t\t */\n\t\tremoveObjectArrayItem(idx) {\n\t\t\tconst next = [...this.objectArrayItems]\n\t\t\tnext.splice(idx, 1)\n\t\t\tthis.$emit('update:value', next)\n\t\t},\n\n\t\t/**\n\t\t * Pick a human-readable label for an item chip. Tries the schema-\n\t\t * declared name field first, then the first non-empty primitive\n\t\t * property, then falls back to \"Item N\".\n\t\t *\n\t\t * @param {object} item - The array item.\n\t\t * @param {number} idx - Index of the item (used for fallback label).\n\t\t * @return {string}\n\t\t */\n\t\tobjectArrayItemLabel(item, idx) {\n\t\t\tconst items = this.schemaProp?.items\n\t\t\tconst nameField = items?.objectConfiguration?.objectNameField\n\t\t\t\t|| items?.configuration?.objectNameField\n\t\t\tif (nameField && item && item[nameField] !== null && item[nameField] !== undefined && item[nameField] !== '') {\n\t\t\t\treturn String(item[nameField])\n\t\t\t}\n\t\t\tif (item && typeof item === 'object') {\n\t\t\t\tfor (const v of Object.values(item)) {\n\t\t\t\t\tif (v === null || v === undefined || v === '') {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean') {\n\t\t\t\t\t\treturn String(v)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn t('nextcloud-vue', 'Item {n}', { n: idx + 1 })\n\t\t},\n\n\t\tisValidDate(v) {\n\t\t\tif (!v) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tconst d = new Date(v)\n\t\t\treturn d instanceof Date && !Number.isNaN(d.getTime())\n\t\t},\n\n\t\t/**\n\t\t * Convert any CSS-recognized color string to a 6-digit hex string by\n\t\t * round-tripping through a detached DOM node. Returns null when the\n\t\t * browser cannot parse the input.\n\t\t *\n\t\t * @param {string} cssValue - The CSS color value to convert.\n\t\t * @return {string|null}\n\t\t */\n\t\tcssColorToHex(cssValue) {\n\t\t\ttry {\n\t\t\t\tconst el = document.createElement('div')\n\t\t\t\tel.style.color = ''\n\t\t\t\tel.style.color = cssValue\n\t\t\t\tif (!el.style.color) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t\tdocument.body.appendChild(el)\n\t\t\t\tconst rgb = getComputedStyle(el).color\n\t\t\t\tdocument.body.removeChild(el)\n\t\t\t\tconst m = rgb.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/)\n\t\t\t\tif (!m) {\n\t\t\t\t\treturn null\n\t\t\t\t}\n\t\t\t\tconst toHex = (n) => parseInt(n, 10).toString(16).padStart(2, '0')\n\t\t\t\treturn `#${toHex(m[1])}${toHex(m[2])}${toHex(m[3])}`\n\t\t\t} catch {\n\t\t\t\treturn null\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Continuous handler for vue-color's `Chrome` picker. Updates the\n\t\t * swatch + text input synchronously via `pendingColor`, but debounces\n\t\t * the upstream `update:value` emit so validation and parent re-renders\n\t\t * don't fire on every drag tick.\n\t\t *\n\t\t * @param {object} color - vue-color emitted color object.\n\t\t * @param {string} color.hex - `#rrggbb`.\n\t\t * @param {string} [color.hex8] - `#rrggbbaa`, when alpha is enabled.\n\t\t * @param {object} color.rgba - RGBA components (`r`, `g`, `b`, `a`).\n\t\t * @param {object} color.hsl - HSL components (`h`, `s`, `l`, `a`).\n\t\t * @param {number} [color.a] - Alpha 0–1.\n\t\t */\n\t\tonChromeColorInput(color) {\n\t\t\tthis.pendingColor = this.chromeColorToFormatValue(color)\n\t\t\tif (this.pendingColorTimer) {\n\t\t\t\tclearTimeout(this.pendingColorTimer)\n\t\t\t}\n\t\t\tthis.pendingColorTimer = setTimeout(() => this.flushPendingColor(), 120)\n\t\t},\n\n\t\t/**\n\t\t * Translate vue-color's emitted color object into the schema-declared\n\t\t * color format string.\n\t\t *\n\t\t * @param {object} color - vue-color color object.\n\t\t * @return {string}\n\t\t */\n\t\tchromeColorToFormatValue(color) {\n\t\t\tconst fmt = this.schemaProp?.format || 'color-hex'\n\t\t\tconst { rgba, hex, hex8 } = color || {}\n\t\t\tconst r = rgba?.r ?? 0\n\t\t\tconst g = rgba?.g ?? 0\n\t\t\tconst b = rgba?.b ?? 0\n\t\t\tconst a = rgba?.a ?? color?.a ?? 1\n\t\t\tif (fmt === 'color-hex' || fmt === 'color') {\n\t\t\t\treturn (hex || '#000000').toLowerCase()\n\t\t\t}\n\t\t\tif (fmt === 'color-hex-alpha') {\n\t\t\t\tif (hex8) {\n\t\t\t\t\treturn hex8.toLowerCase()\n\t\t\t\t}\n\t\t\t\tconst aHex = Math.round(a * 255).toString(16).padStart(2, '0')\n\t\t\t\treturn ((hex || '#000000') + aHex).toLowerCase()\n\t\t\t}\n\t\t\tif (fmt === 'color-rgb') {\n\t\t\t\treturn `rgb(${r}, ${g}, ${b})`\n\t\t\t}\n\t\t\tif (fmt === 'color-rgba') {\n\t\t\t\treturn `rgba(${r}, ${g}, ${b}, ${this.formatAlpha(a)})`\n\t\t\t}\n\t\t\tif (fmt === 'color-hsl' || fmt === 'color-hsla') {\n\t\t\t\tconst { h, s, l } = this.rgbToHsl(r, g, b)\n\t\t\t\tif (fmt === 'color-hsla') {\n\t\t\t\t\treturn `hsla(${h}, ${s}%, ${l}%, ${this.formatAlpha(a)})`\n\t\t\t\t}\n\t\t\t\treturn `hsl(${h}, ${s}%, ${l}%)`\n\t\t\t}\n\t\t\treturn hex || '#000000'\n\t\t},\n\n\t\t/** Emit the pending color upstream and clear local state. */\n\t\tflushPendingColor() {\n\t\t\tif (this.pendingColorTimer) {\n\t\t\t\tclearTimeout(this.pendingColorTimer)\n\t\t\t\tthis.pendingColorTimer = null\n\t\t\t}\n\t\t\tif (this.pendingColor === null) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst out = this.pendingColor\n\t\t\tthis.pendingColor = null\n\t\t\tthis.$emit('update:value', out)\n\t\t},\n\n\t\t/**\n\t\t * Manual text-field edit for a color value. Cancels any in-flight\n\t\t * picker debounce so the typed value isn't immediately overwritten.\n\t\t *\n\t\t * @param {string} v - The new text value.\n\t\t */\n\t\tonColorTextInput(v) {\n\t\t\tif (this.pendingColorTimer) {\n\t\t\t\tclearTimeout(this.pendingColorTimer)\n\t\t\t\tthis.pendingColorTimer = null\n\t\t\t}\n\t\t\tthis.pendingColor = null\n\t\t\tthis.$emit('update:value', v)\n\t\t},\n\n\t\t/**\n\t\t * Format an alpha 0–1 for CSS output (max 2 decimals, drops trailing zeros).\n\t\t *\n\t\t * @param {number} a - Alpha in 0–1 range.\n\t\t * @return {string}\n\t\t */\n\t\tformatAlpha(a) {\n\t\t\treturn Number.isInteger(a) ? String(a) : a.toFixed(2).replace(/\\.?0+$/, '') || '0'\n\t\t},\n\n\t\trgbToHsl(r, g, b) {\n\t\t\tconst rN = r / 255\n\t\t\tconst gN = g / 255\n\t\t\tconst bN = b / 255\n\t\t\tconst max = Math.max(rN, gN, bN)\n\t\t\tconst min = Math.min(rN, gN, bN)\n\t\t\tconst l = (max + min) / 2\n\t\t\tlet h = 0\n\t\t\tlet s = 0\n\t\t\tif (max !== min) {\n\t\t\t\tconst d = max - min\n\t\t\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n\t\t\t\tswitch (max) {\n\t\t\t\t\tcase rN:\n\t\t\t\t\t\th = (gN - bN) / d + (gN < bN ? 6 : 0)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase gN:\n\t\t\t\t\t\th = (bN - rN) / d + 2\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase bN:\n\t\t\t\t\t\th = (rN - gN) / d + 4\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\th /= 6\n\t\t\t}\n\t\t\treturn {\n\t\t\t\th: Math.round(h * 360),\n\t\t\t\ts: Math.round(s * 100),\n\t\t\t\tl: Math.round(l * 100),\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n.cn-advanced-form-dialog__value-input-container {\n\twidth: 100%;\n\tmin-width: 0;\n}\n\n.cn-advanced-form-dialog__value-input-container :deep(.text-field) {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.cn-advanced-form-dialog__boolean-input-row {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n}\n\n.cn-advanced-form-dialog__array-input-row {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n}\n\n.cn-advanced-form-dialog__array-input-row > :first-child {\n\tflex: 1;\n}\n\n/* patch extreme size in field */\n.cn-advanced-form-dialog__boolean-input-row__input > span {\n\tpadding-left: 0;\n\tpadding-block: 0;\n}\n\n.cn-advanced-form-dialog__boolean-input-row__input > input {\n\tmargin: 0;\n}\n\n.cn-advanced-form-dialog__info-icon {\n\tflex-shrink: 0;\n\tcolor: var(--color-text-maxcontrast);\n\tcursor: help;\n}\n\n.cn-advanced-form-dialog__json-value {\n\tmax-height: 200px;\n\toverflow-y: auto;\n\twhite-space: pre-wrap;\n\tfont-family: monospace;\n\tfont-size: 12px;\n\tbackground: var(--color-background-dark);\n\tpadding: 8px;\n\tborder-radius: 4px;\n\tmargin: 0;\n}\n\n/* Textarea: keep it inside the table cell instead of overflowing.\n NcTextArea's wrapper has a fixed height (`calc(var(--default-clickable-area) * 2)`)\n that ignores the `rows` attribute, which causes the textarea to render with a\n too-small viewport. Let the wrapper grow with its content instead. */\n.cn-advanced-form-dialog__textarea {\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n.cn-advanced-form-dialog__textarea :deep(.textarea__main-wrapper) {\n\theight: auto;\n\tmin-height: var(--default-clickable-area);\n}\n\n.cn-advanced-form-dialog__textarea :deep(textarea) {\n\twidth: 100%;\n\tmax-width: 100%;\n\tbox-sizing: border-box;\n\tresize: vertical;\n\tmin-height: 80px;\n\tmax-height: 240px;\n\tdisplay: block;\n}\n\n/* Color widget: clickable swatch (native picker) + visible text input */\n.cn-advanced-form-dialog__color-input-row {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n\twidth: 100%;\n}\n\n.cn-advanced-form-dialog__color-input-row > :last-child {\n\tflex: 1;\n\tmin-width: 0;\n}\n\n.cn-advanced-form-dialog__color-swatch {\n\t--cn-color-swatch-checker:\n\t\tlinear-gradient(45deg, var(--color-background-dark) 25%, transparent 25%),\n\t\tlinear-gradient(-45deg, var(--color-background-dark) 25%, transparent 25%),\n\t\tlinear-gradient(45deg, transparent 75%, var(--color-background-dark) 75%),\n\t\tlinear-gradient(-45deg, transparent 75%, var(--color-background-dark) 75%);\n\tdisplay: inline-block;\n\twidth: 32px;\n\theight: 32px;\n\tflex-shrink: 0;\n\tpadding: 0;\n\tborder: 1px solid var(--color-border);\n\tborder-radius: var(--border-radius);\n\tcursor: pointer;\n\tbackground-image: var(--cn-color-swatch-checker);\n\tbackground-size: 8px 8px;\n\tbackground-position: 0 0, 0 4px, 4px -4px, -4px 0;\n\toverflow: hidden;\n\tposition: relative;\n}\n\n.cn-advanced-form-dialog__color-swatch:focus-visible {\n\toutline: 2px solid var(--color-primary-element);\n\toutline-offset: 2px;\n}\n\n.cn-advanced-form-dialog__color-swatch--readonly {\n\tcursor: default;\n\twidth: 20px;\n\theight: 20px;\n\tvertical-align: middle;\n\tmargin-inline-end: 6px;\n}\n\n.cn-advanced-form-dialog__color-display {\n\tdisplay: inline-flex;\n\talign-items: center;\n}\n\n/* Help text & inline validation under the input */\n.cn-advanced-form-dialog__field-help {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px;\n\tmargin-top: 4px;\n\tfont-size: 0.85em;\n\tcolor: var(--color-text-maxcontrast);\n}\n\n.cn-advanced-form-dialog__field-example {\n\tfont-style: italic;\n}\n\n.cn-advanced-form-dialog__field-error {\n\tmargin-top: 4px;\n\tfont-size: 0.85em;\n\tcolor: var(--color-error-text);\n}\n\n.cn-advanced-form-dialog__value-cell-wrapper {\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: 100%;\n}\n\n/* Object-array widget: chip list + add button */\n.cn-advanced-form-dialog__object-array {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px;\n\twidth: 100%;\n}\n\n.cn-advanced-form-dialog__object-array-chips {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 6px;\n}\n\n.cn-advanced-form-dialog__object-array-chip {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: 4px;\n\tpadding: 2px 4px 2px 10px;\n\tbackground: var(--color-background-dark);\n\tborder: 1px solid var(--color-border);\n\tborder-radius: var(--border-radius-pill, 14px);\n\tcolor: var(--color-main-text);\n\tcursor: pointer;\n\tfont: inherit;\n\tmax-width: 240px;\n}\n\n.cn-advanced-form-dialog__object-array-chip:hover {\n\tbackground: var(--color-background-hover);\n}\n\n.cn-advanced-form-dialog__object-array-chip-label {\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.cn-advanced-form-dialog__object-array-chip-remove {\n\tflex-shrink: 0;\n}\n\n.cn-advanced-form-dialog__object-array-add {\n\talign-self: flex-start;\n}\n</style>\n"],"names":["CnJsonViewer","CnColorPicker","t"],"mappings":"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"}
|