@conduction/nextcloud-vue 2.62.0 → 2.63.0
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/CnAdminActionCard/CnAdminActionCard.vue.js +10 -0
- package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue.js.map +1 -0
- package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue2.js +189 -0
- package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue2.js.map +1 -0
- package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue3.js +72 -0
- package/dist/esm/components/CnAdminActionCard/CnAdminActionCard.vue3.js.map +1 -0
- package/dist/esm/components/CnAppNav/CnAppNav.vue2.js +271 -32
- package/dist/esm/components/CnAppNav/CnAppNav.vue2.js.map +1 -1
- package/dist/esm/components/CnAppNav/CnAppNav.vue3.js.map +1 -1
- package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js +99 -9
- package/dist/esm/components/CnAppRoot/CnAppRoot.vue2.js.map +1 -1
- package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js +39 -18
- package/dist/esm/components/CnAppRoot/CnAppRoot.vue3.js.map +1 -1
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue2.js.map +1 -1
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js +53 -37
- package/dist/esm/components/CnChoiceCards/CnChoiceCards.vue3.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue2.js.map +1 -1
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js +2 -2
- package/dist/esm/components/CnDashboardPage/CnDashboardPage.vue3.js.map +1 -1
- package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue.js +10 -0
- package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue.js.map +1 -0
- package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue2.js +293 -0
- package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue2.js.map +1 -0
- package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue3.js +189 -0
- package/dist/esm/components/CnDataTable/CnColumnFilterPopover.vue3.js.map +1 -0
- package/dist/esm/components/CnDataTable/CnDataTable.vue2.js +216 -8
- package/dist/esm/components/CnDataTable/CnDataTable.vue2.js.map +1 -1
- package/dist/esm/components/CnDataTable/CnDataTable.vue3.js +118 -50
- package/dist/esm/components/CnDataTable/CnDataTable.vue3.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue2.js.map +1 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js +2 -1
- package/dist/esm/components/CnDetailWidgetHost/CnDetailWidgetHost.vue3.js.map +1 -1
- package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue2.js +3 -1
- package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue2.js.map +1 -1
- package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue3.js +1 -1
- package/dist/esm/components/CnFieldHelper/CnFieldHelper.vue3.js.map +1 -1
- package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js +234 -9
- package/dist/esm/components/CnFormDialog/CnFormDialog.vue2.js.map +1 -1
- package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js +96 -57
- package/dist/esm/components/CnFormDialog/CnFormDialog.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +51 -2
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +5 -1
- package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
- package/dist/esm/components/CnIndexPage/selfModeActions.js +3 -3
- package/dist/esm/components/CnIndexPage/selfModeActions.js.map +1 -1
- package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js +36 -1
- package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue2.js.map +1 -1
- package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js +4 -1
- package/dist/esm/components/CnObjectListWidget/CnObjectListWidget.vue3.js.map +1 -1
- package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue2.js +121 -12
- package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue2.js.map +1 -1
- package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue3.js +3 -1
- package/dist/esm/components/CnResourceSelect/CnResourceSelect.vue3.js.map +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js +326 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue2.js.map +1 -1
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js +112 -26
- package/dist/esm/components/CnSetupWizard/CnSetupWizard.vue3.js.map +1 -1
- package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue.js +10 -0
- package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue.js.map +1 -0
- package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue2.js +337 -0
- package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue2.js.map +1 -0
- package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue3.js +102 -0
- package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue3.js.map +1 -0
- package/dist/esm/components/CnTimelineWidget/dashboardRegistration.js +34 -0
- package/dist/esm/components/CnTimelineWidget/dashboardRegistration.js.map +1 -0
- package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue2.js +131 -8
- package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue2.js.map +1 -1
- package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue3.js +40 -38
- package/dist/esm/components/CnWalkthrough/CnWalkthrough.vue3.js.map +1 -1
- package/dist/esm/components/CnWidgetGrid/builtInWidgets.js +8 -6
- package/dist/esm/components/CnWidgetGrid/builtInWidgets.js.map +1 -1
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
- package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
- package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue2.js +19 -0
- package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue2.js.map +1 -1
- package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue3.js +1 -1
- package/dist/esm/components/CnWizardDialog/CnWizardDialog.vue3.js.map +1 -1
- package/dist/esm/composables/useDependencyCheck.js +65 -0
- package/dist/esm/composables/useDependencyCheck.js.map +1 -0
- package/dist/esm/composables/useWalkthrough.js +218 -6
- package/dist/esm/composables/useWalkthrough.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/l10n/en.json.js +43 -0
- package/dist/esm/l10n/en.json.js.map +1 -1
- package/dist/esm/l10n/nl.json.js +43 -0
- package/dist/esm/l10n/nl.json.js.map +1 -1
- package/dist/esm/nextcloud-vue.css +449 -0
- package/dist/esm/store/useObjectStore.js +8 -0
- package/dist/esm/store/useObjectStore.js.map +1 -1
- package/dist/esm/utils/columnFilters.js +311 -0
- package/dist/esm/utils/columnFilters.js.map +1 -0
- package/dist/esm/utils/groupAutocomplete.js +123 -0
- package/dist/esm/utils/groupAutocomplete.js.map +1 -0
- package/dist/esm/utils/libraryWidgetKeys.js +2 -0
- package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
- package/dist/esm/utils/pickerOptions.js +198 -0
- package/dist/esm/utils/pickerOptions.js.map +1 -0
- package/dist/esm/utils/schema.js +83 -7
- package/dist/esm/utils/schema.js.map +1 -1
- package/dist/esm/utils/timelineEvents.js +174 -0
- package/dist/esm/utils/timelineEvents.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/esm/utils/walkthroughSignals.js +88 -0
- package/dist/esm/utils/walkthroughSignals.js.map +1 -0
- package/dist/nextcloud-vue.cjs.js +9369 -5193
- package/dist/nextcloud-vue.cjs.js.map +2 -2
- package/dist/nextcloud-vue.css +449 -0
- package/l10n/en.json +43 -0
- package/l10n/nl.json +43 -0
- package/package.json +1 -1
- package/src/components/CnAdminActionCard/CnAdminActionCard.vue +234 -0
- package/src/components/CnAdminActionCard/index.js +4 -0
- package/src/components/CnAppNav/CnAppNav.vue +271 -32
- package/src/components/CnAppRoot/CnAppRoot.vue +129 -15
- package/src/components/CnChoiceCards/CnChoiceCards.vue +56 -31
- package/src/components/CnDashboardPage/CnDashboardPage.vue +2 -2
- package/src/components/CnDataTable/CnColumnFilterPopover.vue +524 -0
- package/src/components/CnDataTable/CnDataTable.md +3 -0
- package/src/components/CnDataTable/CnDataTable.vue +260 -4
- package/src/components/CnDetailWidgetHost/CnDetailWidgetHost.vue +2 -2
- package/src/components/CnFieldHelper/CnFieldHelper.vue +4 -2
- package/src/components/CnFormDialog/CnFormDialog.vue +290 -31
- package/src/components/CnIndexPage/CnIndexPage.vue +55 -2
- package/src/components/CnIndexPage/selfModeActions.js +3 -3
- package/src/components/CnObjectListWidget/CnObjectListWidget.vue +39 -1
- package/src/components/CnResourceSelect/CnResourceSelect.vue +123 -12
- package/src/components/CnSetupWizard/CnSetupWizard.vue +392 -3
- package/src/components/CnTimelineWidget/CnTimelineWidget.vue +477 -0
- package/src/components/CnTimelineWidget/dashboardRegistration.js +32 -0
- package/src/components/CnTimelineWidget/index.js +4 -0
- package/src/components/CnWalkthrough/CnWalkthrough.vue +143 -10
- package/src/components/CnWidgetGrid/builtInWidgets.js +2 -0
- package/src/components/CnWidgetGrid/registerDashboardWidgets.js +1 -0
- package/src/components/CnWizardDialog/CnWizardDialog.vue +20 -1
- package/src/components/index.js +2 -0
- package/src/composables/useDependencyCheck.js +61 -0
- package/src/composables/useWalkthrough.js +217 -5
- package/src/css/dashboard.css +49 -0
- package/src/css/detail-page.css +19 -0
- package/src/css/table.css +81 -0
- package/src/index.js +2 -0
- package/src/schemas/app-manifest-v2.schema.json +23 -1
- package/src/store/useObjectStore.js +8 -0
- package/src/utils/columnFilters.js +324 -0
- package/src/utils/groupAutocomplete.js +119 -0
- package/src/utils/libraryWidgetKeys.js +2 -0
- package/src/utils/pickerOptions.js +194 -0
- package/src/utils/schema.js +83 -7
- package/src/utils/timelineEvents.js +171 -0
- package/src/utils/validateManifestV2.compiled.js +2 -2
- package/src/utils/walkthroughSignals.js +94 -0
|
@@ -325,6 +325,87 @@
|
|
|
325
325
|
outline-offset: -2px;
|
|
326
326
|
}
|
|
327
327
|
|
|
328
|
+
/* Header filter button (CnDataTable `filterable`). 24px hit area with the
|
|
329
|
+
16px icon; the filled icon plus the primary colour marks an active filter,
|
|
330
|
+
so the state never rests on colour alone. */
|
|
331
|
+
.cn-table-header__filter {
|
|
332
|
+
display: inline-flex;
|
|
333
|
+
align-items: center;
|
|
334
|
+
justify-content: center;
|
|
335
|
+
width: 24px;
|
|
336
|
+
min-width: 24px;
|
|
337
|
+
height: 24px;
|
|
338
|
+
min-height: 24px;
|
|
339
|
+
margin: 0 0 0 4px;
|
|
340
|
+
padding: 0;
|
|
341
|
+
border: none;
|
|
342
|
+
border-radius: var(--border-radius, 4px);
|
|
343
|
+
background: transparent;
|
|
344
|
+
color: var(--color-text-maxcontrast);
|
|
345
|
+
vertical-align: middle;
|
|
346
|
+
cursor: pointer;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
.cn-table-header__filter:hover {
|
|
350
|
+
background-color: var(--color-background-hover);
|
|
351
|
+
color: var(--color-main-text);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
.cn-table-header__filter:focus-visible {
|
|
355
|
+
outline: 2px solid var(--color-main-text);
|
|
356
|
+
outline-offset: 0;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
.cn-table-header__filter--active {
|
|
360
|
+
color: var(--color-primary-element);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
/* Active header filters above the table, one removable chip each. */
|
|
364
|
+
.cn-data-table__filter-chips {
|
|
365
|
+
display: flex;
|
|
366
|
+
flex-wrap: wrap;
|
|
367
|
+
gap: 6px;
|
|
368
|
+
margin: 0 0 8px;
|
|
369
|
+
padding: 0;
|
|
370
|
+
list-style: none;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
.cn-data-table__filter-chip {
|
|
374
|
+
display: inline-flex;
|
|
375
|
+
align-items: center;
|
|
376
|
+
gap: 4px;
|
|
377
|
+
padding: 2px 4px 2px 10px;
|
|
378
|
+
border: 1px solid var(--color-border-dark);
|
|
379
|
+
border-radius: var(--border-radius-pill, 16px);
|
|
380
|
+
background-color: var(--color-background-dark);
|
|
381
|
+
color: var(--color-main-text);
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
.cn-data-table__filter-chip-remove {
|
|
385
|
+
display: inline-flex;
|
|
386
|
+
align-items: center;
|
|
387
|
+
justify-content: center;
|
|
388
|
+
width: 24px;
|
|
389
|
+
min-width: 24px;
|
|
390
|
+
height: 24px;
|
|
391
|
+
min-height: 24px;
|
|
392
|
+
margin: 0;
|
|
393
|
+
padding: 0;
|
|
394
|
+
border: none;
|
|
395
|
+
border-radius: 50%;
|
|
396
|
+
background: transparent;
|
|
397
|
+
color: var(--color-main-text);
|
|
398
|
+
cursor: pointer;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
.cn-data-table__filter-chip-remove:hover {
|
|
402
|
+
background-color: var(--color-background-hover);
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
.cn-data-table__filter-chip-remove:focus-visible {
|
|
406
|
+
outline: 2px solid var(--color-main-text);
|
|
407
|
+
}
|
|
408
|
+
|
|
328
409
|
/* Multi-column sort priority badge (1, 2, 3), rendered only when two or more rendered, sortable columns are sorted. */
|
|
329
410
|
.cn-table-sort-badge {
|
|
330
411
|
display: inline-flex;
|
|
@@ -2584,6 +2665,55 @@
|
|
|
2584
2665
|
.cn-dashboard-list__item:hover {
|
|
2585
2666
|
background: var(--color-background-hover);
|
|
2586
2667
|
}
|
|
2668
|
+
|
|
2669
|
+
/* "Install <app>" placeholder in a widget whose app is missing.
|
|
2670
|
+
*
|
|
2671
|
+
* NcEmptyContent centres its content with `justify-content: center`. In a
|
|
2672
|
+
* two-row dashboard tile (about 150px inside an `overflow: hidden` wrapper)
|
|
2673
|
+
* the icon, name, description and button are taller than the tile, and plain
|
|
2674
|
+
* `center` overflows on BOTH sides, so the top ran out of the widget and the
|
|
2675
|
+
* name was cut off. `safe center` falls back to the start edge when the
|
|
2676
|
+
* content does not fit, the spacing is compact, and what still does not fit
|
|
2677
|
+
* scrolls instead of being clipped. Shared by CnDashboardPage and
|
|
2678
|
+
* CnDetailWidgetHost (`cn-requires-app`). The class is doubled to outrank
|
|
2679
|
+
* NcEmptyContent's own scoped rules (`.empty-content[data-v-…]`) whatever
|
|
2680
|
+
* order the stylesheets load in. */
|
|
2681
|
+
.cn-requires-app.cn-requires-app.empty-content,
|
|
2682
|
+
.cn-requires-app.cn-requires-app .empty-content {
|
|
2683
|
+
justify-content: safe center;
|
|
2684
|
+
min-height: 0;
|
|
2685
|
+
max-height: 100%;
|
|
2686
|
+
overflow: auto;
|
|
2687
|
+
margin: 0;
|
|
2688
|
+
padding: calc(2 * var(--default-grid-baseline, 4px));
|
|
2689
|
+
gap: var(--default-grid-baseline, 4px);
|
|
2690
|
+
box-sizing: border-box;
|
|
2691
|
+
}
|
|
2692
|
+
|
|
2693
|
+
.cn-requires-app.cn-requires-app .empty-content__icon {
|
|
2694
|
+
width: auto;
|
|
2695
|
+
height: auto;
|
|
2696
|
+
min-height: 0;
|
|
2697
|
+
margin: 0;
|
|
2698
|
+
opacity: 0.7;
|
|
2699
|
+
}
|
|
2700
|
+
|
|
2701
|
+
.cn-requires-app.cn-requires-app .empty-content__name {
|
|
2702
|
+
margin: 0;
|
|
2703
|
+
font-size: var(--default-font-size, 15px);
|
|
2704
|
+
font-weight: 600;
|
|
2705
|
+
text-align: center;
|
|
2706
|
+
}
|
|
2707
|
+
|
|
2708
|
+
.cn-requires-app.cn-requires-app .empty-content__description {
|
|
2709
|
+
margin: 0;
|
|
2710
|
+
text-align: center;
|
|
2711
|
+
font-size: 0.9em;
|
|
2712
|
+
}
|
|
2713
|
+
|
|
2714
|
+
.cn-requires-app.cn-requires-app .empty-content__action {
|
|
2715
|
+
margin-top: var(--default-grid-baseline, 4px);
|
|
2716
|
+
}
|
|
2587
2717
|
/* ========================================
|
|
2588
2718
|
@conduction/nextcloud-vue — CnDetailPage Styles
|
|
2589
2719
|
======================================== */
|
|
@@ -2692,6 +2822,25 @@
|
|
|
2692
2822
|
flex-shrink: 0;
|
|
2693
2823
|
}
|
|
2694
2824
|
|
|
2825
|
+
/* Every control in the header sits on one line at one height. The lifecycle
|
|
2826
|
+
bar carries `margin: 0 0 8px` for its place above a page body; in the
|
|
2827
|
+
header that margin pushed its buttons up and made the row 8px taller, so
|
|
2828
|
+
the Edit button beside it read as the bigger one. A consumer's actions
|
|
2829
|
+
component can bring its own margins too, so they are reset here as well. */
|
|
2830
|
+
.cn-detail-page .cn-detail-page__header-actions .cn-lifecycle-actions {
|
|
2831
|
+
margin: 0;
|
|
2832
|
+
flex-wrap: nowrap;
|
|
2833
|
+
}
|
|
2834
|
+
|
|
2835
|
+
.cn-detail-page .cn-detail-page__header-actions > * {
|
|
2836
|
+
margin-block: 0;
|
|
2837
|
+
}
|
|
2838
|
+
|
|
2839
|
+
.cn-detail-page .cn-detail-page__header-actions .button-vue {
|
|
2840
|
+
min-height: var(--default-clickable-area);
|
|
2841
|
+
block-size: var(--default-clickable-area);
|
|
2842
|
+
}
|
|
2843
|
+
|
|
2695
2844
|
/* The sentence a refused lock acquire left behind, under the locked banner. */
|
|
2696
2845
|
.cn-detail-page__lock-refusal {
|
|
2697
2846
|
margin: 0 0 calc(3 * var(--default-grid-baseline));
|
|
@@ -5959,6 +6108,101 @@ svg.leaflet-image-layer.leaflet-interactive path {
|
|
|
5959
6108
|
}
|
|
5960
6109
|
|
|
5961
6110
|
|
|
6111
|
+
.cn-column-filter[data-v-2cb54356] {
|
|
6112
|
+
z-index: 10000;
|
|
6113
|
+
display: flex;
|
|
6114
|
+
flex-direction: column;
|
|
6115
|
+
gap: 8px;
|
|
6116
|
+
box-sizing: border-box;
|
|
6117
|
+
max-height: 60vh;
|
|
6118
|
+
overflow-y: auto;
|
|
6119
|
+
padding: 12px;
|
|
6120
|
+
background: var(--color-main-background);
|
|
6121
|
+
color: var(--color-main-text);
|
|
6122
|
+
border: 1px solid var(--color-border-dark);
|
|
6123
|
+
border-radius: var(--border-radius-large, 8px);
|
|
6124
|
+
box-shadow: 0 2px 8px var(--color-box-shadow);
|
|
6125
|
+
font-weight: normal;
|
|
6126
|
+
text-align: start;
|
|
6127
|
+
}
|
|
6128
|
+
.cn-column-filter__heading[data-v-2cb54356] {
|
|
6129
|
+
margin: 0;
|
|
6130
|
+
font-weight: bold;
|
|
6131
|
+
}
|
|
6132
|
+
.cn-column-filter__options[data-v-2cb54356] {
|
|
6133
|
+
display: flex;
|
|
6134
|
+
flex-direction: column;
|
|
6135
|
+
gap: 4px;
|
|
6136
|
+
margin: 0;
|
|
6137
|
+
padding: 0;
|
|
6138
|
+
border: none;
|
|
6139
|
+
}
|
|
6140
|
+
.cn-column-filter__option[data-v-2cb54356] {
|
|
6141
|
+
display: flex;
|
|
6142
|
+
align-items: center;
|
|
6143
|
+
gap: 8px;
|
|
6144
|
+
min-height: 32px;
|
|
6145
|
+
cursor: pointer;
|
|
6146
|
+
}
|
|
6147
|
+
.cn-column-filter__range[data-v-2cb54356] {
|
|
6148
|
+
display: flex;
|
|
6149
|
+
gap: 8px;
|
|
6150
|
+
}
|
|
6151
|
+
.cn-column-filter__field[data-v-2cb54356] {
|
|
6152
|
+
display: flex;
|
|
6153
|
+
flex: 1 1 0;
|
|
6154
|
+
flex-direction: column;
|
|
6155
|
+
gap: 4px;
|
|
6156
|
+
min-width: 0;
|
|
6157
|
+
}
|
|
6158
|
+
.cn-column-filter__label[data-v-2cb54356] {
|
|
6159
|
+
font-size: var(--font-size-small, 13px);
|
|
6160
|
+
color: var(--color-text-maxcontrast);
|
|
6161
|
+
}
|
|
6162
|
+
.cn-column-filter__input[data-v-2cb54356] {
|
|
6163
|
+
width: 100%;
|
|
6164
|
+
box-sizing: border-box;
|
|
6165
|
+
margin: 0;
|
|
6166
|
+
}
|
|
6167
|
+
.cn-column-filter__hint[data-v-2cb54356] {
|
|
6168
|
+
margin: 0;
|
|
6169
|
+
color: var(--color-text-maxcontrast);
|
|
6170
|
+
}
|
|
6171
|
+
.cn-column-filter__actions[data-v-2cb54356] {
|
|
6172
|
+
display: flex;
|
|
6173
|
+
justify-content: flex-end;
|
|
6174
|
+
gap: 8px;
|
|
6175
|
+
}
|
|
6176
|
+
.cn-column-filter__button[data-v-2cb54356] {
|
|
6177
|
+
min-height: 34px;
|
|
6178
|
+
padding: 0 12px;
|
|
6179
|
+
border: 1px solid var(--color-border-dark);
|
|
6180
|
+
border-radius: var(--border-radius-element, 8px);
|
|
6181
|
+
background: var(--color-main-background);
|
|
6182
|
+
color: var(--color-main-text);
|
|
6183
|
+
cursor: pointer;
|
|
6184
|
+
}
|
|
6185
|
+
.cn-column-filter__button--primary[data-v-2cb54356] {
|
|
6186
|
+
border-color: var(--color-primary-element);
|
|
6187
|
+
background: var(--color-primary-element);
|
|
6188
|
+
color: var(--color-primary-element-text);
|
|
6189
|
+
}
|
|
6190
|
+
.cn-column-filter__button[data-v-2cb54356]:focus-visible,
|
|
6191
|
+
.cn-column-filter__input[data-v-2cb54356]:focus-visible,
|
|
6192
|
+
.cn-column-filter__option input[data-v-2cb54356]:focus-visible {
|
|
6193
|
+
outline: 2px solid var(--color-primary-element);
|
|
6194
|
+
outline-offset: 2px;
|
|
6195
|
+
}
|
|
6196
|
+
.cn-column-filter__sr-only[data-v-2cb54356] {
|
|
6197
|
+
position: absolute;
|
|
6198
|
+
width: 1px;
|
|
6199
|
+
height: 1px;
|
|
6200
|
+
overflow: hidden;
|
|
6201
|
+
clip-path: inset(50%);
|
|
6202
|
+
white-space: nowrap;
|
|
6203
|
+
}
|
|
6204
|
+
|
|
6205
|
+
|
|
5962
6206
|
.cn-fk-resolve-cell[data-v-471db666] {
|
|
5963
6207
|
white-space: nowrap;
|
|
5964
6208
|
overflow: hidden;
|
|
@@ -6359,6 +6603,87 @@ svg.leaflet-image-layer.leaflet-interactive path {
|
|
|
6359
6603
|
outline-offset: -2px;
|
|
6360
6604
|
}
|
|
6361
6605
|
|
|
6606
|
+
/* Header filter button (CnDataTable `filterable`). 24px hit area with the
|
|
6607
|
+
16px icon; the filled icon plus the primary colour marks an active filter,
|
|
6608
|
+
so the state never rests on colour alone. */
|
|
6609
|
+
.cn-table-header__filter {
|
|
6610
|
+
display: inline-flex;
|
|
6611
|
+
align-items: center;
|
|
6612
|
+
justify-content: center;
|
|
6613
|
+
width: 24px;
|
|
6614
|
+
min-width: 24px;
|
|
6615
|
+
height: 24px;
|
|
6616
|
+
min-height: 24px;
|
|
6617
|
+
margin: 0 0 0 4px;
|
|
6618
|
+
padding: 0;
|
|
6619
|
+
border: none;
|
|
6620
|
+
border-radius: var(--border-radius, 4px);
|
|
6621
|
+
background: transparent;
|
|
6622
|
+
color: var(--color-text-maxcontrast);
|
|
6623
|
+
vertical-align: middle;
|
|
6624
|
+
cursor: pointer;
|
|
6625
|
+
}
|
|
6626
|
+
|
|
6627
|
+
.cn-table-header__filter:hover {
|
|
6628
|
+
background-color: var(--color-background-hover);
|
|
6629
|
+
color: var(--color-main-text);
|
|
6630
|
+
}
|
|
6631
|
+
|
|
6632
|
+
.cn-table-header__filter:focus-visible {
|
|
6633
|
+
outline: 2px solid var(--color-main-text);
|
|
6634
|
+
outline-offset: 0;
|
|
6635
|
+
}
|
|
6636
|
+
|
|
6637
|
+
.cn-table-header__filter--active {
|
|
6638
|
+
color: var(--color-primary-element);
|
|
6639
|
+
}
|
|
6640
|
+
|
|
6641
|
+
/* Active header filters above the table, one removable chip each. */
|
|
6642
|
+
.cn-data-table__filter-chips {
|
|
6643
|
+
display: flex;
|
|
6644
|
+
flex-wrap: wrap;
|
|
6645
|
+
gap: 6px;
|
|
6646
|
+
margin: 0 0 8px;
|
|
6647
|
+
padding: 0;
|
|
6648
|
+
list-style: none;
|
|
6649
|
+
}
|
|
6650
|
+
|
|
6651
|
+
.cn-data-table__filter-chip {
|
|
6652
|
+
display: inline-flex;
|
|
6653
|
+
align-items: center;
|
|
6654
|
+
gap: 4px;
|
|
6655
|
+
padding: 2px 4px 2px 10px;
|
|
6656
|
+
border: 1px solid var(--color-border-dark);
|
|
6657
|
+
border-radius: var(--border-radius-pill, 16px);
|
|
6658
|
+
background-color: var(--color-background-dark);
|
|
6659
|
+
color: var(--color-main-text);
|
|
6660
|
+
}
|
|
6661
|
+
|
|
6662
|
+
.cn-data-table__filter-chip-remove {
|
|
6663
|
+
display: inline-flex;
|
|
6664
|
+
align-items: center;
|
|
6665
|
+
justify-content: center;
|
|
6666
|
+
width: 24px;
|
|
6667
|
+
min-width: 24px;
|
|
6668
|
+
height: 24px;
|
|
6669
|
+
min-height: 24px;
|
|
6670
|
+
margin: 0;
|
|
6671
|
+
padding: 0;
|
|
6672
|
+
border: none;
|
|
6673
|
+
border-radius: 50%;
|
|
6674
|
+
background: transparent;
|
|
6675
|
+
color: var(--color-main-text);
|
|
6676
|
+
cursor: pointer;
|
|
6677
|
+
}
|
|
6678
|
+
|
|
6679
|
+
.cn-data-table__filter-chip-remove:hover {
|
|
6680
|
+
background-color: var(--color-background-hover);
|
|
6681
|
+
}
|
|
6682
|
+
|
|
6683
|
+
.cn-data-table__filter-chip-remove:focus-visible {
|
|
6684
|
+
outline: 2px solid var(--color-main-text);
|
|
6685
|
+
}
|
|
6686
|
+
|
|
6362
6687
|
/* Multi-column sort priority badge (1, 2, 3), rendered only when two or more rendered, sortable columns are sorted. */
|
|
6363
6688
|
.cn-table-sort-badge {
|
|
6364
6689
|
display: inline-flex;
|
|
@@ -15141,6 +15466,10 @@ a.cn-xwiki-card__title[data-v-54e85fe3]:hover {
|
|
|
15141
15466
|
font-size: 0.9em;
|
|
15142
15467
|
margin-inline-end: auto;
|
|
15143
15468
|
}
|
|
15469
|
+
.cn-form-dialog__switch-wrapper[data-v-c3eeb0a2] {
|
|
15470
|
+
display: flex;
|
|
15471
|
+
flex-direction: column;
|
|
15472
|
+
}
|
|
15144
15473
|
.cn-form-dialog__form[data-v-c3eeb0a2] {
|
|
15145
15474
|
display: flex;
|
|
15146
15475
|
flex-direction: column;
|
|
@@ -18032,6 +18361,83 @@ to { background-position: -200% 0;
|
|
|
18032
18361
|
}
|
|
18033
18362
|
|
|
18034
18363
|
|
|
18364
|
+
.cn-timeline-widget[data-v-621fcccf] {
|
|
18365
|
+
display: flex;
|
|
18366
|
+
flex-direction: column;
|
|
18367
|
+
gap: 8px;
|
|
18368
|
+
}
|
|
18369
|
+
.cn-timeline-widget__title[data-v-621fcccf] {
|
|
18370
|
+
margin: 0;
|
|
18371
|
+
font-size: var(--font-size-large, 1.1em);
|
|
18372
|
+
}
|
|
18373
|
+
.cn-timeline-widget__loading[data-v-621fcccf] {
|
|
18374
|
+
display: flex;
|
|
18375
|
+
align-items: center;
|
|
18376
|
+
gap: 8px;
|
|
18377
|
+
color: var(--color-text-maxcontrast);
|
|
18378
|
+
}
|
|
18379
|
+
.cn-timeline-widget__empty[data-v-621fcccf] {
|
|
18380
|
+
margin: 0;
|
|
18381
|
+
color: var(--color-text-maxcontrast);
|
|
18382
|
+
}
|
|
18383
|
+
.cn-timeline-widget__list[data-v-621fcccf] {
|
|
18384
|
+
margin: 0;
|
|
18385
|
+
padding: 0;
|
|
18386
|
+
list-style: none;
|
|
18387
|
+
}
|
|
18388
|
+
.cn-timeline-widget__event[data-v-621fcccf] {
|
|
18389
|
+
position: relative;
|
|
18390
|
+
display: flex;
|
|
18391
|
+
gap: 12px;
|
|
18392
|
+
padding-block-end: 12px;
|
|
18393
|
+
}
|
|
18394
|
+
|
|
18395
|
+
/* The line between dots: drawn from each dot down to the next event. */
|
|
18396
|
+
.cn-timeline-widget__event[data-v-621fcccf]:not(:last-child)::before {
|
|
18397
|
+
content: '';
|
|
18398
|
+
position: absolute;
|
|
18399
|
+
inset-block: 14px 0;
|
|
18400
|
+
inset-inline-start: 5px;
|
|
18401
|
+
border-inline-start: 2px solid var(--color-border-dark);
|
|
18402
|
+
}
|
|
18403
|
+
.cn-timeline-widget__dot[data-v-621fcccf] {
|
|
18404
|
+
flex: 0 0 auto;
|
|
18405
|
+
width: 12px;
|
|
18406
|
+
height: 12px;
|
|
18407
|
+
margin-block-start: 4px;
|
|
18408
|
+
border-radius: 50%;
|
|
18409
|
+
background-color: var(--color-primary-element);
|
|
18410
|
+
}
|
|
18411
|
+
|
|
18412
|
+
/* Upcoming: a hollow dot, plus the word "Upcoming" beside the date. */
|
|
18413
|
+
.cn-timeline-widget__event--upcoming .cn-timeline-widget__dot[data-v-621fcccf] {
|
|
18414
|
+
box-sizing: border-box;
|
|
18415
|
+
border: 2px solid var(--color-primary-element);
|
|
18416
|
+
background-color: var(--color-main-background);
|
|
18417
|
+
}
|
|
18418
|
+
.cn-timeline-widget__body[data-v-621fcccf] {
|
|
18419
|
+
min-width: 0;
|
|
18420
|
+
}
|
|
18421
|
+
.cn-timeline-widget__when[data-v-621fcccf] {
|
|
18422
|
+
font-size: var(--font-size-small, 13px);
|
|
18423
|
+
color: var(--color-text-maxcontrast);
|
|
18424
|
+
}
|
|
18425
|
+
.cn-timeline-widget__badge[data-v-621fcccf] {
|
|
18426
|
+
margin-inline-start: 8px;
|
|
18427
|
+
font-size: var(--font-size-small, 13px);
|
|
18428
|
+
font-weight: bold;
|
|
18429
|
+
color: var(--color-main-text);
|
|
18430
|
+
}
|
|
18431
|
+
.cn-timeline-widget__label[data-v-621fcccf] {
|
|
18432
|
+
margin: 0;
|
|
18433
|
+
font-weight: bold;
|
|
18434
|
+
}
|
|
18435
|
+
.cn-timeline-widget__detail[data-v-621fcccf] {
|
|
18436
|
+
margin: 0;
|
|
18437
|
+
overflow-wrap: anywhere;
|
|
18438
|
+
}
|
|
18439
|
+
|
|
18440
|
+
|
|
18035
18441
|
.cn-object-card[data-v-6f672c8f] {
|
|
18036
18442
|
display: flex;
|
|
18037
18443
|
gap: 12px;
|
|
@@ -23314,6 +23720,17 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-75628
|
|
|
23314
23720
|
}
|
|
23315
23721
|
|
|
23316
23722
|
|
|
23723
|
+
.cn-admin-action-card__description[data-v-57907ee5] {
|
|
23724
|
+
margin: 0 0 12px;
|
|
23725
|
+
color: var(--color-text-maxcontrast);
|
|
23726
|
+
}
|
|
23727
|
+
.cn-admin-action-card__footer[data-v-57907ee5] {
|
|
23728
|
+
display: flex;
|
|
23729
|
+
gap: 8px;
|
|
23730
|
+
margin-block: 8px;
|
|
23731
|
+
}
|
|
23732
|
+
|
|
23733
|
+
|
|
23317
23734
|
.cn-version-info__card[data-v-3dc855b2] {
|
|
23318
23735
|
background: var(--color-background-hover);
|
|
23319
23736
|
border: 1px solid var(--color-border);
|
|
@@ -23698,6 +24115,19 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-75628
|
|
|
23698
24115
|
padding: 12px;
|
|
23699
24116
|
}
|
|
23700
24117
|
|
|
24118
|
+
.cn-choice-cards__cell[data-v-93473002] {
|
|
24119
|
+
display: flex;
|
|
24120
|
+
flex-direction: column;
|
|
24121
|
+
gap: 8px;
|
|
24122
|
+
min-inline-size: 0;
|
|
24123
|
+
}
|
|
24124
|
+
|
|
24125
|
+
.cn-choice-cards__actions[data-v-93473002] {
|
|
24126
|
+
display: flex;
|
|
24127
|
+
flex-direction: column;
|
|
24128
|
+
gap: 4px;
|
|
24129
|
+
}
|
|
24130
|
+
|
|
23701
24131
|
.cn-choice-cards__option[data-v-93473002] {
|
|
23702
24132
|
position: relative;
|
|
23703
24133
|
display: block;
|
|
@@ -23860,6 +24290,16 @@ a.cn-flow-runs-widget__row-content:hover .cn-flow-runs-widget__name[data-v-75628
|
|
|
23860
24290
|
padding: 24px 0;
|
|
23861
24291
|
color: var(--color-text-maxcontrast);
|
|
23862
24292
|
}
|
|
24293
|
+
.cn-setup-load-result[data-v-75b2078b] {
|
|
24294
|
+
margin: 0;
|
|
24295
|
+
font-size: var(--font-size-small, 13px);
|
|
24296
|
+
}
|
|
24297
|
+
.cn-setup-load-result--success[data-v-75b2078b] {
|
|
24298
|
+
color: var(--color-success-text, var(--color-success));
|
|
24299
|
+
}
|
|
24300
|
+
.cn-setup-load-result--error[data-v-75b2078b] {
|
|
24301
|
+
color: var(--color-error-text, var(--color-error));
|
|
24302
|
+
}
|
|
23863
24303
|
.cn-setup-field[data-v-75b2078b] {
|
|
23864
24304
|
display: flex;
|
|
23865
24305
|
flex-direction: column;
|
|
@@ -28690,6 +29130,10 @@ to {
|
|
|
28690
29130
|
padding: 16px;
|
|
28691
29131
|
pointer-events: auto;
|
|
28692
29132
|
}
|
|
29133
|
+
.cn-walkthrough__card--docked[data-v-5691d49a] {
|
|
29134
|
+
inset-block-end: 16px;
|
|
29135
|
+
inset-inline-start: 16px;
|
|
29136
|
+
}
|
|
28693
29137
|
.cn-walkthrough__close[data-v-5691d49a] {
|
|
28694
29138
|
/* !important beats NcButton's own `position: relative`, which would otherwise
|
|
28695
29139
|
leave the close button in-flow at the card's top-left. */
|
|
@@ -33713,6 +34157,11 @@ a.cn-integration-card__title[data-v-f7e9bbfa]:hover {
|
|
|
33713
34157
|
margin-bottom: 12px;
|
|
33714
34158
|
color: var(--color-text-maxcontrast);
|
|
33715
34159
|
}
|
|
34160
|
+
.cn-app-root__walkthrough-actions {
|
|
34161
|
+
display: flex;
|
|
34162
|
+
flex-wrap: wrap;
|
|
34163
|
+
gap: 8px;
|
|
34164
|
+
}
|
|
33716
34165
|
.cn-app-root__integrations-hint {
|
|
33717
34166
|
margin-bottom: 12px;
|
|
33718
34167
|
color: var(--color-text-maxcontrast);
|
|
@@ -5,6 +5,7 @@ import { parseResponseError, networkError, genericError } from '../utils/errors.
|
|
|
5
5
|
import { normalizeFacets } from '../utils/facets.js';
|
|
6
6
|
import { prefixUrl, capitalize, buildHeaders, buildQueryString } from '../utils/headers.js';
|
|
7
7
|
import { extractId } from '../utils/id.js';
|
|
8
|
+
import { dispatchObjectCreated } from '../utils/walkthroughSignals.js';
|
|
8
9
|
import { mergePluginState, mergePluginGetters, mergePluginActions } from './pluginMerge.js';
|
|
9
10
|
import { liveUpdatesPlugin } from './plugins/liveUpdates.js';
|
|
10
11
|
|
|
@@ -830,6 +831,13 @@ const baseActions = {
|
|
|
830
831
|
[type]: { ...(this.objects[type] || {}), [savedId]: data },
|
|
831
832
|
};
|
|
832
833
|
|
|
834
|
+
// Every create through the store lets an `advanceOn:
|
|
835
|
+
// object-created` walkthrough step advance, whichever form made it.
|
|
836
|
+
if (!isUpdate) {
|
|
837
|
+
const config = this.objectTypeRegistry[type] || {};
|
|
838
|
+
dispatchObjectCreated({ register: config.registerSlug || config.register, schema: config.schemaSlug || config.schema, object: data });
|
|
839
|
+
}
|
|
840
|
+
|
|
833
841
|
return data
|
|
834
842
|
} catch (error) {
|
|
835
843
|
this.errors = {
|