@momentumcms/admin 0.3.0 → 0.4.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/fesm2022/{momentumcms-admin-array-field.component-Bjlcczwg.mjs → momentumcms-admin-array-field.component-CLV4Ny9t.mjs} +3 -3
- package/fesm2022/{momentumcms-admin-array-field.component-Bjlcczwg.mjs.map → momentumcms-admin-array-field.component-CLV4Ny9t.mjs.map} +1 -1
- package/fesm2022/{momentumcms-admin-blocks-field.component-4vLqDGbB.mjs → momentumcms-admin-blocks-field.component-hHiTfUf9.mjs} +3 -3
- package/fesm2022/{momentumcms-admin-blocks-field.component-4vLqDGbB.mjs.map → momentumcms-admin-blocks-field.component-hHiTfUf9.mjs.map} +1 -1
- package/fesm2022/{momentumcms-admin-collapsible-field.component-63-9kSgm.mjs → momentumcms-admin-collapsible-field.component-BeskwGvi.mjs} +2 -2
- package/fesm2022/{momentumcms-admin-collapsible-field.component-63-9kSgm.mjs.map → momentumcms-admin-collapsible-field.component-BeskwGvi.mjs.map} +1 -1
- package/fesm2022/{momentumcms-admin-global-edit.page-DSnkwdgn.mjs → momentumcms-admin-global-edit.page-D_ebIITz.mjs} +2 -2
- package/fesm2022/{momentumcms-admin-global-edit.page-DSnkwdgn.mjs.map → momentumcms-admin-global-edit.page-D_ebIITz.mjs.map} +1 -1
- package/fesm2022/{momentumcms-admin-group-field.component-B48_zbo0.mjs → momentumcms-admin-group-field.component-ffsgbC6o.mjs} +3 -3
- package/fesm2022/{momentumcms-admin-group-field.component-B48_zbo0.mjs.map → momentumcms-admin-group-field.component-ffsgbC6o.mjs.map} +1 -1
- package/fesm2022/{momentumcms-admin-momentumcms-admin-D_47TVaR.mjs → momentumcms-admin-momentumcms-admin-De5FLr2L.mjs} +633 -577
- package/fesm2022/momentumcms-admin-momentumcms-admin-De5FLr2L.mjs.map +1 -0
- package/fesm2022/{momentumcms-admin-relationship-field.component-D-UQgd7m.mjs → momentumcms-admin-relationship-field.component-DO0kyAkE.mjs} +3 -3
- package/fesm2022/{momentumcms-admin-relationship-field.component-D-UQgd7m.mjs.map → momentumcms-admin-relationship-field.component-DO0kyAkE.mjs.map} +1 -1
- package/fesm2022/{momentumcms-admin-rich-text-field.component-BC8pRU89.mjs → momentumcms-admin-rich-text-field.component-BvpufJs3.mjs} +2 -2
- package/fesm2022/{momentumcms-admin-rich-text-field.component-BC8pRU89.mjs.map → momentumcms-admin-rich-text-field.component-BvpufJs3.mjs.map} +1 -1
- package/fesm2022/{momentumcms-admin-row-field.component--EOPGDtM.mjs → momentumcms-admin-row-field.component-C8ZsdA2w.mjs} +2 -2
- package/fesm2022/{momentumcms-admin-row-field.component--EOPGDtM.mjs.map → momentumcms-admin-row-field.component-C8ZsdA2w.mjs.map} +1 -1
- package/fesm2022/{momentumcms-admin-tabs-field.component-B4X73eCM.mjs → momentumcms-admin-tabs-field.component-Uatoyjg8.mjs} +2 -2
- package/fesm2022/{momentumcms-admin-tabs-field.component-B4X73eCM.mjs.map → momentumcms-admin-tabs-field.component-Uatoyjg8.mjs.map} +1 -1
- package/fesm2022/momentumcms-admin.mjs +1 -1
- package/package.json +1 -2
- package/types/momentumcms-admin.d.ts +2 -2
- package/fesm2022/momentumcms-admin-momentumcms-admin-D_47TVaR.mjs.map +0 -1
|
@@ -11,7 +11,7 @@ import * as i1 from '@angular/cdk/a11y';
|
|
|
11
11
|
import { LiveAnnouncer, A11yModule } from '@angular/cdk/a11y';
|
|
12
12
|
import { flattenDataFields, humanizeFieldName, isUploadCollection, getSoftDeleteField } from '@momentumcms/core';
|
|
13
13
|
import { NgIcon, provideIcons } from '@ng-icons/core';
|
|
14
|
-
import { heroFilm, heroMusicalNote, heroDocumentText, heroArchiveBox, heroPhoto, heroDocument, heroCloudArrowUp, heroXMark, heroPuzzlePiece, heroCog6Tooth, heroChartBarSquare, heroChevronUpDown, heroBolt, heroFolder, heroUsers, heroNewspaper, heroSquares2x2, heroEye, heroPencilSquare, heroArrowDownTray, heroTrash, heroChevronRight, heroChevronDown, heroChevronUp, heroPlus } from '@ng-icons/heroicons/outline';
|
|
14
|
+
import { heroFilm, heroMusicalNote, heroDocumentText, heroArchiveBox, heroPhoto, heroDocument, heroCloudArrowUp, heroXMark, heroCursorArrowRays, heroMap, heroMagnifyingGlass, heroPuzzlePiece, heroCog6Tooth, heroChartBarSquare, heroChevronUpDown, heroBolt, heroFolder, heroUsers, heroNewspaper, heroSquares2x2, heroEye, heroPencilSquare, heroArrowDownTray, heroTrash, heroChevronRight, heroChevronDown, heroChevronUp, heroPlus } from '@ng-icons/heroicons/outline';
|
|
15
15
|
import { required, validate, applyEach, apply, email, min, max, minLength, maxLength, form, submit } from '@angular/forms/signals';
|
|
16
16
|
import { moveItemInArray, CdkDropList, CdkDrag, CdkDragPlaceholder } from '@angular/cdk/drag-drop';
|
|
17
17
|
|
|
@@ -1134,7 +1134,7 @@ function momentumAdminRoutes(configOrOptions) {
|
|
|
1134
1134
|
// Global edit
|
|
1135
1135
|
{
|
|
1136
1136
|
path: 'globals/:slug',
|
|
1137
|
-
loadComponent: () => import('./momentumcms-admin-global-edit.page-
|
|
1137
|
+
loadComponent: () => import('./momentumcms-admin-global-edit.page-D_ebIITz.mjs').then((m) => m.GlobalEditPage),
|
|
1138
1138
|
canDeactivate: [unsavedChangesGuard],
|
|
1139
1139
|
},
|
|
1140
1140
|
// Plugin-registered routes
|
|
@@ -3770,7 +3770,7 @@ class VersionDiffDialogComponent {
|
|
|
3770
3770
|
<button mcms-button variant="outline" [mcmsDialogClose]>Close</button>
|
|
3771
3771
|
</mcms-dialog-footer>
|
|
3772
3772
|
</mcms-dialog>
|
|
3773
|
-
`, isInline: true, dependencies: [{ kind: "component", type: Dialog, selector: "mcms-dialog", inputs: ["class"] }, { kind: "component", type: DialogHeader, selector: "mcms-dialog-header" }, { kind: "component", type: DialogTitle, selector: "mcms-dialog-title", inputs: ["id"] }, { kind: "component", type: DialogContent, selector: "mcms-dialog-content" }, { kind: "component", type: DialogFooter, selector: "mcms-dialog-footer" }, { kind: "directive", type: DialogClose, selector: "[mcmsDialogClose]", inputs: ["mcmsDialogClose"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Badge, selector: "mcms-badge", inputs: ["variant", "class", "ariaLabel"] }, { kind: "component", type: Skeleton, selector: "mcms-skeleton", inputs: ["class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3773
|
+
`, isInline: true, dependencies: [{ kind: "component", type: Dialog, selector: "mcms-dialog", inputs: ["class"] }, { kind: "component", type: DialogHeader, selector: "mcms-dialog-header" }, { kind: "component", type: DialogTitle, selector: "mcms-dialog-title", inputs: ["id"] }, { kind: "component", type: DialogContent, selector: "mcms-dialog-content" }, { kind: "component", type: DialogFooter, selector: "mcms-dialog-footer" }, { kind: "directive", type: DialogClose, selector: "[mcmsDialogClose]", inputs: ["mcmsDialogClose"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Badge, selector: "mcms-badge", inputs: ["variant", "class", "role", "ariaLabel"] }, { kind: "component", type: Skeleton, selector: "mcms-skeleton", inputs: ["class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3774
3774
|
}
|
|
3775
3775
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: VersionDiffDialogComponent, decorators: [{
|
|
3776
3776
|
type: Component,
|
|
@@ -4032,7 +4032,7 @@ class VersionHistoryWidget {
|
|
|
4032
4032
|
}
|
|
4033
4033
|
</div>
|
|
4034
4034
|
} @else if (error()) {
|
|
4035
|
-
<p class="text-sm text-destructive">{{ error() }}</p>
|
|
4035
|
+
<p class="text-sm text-destructive" role="alert">{{ error() }}</p>
|
|
4036
4036
|
} @else if (versions().length === 0) {
|
|
4037
4037
|
<p class="text-sm text-muted-foreground">No version history available</p>
|
|
4038
4038
|
} @else {
|
|
@@ -4074,6 +4074,9 @@ class VersionHistoryWidget {
|
|
|
4074
4074
|
variant="outline"
|
|
4075
4075
|
size="sm"
|
|
4076
4076
|
[disabled]="isRestoring()"
|
|
4077
|
+
[attr.aria-label]="
|
|
4078
|
+
'Restore version from ' + (version.createdAt | date: 'medium')
|
|
4079
|
+
"
|
|
4077
4080
|
(click)="onRestore(version)"
|
|
4078
4081
|
>
|
|
4079
4082
|
@if (isRestoring() && restoringVersionId() === version.id) {
|
|
@@ -4108,7 +4111,7 @@ class VersionHistoryWidget {
|
|
|
4108
4111
|
}
|
|
4109
4112
|
</mcms-card-content>
|
|
4110
4113
|
</mcms-card>
|
|
4111
|
-
`, isInline: true, dependencies: [{ kind: "component", type: Badge, selector: "mcms-badge", inputs: ["variant", "class", "ariaLabel"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Skeleton, selector: "mcms-skeleton", inputs: ["class"] }, { kind: "component", type: Card, selector: "mcms-card" }, { kind: "component", type: CardHeader, selector: "mcms-card-header" }, { kind: "component", type: CardContent, selector: "mcms-card-content" }, { kind: "component", type: Separator, selector: "mcms-separator", inputs: ["orientation", "decorative", "class"] }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4114
|
+
`, isInline: true, dependencies: [{ kind: "component", type: Badge, selector: "mcms-badge", inputs: ["variant", "class", "role", "ariaLabel"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Skeleton, selector: "mcms-skeleton", inputs: ["class"] }, { kind: "component", type: Card, selector: "mcms-card" }, { kind: "component", type: CardHeader, selector: "mcms-card-header" }, { kind: "component", type: CardContent, selector: "mcms-card-content" }, { kind: "component", type: Separator, selector: "mcms-separator", inputs: ["orientation", "decorative", "class"] }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4112
4115
|
}
|
|
4113
4116
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: VersionHistoryWidget, decorators: [{
|
|
4114
4117
|
type: Component,
|
|
@@ -4136,7 +4139,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
4136
4139
|
}
|
|
4137
4140
|
</div>
|
|
4138
4141
|
} @else if (error()) {
|
|
4139
|
-
<p class="text-sm text-destructive">{{ error() }}</p>
|
|
4142
|
+
<p class="text-sm text-destructive" role="alert">{{ error() }}</p>
|
|
4140
4143
|
} @else if (versions().length === 0) {
|
|
4141
4144
|
<p class="text-sm text-muted-foreground">No version history available</p>
|
|
4142
4145
|
} @else {
|
|
@@ -4178,6 +4181,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
4178
4181
|
variant="outline"
|
|
4179
4182
|
size="sm"
|
|
4180
4183
|
[disabled]="isRestoring()"
|
|
4184
|
+
[attr.aria-label]="
|
|
4185
|
+
'Restore version from ' + (version.createdAt | date: 'medium')
|
|
4186
|
+
"
|
|
4181
4187
|
(click)="onRestore(version)"
|
|
4182
4188
|
>
|
|
4183
4189
|
@if (isRestoring() && restoringVersionId() === version.id) {
|
|
@@ -4692,7 +4698,7 @@ class CollectionUploadZoneComponent {
|
|
|
4692
4698
|
@if (error()) {
|
|
4693
4699
|
<p class="mt-1 text-sm text-mcms-destructive">{{ error() }}</p>
|
|
4694
4700
|
}
|
|
4695
|
-
`, isInline: true, dependencies: [{ kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Progress, selector: "mcms-progress", inputs: ["value", "max", "class"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: MediaPreviewComponent, selector: "mcms-media-preview", inputs: ["media", "size", "class", "rounded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4701
|
+
`, isInline: true, dependencies: [{ kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Progress, selector: "mcms-progress", inputs: ["value", "max", "ariaLabel", "class"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: MediaPreviewComponent, selector: "mcms-media-preview", inputs: ["media", "size", "class", "rounded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4696
4702
|
}
|
|
4697
4703
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: CollectionUploadZoneComponent, decorators: [{
|
|
4698
4704
|
type: Component,
|
|
@@ -5194,13 +5200,12 @@ class EntityFormWidget {
|
|
|
5194
5200
|
* Extract the `id` property from any upload field values that are objects.
|
|
5195
5201
|
*/
|
|
5196
5202
|
normalizeUploadFieldValues(data) {
|
|
5197
|
-
const fields = this.collection().fields;
|
|
5203
|
+
const fields = flattenDataFields(this.collection().fields);
|
|
5198
5204
|
const result = { ...data };
|
|
5199
5205
|
for (const field of fields) {
|
|
5200
5206
|
if (field.type === 'upload' && result[field.name] != null) {
|
|
5201
5207
|
const val = result[field.name];
|
|
5202
5208
|
if (typeof val === 'object' && val !== null) {
|
|
5203
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
5204
5209
|
const obj = val; // eslint-disable-line @typescript-eslint/consistent-type-assertions
|
|
5205
5210
|
if (typeof obj['id'] === 'string') {
|
|
5206
5211
|
result[field.name] = obj['id'];
|
|
@@ -5224,8 +5229,14 @@ class EntityFormWidget {
|
|
|
5224
5229
|
// Convert form data to string fields for FormData
|
|
5225
5230
|
// Exclude auto-populated file metadata fields (they come from the server)
|
|
5226
5231
|
const excludeFields = new Set([
|
|
5227
|
-
'filename',
|
|
5228
|
-
'
|
|
5232
|
+
'filename',
|
|
5233
|
+
'mimeType',
|
|
5234
|
+
'filesize',
|
|
5235
|
+
'path',
|
|
5236
|
+
'url',
|
|
5237
|
+
'id',
|
|
5238
|
+
'createdAt',
|
|
5239
|
+
'updatedAt',
|
|
5229
5240
|
]);
|
|
5230
5241
|
const fields = {};
|
|
5231
5242
|
for (const [key, value] of Object.entries(data)) {
|
|
@@ -5235,7 +5246,6 @@ class EntityFormWidget {
|
|
|
5235
5246
|
continue;
|
|
5236
5247
|
if (typeof value === 'object') {
|
|
5237
5248
|
// Skip empty objects/arrays; serialize non-empty ones as JSON
|
|
5238
|
-
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
5239
5249
|
const isEmptyObject = !Array.isArray(value) && Object.keys(value).length === 0;
|
|
5240
5250
|
if ((Array.isArray(value) && value.length === 0) || isEmptyObject)
|
|
5241
5251
|
continue;
|
|
@@ -5773,7 +5783,7 @@ class PublishControlsWidget {
|
|
|
5773
5783
|
}
|
|
5774
5784
|
</button>
|
|
5775
5785
|
}
|
|
5776
|
-
`, isInline: true, dependencies: [{ kind: "component", type: Badge, selector: "mcms-badge", inputs: ["variant", "class", "ariaLabel"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5786
|
+
`, isInline: true, dependencies: [{ kind: "component", type: Badge, selector: "mcms-badge", inputs: ["variant", "class", "role", "ariaLabel"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5777
5787
|
}
|
|
5778
5788
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: PublishControlsWidget, decorators: [{
|
|
5779
5789
|
type: Component,
|
|
@@ -5890,11 +5900,12 @@ class EntityViewWidget {
|
|
|
5890
5900
|
}
|
|
5891
5901
|
return `${this.collectionLabelSingular()} ${e.id}`;
|
|
5892
5902
|
}, ...(ngDevMode ? [{ debugName: "entityTitle" }] : []));
|
|
5893
|
-
/** Visible fields (excluding hidden ones) */
|
|
5903
|
+
/** Visible fields (excluding hidden ones, flattening layout wrappers) */
|
|
5894
5904
|
visibleFields = computed(() => {
|
|
5895
5905
|
const col = this.collection();
|
|
5896
5906
|
const configs = this.fieldConfigs();
|
|
5897
|
-
|
|
5907
|
+
const dataFields = flattenDataFields(col.fields);
|
|
5908
|
+
return dataFields.filter((field) => {
|
|
5898
5909
|
// Check custom config
|
|
5899
5910
|
const config = configs.find((c) => c.field === field.name);
|
|
5900
5911
|
if (config?.hidden)
|
|
@@ -6221,7 +6232,7 @@ class EntityViewWidget {
|
|
|
6221
6232
|
* Resolve relationship and upload field values from IDs to display labels.
|
|
6222
6233
|
*/
|
|
6223
6234
|
resolveRelationships(entity) {
|
|
6224
|
-
const fields = this.collection().fields;
|
|
6235
|
+
const fields = flattenDataFields(this.collection().fields);
|
|
6225
6236
|
const resolved = new Map();
|
|
6226
6237
|
const promises = [];
|
|
6227
6238
|
for (const field of fields) {
|
|
@@ -6998,6 +7009,9 @@ class AdminSidebarWidget {
|
|
|
6998
7009
|
heroDocumentText,
|
|
6999
7010
|
heroCog6Tooth,
|
|
7000
7011
|
heroPuzzlePiece,
|
|
7012
|
+
heroMagnifyingGlass,
|
|
7013
|
+
heroMap,
|
|
7014
|
+
heroCursorArrowRays,
|
|
7001
7015
|
}),
|
|
7002
7016
|
], ngImport: i0, template: `
|
|
7003
7017
|
<mcms-sidebar [collapsed]="collapsed()" [width]="width()">
|
|
@@ -7165,6 +7179,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
7165
7179
|
heroDocumentText,
|
|
7166
7180
|
heroCog6Tooth,
|
|
7167
7181
|
heroPuzzlePiece,
|
|
7182
|
+
heroMagnifyingGlass,
|
|
7183
|
+
heroMap,
|
|
7184
|
+
heroCursorArrowRays,
|
|
7168
7185
|
}),
|
|
7169
7186
|
],
|
|
7170
7187
|
host: {
|
|
@@ -7740,7 +7757,7 @@ class ForgotPasswordFormComponent {
|
|
|
7740
7757
|
</button>
|
|
7741
7758
|
</div>
|
|
7742
7759
|
</form>
|
|
7743
|
-
`, isInline: true, dependencies: [{ kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: McmsFormField, selector: "mcms-form-field", inputs: ["id", "required", "disabled", "errors", "hint", "hasLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7760
|
+
`, isInline: true, dependencies: [{ kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "ariaLabel", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: McmsFormField, selector: "mcms-form-field", inputs: ["id", "required", "disabled", "errors", "hint", "hasLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7744
7761
|
}
|
|
7745
7762
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ForgotPasswordFormComponent, decorators: [{
|
|
7746
7763
|
type: Component,
|
|
@@ -8051,7 +8068,7 @@ class ResetPasswordFormComponent {
|
|
|
8051
8068
|
}
|
|
8052
8069
|
}
|
|
8053
8070
|
</form>
|
|
8054
|
-
`, isInline: true, dependencies: [{ kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: McmsFormField, selector: "mcms-form-field", inputs: ["id", "required", "disabled", "errors", "hint", "hasLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8071
|
+
`, isInline: true, dependencies: [{ kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "ariaLabel", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: McmsFormField, selector: "mcms-form-field", inputs: ["id", "required", "disabled", "errors", "hint", "hasLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8055
8072
|
}
|
|
8056
8073
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ResetPasswordFormComponent, decorators: [{
|
|
8057
8074
|
type: Component,
|
|
@@ -8282,7 +8299,7 @@ class CollectionCardWidget {
|
|
|
8282
8299
|
<a mcms-button variant="outline" size="sm" [routerLink]="viewPath()"> View all </a>
|
|
8283
8300
|
</mcms-card-footer>
|
|
8284
8301
|
</mcms-card>
|
|
8285
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: Card, selector: "mcms-card" }, { kind: "component", type: CardHeader, selector: "mcms-card-header" }, { kind: "component", type: CardContent, selector: "mcms-card-content" }, { kind: "component", type: CardFooter, selector: "mcms-card-footer" }, { kind: "component", type: Badge, selector: "mcms-badge", inputs: ["variant", "class", "ariaLabel"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Skeleton, selector: "mcms-skeleton", inputs: ["class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8302
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: Card, selector: "mcms-card" }, { kind: "component", type: CardHeader, selector: "mcms-card-header" }, { kind: "component", type: CardContent, selector: "mcms-card-content" }, { kind: "component", type: CardFooter, selector: "mcms-card-footer" }, { kind: "component", type: Badge, selector: "mcms-badge", inputs: ["variant", "class", "role", "ariaLabel"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Skeleton, selector: "mcms-skeleton", inputs: ["class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8286
8303
|
}
|
|
8287
8304
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: CollectionCardWidget, decorators: [{
|
|
8288
8305
|
type: Component,
|
|
@@ -8685,11 +8702,12 @@ class EntityListWidget {
|
|
|
8685
8702
|
if (customColumns.length > 0) {
|
|
8686
8703
|
return customColumns;
|
|
8687
8704
|
}
|
|
8688
|
-
// Auto-derive from collection fields
|
|
8705
|
+
// Auto-derive from collection fields (flatten layout wrappers like tabs/collapsible/row)
|
|
8689
8706
|
const col = this.collection();
|
|
8690
8707
|
const columns = [];
|
|
8708
|
+
const dataFields = flattenDataFields(col.fields);
|
|
8691
8709
|
// Add first text/title-like field as primary column
|
|
8692
|
-
for (const field of
|
|
8710
|
+
for (const field of dataFields) {
|
|
8693
8711
|
if (this.shouldShowFieldInList(field)) {
|
|
8694
8712
|
columns.push(this.fieldToColumn(field, complexTemplate));
|
|
8695
8713
|
}
|
|
@@ -8839,7 +8857,8 @@ class EntityListWidget {
|
|
|
8839
8857
|
getDefaultSearchFields() {
|
|
8840
8858
|
const col = this.collection();
|
|
8841
8859
|
const fields = [];
|
|
8842
|
-
|
|
8860
|
+
const dataFields = flattenDataFields(col.fields);
|
|
8861
|
+
for (const field of dataFields) {
|
|
8843
8862
|
if (field.type === 'text' || field.type === 'textarea' || field.type === 'email') {
|
|
8844
8863
|
fields.push(field.name);
|
|
8845
8864
|
if (fields.length >= 3)
|
|
@@ -8855,6 +8874,9 @@ class EntityListWidget {
|
|
|
8855
8874
|
// Skip hidden fields
|
|
8856
8875
|
if (field.admin?.hidden)
|
|
8857
8876
|
return false;
|
|
8877
|
+
// Skip layout fields (tabs, collapsible, row) — these are handled by flattenDataFields
|
|
8878
|
+
if (field.type === 'tabs' || field.type === 'collapsible' || field.type === 'row')
|
|
8879
|
+
return false;
|
|
8858
8880
|
// Skip blocks (too complex for table cells)
|
|
8859
8881
|
if (field.type === 'blocks')
|
|
8860
8882
|
return false;
|
|
@@ -9257,7 +9279,7 @@ class EntityListWidget {
|
|
|
9257
9279
|
}
|
|
9258
9280
|
</div>
|
|
9259
9281
|
</ng-template>
|
|
9260
|
-
`, isInline: true, dependencies: [{ kind: "component", type: DataTable, selector: "mcms-data-table", inputs: ["data", "columns", "loading", "searchable", "searchPlaceholder", "searchFields", "sortable", "sort", "selectable", "selectedItems", "paginated", "pageSize", "pageSizeOptions", "currentPage", "totalItems", "emptyTitle", "emptyDescription", "clickableRows", "rowActions", "trackByFn", "class", "searchQuery"], outputs: ["sortChange", "selectedItemsChange", "currentPageChange", "searchChange", "selectionChange", "pageChange", "pageSizeChange", "rowClick", "rowAction", "searchQueryChange"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Badge, selector: "mcms-badge", inputs: ["variant", "class", "ariaLabel"] }, { kind: "component", type: Breadcrumbs, selector: "mcms-breadcrumbs", inputs: ["class"] }, { kind: "component", type: BreadcrumbItem, selector: "mcms-breadcrumb-item", inputs: ["href", "current", "class"] }, { kind: "component", type: BreadcrumbSeparator, selector: "mcms-breadcrumb-separator", inputs: ["class"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
9282
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DataTable, selector: "mcms-data-table", inputs: ["data", "columns", "loading", "searchable", "searchPlaceholder", "searchFields", "sortable", "sort", "selectable", "selectedItems", "paginated", "pageSize", "pageSizeOptions", "currentPage", "totalItems", "emptyTitle", "emptyDescription", "clickableRows", "rowActions", "trackByFn", "class", "searchQuery"], outputs: ["sortChange", "selectedItemsChange", "currentPageChange", "searchChange", "selectionChange", "pageChange", "pageSizeChange", "rowClick", "rowAction", "searchQueryChange"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Badge, selector: "mcms-badge", inputs: ["variant", "class", "role", "ariaLabel"] }, { kind: "component", type: Breadcrumbs, selector: "mcms-breadcrumbs", inputs: ["class"] }, { kind: "component", type: BreadcrumbItem, selector: "mcms-breadcrumb-item", inputs: ["href", "current", "class"] }, { kind: "component", type: BreadcrumbSeparator, selector: "mcms-breadcrumb-separator", inputs: ["class"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
9261
9283
|
}
|
|
9262
9284
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: EntityListWidget, decorators: [{
|
|
9263
9285
|
type: Component,
|
|
@@ -9564,7 +9586,7 @@ class GenerateApiKeyDialog {
|
|
|
9564
9586
|
}
|
|
9565
9587
|
</mcms-dialog-footer>
|
|
9566
9588
|
</mcms-dialog>
|
|
9567
|
-
`, isInline: true, dependencies: [{ kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Dialog, selector: "mcms-dialog", inputs: ["class"] }, { kind: "component", type: DialogHeader, selector: "mcms-dialog-header" }, { kind: "component", type: DialogTitle, selector: "mcms-dialog-title", inputs: ["id"] }, { kind: "component", type: DialogContent, selector: "mcms-dialog-content" }, { kind: "component", type: DialogFooter, selector: "mcms-dialog-footer" }, { kind: "directive", type: DialogClose, selector: "[mcmsDialogClose]", inputs: ["mcmsDialogClose"] }, { kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }, { kind: "component", type: Label, selector: "mcms-label", inputs: ["for", "required", "disabled", "class"] }, { kind: "component", type: Select, selector: "mcms-select", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "id", "name", "placeholder", "options", "describedBy", "ariaLabel"], outputs: ["valueChange", "blurred"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
9589
|
+
`, isInline: true, dependencies: [{ kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Dialog, selector: "mcms-dialog", inputs: ["class"] }, { kind: "component", type: DialogHeader, selector: "mcms-dialog-header" }, { kind: "component", type: DialogTitle, selector: "mcms-dialog-title", inputs: ["id"] }, { kind: "component", type: DialogContent, selector: "mcms-dialog-content" }, { kind: "component", type: DialogFooter, selector: "mcms-dialog-footer" }, { kind: "directive", type: DialogClose, selector: "[mcmsDialogClose]", inputs: ["mcmsDialogClose"] }, { kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "ariaLabel", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }, { kind: "component", type: Label, selector: "mcms-label", inputs: ["for", "required", "disabled", "class"] }, { kind: "component", type: Select, selector: "mcms-select", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "id", "name", "placeholder", "options", "describedBy", "ariaLabel"], outputs: ["valueChange", "blurred"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
9568
9590
|
}
|
|
9569
9591
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: GenerateApiKeyDialog, decorators: [{
|
|
9570
9592
|
type: Component,
|
|
@@ -10672,144 +10694,146 @@ class LoginPage {
|
|
|
10672
10694
|
}
|
|
10673
10695
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: LoginPage, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10674
10696
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: LoginPage, isStandalone: true, selector: "mcms-login-page", host: { classAttribute: "flex min-h-screen items-center justify-center bg-background p-4" }, ngImport: i0, template: `
|
|
10675
|
-
<
|
|
10676
|
-
<mcms-card
|
|
10677
|
-
<mcms-card-
|
|
10678
|
-
|
|
10679
|
-
|
|
10680
|
-
|
|
10681
|
-
|
|
10697
|
+
<main>
|
|
10698
|
+
<mcms-card class="w-full max-w-md">
|
|
10699
|
+
<mcms-card-header class="text-center">
|
|
10700
|
+
<mcms-card-title>Sign In</mcms-card-title>
|
|
10701
|
+
<mcms-card-description>
|
|
10702
|
+
Enter your credentials to access the admin dashboard
|
|
10703
|
+
</mcms-card-description>
|
|
10704
|
+
</mcms-card-header>
|
|
10682
10705
|
|
|
10683
|
-
|
|
10684
|
-
|
|
10685
|
-
|
|
10686
|
-
|
|
10687
|
-
|
|
10688
|
-
|
|
10689
|
-
|
|
10690
|
-
|
|
10691
|
-
|
|
10692
|
-
|
|
10693
|
-
|
|
10706
|
+
<mcms-card-content>
|
|
10707
|
+
<form (submit)="onSubmit($event)" class="space-y-4">
|
|
10708
|
+
@if (error()) {
|
|
10709
|
+
<div
|
|
10710
|
+
class="rounded-md bg-destructive/15 p-3 text-sm text-destructive"
|
|
10711
|
+
role="alert"
|
|
10712
|
+
aria-live="polite"
|
|
10713
|
+
>
|
|
10714
|
+
{{ error() }}
|
|
10715
|
+
</div>
|
|
10716
|
+
}
|
|
10694
10717
|
|
|
10695
|
-
|
|
10696
|
-
|
|
10697
|
-
|
|
10698
|
-
|
|
10699
|
-
|
|
10700
|
-
|
|
10701
|
-
|
|
10702
|
-
|
|
10703
|
-
|
|
10704
|
-
|
|
10705
|
-
|
|
10706
|
-
|
|
10718
|
+
<mcms-form-field id="login-email" [required]="true" [errors]="emailErrors()">
|
|
10719
|
+
<span mcmsLabel>Email</span>
|
|
10720
|
+
<mcms-input
|
|
10721
|
+
type="email"
|
|
10722
|
+
id="login-email"
|
|
10723
|
+
name="email"
|
|
10724
|
+
[(value)]="email"
|
|
10725
|
+
placeholder="admin@example.com"
|
|
10726
|
+
autocomplete="email"
|
|
10727
|
+
[disabled]="!hydrated() || isSubmitting()"
|
|
10728
|
+
/>
|
|
10729
|
+
</mcms-form-field>
|
|
10707
10730
|
|
|
10708
|
-
|
|
10709
|
-
|
|
10710
|
-
|
|
10711
|
-
|
|
10712
|
-
|
|
10713
|
-
|
|
10714
|
-
|
|
10715
|
-
|
|
10716
|
-
|
|
10717
|
-
|
|
10718
|
-
|
|
10719
|
-
|
|
10731
|
+
<mcms-form-field id="login-password" [required]="true" [errors]="passwordErrors()">
|
|
10732
|
+
<span mcmsLabel>Password</span>
|
|
10733
|
+
<mcms-input
|
|
10734
|
+
type="password"
|
|
10735
|
+
id="login-password"
|
|
10736
|
+
name="password"
|
|
10737
|
+
[(value)]="password"
|
|
10738
|
+
placeholder="Enter your password"
|
|
10739
|
+
autocomplete="current-password"
|
|
10740
|
+
[disabled]="!hydrated() || isSubmitting()"
|
|
10741
|
+
/>
|
|
10742
|
+
</mcms-form-field>
|
|
10720
10743
|
|
|
10721
|
-
|
|
10722
|
-
|
|
10723
|
-
|
|
10724
|
-
|
|
10725
|
-
|
|
10744
|
+
<div class="flex justify-end">
|
|
10745
|
+
<a routerLink="/admin/forgot-password" class="text-sm text-primary hover:underline">
|
|
10746
|
+
Forgot your password?
|
|
10747
|
+
</a>
|
|
10748
|
+
</div>
|
|
10726
10749
|
|
|
10727
|
-
|
|
10728
|
-
|
|
10729
|
-
|
|
10730
|
-
|
|
10731
|
-
|
|
10732
|
-
|
|
10733
|
-
|
|
10734
|
-
|
|
10735
|
-
|
|
10736
|
-
|
|
10737
|
-
|
|
10738
|
-
|
|
10739
|
-
|
|
10740
|
-
|
|
10750
|
+
<button
|
|
10751
|
+
mcms-button
|
|
10752
|
+
type="submit"
|
|
10753
|
+
class="w-full"
|
|
10754
|
+
[disabled]="!hydrated() || isSubmitting() || !isValid()"
|
|
10755
|
+
>
|
|
10756
|
+
@if (isSubmitting()) {
|
|
10757
|
+
<span class="animate-spin" aria-hidden="true">⏳</span>
|
|
10758
|
+
Signing in...
|
|
10759
|
+
} @else {
|
|
10760
|
+
Sign In
|
|
10761
|
+
}
|
|
10762
|
+
</button>
|
|
10763
|
+
</form>
|
|
10741
10764
|
|
|
10742
|
-
|
|
10743
|
-
|
|
10744
|
-
|
|
10745
|
-
|
|
10746
|
-
|
|
10747
|
-
|
|
10748
|
-
|
|
10765
|
+
@if (oauthProviders().length > 0) {
|
|
10766
|
+
<div class="relative my-4">
|
|
10767
|
+
<div class="absolute inset-0 flex items-center">
|
|
10768
|
+
<span class="w-full border-t border-border"></span>
|
|
10769
|
+
</div>
|
|
10770
|
+
<div class="relative flex justify-center text-xs uppercase">
|
|
10771
|
+
<span class="bg-card px-2 text-muted-foreground">Or continue with</span>
|
|
10772
|
+
</div>
|
|
10749
10773
|
</div>
|
|
10750
|
-
</div>
|
|
10751
10774
|
|
|
10752
|
-
|
|
10753
|
-
|
|
10754
|
-
|
|
10755
|
-
|
|
10756
|
-
|
|
10757
|
-
|
|
10758
|
-
|
|
10759
|
-
|
|
10760
|
-
|
|
10761
|
-
|
|
10762
|
-
|
|
10763
|
-
|
|
10764
|
-
|
|
10765
|
-
|
|
10766
|
-
|
|
10767
|
-
|
|
10768
|
-
|
|
10769
|
-
|
|
10770
|
-
|
|
10771
|
-
|
|
10772
|
-
|
|
10773
|
-
|
|
10774
|
-
|
|
10775
|
-
|
|
10776
|
-
|
|
10777
|
-
|
|
10778
|
-
|
|
10779
|
-
|
|
10780
|
-
|
|
10781
|
-
|
|
10782
|
-
|
|
10783
|
-
|
|
10784
|
-
|
|
10785
|
-
|
|
10786
|
-
|
|
10787
|
-
|
|
10788
|
-
|
|
10789
|
-
|
|
10790
|
-
|
|
10791
|
-
|
|
10792
|
-
|
|
10793
|
-
|
|
10794
|
-
|
|
10795
|
-
|
|
10796
|
-
|
|
10797
|
-
|
|
10798
|
-
|
|
10799
|
-
|
|
10775
|
+
<div class="flex flex-col gap-2">
|
|
10776
|
+
@for (provider of oauthProviders(); track provider) {
|
|
10777
|
+
<button
|
|
10778
|
+
mcms-button
|
|
10779
|
+
type="button"
|
|
10780
|
+
variant="outline"
|
|
10781
|
+
class="w-full"
|
|
10782
|
+
(click)="signInWithOAuth(provider)"
|
|
10783
|
+
[disabled]="!hydrated() || isSubmitting()"
|
|
10784
|
+
[attr.data-provider]="provider"
|
|
10785
|
+
>
|
|
10786
|
+
@switch (provider) {
|
|
10787
|
+
@case ('google') {
|
|
10788
|
+
<svg class="mr-2 h-4 w-4" viewBox="0 0 24 24" aria-hidden="true">
|
|
10789
|
+
<path
|
|
10790
|
+
d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z"
|
|
10791
|
+
fill="#4285F4"
|
|
10792
|
+
/>
|
|
10793
|
+
<path
|
|
10794
|
+
d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"
|
|
10795
|
+
fill="#34A853"
|
|
10796
|
+
/>
|
|
10797
|
+
<path
|
|
10798
|
+
d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"
|
|
10799
|
+
fill="#FBBC05"
|
|
10800
|
+
/>
|
|
10801
|
+
<path
|
|
10802
|
+
d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"
|
|
10803
|
+
fill="#EA4335"
|
|
10804
|
+
/>
|
|
10805
|
+
</svg>
|
|
10806
|
+
Continue with Google
|
|
10807
|
+
}
|
|
10808
|
+
@case ('github') {
|
|
10809
|
+
<svg
|
|
10810
|
+
class="mr-2 h-4 w-4"
|
|
10811
|
+
viewBox="0 0 24 24"
|
|
10812
|
+
fill="currentColor"
|
|
10813
|
+
aria-hidden="true"
|
|
10814
|
+
>
|
|
10815
|
+
<path
|
|
10816
|
+
d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z"
|
|
10817
|
+
/>
|
|
10818
|
+
</svg>
|
|
10819
|
+
Continue with GitHub
|
|
10820
|
+
}
|
|
10821
|
+
@default {
|
|
10822
|
+
Continue with {{ provider }}
|
|
10823
|
+
}
|
|
10800
10824
|
}
|
|
10801
|
-
|
|
10802
|
-
|
|
10803
|
-
|
|
10804
|
-
|
|
10805
|
-
|
|
10806
|
-
</mcms-card-content>
|
|
10825
|
+
</button>
|
|
10826
|
+
}
|
|
10827
|
+
</div>
|
|
10828
|
+
}
|
|
10829
|
+
</mcms-card-content>
|
|
10807
10830
|
|
|
10808
|
-
|
|
10809
|
-
|
|
10810
|
-
|
|
10811
|
-
|
|
10812
|
-
|
|
10831
|
+
<mcms-card-footer class="justify-center">
|
|
10832
|
+
<p class="text-sm text-muted-foreground">Momentum CMS</p>
|
|
10833
|
+
</mcms-card-footer>
|
|
10834
|
+
</mcms-card>
|
|
10835
|
+
</main>
|
|
10836
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "ariaLabel", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: McmsFormField, selector: "mcms-form-field", inputs: ["id", "required", "disabled", "errors", "hint", "hasLabel"] }, { kind: "component", type: Card, selector: "mcms-card" }, { kind: "component", type: CardHeader, selector: "mcms-card-header" }, { kind: "component", type: CardTitle, selector: "mcms-card-title", inputs: ["level"] }, { kind: "component", type: CardDescription, selector: "mcms-card-description" }, { kind: "component", type: CardContent, selector: "mcms-card-content" }, { kind: "component", type: CardFooter, selector: "mcms-card-footer" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10813
10837
|
}
|
|
10814
10838
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: LoginPage, decorators: [{
|
|
10815
10839
|
type: Component,
|
|
@@ -10832,143 +10856,145 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
10832
10856
|
class: 'flex min-h-screen items-center justify-center bg-background p-4',
|
|
10833
10857
|
},
|
|
10834
10858
|
template: `
|
|
10835
|
-
<
|
|
10836
|
-
<mcms-card
|
|
10837
|
-
<mcms-card-
|
|
10838
|
-
|
|
10839
|
-
|
|
10840
|
-
|
|
10841
|
-
|
|
10859
|
+
<main>
|
|
10860
|
+
<mcms-card class="w-full max-w-md">
|
|
10861
|
+
<mcms-card-header class="text-center">
|
|
10862
|
+
<mcms-card-title>Sign In</mcms-card-title>
|
|
10863
|
+
<mcms-card-description>
|
|
10864
|
+
Enter your credentials to access the admin dashboard
|
|
10865
|
+
</mcms-card-description>
|
|
10866
|
+
</mcms-card-header>
|
|
10842
10867
|
|
|
10843
|
-
|
|
10844
|
-
|
|
10845
|
-
|
|
10846
|
-
|
|
10847
|
-
|
|
10848
|
-
|
|
10849
|
-
|
|
10850
|
-
|
|
10851
|
-
|
|
10852
|
-
|
|
10853
|
-
|
|
10868
|
+
<mcms-card-content>
|
|
10869
|
+
<form (submit)="onSubmit($event)" class="space-y-4">
|
|
10870
|
+
@if (error()) {
|
|
10871
|
+
<div
|
|
10872
|
+
class="rounded-md bg-destructive/15 p-3 text-sm text-destructive"
|
|
10873
|
+
role="alert"
|
|
10874
|
+
aria-live="polite"
|
|
10875
|
+
>
|
|
10876
|
+
{{ error() }}
|
|
10877
|
+
</div>
|
|
10878
|
+
}
|
|
10854
10879
|
|
|
10855
|
-
|
|
10856
|
-
|
|
10857
|
-
|
|
10858
|
-
|
|
10859
|
-
|
|
10860
|
-
|
|
10861
|
-
|
|
10862
|
-
|
|
10863
|
-
|
|
10864
|
-
|
|
10865
|
-
|
|
10866
|
-
|
|
10880
|
+
<mcms-form-field id="login-email" [required]="true" [errors]="emailErrors()">
|
|
10881
|
+
<span mcmsLabel>Email</span>
|
|
10882
|
+
<mcms-input
|
|
10883
|
+
type="email"
|
|
10884
|
+
id="login-email"
|
|
10885
|
+
name="email"
|
|
10886
|
+
[(value)]="email"
|
|
10887
|
+
placeholder="admin@example.com"
|
|
10888
|
+
autocomplete="email"
|
|
10889
|
+
[disabled]="!hydrated() || isSubmitting()"
|
|
10890
|
+
/>
|
|
10891
|
+
</mcms-form-field>
|
|
10867
10892
|
|
|
10868
|
-
|
|
10869
|
-
|
|
10870
|
-
|
|
10871
|
-
|
|
10872
|
-
|
|
10873
|
-
|
|
10874
|
-
|
|
10875
|
-
|
|
10876
|
-
|
|
10877
|
-
|
|
10878
|
-
|
|
10879
|
-
|
|
10893
|
+
<mcms-form-field id="login-password" [required]="true" [errors]="passwordErrors()">
|
|
10894
|
+
<span mcmsLabel>Password</span>
|
|
10895
|
+
<mcms-input
|
|
10896
|
+
type="password"
|
|
10897
|
+
id="login-password"
|
|
10898
|
+
name="password"
|
|
10899
|
+
[(value)]="password"
|
|
10900
|
+
placeholder="Enter your password"
|
|
10901
|
+
autocomplete="current-password"
|
|
10902
|
+
[disabled]="!hydrated() || isSubmitting()"
|
|
10903
|
+
/>
|
|
10904
|
+
</mcms-form-field>
|
|
10880
10905
|
|
|
10881
|
-
|
|
10882
|
-
|
|
10883
|
-
|
|
10884
|
-
|
|
10885
|
-
|
|
10906
|
+
<div class="flex justify-end">
|
|
10907
|
+
<a routerLink="/admin/forgot-password" class="text-sm text-primary hover:underline">
|
|
10908
|
+
Forgot your password?
|
|
10909
|
+
</a>
|
|
10910
|
+
</div>
|
|
10886
10911
|
|
|
10887
|
-
|
|
10888
|
-
|
|
10889
|
-
|
|
10890
|
-
|
|
10891
|
-
|
|
10892
|
-
|
|
10893
|
-
|
|
10894
|
-
|
|
10895
|
-
|
|
10896
|
-
|
|
10897
|
-
|
|
10898
|
-
|
|
10899
|
-
|
|
10900
|
-
|
|
10912
|
+
<button
|
|
10913
|
+
mcms-button
|
|
10914
|
+
type="submit"
|
|
10915
|
+
class="w-full"
|
|
10916
|
+
[disabled]="!hydrated() || isSubmitting() || !isValid()"
|
|
10917
|
+
>
|
|
10918
|
+
@if (isSubmitting()) {
|
|
10919
|
+
<span class="animate-spin" aria-hidden="true">⏳</span>
|
|
10920
|
+
Signing in...
|
|
10921
|
+
} @else {
|
|
10922
|
+
Sign In
|
|
10923
|
+
}
|
|
10924
|
+
</button>
|
|
10925
|
+
</form>
|
|
10901
10926
|
|
|
10902
|
-
|
|
10903
|
-
|
|
10904
|
-
|
|
10905
|
-
|
|
10906
|
-
|
|
10907
|
-
|
|
10908
|
-
|
|
10927
|
+
@if (oauthProviders().length > 0) {
|
|
10928
|
+
<div class="relative my-4">
|
|
10929
|
+
<div class="absolute inset-0 flex items-center">
|
|
10930
|
+
<span class="w-full border-t border-border"></span>
|
|
10931
|
+
</div>
|
|
10932
|
+
<div class="relative flex justify-center text-xs uppercase">
|
|
10933
|
+
<span class="bg-card px-2 text-muted-foreground">Or continue with</span>
|
|
10934
|
+
</div>
|
|
10909
10935
|
</div>
|
|
10910
|
-
</div>
|
|
10911
10936
|
|
|
10912
|
-
|
|
10913
|
-
|
|
10914
|
-
|
|
10915
|
-
|
|
10916
|
-
|
|
10917
|
-
|
|
10918
|
-
|
|
10919
|
-
|
|
10920
|
-
|
|
10921
|
-
|
|
10922
|
-
|
|
10923
|
-
|
|
10924
|
-
|
|
10925
|
-
|
|
10926
|
-
|
|
10927
|
-
|
|
10928
|
-
|
|
10929
|
-
|
|
10930
|
-
|
|
10931
|
-
|
|
10932
|
-
|
|
10933
|
-
|
|
10934
|
-
|
|
10935
|
-
|
|
10936
|
-
|
|
10937
|
-
|
|
10938
|
-
|
|
10939
|
-
|
|
10940
|
-
|
|
10941
|
-
|
|
10942
|
-
|
|
10943
|
-
|
|
10944
|
-
|
|
10945
|
-
|
|
10946
|
-
|
|
10947
|
-
|
|
10948
|
-
|
|
10949
|
-
|
|
10950
|
-
|
|
10951
|
-
|
|
10952
|
-
|
|
10953
|
-
|
|
10954
|
-
|
|
10955
|
-
|
|
10956
|
-
|
|
10957
|
-
|
|
10958
|
-
|
|
10959
|
-
|
|
10937
|
+
<div class="flex flex-col gap-2">
|
|
10938
|
+
@for (provider of oauthProviders(); track provider) {
|
|
10939
|
+
<button
|
|
10940
|
+
mcms-button
|
|
10941
|
+
type="button"
|
|
10942
|
+
variant="outline"
|
|
10943
|
+
class="w-full"
|
|
10944
|
+
(click)="signInWithOAuth(provider)"
|
|
10945
|
+
[disabled]="!hydrated() || isSubmitting()"
|
|
10946
|
+
[attr.data-provider]="provider"
|
|
10947
|
+
>
|
|
10948
|
+
@switch (provider) {
|
|
10949
|
+
@case ('google') {
|
|
10950
|
+
<svg class="mr-2 h-4 w-4" viewBox="0 0 24 24" aria-hidden="true">
|
|
10951
|
+
<path
|
|
10952
|
+
d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z"
|
|
10953
|
+
fill="#4285F4"
|
|
10954
|
+
/>
|
|
10955
|
+
<path
|
|
10956
|
+
d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"
|
|
10957
|
+
fill="#34A853"
|
|
10958
|
+
/>
|
|
10959
|
+
<path
|
|
10960
|
+
d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"
|
|
10961
|
+
fill="#FBBC05"
|
|
10962
|
+
/>
|
|
10963
|
+
<path
|
|
10964
|
+
d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"
|
|
10965
|
+
fill="#EA4335"
|
|
10966
|
+
/>
|
|
10967
|
+
</svg>
|
|
10968
|
+
Continue with Google
|
|
10969
|
+
}
|
|
10970
|
+
@case ('github') {
|
|
10971
|
+
<svg
|
|
10972
|
+
class="mr-2 h-4 w-4"
|
|
10973
|
+
viewBox="0 0 24 24"
|
|
10974
|
+
fill="currentColor"
|
|
10975
|
+
aria-hidden="true"
|
|
10976
|
+
>
|
|
10977
|
+
<path
|
|
10978
|
+
d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z"
|
|
10979
|
+
/>
|
|
10980
|
+
</svg>
|
|
10981
|
+
Continue with GitHub
|
|
10982
|
+
}
|
|
10983
|
+
@default {
|
|
10984
|
+
Continue with {{ provider }}
|
|
10985
|
+
}
|
|
10960
10986
|
}
|
|
10961
|
-
|
|
10962
|
-
|
|
10963
|
-
|
|
10964
|
-
|
|
10965
|
-
|
|
10966
|
-
</mcms-card-content>
|
|
10987
|
+
</button>
|
|
10988
|
+
}
|
|
10989
|
+
</div>
|
|
10990
|
+
}
|
|
10991
|
+
</mcms-card-content>
|
|
10967
10992
|
|
|
10968
|
-
|
|
10969
|
-
|
|
10970
|
-
|
|
10971
|
-
|
|
10993
|
+
<mcms-card-footer class="justify-center">
|
|
10994
|
+
<p class="text-sm text-muted-foreground">Momentum CMS</p>
|
|
10995
|
+
</mcms-card-footer>
|
|
10996
|
+
</mcms-card>
|
|
10997
|
+
</main>
|
|
10972
10998
|
`,
|
|
10973
10999
|
}]
|
|
10974
11000
|
}], ctorParameters: () => [] });
|
|
@@ -11089,101 +11115,103 @@ class SetupPage {
|
|
|
11089
11115
|
}
|
|
11090
11116
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SetupPage, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11091
11117
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: SetupPage, isStandalone: true, selector: "mcms-setup-page", host: { classAttribute: "flex min-h-screen items-center justify-center bg-background p-4" }, ngImport: i0, template: `
|
|
11092
|
-
<
|
|
11093
|
-
<mcms-card
|
|
11094
|
-
<mcms-card-
|
|
11095
|
-
|
|
11096
|
-
|
|
11118
|
+
<main>
|
|
11119
|
+
<mcms-card class="w-full max-w-md">
|
|
11120
|
+
<mcms-card-header class="text-center">
|
|
11121
|
+
<mcms-card-title>Welcome to Momentum CMS</mcms-card-title>
|
|
11122
|
+
<mcms-card-description> Create your admin account to get started </mcms-card-description>
|
|
11123
|
+
</mcms-card-header>
|
|
11097
11124
|
|
|
11098
|
-
|
|
11099
|
-
|
|
11100
|
-
|
|
11101
|
-
|
|
11102
|
-
|
|
11103
|
-
|
|
11104
|
-
|
|
11105
|
-
|
|
11106
|
-
|
|
11107
|
-
|
|
11108
|
-
|
|
11125
|
+
<mcms-card-content>
|
|
11126
|
+
<form (submit)="onSubmit($event)" class="space-y-4">
|
|
11127
|
+
@if (error()) {
|
|
11128
|
+
<div
|
|
11129
|
+
class="rounded-md bg-destructive/15 p-3 text-sm text-destructive"
|
|
11130
|
+
role="alert"
|
|
11131
|
+
aria-live="polite"
|
|
11132
|
+
>
|
|
11133
|
+
{{ error() }}
|
|
11134
|
+
</div>
|
|
11135
|
+
}
|
|
11109
11136
|
|
|
11110
|
-
|
|
11111
|
-
|
|
11112
|
-
|
|
11113
|
-
|
|
11114
|
-
|
|
11115
|
-
|
|
11116
|
-
|
|
11117
|
-
|
|
11118
|
-
|
|
11119
|
-
|
|
11120
|
-
|
|
11121
|
-
|
|
11137
|
+
<mcms-form-field id="setup-name" [required]="true" [errors]="nameErrors()">
|
|
11138
|
+
<span mcmsLabel>Full Name</span>
|
|
11139
|
+
<mcms-input
|
|
11140
|
+
type="text"
|
|
11141
|
+
id="setup-name"
|
|
11142
|
+
name="name"
|
|
11143
|
+
[(value)]="name"
|
|
11144
|
+
placeholder="Your name"
|
|
11145
|
+
autocomplete="name"
|
|
11146
|
+
[disabled]="!hydrated() || isSubmitting()"
|
|
11147
|
+
/>
|
|
11148
|
+
</mcms-form-field>
|
|
11122
11149
|
|
|
11123
|
-
|
|
11124
|
-
|
|
11125
|
-
|
|
11126
|
-
|
|
11127
|
-
|
|
11128
|
-
|
|
11129
|
-
|
|
11130
|
-
|
|
11131
|
-
|
|
11132
|
-
|
|
11133
|
-
|
|
11134
|
-
|
|
11150
|
+
<mcms-form-field id="setup-email" [required]="true" [errors]="emailErrors()">
|
|
11151
|
+
<span mcmsLabel>Email Address</span>
|
|
11152
|
+
<mcms-input
|
|
11153
|
+
type="email"
|
|
11154
|
+
id="setup-email"
|
|
11155
|
+
name="email"
|
|
11156
|
+
[(value)]="email"
|
|
11157
|
+
placeholder="admin@example.com"
|
|
11158
|
+
autocomplete="email"
|
|
11159
|
+
[disabled]="!hydrated() || isSubmitting()"
|
|
11160
|
+
/>
|
|
11161
|
+
</mcms-form-field>
|
|
11135
11162
|
|
|
11136
|
-
|
|
11137
|
-
|
|
11138
|
-
|
|
11139
|
-
|
|
11140
|
-
|
|
11141
|
-
|
|
11142
|
-
|
|
11143
|
-
|
|
11144
|
-
|
|
11145
|
-
|
|
11146
|
-
|
|
11147
|
-
|
|
11163
|
+
<mcms-form-field id="setup-password" [required]="true" [errors]="passwordErrors()">
|
|
11164
|
+
<span mcmsLabel>Password</span>
|
|
11165
|
+
<mcms-input
|
|
11166
|
+
type="password"
|
|
11167
|
+
id="setup-password"
|
|
11168
|
+
name="password"
|
|
11169
|
+
[(value)]="password"
|
|
11170
|
+
placeholder="At least 8 characters"
|
|
11171
|
+
autocomplete="new-password"
|
|
11172
|
+
[disabled]="!hydrated() || isSubmitting()"
|
|
11173
|
+
/>
|
|
11174
|
+
</mcms-form-field>
|
|
11148
11175
|
|
|
11149
|
-
|
|
11150
|
-
id="setup-confirm-password"
|
|
11151
|
-
[required]="true"
|
|
11152
|
-
[errors]="confirmPasswordErrors()"
|
|
11153
|
-
>
|
|
11154
|
-
<span mcmsLabel>Confirm Password</span>
|
|
11155
|
-
<mcms-input
|
|
11156
|
-
type="password"
|
|
11176
|
+
<mcms-form-field
|
|
11157
11177
|
id="setup-confirm-password"
|
|
11158
|
-
|
|
11159
|
-
[
|
|
11160
|
-
|
|
11161
|
-
|
|
11162
|
-
|
|
11163
|
-
|
|
11164
|
-
|
|
11178
|
+
[required]="true"
|
|
11179
|
+
[errors]="confirmPasswordErrors()"
|
|
11180
|
+
>
|
|
11181
|
+
<span mcmsLabel>Confirm Password</span>
|
|
11182
|
+
<mcms-input
|
|
11183
|
+
type="password"
|
|
11184
|
+
id="setup-confirm-password"
|
|
11185
|
+
name="confirmPassword"
|
|
11186
|
+
[(value)]="confirmPassword"
|
|
11187
|
+
placeholder="Repeat your password"
|
|
11188
|
+
autocomplete="new-password"
|
|
11189
|
+
[disabled]="!hydrated() || isSubmitting()"
|
|
11190
|
+
/>
|
|
11191
|
+
</mcms-form-field>
|
|
11165
11192
|
|
|
11166
|
-
|
|
11167
|
-
|
|
11168
|
-
|
|
11169
|
-
|
|
11170
|
-
|
|
11171
|
-
|
|
11172
|
-
|
|
11173
|
-
|
|
11174
|
-
|
|
11175
|
-
|
|
11176
|
-
|
|
11177
|
-
|
|
11178
|
-
|
|
11179
|
-
|
|
11180
|
-
|
|
11193
|
+
<button
|
|
11194
|
+
mcms-button
|
|
11195
|
+
type="submit"
|
|
11196
|
+
class="w-full"
|
|
11197
|
+
[disabled]="!hydrated() || isSubmitting() || !isValid()"
|
|
11198
|
+
>
|
|
11199
|
+
@if (isSubmitting()) {
|
|
11200
|
+
<span class="animate-spin" aria-hidden="true">⏳</span>
|
|
11201
|
+
Creating account...
|
|
11202
|
+
} @else {
|
|
11203
|
+
Create Admin Account
|
|
11204
|
+
}
|
|
11205
|
+
</button>
|
|
11206
|
+
</form>
|
|
11207
|
+
</mcms-card-content>
|
|
11181
11208
|
|
|
11182
|
-
|
|
11183
|
-
|
|
11184
|
-
|
|
11185
|
-
|
|
11186
|
-
|
|
11209
|
+
<mcms-card-footer class="justify-center">
|
|
11210
|
+
<p class="text-sm text-muted-foreground">This account will have full admin privileges</p>
|
|
11211
|
+
</mcms-card-footer>
|
|
11212
|
+
</mcms-card>
|
|
11213
|
+
</main>
|
|
11214
|
+
`, isInline: true, dependencies: [{ kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "ariaLabel", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: McmsFormField, selector: "mcms-form-field", inputs: ["id", "required", "disabled", "errors", "hint", "hasLabel"] }, { kind: "component", type: Card, selector: "mcms-card" }, { kind: "component", type: CardHeader, selector: "mcms-card-header" }, { kind: "component", type: CardTitle, selector: "mcms-card-title", inputs: ["level"] }, { kind: "component", type: CardDescription, selector: "mcms-card-description" }, { kind: "component", type: CardContent, selector: "mcms-card-content" }, { kind: "component", type: CardFooter, selector: "mcms-card-footer" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11187
11215
|
}
|
|
11188
11216
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SetupPage, decorators: [{
|
|
11189
11217
|
type: Component,
|
|
@@ -11205,100 +11233,102 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
11205
11233
|
class: 'flex min-h-screen items-center justify-center bg-background p-4',
|
|
11206
11234
|
},
|
|
11207
11235
|
template: `
|
|
11208
|
-
<
|
|
11209
|
-
<mcms-card
|
|
11210
|
-
<mcms-card-
|
|
11211
|
-
|
|
11212
|
-
|
|
11236
|
+
<main>
|
|
11237
|
+
<mcms-card class="w-full max-w-md">
|
|
11238
|
+
<mcms-card-header class="text-center">
|
|
11239
|
+
<mcms-card-title>Welcome to Momentum CMS</mcms-card-title>
|
|
11240
|
+
<mcms-card-description> Create your admin account to get started </mcms-card-description>
|
|
11241
|
+
</mcms-card-header>
|
|
11213
11242
|
|
|
11214
|
-
|
|
11215
|
-
|
|
11216
|
-
|
|
11217
|
-
|
|
11218
|
-
|
|
11219
|
-
|
|
11220
|
-
|
|
11221
|
-
|
|
11222
|
-
|
|
11223
|
-
|
|
11224
|
-
|
|
11243
|
+
<mcms-card-content>
|
|
11244
|
+
<form (submit)="onSubmit($event)" class="space-y-4">
|
|
11245
|
+
@if (error()) {
|
|
11246
|
+
<div
|
|
11247
|
+
class="rounded-md bg-destructive/15 p-3 text-sm text-destructive"
|
|
11248
|
+
role="alert"
|
|
11249
|
+
aria-live="polite"
|
|
11250
|
+
>
|
|
11251
|
+
{{ error() }}
|
|
11252
|
+
</div>
|
|
11253
|
+
}
|
|
11225
11254
|
|
|
11226
|
-
|
|
11227
|
-
|
|
11228
|
-
|
|
11229
|
-
|
|
11230
|
-
|
|
11231
|
-
|
|
11232
|
-
|
|
11233
|
-
|
|
11234
|
-
|
|
11235
|
-
|
|
11236
|
-
|
|
11237
|
-
|
|
11255
|
+
<mcms-form-field id="setup-name" [required]="true" [errors]="nameErrors()">
|
|
11256
|
+
<span mcmsLabel>Full Name</span>
|
|
11257
|
+
<mcms-input
|
|
11258
|
+
type="text"
|
|
11259
|
+
id="setup-name"
|
|
11260
|
+
name="name"
|
|
11261
|
+
[(value)]="name"
|
|
11262
|
+
placeholder="Your name"
|
|
11263
|
+
autocomplete="name"
|
|
11264
|
+
[disabled]="!hydrated() || isSubmitting()"
|
|
11265
|
+
/>
|
|
11266
|
+
</mcms-form-field>
|
|
11238
11267
|
|
|
11239
|
-
|
|
11240
|
-
|
|
11241
|
-
|
|
11242
|
-
|
|
11243
|
-
|
|
11244
|
-
|
|
11245
|
-
|
|
11246
|
-
|
|
11247
|
-
|
|
11248
|
-
|
|
11249
|
-
|
|
11250
|
-
|
|
11268
|
+
<mcms-form-field id="setup-email" [required]="true" [errors]="emailErrors()">
|
|
11269
|
+
<span mcmsLabel>Email Address</span>
|
|
11270
|
+
<mcms-input
|
|
11271
|
+
type="email"
|
|
11272
|
+
id="setup-email"
|
|
11273
|
+
name="email"
|
|
11274
|
+
[(value)]="email"
|
|
11275
|
+
placeholder="admin@example.com"
|
|
11276
|
+
autocomplete="email"
|
|
11277
|
+
[disabled]="!hydrated() || isSubmitting()"
|
|
11278
|
+
/>
|
|
11279
|
+
</mcms-form-field>
|
|
11251
11280
|
|
|
11252
|
-
|
|
11253
|
-
|
|
11254
|
-
|
|
11255
|
-
|
|
11256
|
-
|
|
11257
|
-
|
|
11258
|
-
|
|
11259
|
-
|
|
11260
|
-
|
|
11261
|
-
|
|
11262
|
-
|
|
11263
|
-
|
|
11281
|
+
<mcms-form-field id="setup-password" [required]="true" [errors]="passwordErrors()">
|
|
11282
|
+
<span mcmsLabel>Password</span>
|
|
11283
|
+
<mcms-input
|
|
11284
|
+
type="password"
|
|
11285
|
+
id="setup-password"
|
|
11286
|
+
name="password"
|
|
11287
|
+
[(value)]="password"
|
|
11288
|
+
placeholder="At least 8 characters"
|
|
11289
|
+
autocomplete="new-password"
|
|
11290
|
+
[disabled]="!hydrated() || isSubmitting()"
|
|
11291
|
+
/>
|
|
11292
|
+
</mcms-form-field>
|
|
11264
11293
|
|
|
11265
|
-
|
|
11266
|
-
id="setup-confirm-password"
|
|
11267
|
-
[required]="true"
|
|
11268
|
-
[errors]="confirmPasswordErrors()"
|
|
11269
|
-
>
|
|
11270
|
-
<span mcmsLabel>Confirm Password</span>
|
|
11271
|
-
<mcms-input
|
|
11272
|
-
type="password"
|
|
11294
|
+
<mcms-form-field
|
|
11273
11295
|
id="setup-confirm-password"
|
|
11274
|
-
|
|
11275
|
-
[
|
|
11276
|
-
|
|
11277
|
-
|
|
11278
|
-
|
|
11279
|
-
|
|
11280
|
-
|
|
11296
|
+
[required]="true"
|
|
11297
|
+
[errors]="confirmPasswordErrors()"
|
|
11298
|
+
>
|
|
11299
|
+
<span mcmsLabel>Confirm Password</span>
|
|
11300
|
+
<mcms-input
|
|
11301
|
+
type="password"
|
|
11302
|
+
id="setup-confirm-password"
|
|
11303
|
+
name="confirmPassword"
|
|
11304
|
+
[(value)]="confirmPassword"
|
|
11305
|
+
placeholder="Repeat your password"
|
|
11306
|
+
autocomplete="new-password"
|
|
11307
|
+
[disabled]="!hydrated() || isSubmitting()"
|
|
11308
|
+
/>
|
|
11309
|
+
</mcms-form-field>
|
|
11281
11310
|
|
|
11282
|
-
|
|
11283
|
-
|
|
11284
|
-
|
|
11285
|
-
|
|
11286
|
-
|
|
11287
|
-
|
|
11288
|
-
|
|
11289
|
-
|
|
11290
|
-
|
|
11291
|
-
|
|
11292
|
-
|
|
11293
|
-
|
|
11294
|
-
|
|
11295
|
-
|
|
11296
|
-
|
|
11311
|
+
<button
|
|
11312
|
+
mcms-button
|
|
11313
|
+
type="submit"
|
|
11314
|
+
class="w-full"
|
|
11315
|
+
[disabled]="!hydrated() || isSubmitting() || !isValid()"
|
|
11316
|
+
>
|
|
11317
|
+
@if (isSubmitting()) {
|
|
11318
|
+
<span class="animate-spin" aria-hidden="true">⏳</span>
|
|
11319
|
+
Creating account...
|
|
11320
|
+
} @else {
|
|
11321
|
+
Create Admin Account
|
|
11322
|
+
}
|
|
11323
|
+
</button>
|
|
11324
|
+
</form>
|
|
11325
|
+
</mcms-card-content>
|
|
11297
11326
|
|
|
11298
|
-
|
|
11299
|
-
|
|
11300
|
-
|
|
11301
|
-
|
|
11327
|
+
<mcms-card-footer class="justify-center">
|
|
11328
|
+
<p class="text-sm text-muted-foreground">This account will have full admin privileges</p>
|
|
11329
|
+
</mcms-card-footer>
|
|
11330
|
+
</mcms-card>
|
|
11331
|
+
</main>
|
|
11302
11332
|
`,
|
|
11303
11333
|
}]
|
|
11304
11334
|
}], ctorParameters: () => [] });
|
|
@@ -11437,7 +11467,7 @@ class MediaEditDialog {
|
|
|
11437
11467
|
</button>
|
|
11438
11468
|
</mcms-dialog-footer>
|
|
11439
11469
|
</mcms-dialog>
|
|
11440
|
-
`, isInline: true, dependencies: [{ kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Dialog, selector: "mcms-dialog", inputs: ["class"] }, { kind: "component", type: DialogHeader, selector: "mcms-dialog-header" }, { kind: "component", type: DialogTitle, selector: "mcms-dialog-title", inputs: ["id"] }, { kind: "component", type: DialogContent, selector: "mcms-dialog-content" }, { kind: "component", type: DialogFooter, selector: "mcms-dialog-footer" }, { kind: "directive", type: DialogClose, selector: "[mcmsDialogClose]", inputs: ["mcmsDialogClose"] }, { kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }, { kind: "component", type: Textarea, selector: "mcms-textarea", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "id", "name", "placeholder", "rows", "describedBy"], outputs: ["valueChange", "blurred"] }, { kind: "component", type: Label, selector: "mcms-label", inputs: ["for", "required", "disabled", "class"] }, { kind: "component", type: Spinner, selector: "mcms-spinner", inputs: ["size", "label", "class"] }, { kind: "component", type: Alert, selector: "mcms-alert", inputs: ["variant", "class"] }, { kind: "component", type: MediaPreviewComponent, selector: "mcms-media-preview", inputs: ["media", "size", "class", "rounded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11470
|
+
`, isInline: true, dependencies: [{ kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Dialog, selector: "mcms-dialog", inputs: ["class"] }, { kind: "component", type: DialogHeader, selector: "mcms-dialog-header" }, { kind: "component", type: DialogTitle, selector: "mcms-dialog-title", inputs: ["id"] }, { kind: "component", type: DialogContent, selector: "mcms-dialog-content" }, { kind: "component", type: DialogFooter, selector: "mcms-dialog-footer" }, { kind: "directive", type: DialogClose, selector: "[mcmsDialogClose]", inputs: ["mcmsDialogClose"] }, { kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "ariaLabel", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }, { kind: "component", type: Textarea, selector: "mcms-textarea", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "id", "name", "placeholder", "rows", "ariaLabel", "describedBy"], outputs: ["valueChange", "blurred"] }, { kind: "component", type: Label, selector: "mcms-label", inputs: ["for", "required", "disabled", "class"] }, { kind: "component", type: Spinner, selector: "mcms-spinner", inputs: ["size", "label", "class"] }, { kind: "component", type: Alert, selector: "mcms-alert", inputs: ["variant", "class"] }, { kind: "component", type: MediaPreviewComponent, selector: "mcms-media-preview", inputs: ["media", "size", "class", "rounded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11441
11471
|
}
|
|
11442
11472
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: MediaEditDialog, decorators: [{
|
|
11443
11473
|
type: Component,
|
|
@@ -11803,21 +11833,23 @@ class MediaLibraryPage {
|
|
|
11803
11833
|
</p>
|
|
11804
11834
|
</div>
|
|
11805
11835
|
<div class="flex gap-2">
|
|
11806
|
-
<
|
|
11807
|
-
|
|
11808
|
-
|
|
11809
|
-
|
|
11810
|
-
|
|
11811
|
-
|
|
11812
|
-
|
|
11813
|
-
|
|
11814
|
-
|
|
11815
|
-
|
|
11816
|
-
|
|
11817
|
-
|
|
11818
|
-
|
|
11819
|
-
|
|
11820
|
-
|
|
11836
|
+
<input
|
|
11837
|
+
#fileInput
|
|
11838
|
+
type="file"
|
|
11839
|
+
class="sr-only"
|
|
11840
|
+
multiple
|
|
11841
|
+
aria-label="Upload media files"
|
|
11842
|
+
(change)="onFilesSelected($event)"
|
|
11843
|
+
/>
|
|
11844
|
+
<button
|
|
11845
|
+
mcms-button
|
|
11846
|
+
type="button"
|
|
11847
|
+
class="inline-flex"
|
|
11848
|
+
(click)="fileInput.click()"
|
|
11849
|
+
>
|
|
11850
|
+
<ng-icon name="heroCloudArrowUp" class="h-4 w-4" />
|
|
11851
|
+
Upload Files
|
|
11852
|
+
</button>
|
|
11821
11853
|
</div>
|
|
11822
11854
|
</div>
|
|
11823
11855
|
|
|
@@ -11841,7 +11873,7 @@ class MediaLibraryPage {
|
|
|
11841
11873
|
size="sm"
|
|
11842
11874
|
(click)="deleteSelected()"
|
|
11843
11875
|
>
|
|
11844
|
-
<ng-icon name="heroTrash" class="h-4 w-4" />
|
|
11876
|
+
<ng-icon name="heroTrash" class="h-4 w-4" aria-hidden="true" />
|
|
11845
11877
|
Delete
|
|
11846
11878
|
</button>
|
|
11847
11879
|
</div>
|
|
@@ -11932,7 +11964,7 @@ class MediaLibraryPage {
|
|
|
11932
11964
|
|
|
11933
11965
|
<!-- Hover overlay -->
|
|
11934
11966
|
<div
|
|
11935
|
-
class="absolute inset-x-0 bottom-0 bg-gradient-to-t from-black/80 via-black/50 to-transparent p-3 opacity-0 transition-opacity group-hover:opacity-100"
|
|
11967
|
+
class="absolute inset-x-0 bottom-0 bg-gradient-to-t from-black/80 via-black/50 to-transparent p-3 opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100"
|
|
11936
11968
|
>
|
|
11937
11969
|
<p class="truncate text-sm font-medium text-white">
|
|
11938
11970
|
{{ media.filename }}
|
|
@@ -12001,7 +12033,7 @@ class MediaLibraryPage {
|
|
|
12001
12033
|
}
|
|
12002
12034
|
}
|
|
12003
12035
|
</div>
|
|
12004
|
-
`, isInline: true, dependencies: [{ kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Spinner, selector: "mcms-spinner", inputs: ["size", "label", "class"] }, { kind: "component", type: Pagination, selector: "mcms-pagination", inputs: ["currentPage", "totalPages", "siblingCount", "class"], outputs: ["pageChange"] }, { kind: "component", type: SearchInput, selector: "mcms-search-input", inputs: ["value", "placeholder", "debounce", "disabled", "ariaLabel", "class"], outputs: ["valueChange", "searchChange", "clear"] }, { kind: "component", type: Badge, selector: "mcms-badge", inputs: ["variant", "class", "ariaLabel"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: MediaPreviewComponent, selector: "mcms-media-preview", inputs: ["media", "size", "class", "rounded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12036
|
+
`, isInline: true, dependencies: [{ kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Spinner, selector: "mcms-spinner", inputs: ["size", "label", "class"] }, { kind: "component", type: Pagination, selector: "mcms-pagination", inputs: ["currentPage", "totalPages", "siblingCount", "class"], outputs: ["pageChange"] }, { kind: "component", type: SearchInput, selector: "mcms-search-input", inputs: ["value", "placeholder", "debounce", "disabled", "ariaLabel", "class"], outputs: ["valueChange", "searchChange", "clear"] }, { kind: "component", type: Badge, selector: "mcms-badge", inputs: ["variant", "class", "role", "ariaLabel"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: MediaPreviewComponent, selector: "mcms-media-preview", inputs: ["media", "size", "class", "rounded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12005
12037
|
}
|
|
12006
12038
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: MediaLibraryPage, decorators: [{
|
|
12007
12039
|
type: Component,
|
|
@@ -12024,21 +12056,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
12024
12056
|
</p>
|
|
12025
12057
|
</div>
|
|
12026
12058
|
<div class="flex gap-2">
|
|
12027
|
-
<
|
|
12028
|
-
|
|
12029
|
-
|
|
12030
|
-
|
|
12031
|
-
|
|
12032
|
-
|
|
12033
|
-
|
|
12034
|
-
|
|
12035
|
-
|
|
12036
|
-
|
|
12037
|
-
|
|
12038
|
-
|
|
12039
|
-
|
|
12040
|
-
|
|
12041
|
-
|
|
12059
|
+
<input
|
|
12060
|
+
#fileInput
|
|
12061
|
+
type="file"
|
|
12062
|
+
class="sr-only"
|
|
12063
|
+
multiple
|
|
12064
|
+
aria-label="Upload media files"
|
|
12065
|
+
(change)="onFilesSelected($event)"
|
|
12066
|
+
/>
|
|
12067
|
+
<button
|
|
12068
|
+
mcms-button
|
|
12069
|
+
type="button"
|
|
12070
|
+
class="inline-flex"
|
|
12071
|
+
(click)="fileInput.click()"
|
|
12072
|
+
>
|
|
12073
|
+
<ng-icon name="heroCloudArrowUp" class="h-4 w-4" />
|
|
12074
|
+
Upload Files
|
|
12075
|
+
</button>
|
|
12042
12076
|
</div>
|
|
12043
12077
|
</div>
|
|
12044
12078
|
|
|
@@ -12062,7 +12096,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
12062
12096
|
size="sm"
|
|
12063
12097
|
(click)="deleteSelected()"
|
|
12064
12098
|
>
|
|
12065
|
-
<ng-icon name="heroTrash" class="h-4 w-4" />
|
|
12099
|
+
<ng-icon name="heroTrash" class="h-4 w-4" aria-hidden="true" />
|
|
12066
12100
|
Delete
|
|
12067
12101
|
</button>
|
|
12068
12102
|
</div>
|
|
@@ -12153,7 +12187,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
12153
12187
|
|
|
12154
12188
|
<!-- Hover overlay -->
|
|
12155
12189
|
<div
|
|
12156
|
-
class="absolute inset-x-0 bottom-0 bg-gradient-to-t from-black/80 via-black/50 to-transparent p-3 opacity-0 transition-opacity group-hover:opacity-100"
|
|
12190
|
+
class="absolute inset-x-0 bottom-0 bg-gradient-to-t from-black/80 via-black/50 to-transparent p-3 opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100"
|
|
12157
12191
|
>
|
|
12158
12192
|
<p class="truncate text-sm font-medium text-white">
|
|
12159
12193
|
{{ media.filename }}
|
|
@@ -12244,23 +12278,25 @@ class ForgotPasswordPage {
|
|
|
12244
12278
|
}
|
|
12245
12279
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ForgotPasswordPage, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12246
12280
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: ForgotPasswordPage, isStandalone: true, selector: "mcms-forgot-password-page", host: { classAttribute: "flex min-h-screen items-center justify-center bg-background p-4" }, ngImport: i0, template: `
|
|
12247
|
-
<
|
|
12248
|
-
<mcms-card
|
|
12249
|
-
<mcms-card-
|
|
12250
|
-
|
|
12251
|
-
|
|
12252
|
-
|
|
12253
|
-
|
|
12281
|
+
<main>
|
|
12282
|
+
<mcms-card class="w-full max-w-md">
|
|
12283
|
+
<mcms-card-header class="text-center">
|
|
12284
|
+
<mcms-card-title>Reset Password</mcms-card-title>
|
|
12285
|
+
<mcms-card-description>
|
|
12286
|
+
We'll send you a link to reset your password
|
|
12287
|
+
</mcms-card-description>
|
|
12288
|
+
</mcms-card-header>
|
|
12254
12289
|
|
|
12255
|
-
|
|
12256
|
-
|
|
12257
|
-
|
|
12290
|
+
<mcms-card-content>
|
|
12291
|
+
<mcms-forgot-password-form (backToLogin)="navigateToLogin()" />
|
|
12292
|
+
</mcms-card-content>
|
|
12258
12293
|
|
|
12259
|
-
|
|
12260
|
-
|
|
12261
|
-
|
|
12262
|
-
|
|
12263
|
-
|
|
12294
|
+
<mcms-card-footer class="justify-center">
|
|
12295
|
+
<p class="text-sm text-muted-foreground">Momentum CMS</p>
|
|
12296
|
+
</mcms-card-footer>
|
|
12297
|
+
</mcms-card>
|
|
12298
|
+
</main>
|
|
12299
|
+
`, isInline: true, dependencies: [{ kind: "component", type: Card, selector: "mcms-card" }, { kind: "component", type: CardHeader, selector: "mcms-card-header" }, { kind: "component", type: CardTitle, selector: "mcms-card-title", inputs: ["level"] }, { kind: "component", type: CardDescription, selector: "mcms-card-description" }, { kind: "component", type: CardContent, selector: "mcms-card-content" }, { kind: "component", type: CardFooter, selector: "mcms-card-footer" }, { kind: "component", type: ForgotPasswordFormComponent, selector: "mcms-forgot-password-form", outputs: ["resetRequested", "backToLogin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12264
12300
|
}
|
|
12265
12301
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ForgotPasswordPage, decorators: [{
|
|
12266
12302
|
type: Component,
|
|
@@ -12280,22 +12316,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
12280
12316
|
class: 'flex min-h-screen items-center justify-center bg-background p-4',
|
|
12281
12317
|
},
|
|
12282
12318
|
template: `
|
|
12283
|
-
<
|
|
12284
|
-
<mcms-card
|
|
12285
|
-
<mcms-card-
|
|
12286
|
-
|
|
12287
|
-
|
|
12288
|
-
|
|
12289
|
-
|
|
12319
|
+
<main>
|
|
12320
|
+
<mcms-card class="w-full max-w-md">
|
|
12321
|
+
<mcms-card-header class="text-center">
|
|
12322
|
+
<mcms-card-title>Reset Password</mcms-card-title>
|
|
12323
|
+
<mcms-card-description>
|
|
12324
|
+
We'll send you a link to reset your password
|
|
12325
|
+
</mcms-card-description>
|
|
12326
|
+
</mcms-card-header>
|
|
12290
12327
|
|
|
12291
|
-
|
|
12292
|
-
|
|
12293
|
-
|
|
12328
|
+
<mcms-card-content>
|
|
12329
|
+
<mcms-forgot-password-form (backToLogin)="navigateToLogin()" />
|
|
12330
|
+
</mcms-card-content>
|
|
12294
12331
|
|
|
12295
|
-
|
|
12296
|
-
|
|
12297
|
-
|
|
12298
|
-
|
|
12332
|
+
<mcms-card-footer class="justify-center">
|
|
12333
|
+
<p class="text-sm text-muted-foreground">Momentum CMS</p>
|
|
12334
|
+
</mcms-card-footer>
|
|
12335
|
+
</mcms-card>
|
|
12336
|
+
</main>
|
|
12299
12337
|
`,
|
|
12300
12338
|
}]
|
|
12301
12339
|
}] });
|
|
@@ -12330,25 +12368,27 @@ class ResetPasswordPage {
|
|
|
12330
12368
|
}
|
|
12331
12369
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ResetPasswordPage, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12332
12370
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.2", type: ResetPasswordPage, isStandalone: true, selector: "mcms-reset-password-page", host: { classAttribute: "flex min-h-screen items-center justify-center bg-background p-4" }, ngImport: i0, template: `
|
|
12333
|
-
<
|
|
12334
|
-
<mcms-card
|
|
12335
|
-
<mcms-card-
|
|
12336
|
-
|
|
12337
|
-
|
|
12371
|
+
<main>
|
|
12372
|
+
<mcms-card class="w-full max-w-md">
|
|
12373
|
+
<mcms-card-header class="text-center">
|
|
12374
|
+
<mcms-card-title>Set New Password</mcms-card-title>
|
|
12375
|
+
<mcms-card-description> Enter your new password below </mcms-card-description>
|
|
12376
|
+
</mcms-card-header>
|
|
12338
12377
|
|
|
12339
|
-
|
|
12340
|
-
|
|
12341
|
-
|
|
12342
|
-
|
|
12343
|
-
|
|
12344
|
-
|
|
12345
|
-
|
|
12378
|
+
<mcms-card-content>
|
|
12379
|
+
<mcms-reset-password-form
|
|
12380
|
+
[token]="token()"
|
|
12381
|
+
(goToLogin)="navigateToLogin()"
|
|
12382
|
+
(goToForgotPassword)="navigateToForgotPassword()"
|
|
12383
|
+
/>
|
|
12384
|
+
</mcms-card-content>
|
|
12346
12385
|
|
|
12347
|
-
|
|
12348
|
-
|
|
12349
|
-
|
|
12350
|
-
|
|
12351
|
-
|
|
12386
|
+
<mcms-card-footer class="justify-center">
|
|
12387
|
+
<p class="text-sm text-muted-foreground">Momentum CMS</p>
|
|
12388
|
+
</mcms-card-footer>
|
|
12389
|
+
</mcms-card>
|
|
12390
|
+
</main>
|
|
12391
|
+
`, isInline: true, dependencies: [{ kind: "component", type: Card, selector: "mcms-card" }, { kind: "component", type: CardHeader, selector: "mcms-card-header" }, { kind: "component", type: CardTitle, selector: "mcms-card-title", inputs: ["level"] }, { kind: "component", type: CardDescription, selector: "mcms-card-description" }, { kind: "component", type: CardContent, selector: "mcms-card-content" }, { kind: "component", type: CardFooter, selector: "mcms-card-footer" }, { kind: "component", type: ResetPasswordFormComponent, selector: "mcms-reset-password-form", inputs: ["token"], outputs: ["resetComplete", "resetFailed", "goToLogin", "goToForgotPassword"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12352
12392
|
}
|
|
12353
12393
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ResetPasswordPage, decorators: [{
|
|
12354
12394
|
type: Component,
|
|
@@ -12368,24 +12408,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
12368
12408
|
class: 'flex min-h-screen items-center justify-center bg-background p-4',
|
|
12369
12409
|
},
|
|
12370
12410
|
template: `
|
|
12371
|
-
<
|
|
12372
|
-
<mcms-card
|
|
12373
|
-
<mcms-card-
|
|
12374
|
-
|
|
12375
|
-
|
|
12411
|
+
<main>
|
|
12412
|
+
<mcms-card class="w-full max-w-md">
|
|
12413
|
+
<mcms-card-header class="text-center">
|
|
12414
|
+
<mcms-card-title>Set New Password</mcms-card-title>
|
|
12415
|
+
<mcms-card-description> Enter your new password below </mcms-card-description>
|
|
12416
|
+
</mcms-card-header>
|
|
12376
12417
|
|
|
12377
|
-
|
|
12378
|
-
|
|
12379
|
-
|
|
12380
|
-
|
|
12381
|
-
|
|
12382
|
-
|
|
12383
|
-
|
|
12418
|
+
<mcms-card-content>
|
|
12419
|
+
<mcms-reset-password-form
|
|
12420
|
+
[token]="token()"
|
|
12421
|
+
(goToLogin)="navigateToLogin()"
|
|
12422
|
+
(goToForgotPassword)="navigateToForgotPassword()"
|
|
12423
|
+
/>
|
|
12424
|
+
</mcms-card-content>
|
|
12384
12425
|
|
|
12385
|
-
|
|
12386
|
-
|
|
12387
|
-
|
|
12388
|
-
|
|
12426
|
+
<mcms-card-footer class="justify-center">
|
|
12427
|
+
<p class="text-sm text-muted-foreground">Momentum CMS</p>
|
|
12428
|
+
</mcms-card-footer>
|
|
12429
|
+
</mcms-card>
|
|
12430
|
+
</main>
|
|
12389
12431
|
`,
|
|
12390
12432
|
}]
|
|
12391
12433
|
}] });
|
|
@@ -12557,7 +12599,7 @@ class BlockWrapperComponent {
|
|
|
12557
12599
|
}
|
|
12558
12600
|
</div>
|
|
12559
12601
|
}
|
|
12560
|
-
`, isInline: true, dependencies: [{ kind: "component", type: FieldRenderer, selector: "mcms-field-renderer", inputs: ["field", "formNode", "formTree", "formModel", "mode", "path"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: Badge, selector: "mcms-badge", inputs: ["variant", "class", "ariaLabel"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12602
|
+
`, isInline: true, dependencies: [{ kind: "component", type: FieldRenderer, selector: "mcms-field-renderer", inputs: ["field", "formNode", "formTree", "formModel", "mode", "path"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: Badge, selector: "mcms-badge", inputs: ["variant", "class", "role", "ariaLabel"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12561
12603
|
}
|
|
12562
12604
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: BlockWrapperComponent, decorators: [{
|
|
12563
12605
|
type: Component,
|
|
@@ -13335,18 +13377,18 @@ function provideMomentumFieldRenderers() {
|
|
|
13335
13377
|
registry.register('checkbox', () => Promise.resolve().then(function () { return checkboxField_component; }).then((m) => m.CheckboxFieldRenderer));
|
|
13336
13378
|
registry.register('date', () => Promise.resolve().then(function () { return dateField_component; }).then((m) => m.DateFieldRenderer));
|
|
13337
13379
|
registry.register('upload', () => Promise.resolve().then(function () { return uploadField_component; }).then((m) => m.UploadFieldRenderer));
|
|
13338
|
-
registry.register('richText', () => import('./momentumcms-admin-rich-text-field.component-
|
|
13380
|
+
registry.register('richText', () => import('./momentumcms-admin-rich-text-field.component-BvpufJs3.mjs').then((m) => m.RichTextFieldRenderer));
|
|
13339
13381
|
// Layout field renderers (support nested field rendering)
|
|
13340
|
-
registry.register('group', () => import('./momentumcms-admin-group-field.component-
|
|
13341
|
-
registry.register('array', () => import('./momentumcms-admin-array-field.component-
|
|
13342
|
-
registry.register('blocks', () => import('./momentumcms-admin-blocks-field.component-
|
|
13382
|
+
registry.register('group', () => import('./momentumcms-admin-group-field.component-ffsgbC6o.mjs').then((m) => m.GroupFieldRenderer));
|
|
13383
|
+
registry.register('array', () => import('./momentumcms-admin-array-field.component-CLV4Ny9t.mjs').then((m) => m.ArrayFieldRenderer));
|
|
13384
|
+
registry.register('blocks', () => import('./momentumcms-admin-blocks-field.component-hHiTfUf9.mjs').then((m) => m.BlocksFieldRenderer));
|
|
13343
13385
|
// Visual block editor variant (blocks field with admin.editor === 'visual')
|
|
13344
13386
|
registry.register('blocks-visual', () => Promise.resolve().then(function () { return visualBlockEditor_component; }).then((m) => m.VisualBlockEditorComponent));
|
|
13345
|
-
registry.register('relationship', () => import('./momentumcms-admin-relationship-field.component-
|
|
13387
|
+
registry.register('relationship', () => import('./momentumcms-admin-relationship-field.component-DO0kyAkE.mjs').then((m) => m.RelationshipFieldRenderer));
|
|
13346
13388
|
// Layout-only renderers (tabs, collapsible, row)
|
|
13347
|
-
registry.register('tabs', () => import('./momentumcms-admin-tabs-field.component-
|
|
13348
|
-
registry.register('collapsible', () => import('./momentumcms-admin-collapsible-field.component-
|
|
13349
|
-
registry.register('row', () => import('./momentumcms-admin-row-field.component
|
|
13389
|
+
registry.register('tabs', () => import('./momentumcms-admin-tabs-field.component-Uatoyjg8.mjs').then((m) => m.TabsFieldRenderer));
|
|
13390
|
+
registry.register('collapsible', () => import('./momentumcms-admin-collapsible-field.component-BeskwGvi.mjs').then((m) => m.CollapsibleFieldRenderer));
|
|
13391
|
+
registry.register('row', () => import('./momentumcms-admin-row-field.component-C8ZsdA2w.mjs').then((m) => m.RowFieldRenderer));
|
|
13350
13392
|
};
|
|
13351
13393
|
},
|
|
13352
13394
|
},
|
|
@@ -13510,9 +13552,15 @@ class TextFieldRenderer {
|
|
|
13510
13552
|
}
|
|
13511
13553
|
@if (showCharCount()) {
|
|
13512
13554
|
<p
|
|
13513
|
-
class="mt-1 text-xs text-
|
|
13555
|
+
class="mt-1 text-xs text-right"
|
|
13514
13556
|
[class.text-destructive]="charCountExceeded()"
|
|
13557
|
+
[class.text-muted-foreground]="!charCountExceeded()"
|
|
13558
|
+
aria-live="polite"
|
|
13559
|
+
[attr.role]="charCountExceeded() ? 'alert' : null"
|
|
13515
13560
|
>
|
|
13561
|
+
@if (charCountExceeded()) {
|
|
13562
|
+
Limit exceeded:
|
|
13563
|
+
}
|
|
13516
13564
|
{{ charCount() }}
|
|
13517
13565
|
@if (maxLength()) {
|
|
13518
13566
|
/ {{ maxLength() }}
|
|
@@ -13520,7 +13568,7 @@ class TextFieldRenderer {
|
|
|
13520
13568
|
</p>
|
|
13521
13569
|
}
|
|
13522
13570
|
</mcms-form-field>
|
|
13523
|
-
`, isInline: true, dependencies: [{ kind: "component", type: McmsFormField, selector: "mcms-form-field", inputs: ["id", "required", "disabled", "errors", "hint", "hasLabel"] }, { kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }, { kind: "component", type: Textarea, selector: "mcms-textarea", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "id", "name", "placeholder", "rows", "describedBy"], outputs: ["valueChange", "blurred"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
13571
|
+
`, isInline: true, dependencies: [{ kind: "component", type: McmsFormField, selector: "mcms-form-field", inputs: ["id", "required", "disabled", "errors", "hint", "hasLabel"] }, { kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "ariaLabel", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }, { kind: "component", type: Textarea, selector: "mcms-textarea", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "id", "name", "placeholder", "rows", "ariaLabel", "describedBy"], outputs: ["valueChange", "blurred"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
13524
13572
|
}
|
|
13525
13573
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: TextFieldRenderer, decorators: [{
|
|
13526
13574
|
type: Component,
|
|
@@ -13564,9 +13612,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
13564
13612
|
}
|
|
13565
13613
|
@if (showCharCount()) {
|
|
13566
13614
|
<p
|
|
13567
|
-
class="mt-1 text-xs text-
|
|
13615
|
+
class="mt-1 text-xs text-right"
|
|
13568
13616
|
[class.text-destructive]="charCountExceeded()"
|
|
13617
|
+
[class.text-muted-foreground]="!charCountExceeded()"
|
|
13618
|
+
aria-live="polite"
|
|
13619
|
+
[attr.role]="charCountExceeded() ? 'alert' : null"
|
|
13569
13620
|
>
|
|
13621
|
+
@if (charCountExceeded()) {
|
|
13622
|
+
Limit exceeded:
|
|
13623
|
+
}
|
|
13570
13624
|
{{ charCount() }}
|
|
13571
13625
|
@if (maxLength()) {
|
|
13572
13626
|
/ {{ maxLength() }}
|
|
@@ -13713,7 +13767,7 @@ class NumberFieldRenderer {
|
|
|
13713
13767
|
<p class="mt-1 text-xs text-muted-foreground">{{ rangeHint() }}</p>
|
|
13714
13768
|
}
|
|
13715
13769
|
</mcms-form-field>
|
|
13716
|
-
`, isInline: true, dependencies: [{ kind: "component", type: McmsFormField, selector: "mcms-form-field", inputs: ["id", "required", "disabled", "errors", "hint", "hasLabel"] }, { kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
13770
|
+
`, isInline: true, dependencies: [{ kind: "component", type: McmsFormField, selector: "mcms-form-field", inputs: ["id", "required", "disabled", "errors", "hint", "hasLabel"] }, { kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "ariaLabel", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
13717
13771
|
}
|
|
13718
13772
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: NumberFieldRenderer, decorators: [{
|
|
13719
13773
|
type: Component,
|
|
@@ -14015,9 +14069,7 @@ class DateFieldRenderer {
|
|
|
14015
14069
|
}, ...(ngDevMode ? [{ debugName: "isDisabled" }] : []));
|
|
14016
14070
|
/** Input type (date or datetime-local) */
|
|
14017
14071
|
inputType = computed(() => {
|
|
14018
|
-
|
|
14019
|
-
// The browser will still render date picker for type="date"
|
|
14020
|
-
return 'text';
|
|
14072
|
+
return 'date';
|
|
14021
14073
|
}, ...(ngDevMode ? [{ debugName: "inputType" }] : []));
|
|
14022
14074
|
/** Formatted date value from FieldState */
|
|
14023
14075
|
dateValue = computed(() => {
|
|
@@ -14097,7 +14149,7 @@ class DateFieldRenderer {
|
|
|
14097
14149
|
(blurred)="onBlur()"
|
|
14098
14150
|
/>
|
|
14099
14151
|
</mcms-form-field>
|
|
14100
|
-
`, isInline: true, dependencies: [{ kind: "component", type: McmsFormField, selector: "mcms-form-field", inputs: ["id", "required", "disabled", "errors", "hint", "hasLabel"] }, { kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
14152
|
+
`, isInline: true, dependencies: [{ kind: "component", type: McmsFormField, selector: "mcms-form-field", inputs: ["id", "required", "disabled", "errors", "hint", "hasLabel"] }, { kind: "component", type: Input, selector: "mcms-input", inputs: ["value", "disabled", "errors", "touched", "invalid", "readonly", "required", "type", "id", "name", "placeholder", "autocomplete", "ariaLabel", "describedBy", "min", "max", "step"], outputs: ["valueChange", "blurred"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
14101
14153
|
}
|
|
14102
14154
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: DateFieldRenderer, decorators: [{
|
|
14103
14155
|
type: Component,
|
|
@@ -14853,9 +14905,10 @@ class UploadFieldRenderer {
|
|
|
14853
14905
|
variant="outline"
|
|
14854
14906
|
size="sm"
|
|
14855
14907
|
type="button"
|
|
14908
|
+
[attr.aria-label]="'Change file for ' + label()"
|
|
14856
14909
|
(click)="openMediaPicker()"
|
|
14857
14910
|
>
|
|
14858
|
-
<ng-icon [name]="photoIcon" class="h-4 w-4" />
|
|
14911
|
+
<ng-icon [name]="photoIcon" class="h-4 w-4" aria-hidden="true" />
|
|
14859
14912
|
Change
|
|
14860
14913
|
</button>
|
|
14861
14914
|
<button
|
|
@@ -14863,9 +14916,10 @@ class UploadFieldRenderer {
|
|
|
14863
14916
|
variant="ghost"
|
|
14864
14917
|
size="sm"
|
|
14865
14918
|
type="button"
|
|
14919
|
+
[attr.aria-label]="'Remove file for ' + label()"
|
|
14866
14920
|
(click)="removeMedia()"
|
|
14867
14921
|
>
|
|
14868
|
-
<ng-icon [name]="xMarkIcon" class="h-4 w-4" />
|
|
14922
|
+
<ng-icon [name]="xMarkIcon" class="h-4 w-4" aria-hidden="true" />
|
|
14869
14923
|
Remove
|
|
14870
14924
|
</button>
|
|
14871
14925
|
</div>
|
|
@@ -14938,7 +14992,7 @@ class UploadFieldRenderer {
|
|
|
14938
14992
|
type="button"
|
|
14939
14993
|
(click)="openMediaPicker()"
|
|
14940
14994
|
>
|
|
14941
|
-
<ng-icon [name]="photoIcon" class="h-4 w-4" />
|
|
14995
|
+
<ng-icon [name]="photoIcon" class="h-4 w-4" aria-hidden="true" />
|
|
14942
14996
|
Select from library
|
|
14943
14997
|
</button>
|
|
14944
14998
|
</div>
|
|
@@ -14955,10 +15009,10 @@ class UploadFieldRenderer {
|
|
|
14955
15009
|
}
|
|
14956
15010
|
|
|
14957
15011
|
@if (uploadError()) {
|
|
14958
|
-
<p class="mt-1 text-sm text-mcms-destructive">{{ uploadError() }}</p>
|
|
15012
|
+
<p class="mt-1 text-sm text-mcms-destructive" role="alert" aria-live="assertive">{{ uploadError() }}</p>
|
|
14959
15013
|
}
|
|
14960
15014
|
</mcms-form-field>
|
|
14961
|
-
`, isInline: true, dependencies: [{ kind: "component", type: McmsFormField, selector: "mcms-form-field", inputs: ["id", "required", "disabled", "errors", "hint", "hasLabel"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Progress, selector: "mcms-progress", inputs: ["value", "max", "class"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: MediaPreviewComponent, selector: "mcms-media-preview", inputs: ["media", "size", "class", "rounded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15015
|
+
`, isInline: true, dependencies: [{ kind: "component", type: McmsFormField, selector: "mcms-form-field", inputs: ["id", "required", "disabled", "errors", "hint", "hasLabel"] }, { kind: "component", type: Button, selector: "button[mcms-button], a[mcms-button]", inputs: ["variant", "size", "disabled", "loading", "ariaLabel", "class"] }, { kind: "component", type: Progress, selector: "mcms-progress", inputs: ["value", "max", "ariaLabel", "class"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: MediaPreviewComponent, selector: "mcms-media-preview", inputs: ["media", "size", "class", "rounded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
14962
15016
|
}
|
|
14963
15017
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: UploadFieldRenderer, decorators: [{
|
|
14964
15018
|
type: Component,
|
|
@@ -14991,9 +15045,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
14991
15045
|
variant="outline"
|
|
14992
15046
|
size="sm"
|
|
14993
15047
|
type="button"
|
|
15048
|
+
[attr.aria-label]="'Change file for ' + label()"
|
|
14994
15049
|
(click)="openMediaPicker()"
|
|
14995
15050
|
>
|
|
14996
|
-
<ng-icon [name]="photoIcon" class="h-4 w-4" />
|
|
15051
|
+
<ng-icon [name]="photoIcon" class="h-4 w-4" aria-hidden="true" />
|
|
14997
15052
|
Change
|
|
14998
15053
|
</button>
|
|
14999
15054
|
<button
|
|
@@ -15001,9 +15056,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
15001
15056
|
variant="ghost"
|
|
15002
15057
|
size="sm"
|
|
15003
15058
|
type="button"
|
|
15059
|
+
[attr.aria-label]="'Remove file for ' + label()"
|
|
15004
15060
|
(click)="removeMedia()"
|
|
15005
15061
|
>
|
|
15006
|
-
<ng-icon [name]="xMarkIcon" class="h-4 w-4" />
|
|
15062
|
+
<ng-icon [name]="xMarkIcon" class="h-4 w-4" aria-hidden="true" />
|
|
15007
15063
|
Remove
|
|
15008
15064
|
</button>
|
|
15009
15065
|
</div>
|
|
@@ -15076,7 +15132,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
15076
15132
|
type="button"
|
|
15077
15133
|
(click)="openMediaPicker()"
|
|
15078
15134
|
>
|
|
15079
|
-
<ng-icon [name]="photoIcon" class="h-4 w-4" />
|
|
15135
|
+
<ng-icon [name]="photoIcon" class="h-4 w-4" aria-hidden="true" />
|
|
15080
15136
|
Select from library
|
|
15081
15137
|
</button>
|
|
15082
15138
|
</div>
|
|
@@ -15093,7 +15149,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
15093
15149
|
}
|
|
15094
15150
|
|
|
15095
15151
|
@if (uploadError()) {
|
|
15096
|
-
<p class="mt-1 text-sm text-mcms-destructive">{{ uploadError() }}</p>
|
|
15152
|
+
<p class="mt-1 text-sm text-mcms-destructive" role="alert" aria-live="assertive">{{ uploadError() }}</p>
|
|
15097
15153
|
}
|
|
15098
15154
|
</mcms-form-field>
|
|
15099
15155
|
`,
|
|
@@ -15112,4 +15168,4 @@ var uploadField_component = /*#__PURE__*/Object.freeze({
|
|
|
15112
15168
|
*/
|
|
15113
15169
|
|
|
15114
15170
|
export { adminGuard as $, AdminShellComponent as A, BlockEditDialog as B, CheckboxFieldRenderer as C, DashboardPage as D, EntityFormWidget as E, FieldRenderer as F, MediaLibraryPage as G, MediaPickerDialog as H, MediaPreviewComponent as I, MomentumApiService as J, MomentumAuthService as K, LivePreviewComponent as L, MOMENTUM_API as M, NumberFieldRenderer as N, ResetPasswordPage as O, PublishControlsWidget as P, SKIP_AUTO_TOAST as Q, ResetPasswordFormComponent as R, SHEET_QUERY_PARAMS as S, SelectFieldRenderer as T, SetupPage as U, TextFieldRenderer as V, UploadFieldRenderer as W, UploadService as X, VersionHistoryWidget as Y, VersionService as Z, VisualBlockEditorComponent as _, getFieldNodeState as a, authGuard as a0, collectionAccessGuard as a1, crudToastInterceptor as a2, guestGuard as a3, injectHasAnyRole as a4, injectHasRole as a5, injectIsAdmin as a6, injectIsAuthenticated as a7, injectMomentumAPI as a8, injectTypedMomentumAPI as a9, injectUser as aa, injectUserRole as ab, injectVersionService as ac, momentumAdminRoutes as ad, provideFieldRenderer as ae, provideMomentumAPI as af, provideMomentumFieldRenderers as ag, setupGuard as ah, unsavedChangesGuard as ai, getSubNode as b, getFieldDefaultValue as c, EntitySheetService as d, getTitleField as e, AdminSidebarWidget as f, getGlobalsFromRouteData as g, BlockInserterComponent as h, isRecord as i, BlockWrapperComponent as j, CollectionAccessService as k, CollectionCardWidget as l, CollectionEditPage as m, normalizeBlockDefaults as n, CollectionListPage as o, CollectionViewPage as p, DateFieldRenderer as q, EntityListWidget as r, EntityViewWidget as s, FeedbackService as t, FieldRendererRegistry as u, ForgotPasswordFormComponent as v, ForgotPasswordPage as w, LoginPage as x, MOMENTUM_API_CONTEXT as y, McmsThemeService as z };
|
|
15115
|
-
//# sourceMappingURL=momentumcms-admin-momentumcms-admin-
|
|
15171
|
+
//# sourceMappingURL=momentumcms-admin-momentumcms-admin-De5FLr2L.mjs.map
|