@rolatech/angular-property 20.3.2-beta.4 → 20.3.3-beta.1
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/{rolatech-angular-property-feature-unavailable-v3kEKNm1.mjs → rolatech-angular-property-feature-unavailable-CuX8vT15.mjs} +9 -9
- package/fesm2022/{rolatech-angular-property-feature-unavailable-v3kEKNm1.mjs.map → rolatech-angular-property-feature-unavailable-CuX8vT15.mjs.map} +1 -1
- package/fesm2022/{rolatech-angular-property-property-agent-overview-DAVd3S1f.mjs → rolatech-angular-property-property-agent-overview-DFKqCo3z.mjs} +4 -4
- package/fesm2022/{rolatech-angular-property-property-agent-overview-DAVd3S1f.mjs.map → rolatech-angular-property-property-agent-overview-DFKqCo3z.mjs.map} +1 -1
- package/fesm2022/{rolatech-angular-property-property-index.component-B2kgOaBK.mjs → rolatech-angular-property-property-index.component-BXQGrEU9.mjs} +7 -7
- package/fesm2022/{rolatech-angular-property-property-index.component-B2kgOaBK.mjs.map → rolatech-angular-property-property-index.component-BXQGrEU9.mjs.map} +1 -1
- package/fesm2022/{rolatech-angular-property-property-manage-overview-6dhTJwwA.mjs → rolatech-angular-property-property-manage-overview-BF-U0dm2.mjs} +4 -4
- package/fesm2022/{rolatech-angular-property-property-manage-overview-6dhTJwwA.mjs.map → rolatech-angular-property-property-manage-overview-BF-U0dm2.mjs.map} +1 -1
- package/fesm2022/{rolatech-angular-property-property-manage-viewings-index.component-C22Z-C7z.mjs → rolatech-angular-property-property-manage-viewings-index.component-CDDhdhXt.mjs} +7 -7
- package/fesm2022/{rolatech-angular-property-property-manage-viewings-index.component-C22Z-C7z.mjs.map → rolatech-angular-property-property-manage-viewings-index.component-CDDhdhXt.mjs.map} +1 -1
- package/fesm2022/{rolatech-angular-property-rolatech-angular-property-DdE64dzT.mjs → rolatech-angular-property-rolatech-angular-property-Bc-daTQY.mjs} +1128 -944
- package/fesm2022/rolatech-angular-property-rolatech-angular-property-Bc-daTQY.mjs.map +1 -0
- package/fesm2022/rolatech-angular-property.mjs +1 -1
- package/package.json +6 -6
- package/themes/_default.scss +2 -2
- package/types/rolatech-angular-property.d.ts +19 -2
- package/fesm2022/rolatech-angular-property-rolatech-angular-property-DdE64dzT.mjs.map +0 -1
|
@@ -29,16 +29,16 @@ class FeatureUnavailable {
|
|
|
29
29
|
snackBar = inject(MatSnackBar);
|
|
30
30
|
routeData = toSignal(this.route.data, { initialValue: this.route.snapshot.data });
|
|
31
31
|
fallbackSupportUrl = this.environment.supportUrl ?? this.environment.www ?? '/';
|
|
32
|
-
waitlistSubmitting = signal(false, ...(ngDevMode ? [{ debugName: "waitlistSubmitting" }] : []));
|
|
32
|
+
waitlistSubmitting = signal(false, ...(ngDevMode ? [{ debugName: "waitlistSubmitting" }] : /* istanbul ignore next */ []));
|
|
33
33
|
feature = computed(() => {
|
|
34
34
|
return this.routeData()['featureAvailability'] ?? DEFAULT_FEATURE_DATA;
|
|
35
|
-
}, ...(ngDevMode ? [{ debugName: "feature" }] : []));
|
|
36
|
-
highlights = computed(() => this.feature().highlights ?? [], ...(ngDevMode ? [{ debugName: "highlights" }] : []));
|
|
37
|
-
primaryAction = computed(() => this.resolveAction(this.feature().primaryAction, 'Contact support'), ...(ngDevMode ? [{ debugName: "primaryAction" }] : []));
|
|
35
|
+
}, ...(ngDevMode ? [{ debugName: "feature" }] : /* istanbul ignore next */ []));
|
|
36
|
+
highlights = computed(() => this.feature().highlights ?? [], ...(ngDevMode ? [{ debugName: "highlights" }] : /* istanbul ignore next */ []));
|
|
37
|
+
primaryAction = computed(() => this.resolveAction(this.feature().primaryAction, 'Contact support'), ...(ngDevMode ? [{ debugName: "primaryAction" }] : /* istanbul ignore next */ []));
|
|
38
38
|
secondaryAction = computed(() => {
|
|
39
39
|
const action = this.feature().secondaryAction;
|
|
40
40
|
return action ? this.resolveAction(action, action.label) : null;
|
|
41
|
-
}, ...(ngDevMode ? [{ debugName: "secondaryAction" }] : []));
|
|
41
|
+
}, ...(ngDevMode ? [{ debugName: "secondaryAction" }] : /* istanbul ignore next */ []));
|
|
42
42
|
async triggerPrimaryAction(action) {
|
|
43
43
|
if (action.actionType !== 'joinWaitlist' || !action.featureCode || this.waitlistSubmitting()) {
|
|
44
44
|
return;
|
|
@@ -94,13 +94,13 @@ class FeatureUnavailable {
|
|
|
94
94
|
target: action?.target ?? '_blank',
|
|
95
95
|
};
|
|
96
96
|
}
|
|
97
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
98
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
97
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: FeatureUnavailable, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
98
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: FeatureUnavailable, isStandalone: true, selector: "rolatech-feature-unavailable", ngImport: i0, template: "<section class=\"feature-unavailable\">\n <div class=\"feature-unavailable__hero\">\n <div class=\"feature-unavailable__copy\">\n <span class=\"feature-unavailable__badge\">{{ feature().badge ?? 'Limited access' }}</span>\n <h1 class=\"feature-unavailable__title\">{{ feature().title }}</h1>\n <p class=\"feature-unavailable__message\">{{ feature().message }}</p>\n </div>\n\n <div class=\"feature-unavailable__actions\">\n @if (primaryAction().actionType === 'joinWaitlist') {\n <button mat-flat-button color=\"primary\" type=\"button\" [disabled]=\"waitlistSubmitting()\" (click)=\"triggerPrimaryAction(primaryAction())\">\n {{ waitlistSubmitting() ? 'Joining...' : primaryAction().label }}\n </button>\n } @else if (primaryAction().routerLink) {\n <a mat-flat-button color=\"primary\" [routerLink]=\"primaryAction().routerLink\">\n {{ primaryAction().label }}\n </a>\n } @else {\n <a\n mat-flat-button\n color=\"primary\"\n [href]=\"primaryAction().href\"\n [attr.target]=\"primaryAction().target ?? null\"\n rel=\"noreferrer\"\n >\n {{ primaryAction().label }}\n </a>\n }\n\n @if (secondaryAction(); as secondaryAction) {\n @if (secondaryAction.routerLink) {\n <a mat-stroked-button [routerLink]=\"secondaryAction.routerLink\">\n {{ secondaryAction.label }}\n </a>\n } @else {\n <a\n mat-stroked-button\n [href]=\"secondaryAction.href\"\n [attr.target]=\"secondaryAction.target ?? null\"\n rel=\"noreferrer\"\n >\n {{ secondaryAction.label }}\n </a>\n }\n }\n </div>\n </div>\n\n @if (highlights().length > 0) {\n <div class=\"feature-unavailable__highlights\">\n @for (highlight of highlights(); track highlight.title) {\n <article class=\"feature-unavailable__card\">\n <div class=\"feature-unavailable__icon\">\n <mat-icon>{{ highlight.icon }}</mat-icon>\n </div>\n <div class=\"feature-unavailable__card-copy\">\n <h2>{{ highlight.title }}</h2>\n <p>{{ highlight.detail }}</p>\n </div>\n </article>\n }\n </div>\n }\n</section>\n", styles: [":host{display:block}.feature-unavailable{display:grid;gap:1.5rem;padding:1.5rem}.feature-unavailable__hero{display:grid;gap:1.5rem;border:1px solid var(--rt-border-color, rgba(15, 23, 42, .08));border-radius:1.5rem;padding:2rem;background:var(--rt-raised-background, #f8fafc);color:var(--rt-text-primary, #0f172a);box-shadow:0 18px 44px -36px #0f172a59}.feature-unavailable__copy{max-width:42rem}.feature-unavailable__badge{display:inline-flex;align-items:center;margin-bottom:1rem;border:1px solid var(--rt-border-color, rgba(15, 23, 42, .08));border-radius:9999px;padding:.35rem .8rem;background:var(--rt-base-background, #ffffff);color:var(--rt-text-secondary, #475569);font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.feature-unavailable__title{margin:0;font-size:clamp(2rem,3vw,3rem);line-height:1.05;font-weight:700}.feature-unavailable__message{margin:1rem 0 0;max-width:36rem;color:var(--rt-text-secondary, #475569);font-size:1rem;line-height:1.7}.feature-unavailable__actions{display:flex;flex-wrap:wrap;gap:.75rem}.feature-unavailable__highlights{display:grid;gap:1rem;grid-template-columns:repeat(3,minmax(0,1fr))}.feature-unavailable__card{display:flex;gap:1rem;border:1px solid var(--rt-border-color, rgba(15, 23, 42, .08));border-radius:1.25rem;padding:1.25rem;background:var(--rt-base-background, #ffffff);box-shadow:0 18px 44px -36px #0f172a40}.feature-unavailable__icon{display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;border-radius:1rem;background:var(--rt-raised-background, rgba(15, 23, 42, .04));color:var(--rt-brand-color, currentColor);flex-shrink:0}.feature-unavailable__card-copy h2{margin:0;color:var(--rt-text-primary, #0f172a);font-size:1rem;font-weight:700}.feature-unavailable__card-copy p{margin:.45rem 0 0;color:var(--rt-text-secondary, #475569);line-height:1.6}@media(max-width:960px){.feature-unavailable{padding:1rem}.feature-unavailable__hero{padding:1.5rem}.feature-unavailable__highlights{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
|
|
99
99
|
}
|
|
100
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: FeatureUnavailable, decorators: [{
|
|
101
101
|
type: Component,
|
|
102
102
|
args: [{ selector: 'rolatech-feature-unavailable', imports: [CommonModule, MatButtonModule, MatIconModule, MatSnackBarModule, RouterLink], template: "<section class=\"feature-unavailable\">\n <div class=\"feature-unavailable__hero\">\n <div class=\"feature-unavailable__copy\">\n <span class=\"feature-unavailable__badge\">{{ feature().badge ?? 'Limited access' }}</span>\n <h1 class=\"feature-unavailable__title\">{{ feature().title }}</h1>\n <p class=\"feature-unavailable__message\">{{ feature().message }}</p>\n </div>\n\n <div class=\"feature-unavailable__actions\">\n @if (primaryAction().actionType === 'joinWaitlist') {\n <button mat-flat-button color=\"primary\" type=\"button\" [disabled]=\"waitlistSubmitting()\" (click)=\"triggerPrimaryAction(primaryAction())\">\n {{ waitlistSubmitting() ? 'Joining...' : primaryAction().label }}\n </button>\n } @else if (primaryAction().routerLink) {\n <a mat-flat-button color=\"primary\" [routerLink]=\"primaryAction().routerLink\">\n {{ primaryAction().label }}\n </a>\n } @else {\n <a\n mat-flat-button\n color=\"primary\"\n [href]=\"primaryAction().href\"\n [attr.target]=\"primaryAction().target ?? null\"\n rel=\"noreferrer\"\n >\n {{ primaryAction().label }}\n </a>\n }\n\n @if (secondaryAction(); as secondaryAction) {\n @if (secondaryAction.routerLink) {\n <a mat-stroked-button [routerLink]=\"secondaryAction.routerLink\">\n {{ secondaryAction.label }}\n </a>\n } @else {\n <a\n mat-stroked-button\n [href]=\"secondaryAction.href\"\n [attr.target]=\"secondaryAction.target ?? null\"\n rel=\"noreferrer\"\n >\n {{ secondaryAction.label }}\n </a>\n }\n }\n </div>\n </div>\n\n @if (highlights().length > 0) {\n <div class=\"feature-unavailable__highlights\">\n @for (highlight of highlights(); track highlight.title) {\n <article class=\"feature-unavailable__card\">\n <div class=\"feature-unavailable__icon\">\n <mat-icon>{{ highlight.icon }}</mat-icon>\n </div>\n <div class=\"feature-unavailable__card-copy\">\n <h2>{{ highlight.title }}</h2>\n <p>{{ highlight.detail }}</p>\n </div>\n </article>\n }\n </div>\n }\n</section>\n", styles: [":host{display:block}.feature-unavailable{display:grid;gap:1.5rem;padding:1.5rem}.feature-unavailable__hero{display:grid;gap:1.5rem;border:1px solid var(--rt-border-color, rgba(15, 23, 42, .08));border-radius:1.5rem;padding:2rem;background:var(--rt-raised-background, #f8fafc);color:var(--rt-text-primary, #0f172a);box-shadow:0 18px 44px -36px #0f172a59}.feature-unavailable__copy{max-width:42rem}.feature-unavailable__badge{display:inline-flex;align-items:center;margin-bottom:1rem;border:1px solid var(--rt-border-color, rgba(15, 23, 42, .08));border-radius:9999px;padding:.35rem .8rem;background:var(--rt-base-background, #ffffff);color:var(--rt-text-secondary, #475569);font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.feature-unavailable__title{margin:0;font-size:clamp(2rem,3vw,3rem);line-height:1.05;font-weight:700}.feature-unavailable__message{margin:1rem 0 0;max-width:36rem;color:var(--rt-text-secondary, #475569);font-size:1rem;line-height:1.7}.feature-unavailable__actions{display:flex;flex-wrap:wrap;gap:.75rem}.feature-unavailable__highlights{display:grid;gap:1rem;grid-template-columns:repeat(3,minmax(0,1fr))}.feature-unavailable__card{display:flex;gap:1rem;border:1px solid var(--rt-border-color, rgba(15, 23, 42, .08));border-radius:1.25rem;padding:1.25rem;background:var(--rt-base-background, #ffffff);box-shadow:0 18px 44px -36px #0f172a40}.feature-unavailable__icon{display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;border-radius:1rem;background:var(--rt-raised-background, rgba(15, 23, 42, .04));color:var(--rt-brand-color, currentColor);flex-shrink:0}.feature-unavailable__card-copy h2{margin:0;color:var(--rt-text-primary, #0f172a);font-size:1rem;font-weight:700}.feature-unavailable__card-copy p{margin:.45rem 0 0;color:var(--rt-text-secondary, #475569);line-height:1.6}@media(max-width:960px){.feature-unavailable{padding:1rem}.feature-unavailable__hero{padding:1.5rem}.feature-unavailable__highlights{grid-template-columns:1fr}}\n"] }]
|
|
103
103
|
}] });
|
|
104
104
|
|
|
105
105
|
export { FeatureUnavailable };
|
|
106
|
-
//# sourceMappingURL=rolatech-angular-property-feature-unavailable-
|
|
106
|
+
//# sourceMappingURL=rolatech-angular-property-feature-unavailable-CuX8vT15.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rolatech-angular-property-feature-unavailable-v3kEKNm1.mjs","sources":["../../../../packages/angular-property/src/lib/pages/feature-unavailable/feature-unavailable.ts","../../../../packages/angular-property/src/lib/pages/feature-unavailable/feature-unavailable.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { AuthService } from '@rolatech/angular-auth';\nimport { PropertyService } from '@rolatech/angular-services';\nimport { FeatureAvailabilityAction, FeatureAvailabilityData } from '../../routing/feature-availability';\nimport { firstValueFrom } from 'rxjs';\n\ninterface ResolvedFeatureAction {\n label: string;\n href?: string;\n routerLink?: string | readonly string[];\n target?: '_self' | '_blank';\n actionType?: 'joinWaitlist';\n featureCode?: string;\n featureLabel?: string;\n}\n\nconst DEFAULT_FEATURE_DATA: FeatureAvailabilityData = {\n status: 'disabled',\n badge: 'Limited access',\n title: 'This feature is not available yet',\n message: 'We are rolling this area out in stages so your team gets a stable first release.',\n highlights: [],\n};\n\n@Component({\n selector: 'rolatech-feature-unavailable',\n imports: [CommonModule, MatButtonModule, MatIconModule, MatSnackBarModule, RouterLink],\n templateUrl: './feature-unavailable.html',\n styleUrl: './feature-unavailable.scss',\n})\nexport class FeatureUnavailable {\n private readonly route = inject(ActivatedRoute);\n private readonly router = inject(Router);\n private readonly environment = inject(APP_CONFIG);\n private readonly authService = inject(AuthService);\n private readonly propertyService = inject(PropertyService);\n private readonly snackBar = inject(MatSnackBar);\n private readonly routeData = toSignal(this.route.data, { initialValue: this.route.snapshot.data });\n\n private readonly fallbackSupportUrl = this.environment.supportUrl ?? this.environment.www ?? '/';\n readonly waitlistSubmitting = signal(false);\n\n readonly feature = computed<FeatureAvailabilityData>(() => {\n return (this.routeData()['featureAvailability'] as FeatureAvailabilityData | undefined) ?? DEFAULT_FEATURE_DATA;\n });\n\n readonly highlights = computed(() => this.feature().highlights ?? []);\n readonly primaryAction = computed(() => this.resolveAction(this.feature().primaryAction, 'Contact support'));\n readonly secondaryAction = computed(() => {\n const action = this.feature().secondaryAction;\n return action ? this.resolveAction(action, action.label) : null;\n });\n\n async triggerPrimaryAction(action: ResolvedFeatureAction): Promise<void> {\n if (action.actionType !== 'joinWaitlist' || !action.featureCode || this.waitlistSubmitting()) {\n return;\n }\n\n const user = this.authService.user();\n const email = user?.email?.trim();\n if (!email) {\n this.snackBar.open('Add an email address to your account before joining the waitlist.', 'OK', { duration: 3500 });\n return;\n }\n\n this.waitlistSubmitting.set(true);\n try {\n const fullName = `${user?.firstName ?? ''} ${user?.lastName ?? ''}`.trim() || user?.name || null;\n await firstValueFrom(\n this.propertyService.joinFeatureWaitlist(action.featureCode, {\n featureLabel: action.featureLabel ?? this.feature().title,\n pagePath: this.router.url,\n fullName,\n email,\n phone: user?.phone ?? null,\n note: null,\n }),\n );\n\n this.snackBar.open('You joined the waitlist. We will notify your team when this workspace opens.', 'OK', {\n duration: 3500,\n });\n } catch {\n this.snackBar.open('Failed to join the waitlist. Please try again.', 'OK', {\n duration: 3500,\n });\n } finally {\n this.waitlistSubmitting.set(false);\n }\n }\n\n private resolveAction(action: FeatureAvailabilityAction | undefined, fallbackLabel: string): ResolvedFeatureAction {\n if (action?.actionType === 'joinWaitlist' && action.featureCode) {\n return {\n label: action.label,\n actionType: action.actionType,\n featureCode: action.featureCode,\n featureLabel: action.featureLabel,\n };\n }\n\n if (action?.routerLink) {\n return {\n label: action.label,\n routerLink: action.routerLink,\n };\n }\n\n return {\n label: action?.label ?? fallbackLabel,\n href: action?.href ?? this.fallbackSupportUrl,\n target: action?.target ?? '_blank',\n };\n }\n}\n","<section class=\"feature-unavailable\">\n <div class=\"feature-unavailable__hero\">\n <div class=\"feature-unavailable__copy\">\n <span class=\"feature-unavailable__badge\">{{ feature().badge ?? 'Limited access' }}</span>\n <h1 class=\"feature-unavailable__title\">{{ feature().title }}</h1>\n <p class=\"feature-unavailable__message\">{{ feature().message }}</p>\n </div>\n\n <div class=\"feature-unavailable__actions\">\n @if (primaryAction().actionType === 'joinWaitlist') {\n <button mat-flat-button color=\"primary\" type=\"button\" [disabled]=\"waitlistSubmitting()\" (click)=\"triggerPrimaryAction(primaryAction())\">\n {{ waitlistSubmitting() ? 'Joining...' : primaryAction().label }}\n </button>\n } @else if (primaryAction().routerLink) {\n <a mat-flat-button color=\"primary\" [routerLink]=\"primaryAction().routerLink\">\n {{ primaryAction().label }}\n </a>\n } @else {\n <a\n mat-flat-button\n color=\"primary\"\n [href]=\"primaryAction().href\"\n [attr.target]=\"primaryAction().target ?? null\"\n rel=\"noreferrer\"\n >\n {{ primaryAction().label }}\n </a>\n }\n\n @if (secondaryAction(); as secondaryAction) {\n @if (secondaryAction.routerLink) {\n <a mat-stroked-button [routerLink]=\"secondaryAction.routerLink\">\n {{ secondaryAction.label }}\n </a>\n } @else {\n <a\n mat-stroked-button\n [href]=\"secondaryAction.href\"\n [attr.target]=\"secondaryAction.target ?? null\"\n rel=\"noreferrer\"\n >\n {{ secondaryAction.label }}\n </a>\n }\n }\n </div>\n </div>\n\n @if (highlights().length > 0) {\n <div class=\"feature-unavailable__highlights\">\n @for (highlight of highlights(); track highlight.title) {\n <article class=\"feature-unavailable__card\">\n <div class=\"feature-unavailable__icon\">\n <mat-icon>{{ highlight.icon }}</mat-icon>\n </div>\n <div class=\"feature-unavailable__card-copy\">\n <h2>{{ highlight.title }}</h2>\n <p>{{ highlight.detail }}</p>\n </div>\n </article>\n }\n </div>\n }\n</section>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rolatech-angular-property-feature-unavailable-CuX8vT15.mjs","sources":["../../../../packages/angular-property/src/lib/pages/feature-unavailable/feature-unavailable.ts","../../../../packages/angular-property/src/lib/pages/feature-unavailable/feature-unavailable.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { AuthService } from '@rolatech/angular-auth';\nimport { PropertyService } from '@rolatech/angular-services';\nimport { FeatureAvailabilityAction, FeatureAvailabilityData } from '../../routing/feature-availability';\nimport { firstValueFrom } from 'rxjs';\n\ninterface ResolvedFeatureAction {\n label: string;\n href?: string;\n routerLink?: string | readonly string[];\n target?: '_self' | '_blank';\n actionType?: 'joinWaitlist';\n featureCode?: string;\n featureLabel?: string;\n}\n\nconst DEFAULT_FEATURE_DATA: FeatureAvailabilityData = {\n status: 'disabled',\n badge: 'Limited access',\n title: 'This feature is not available yet',\n message: 'We are rolling this area out in stages so your team gets a stable first release.',\n highlights: [],\n};\n\n@Component({\n selector: 'rolatech-feature-unavailable',\n imports: [CommonModule, MatButtonModule, MatIconModule, MatSnackBarModule, RouterLink],\n templateUrl: './feature-unavailable.html',\n styleUrl: './feature-unavailable.scss',\n})\nexport class FeatureUnavailable {\n private readonly route = inject(ActivatedRoute);\n private readonly router = inject(Router);\n private readonly environment = inject(APP_CONFIG);\n private readonly authService = inject(AuthService);\n private readonly propertyService = inject(PropertyService);\n private readonly snackBar = inject(MatSnackBar);\n private readonly routeData = toSignal(this.route.data, { initialValue: this.route.snapshot.data });\n\n private readonly fallbackSupportUrl = this.environment.supportUrl ?? this.environment.www ?? '/';\n readonly waitlistSubmitting = signal(false);\n\n readonly feature = computed<FeatureAvailabilityData>(() => {\n return (this.routeData()['featureAvailability'] as FeatureAvailabilityData | undefined) ?? DEFAULT_FEATURE_DATA;\n });\n\n readonly highlights = computed(() => this.feature().highlights ?? []);\n readonly primaryAction = computed(() => this.resolveAction(this.feature().primaryAction, 'Contact support'));\n readonly secondaryAction = computed(() => {\n const action = this.feature().secondaryAction;\n return action ? this.resolveAction(action, action.label) : null;\n });\n\n async triggerPrimaryAction(action: ResolvedFeatureAction): Promise<void> {\n if (action.actionType !== 'joinWaitlist' || !action.featureCode || this.waitlistSubmitting()) {\n return;\n }\n\n const user = this.authService.user();\n const email = user?.email?.trim();\n if (!email) {\n this.snackBar.open('Add an email address to your account before joining the waitlist.', 'OK', { duration: 3500 });\n return;\n }\n\n this.waitlistSubmitting.set(true);\n try {\n const fullName = `${user?.firstName ?? ''} ${user?.lastName ?? ''}`.trim() || user?.name || null;\n await firstValueFrom(\n this.propertyService.joinFeatureWaitlist(action.featureCode, {\n featureLabel: action.featureLabel ?? this.feature().title,\n pagePath: this.router.url,\n fullName,\n email,\n phone: user?.phone ?? null,\n note: null,\n }),\n );\n\n this.snackBar.open('You joined the waitlist. We will notify your team when this workspace opens.', 'OK', {\n duration: 3500,\n });\n } catch {\n this.snackBar.open('Failed to join the waitlist. Please try again.', 'OK', {\n duration: 3500,\n });\n } finally {\n this.waitlistSubmitting.set(false);\n }\n }\n\n private resolveAction(action: FeatureAvailabilityAction | undefined, fallbackLabel: string): ResolvedFeatureAction {\n if (action?.actionType === 'joinWaitlist' && action.featureCode) {\n return {\n label: action.label,\n actionType: action.actionType,\n featureCode: action.featureCode,\n featureLabel: action.featureLabel,\n };\n }\n\n if (action?.routerLink) {\n return {\n label: action.label,\n routerLink: action.routerLink,\n };\n }\n\n return {\n label: action?.label ?? fallbackLabel,\n href: action?.href ?? this.fallbackSupportUrl,\n target: action?.target ?? '_blank',\n };\n }\n}\n","<section class=\"feature-unavailable\">\n <div class=\"feature-unavailable__hero\">\n <div class=\"feature-unavailable__copy\">\n <span class=\"feature-unavailable__badge\">{{ feature().badge ?? 'Limited access' }}</span>\n <h1 class=\"feature-unavailable__title\">{{ feature().title }}</h1>\n <p class=\"feature-unavailable__message\">{{ feature().message }}</p>\n </div>\n\n <div class=\"feature-unavailable__actions\">\n @if (primaryAction().actionType === 'joinWaitlist') {\n <button mat-flat-button color=\"primary\" type=\"button\" [disabled]=\"waitlistSubmitting()\" (click)=\"triggerPrimaryAction(primaryAction())\">\n {{ waitlistSubmitting() ? 'Joining...' : primaryAction().label }}\n </button>\n } @else if (primaryAction().routerLink) {\n <a mat-flat-button color=\"primary\" [routerLink]=\"primaryAction().routerLink\">\n {{ primaryAction().label }}\n </a>\n } @else {\n <a\n mat-flat-button\n color=\"primary\"\n [href]=\"primaryAction().href\"\n [attr.target]=\"primaryAction().target ?? null\"\n rel=\"noreferrer\"\n >\n {{ primaryAction().label }}\n </a>\n }\n\n @if (secondaryAction(); as secondaryAction) {\n @if (secondaryAction.routerLink) {\n <a mat-stroked-button [routerLink]=\"secondaryAction.routerLink\">\n {{ secondaryAction.label }}\n </a>\n } @else {\n <a\n mat-stroked-button\n [href]=\"secondaryAction.href\"\n [attr.target]=\"secondaryAction.target ?? null\"\n rel=\"noreferrer\"\n >\n {{ secondaryAction.label }}\n </a>\n }\n }\n </div>\n </div>\n\n @if (highlights().length > 0) {\n <div class=\"feature-unavailable__highlights\">\n @for (highlight of highlights(); track highlight.title) {\n <article class=\"feature-unavailable__card\">\n <div class=\"feature-unavailable__icon\">\n <mat-icon>{{ highlight.icon }}</mat-icon>\n </div>\n <div class=\"feature-unavailable__card-copy\">\n <h2>{{ highlight.title }}</h2>\n <p>{{ highlight.detail }}</p>\n </div>\n </article>\n }\n </div>\n }\n</section>\n"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,13 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Component } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
class PropertyAgentOverview {
|
|
5
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
6
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
5
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PropertyAgentOverview, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: PropertyAgentOverview, isStandalone: true, selector: "rolatech-property-agent-overview", ngImport: i0, template: "<p>property-agent-overview works!</p>\n", styles: [""] });
|
|
7
7
|
}
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PropertyAgentOverview, decorators: [{
|
|
9
9
|
type: Component,
|
|
10
10
|
args: [{ selector: 'rolatech-property-agent-overview', imports: [], template: "<p>property-agent-overview works!</p>\n" }]
|
|
11
11
|
}] });
|
|
12
12
|
|
|
13
13
|
export { PropertyAgentOverview };
|
|
14
|
-
//# sourceMappingURL=rolatech-angular-property-property-agent-overview-
|
|
14
|
+
//# sourceMappingURL=rolatech-angular-property-property-agent-overview-DFKqCo3z.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rolatech-angular-property-property-agent-overview-
|
|
1
|
+
{"version":3,"file":"rolatech-angular-property-property-agent-overview-DFKqCo3z.mjs","sources":["../../../../packages/angular-property/src/lib/pages/property-overview/property-agent-overview/property-agent-overview.ts","../../../../packages/angular-property/src/lib/pages/property-overview/property-agent-overview/property-agent-overview.html"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'rolatech-property-agent-overview',\n imports: [],\n templateUrl: './property-agent-overview.html',\n styleUrl: './property-agent-overview.scss',\n})\nexport class PropertyAgentOverview {}\n","<p>property-agent-overview works!</p>\n"],"names":[],"mappings":";;;MAQa,qBAAqB,CAAA;uGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,4FCRlC,yCACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDOa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,WACnC,EAAE,EAAA,QAAA,EAAA,yCAAA,EAAA;;;;;"}
|
|
@@ -4,7 +4,7 @@ import { AngularCommonModule } from '@rolatech/angular-common';
|
|
|
4
4
|
import { BaseComponent, RichItemComponent, AngularComponentsModule, RichViewComponent } from '@rolatech/angular-components';
|
|
5
5
|
import { PropertyService, PropertySearchService } from '@rolatech/angular-services';
|
|
6
6
|
import { map, distinctUntilChanged, switchMap, finalize } from 'rxjs';
|
|
7
|
-
import { P as PropertyUtil, a as PropertyViewType, b as PropertyManageItemSkeleton } from './rolatech-angular-property-rolatech-angular-property-
|
|
7
|
+
import { P as PropertyUtil, a as PropertyViewType, b as PropertyManageItemSkeleton } from './rolatech-angular-property-rolatech-angular-property-Bc-daTQY.mjs';
|
|
8
8
|
import * as i1$1 from '@angular/common';
|
|
9
9
|
import * as i2 from '@angular/material/paginator';
|
|
10
10
|
import * as i1 from '@angular/router';
|
|
@@ -13,12 +13,12 @@ class PropertyIndexComponent extends BaseComponent {
|
|
|
13
13
|
propertyService = inject(PropertyService);
|
|
14
14
|
propertySearchService = inject(PropertySearchService);
|
|
15
15
|
util = inject(PropertyUtil);
|
|
16
|
-
properties = signal([], ...(ngDevMode ? [{ debugName: "properties" }] : []));
|
|
16
|
+
properties = signal([], ...(ngDevMode ? [{ debugName: "properties" }] : /* istanbul ignore next */ []));
|
|
17
17
|
meta;
|
|
18
18
|
loading = false;
|
|
19
19
|
length = 100;
|
|
20
20
|
pageSize = 15;
|
|
21
|
-
pageIndex = signal(0, ...(ngDevMode ? [{ debugName: "pageIndex" }] : []));
|
|
21
|
+
pageIndex = signal(0, ...(ngDevMode ? [{ debugName: "pageIndex" }] : /* istanbul ignore next */ []));
|
|
22
22
|
pageSizeOptions = [5, 10, 25, 100];
|
|
23
23
|
viewType = PropertyViewType.GRID;
|
|
24
24
|
ngOnInit() {
|
|
@@ -86,10 +86,10 @@ class PropertyIndexComponent extends BaseComponent {
|
|
|
86
86
|
},
|
|
87
87
|
});
|
|
88
88
|
}
|
|
89
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
90
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
89
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PropertyIndexComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
90
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: PropertyIndexComponent, isStandalone: true, selector: "rolatech-property-index", host: { classAttribute: "rolatech-property-index" }, usesInheritance: true, ngImport: i0, template: "<div class=\"min-w-[320px] h-full\">\n @if (loading) {\n <div class=\"bg-(--rt-rasised-background) h-full\">\n <div class=\"flex flex-row flex-wrap\" [ngClass]=\"viewType === 1 ? 'flex-col' : 'flex-row flex-wrap'\">\n @for (row of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; track row) {\n <rolatech-property-manage-item-skeleton [list]=\"viewType === 1\"></rolatech-property-manage-item-skeleton>\n }\n </div>\n </div>\n } @else {\n @if (properties() && properties().length > 0) {\n <rolatech-rich-view [wrap]=\"viewType === 0\" [list]=\"viewType === 1\">\n @for (item of properties(); track item) {\n @defer {\n <rolatech-rich-item class=\"cursor-pointer\"\n [routerLink]=\"['./', item.id]\"\n [thumbnail]=\"item.media && item.media.length > 0 ? item.media[0].url : ''\"\n [title]=\"item.title\"\n thumbnailRatio=\"full\"\n [price]=\"item.price\"\n thumbnailMode=\"clip\"\n ></rolatech-rich-item>\n }\n }\n </rolatech-rich-view>\n } @else {\n <div class=\"flex w-full h-36 items-center justify-center\">\n <div>No data</div>\n </div>\n }\n <mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageIndex]=\"pageIndex()\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onPage($event)\"\n hidePageSize\n showFirstLastButtons\n >\n </mat-paginator>\n }\n</div>\n", styles: ["rolatech-property-index{display:flex;flex-direction:column;--rt-property-view-items-per-row: 1}@media(min-width:600px){rolatech-property-index{--rt-property-view-items-per-row: 2}}@media(min-width:768px){rolatech-property-index{--rt-property-view-items-per-row: 3}}@media(min-width:1280px){rolatech-property-index{--rt-property-view-items-per-row: 3}}@media(min-width:1536px){rolatech-property-index{--rt-property-view-items-per-row: 4}}@media(min-width:1920px){rolatech-property-index{--rt-property-view-items-per-row: 5}}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: RichViewComponent, selector: "rolatech-rich-view", inputs: ["list", "wrap"] }, { kind: "component", type: PropertyManageItemSkeleton, selector: "rolatech-property-manage-item-skeleton", inputs: ["loading", "list"] }], encapsulation: i0.ViewEncapsulation.None, deferBlockDependencies: [() => [i1.RouterLink, RichItemComponent]] });
|
|
91
91
|
}
|
|
92
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PropertyIndexComponent, decorators: [{
|
|
93
93
|
type: Component,
|
|
94
94
|
args: [{ selector: 'rolatech-property-index', imports: [AngularCommonModule, AngularComponentsModule, RichViewComponent, RichItemComponent, PropertyManageItemSkeleton], encapsulation: ViewEncapsulation.None, host: {
|
|
95
95
|
class: 'rolatech-property-index',
|
|
@@ -97,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
97
97
|
}] });
|
|
98
98
|
|
|
99
99
|
export { PropertyIndexComponent };
|
|
100
|
-
//# sourceMappingURL=rolatech-angular-property-property-index.component-
|
|
100
|
+
//# sourceMappingURL=rolatech-angular-property-property-index.component-BXQGrEU9.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rolatech-angular-property-property-index.component-B2kgOaBK.mjs","sources":["../../../../packages/angular-property/src/lib/pages/property/property-index/property-index.component.ts","../../../../packages/angular-property/src/lib/pages/property/property-index/property-index.component.html"],"sourcesContent":["import { Component, DestroyRef, effect, inject, OnInit, signal, ViewEncapsulation } from '@angular/core';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, RichViewComponent, RichItemComponent, BaseComponent } from '@rolatech/angular-components';\nimport { PropertySearchService, PropertyService } from '@rolatech/angular-services';\nimport { Property } from '../../../interfaces';\nimport { defer, distinctUntilChanged, finalize, map, switchMap } from 'rxjs';\nimport { PageEvent } from '@angular/material/paginator';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { PropertyUtil, PropertyViewType } from '../../../property-util';\nimport { PropertyManageItemSkeleton } from '../../../components/property-manage-item-skeleton/property-manage-item-skeleton';\n\n@Component({\n selector: 'rolatech-property-index',\n imports: [AngularCommonModule, AngularComponentsModule, RichViewComponent, RichItemComponent, PropertyManageItemSkeleton],\n templateUrl: './property-index.component.html',\n styleUrl: './property-index.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'rolatech-property-index',\n },\n})\nexport class PropertyIndexComponent extends BaseComponent implements OnInit {\n propertyService = inject(PropertyService);\n propertySearchService = inject(PropertySearchService);\n private util = inject(PropertyUtil);\n properties = signal<Property[]>([]);\n meta: any;\n loading = false;\n length = 100;\n pageSize = 15;\n pageIndex = signal(0);\n pageSizeOptions: number[] = [5, 10, 25, 100];\n viewType = PropertyViewType.GRID;\n\n ngOnInit(): void {\n this.util.viewEvent.subscribe((res) => {\n this.viewType = res;\n });\n const sub = this.route.queryParamMap\n .pipe(\n map((p) => {\n const page = p.get('page') ? Number(p.get('page')) : 1;\n this.pageIndex.set(Math.max(page - 1, 0));\n return {\n q: p.get('q') || undefined,\n town: p.get('town') || undefined,\n type: p.get('type') || undefined,\n market: p.get('market') || undefined,\n minBedrooms: p.get('minBedrooms') ? Number(p.get('minBedrooms')) : undefined,\n maxBedrooms: p.get('maxBedrooms') ? Number(p.get('maxBedrooms')) : undefined,\n minPrice: p.get('minPrice') ? Number(p.get('minPrice')) : undefined,\n maxPrice: p.get('maxPrice') ? Number(p.get('maxPrice')) : undefined,\n availableFrom: p.get('availableFrom') || undefined,\n availableTo: p.get('availableTo') || undefined,\n features: p.getAll('features')?.length ? p.getAll('features') : undefined,\n page,\n limit: p.get('limit') ? Number(p.get('limit')) : 15,\n sort: p.get('sort') || undefined,\n };\n }),\n // Cheap deep compare via JSON to avoid spam calls when nothing changed\n map((o) => JSON.stringify(o)),\n distinctUntilChanged(),\n map((s) => JSON.parse(s)),\n switchMap((params) => {\n this.loading = true;\n params['sort'] = 'updatedAt desc';\n return this.propertySearchService.search<any>(params).pipe(finalize(() => (this.loading = false)));\n }),\n )\n .subscribe({\n next: (res) => {\n this.properties.set(res.data);\n this.meta = res.meta;\n this.length = res.meta.pagination.count;\n },\n error: () => {\n this.properties.set([]);\n this.length = 0;\n },\n });\n\n // // auto-unsubscribe on destroy\n this.destroyRef.onDestroy(() => sub.unsubscribe());\n }\n onPage(e: PageEvent) {\n this.router.navigate([], {\n queryParams: { page: e.pageIndex + 1, limit: e.pageSize },\n queryParamsHandling: 'merge',\n replaceUrl: true, // optional: avoid stacking history on every page click\n });\n }\n search(params: any) {\n this.propertySearchService.search(params).subscribe({\n next: (res) => {\n this.properties.set(res.data);\n this.meta = res.meta;\n this.loading = false;\n this.length = res.meta.pagination.count;\n },\n error: (error) => {\n this.loading = false;\n },\n });\n }\n}\n","<div class=\"min-w-[320px] h-full\">\n @if (loading) {\n <div class=\"bg-(--rt-rasised-background) h-full\">\n <div class=\"flex flex-row flex-wrap\" [ngClass]=\"viewType === 1 ? 'flex-col' : 'flex-row flex-wrap'\">\n @for (row of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; track row) {\n <rolatech-property-manage-item-skeleton [list]=\"viewType === 1\"></rolatech-property-manage-item-skeleton>\n }\n </div>\n </div>\n } @else {\n @if (properties() && properties().length > 0) {\n <rolatech-rich-view [wrap]=\"viewType === 0\" [list]=\"viewType === 1\">\n @for (item of properties(); track item) {\n @defer {\n <rolatech-rich-item class=\"cursor-pointer\"\n [routerLink]=\"['./', item.id]\"\n [thumbnail]=\"item.media && item.media.length > 0 ? item.media[0].url : ''\"\n [title]=\"item.title\"\n thumbnailRatio=\"full\"\n [price]=\"item.price\"\n thumbnailMode=\"clip\"\n ></rolatech-rich-item>\n }\n }\n </rolatech-rich-view>\n } @else {\n <div class=\"flex w-full h-36 items-center justify-center\">\n <div>No data</div>\n </div>\n }\n <mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageIndex]=\"pageIndex()\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onPage($event)\"\n hidePageSize\n showFirstLastButtons\n >\n </mat-paginator>\n }\n</div>\n"],"names":["i1","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rolatech-angular-property-property-index.component-BXQGrEU9.mjs","sources":["../../../../packages/angular-property/src/lib/pages/property/property-index/property-index.component.ts","../../../../packages/angular-property/src/lib/pages/property/property-index/property-index.component.html"],"sourcesContent":["import { Component, DestroyRef, effect, inject, OnInit, signal, ViewEncapsulation } from '@angular/core';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule, RichViewComponent, RichItemComponent, BaseComponent } from '@rolatech/angular-components';\nimport { PropertySearchService, PropertyService } from '@rolatech/angular-services';\nimport { Property } from '../../../interfaces';\nimport { defer, distinctUntilChanged, finalize, map, switchMap } from 'rxjs';\nimport { PageEvent } from '@angular/material/paginator';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { PropertyUtil, PropertyViewType } from '../../../property-util';\nimport { PropertyManageItemSkeleton } from '../../../components/property-manage-item-skeleton/property-manage-item-skeleton';\n\n@Component({\n selector: 'rolatech-property-index',\n imports: [AngularCommonModule, AngularComponentsModule, RichViewComponent, RichItemComponent, PropertyManageItemSkeleton],\n templateUrl: './property-index.component.html',\n styleUrl: './property-index.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'rolatech-property-index',\n },\n})\nexport class PropertyIndexComponent extends BaseComponent implements OnInit {\n propertyService = inject(PropertyService);\n propertySearchService = inject(PropertySearchService);\n private util = inject(PropertyUtil);\n properties = signal<Property[]>([]);\n meta: any;\n loading = false;\n length = 100;\n pageSize = 15;\n pageIndex = signal(0);\n pageSizeOptions: number[] = [5, 10, 25, 100];\n viewType = PropertyViewType.GRID;\n\n ngOnInit(): void {\n this.util.viewEvent.subscribe((res) => {\n this.viewType = res;\n });\n const sub = this.route.queryParamMap\n .pipe(\n map((p) => {\n const page = p.get('page') ? Number(p.get('page')) : 1;\n this.pageIndex.set(Math.max(page - 1, 0));\n return {\n q: p.get('q') || undefined,\n town: p.get('town') || undefined,\n type: p.get('type') || undefined,\n market: p.get('market') || undefined,\n minBedrooms: p.get('minBedrooms') ? Number(p.get('minBedrooms')) : undefined,\n maxBedrooms: p.get('maxBedrooms') ? Number(p.get('maxBedrooms')) : undefined,\n minPrice: p.get('minPrice') ? Number(p.get('minPrice')) : undefined,\n maxPrice: p.get('maxPrice') ? Number(p.get('maxPrice')) : undefined,\n availableFrom: p.get('availableFrom') || undefined,\n availableTo: p.get('availableTo') || undefined,\n features: p.getAll('features')?.length ? p.getAll('features') : undefined,\n page,\n limit: p.get('limit') ? Number(p.get('limit')) : 15,\n sort: p.get('sort') || undefined,\n };\n }),\n // Cheap deep compare via JSON to avoid spam calls when nothing changed\n map((o) => JSON.stringify(o)),\n distinctUntilChanged(),\n map((s) => JSON.parse(s)),\n switchMap((params) => {\n this.loading = true;\n params['sort'] = 'updatedAt desc';\n return this.propertySearchService.search<any>(params).pipe(finalize(() => (this.loading = false)));\n }),\n )\n .subscribe({\n next: (res) => {\n this.properties.set(res.data);\n this.meta = res.meta;\n this.length = res.meta.pagination.count;\n },\n error: () => {\n this.properties.set([]);\n this.length = 0;\n },\n });\n\n // // auto-unsubscribe on destroy\n this.destroyRef.onDestroy(() => sub.unsubscribe());\n }\n onPage(e: PageEvent) {\n this.router.navigate([], {\n queryParams: { page: e.pageIndex + 1, limit: e.pageSize },\n queryParamsHandling: 'merge',\n replaceUrl: true, // optional: avoid stacking history on every page click\n });\n }\n search(params: any) {\n this.propertySearchService.search(params).subscribe({\n next: (res) => {\n this.properties.set(res.data);\n this.meta = res.meta;\n this.loading = false;\n this.length = res.meta.pagination.count;\n },\n error: (error) => {\n this.loading = false;\n },\n });\n }\n}\n","<div class=\"min-w-[320px] h-full\">\n @if (loading) {\n <div class=\"bg-(--rt-rasised-background) h-full\">\n <div class=\"flex flex-row flex-wrap\" [ngClass]=\"viewType === 1 ? 'flex-col' : 'flex-row flex-wrap'\">\n @for (row of [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; track row) {\n <rolatech-property-manage-item-skeleton [list]=\"viewType === 1\"></rolatech-property-manage-item-skeleton>\n }\n </div>\n </div>\n } @else {\n @if (properties() && properties().length > 0) {\n <rolatech-rich-view [wrap]=\"viewType === 0\" [list]=\"viewType === 1\">\n @for (item of properties(); track item) {\n @defer {\n <rolatech-rich-item class=\"cursor-pointer\"\n [routerLink]=\"['./', item.id]\"\n [thumbnail]=\"item.media && item.media.length > 0 ? item.media[0].url : ''\"\n [title]=\"item.title\"\n thumbnailRatio=\"full\"\n [price]=\"item.price\"\n thumbnailMode=\"clip\"\n ></rolatech-rich-item>\n }\n }\n </rolatech-rich-view>\n } @else {\n <div class=\"flex w-full h-36 items-center justify-center\">\n <div>No data</div>\n </div>\n }\n <mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageIndex]=\"pageIndex()\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onPage($event)\"\n hidePageSize\n showFirstLastButtons\n >\n </mat-paginator>\n }\n</div>\n"],"names":["i1","i3"],"mappings":"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"}
|
|
@@ -2,13 +2,13 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Component } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
class PropertyManageOverview {
|
|
5
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
6
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
5
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PropertyManageOverview, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: PropertyManageOverview, isStandalone: true, selector: "rolatech-property-manage-overview", ngImport: i0, template: "<div>22</div>\n", styles: [""] });
|
|
7
7
|
}
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PropertyManageOverview, decorators: [{
|
|
9
9
|
type: Component,
|
|
10
10
|
args: [{ selector: 'rolatech-property-manage-overview', imports: [], template: "<div>22</div>\n" }]
|
|
11
11
|
}] });
|
|
12
12
|
|
|
13
13
|
export { PropertyManageOverview };
|
|
14
|
-
//# sourceMappingURL=rolatech-angular-property-property-manage-overview-
|
|
14
|
+
//# sourceMappingURL=rolatech-angular-property-property-manage-overview-BF-U0dm2.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rolatech-angular-property-property-manage-overview-
|
|
1
|
+
{"version":3,"file":"rolatech-angular-property-property-manage-overview-BF-U0dm2.mjs","sources":["../../../../packages/angular-property/src/lib/pages/property-overview/property-manage-overview/property-manage-overview.ts","../../../../packages/angular-property/src/lib/pages/property-overview/property-manage-overview/property-manage-overview.html"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'rolatech-property-manage-overview',\n imports: [],\n templateUrl: './property-manage-overview.html',\n styleUrl: './property-manage-overview.scss',\n})\nexport class PropertyManageOverview {}\n","<div>22</div>\n"],"names":[],"mappings":";;;MAQa,sBAAsB,CAAA;uGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,6FCRnC,iBACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FDOa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mCAAmC,WACpC,EAAE,EAAA,QAAA,EAAA,iBAAA,EAAA;;;;;"}
|
|
@@ -6,7 +6,7 @@ import { MatButtonModule } from '@angular/material/button';
|
|
|
6
6
|
import * as i1 from '@angular/router';
|
|
7
7
|
import { RouterModule } from '@angular/router';
|
|
8
8
|
import { PropertyService } from '@rolatech/angular-services';
|
|
9
|
-
import { c as PropertyViewingItemComponent } from './rolatech-angular-property-rolatech-angular-property-
|
|
9
|
+
import { c as PropertyViewingItemComponent } from './rolatech-angular-property-rolatech-angular-property-Bc-daTQY.mjs';
|
|
10
10
|
import * as i2 from '@angular/material/paginator';
|
|
11
11
|
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
12
12
|
import { map, distinctUntilChanged, switchMap, finalize } from 'rxjs';
|
|
@@ -35,13 +35,13 @@ class PropertyManageViewingsIndexComponent extends BaseComponent {
|
|
|
35
35
|
status: '',
|
|
36
36
|
};
|
|
37
37
|
loading = false;
|
|
38
|
-
viewings = signal([], ...(ngDevMode ? [{ debugName: "viewings" }] : []));
|
|
38
|
+
viewings = signal([], ...(ngDevMode ? [{ debugName: "viewings" }] : /* istanbul ignore next */ []));
|
|
39
39
|
meta;
|
|
40
40
|
pageEvent;
|
|
41
41
|
length = 100;
|
|
42
42
|
pageSize = 15;
|
|
43
43
|
pageSizeOptions = [5, 10, 25, 100];
|
|
44
|
-
pageIndex = signal(0, ...(ngDevMode ? [{ debugName: "pageIndex" }] : []));
|
|
44
|
+
pageIndex = signal(0, ...(ngDevMode ? [{ debugName: "pageIndex" }] : /* istanbul ignore next */ []));
|
|
45
45
|
ngOnInit() {
|
|
46
46
|
const sub = this.route.queryParamMap
|
|
47
47
|
.pipe(map((p) => {
|
|
@@ -87,10 +87,10 @@ class PropertyManageViewingsIndexComponent extends BaseComponent {
|
|
|
87
87
|
replaceUrl: true, // optional: avoid stacking history on every page click
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
91
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
90
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PropertyManageViewingsIndexComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
91
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: PropertyManageViewingsIndexComponent, isStandalone: true, selector: "rolatech-property-manage-viewings-index", usesInheritance: true, ngImport: i0, template: "<rolatech-toolbar title=\"Viewings\">\n <div class=\"flex items-center gap-2\"></div>\n</rolatech-toolbar>\n<rolatech-tabs [select]=\"select\">\n @for (item of links; track item) {\n @if (item.status) {\n <rolatech-tab class=\"cursor-pointer\" [label]=\"item.name\" routerLink=\"./\" [queryParams]=\"{ status: item.status }\"></rolatech-tab>\n } @else {\n <rolatech-tab class=\"cursor-pointer\" [label]=\"item.name\" routerLink=\"./\"></rolatech-tab>\n }\n }\n</rolatech-tabs>\n<!-- <div>\n @if (viewings(); as viewings) {\n @for (item of viewings; track $index) {\n <rolatech-property-viewing-item [routerLink]=\"['./', item.id]\" [viewing]=\"item\"></rolatech-property-viewing-item>\n }\n } @else {\n <rolatech-empty></rolatech-empty>\n }\n</div> -->\n<rolatech-list>\n @if (viewings(); as viewings) {\n @for (item of viewings; track item) {\n <rolatech-property-viewing-item class=\"cursor-pointer\"\n [loading]=\"loading\"\n [routerLink]=\"['./', item.id]\"\n [viewing]=\"item\"\n ></rolatech-property-viewing-item>\n }\n } @else {\n <rolatech-empty></rolatech-empty>\n }\n</rolatech-list>\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageIndex]=\"pageIndex()\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onPage($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: TabsComponent, selector: "rolatech-tabs", inputs: ["select", "loading", "block", "mode"], outputs: ["selectChange"] }, { kind: "component", type: TabComponent, selector: "rolatech-tab", inputs: ["label"], outputs: ["selectRequested"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: EmptyComponent, selector: "rolatech-empty" }, { kind: "component", type: PropertyViewingItemComponent, selector: "rolatech-property-viewing-item", inputs: ["viewing"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i2.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: ListComponent, selector: "rolatech-list" }] });
|
|
92
92
|
}
|
|
93
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: PropertyManageViewingsIndexComponent, decorators: [{
|
|
94
94
|
type: Component,
|
|
95
95
|
args: [{ selector: 'rolatech-property-manage-viewings-index', imports: [
|
|
96
96
|
CommonModule,
|
|
@@ -107,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
107
107
|
}] });
|
|
108
108
|
|
|
109
109
|
export { PropertyManageViewingsIndexComponent };
|
|
110
|
-
//# sourceMappingURL=rolatech-angular-property-property-manage-viewings-index.component-
|
|
110
|
+
//# sourceMappingURL=rolatech-angular-property-property-manage-viewings-index.component-CDDhdhXt.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rolatech-angular-property-property-manage-viewings-index.component-
|
|
1
|
+
{"version":3,"file":"rolatech-angular-property-property-manage-viewings-index.component-CDDhdhXt.mjs","sources":["../../../../packages/angular-property/src/lib/pages/property-manage/property-manage-viewings-index/property-manage-viewings-index.component.ts","../../../../packages/angular-property/src/lib/pages/property-manage/property-manage-viewings-index/property-manage-viewings-index.component.html"],"sourcesContent":["import { Component, inject, OnInit, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n BaseComponent,\n EmptyComponent,\n TabComponent,\n TabsComponent,\n ToolbarComponent,\n ListComponent,\n} from '@rolatech/angular-components';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterModule } from '@angular/router';\nimport { PropertyService } from '@rolatech/angular-services';\nimport { PropertyViewingItemComponent } from '../../../components/property-viewing-item/property-viewing-item.component';\nimport { PropertyViewing } from '../../../interfaces';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { map, distinctUntilChanged, switchMap, finalize } from 'rxjs';\n\n@Component({\n selector: 'rolatech-property-manage-viewings-index',\n imports: [\n CommonModule,\n ToolbarComponent,\n MatButtonModule,\n TabsComponent,\n TabComponent,\n RouterModule,\n EmptyComponent,\n PropertyViewingItemComponent,\n MatPaginatorModule,\n ListComponent,\n ],\n templateUrl: './property-manage-viewings-index.component.html',\n styleUrl: './property-manage-viewings-index.component.scss',\n})\nexport class PropertyManageViewingsIndexComponent extends BaseComponent implements OnInit {\n propertyService = inject(PropertyService);\n select = 0;\n links = [\n {\n name: 'All',\n icon: 'dashboard',\n },\n {\n name: 'Completed',\n icon: 'category',\n status: 'completed',\n },\n {\n name: 'Cancelled',\n icon: 'category',\n status: 'cancelled',\n },\n ];\n filterOptions: any = {\n type: '',\n status: '',\n };\n loading = false;\n viewings = signal<PropertyViewing[]>([]);\n meta: any;\n pageEvent!: PageEvent;\n length = 100;\n pageSize = 15;\n pageSizeOptions: number[] = [5, 10, 25, 100];\n pageIndex = signal(0);\n\n ngOnInit(): void {\n const sub = this.route.queryParamMap\n .pipe(\n map((p) => {\n const page = p.get('page') ? Number(p.get('page')) : 1;\n this.pageIndex.set(Math.max(page - 1, 0));\n const status = p.get('status') || undefined;\n\n let filter = '';\n if (status) {\n this.select = this.links.findIndex((item) => item.status === status);\n filter = `status:${status?.toUpperCase()}`;\n }\n return {\n page,\n filter,\n limit: p.get('limit') ? Number(p.get('limit')) : 15,\n sort: p.get('sort') || undefined,\n };\n }),\n // Cheap deep compare via JSON to avoid spam calls when nothing changed\n map((o) => JSON.stringify(o)),\n distinctUntilChanged(),\n map((s) => JSON.parse(s)),\n switchMap((params) => {\n this.loading = true;\n params['sort'] = 'updatedAt desc';\n return this.propertyService.findViewings(params).pipe(finalize(() => (this.loading = false)));\n }),\n )\n .subscribe({\n next: (res: any) => {\n this.viewings.set(res.data);\n this.meta = res.meta;\n this.length = res.meta.pagination.count;\n },\n error: () => {\n this.viewings.set([]);\n this.length = 0;\n },\n });\n\n // // auto-unsubscribe on destroy\n this.destroyRef.onDestroy(() => sub.unsubscribe());\n }\n onPage(e: PageEvent) {\n this.router.navigate([], {\n queryParams: { page: e.pageIndex + 1, limit: e.pageSize },\n queryParamsHandling: 'merge',\n replaceUrl: true, // optional: avoid stacking history on every page click\n });\n }\n}\n","<rolatech-toolbar title=\"Viewings\">\n <div class=\"flex items-center gap-2\"></div>\n</rolatech-toolbar>\n<rolatech-tabs [select]=\"select\">\n @for (item of links; track item) {\n @if (item.status) {\n <rolatech-tab class=\"cursor-pointer\" [label]=\"item.name\" routerLink=\"./\" [queryParams]=\"{ status: item.status }\"></rolatech-tab>\n } @else {\n <rolatech-tab class=\"cursor-pointer\" [label]=\"item.name\" routerLink=\"./\"></rolatech-tab>\n }\n }\n</rolatech-tabs>\n<!-- <div>\n @if (viewings(); as viewings) {\n @for (item of viewings; track $index) {\n <rolatech-property-viewing-item [routerLink]=\"['./', item.id]\" [viewing]=\"item\"></rolatech-property-viewing-item>\n }\n } @else {\n <rolatech-empty></rolatech-empty>\n }\n</div> -->\n<rolatech-list>\n @if (viewings(); as viewings) {\n @for (item of viewings; track item) {\n <rolatech-property-viewing-item class=\"cursor-pointer\"\n [loading]=\"loading\"\n [routerLink]=\"['./', item.id]\"\n [viewing]=\"item\"\n ></rolatech-property-viewing-item>\n }\n } @else {\n <rolatech-empty></rolatech-empty>\n }\n</rolatech-list>\n<mat-paginator\n #paginator\n [length]=\"length\"\n [pageSize]=\"pageSize\"\n [pageIndex]=\"pageIndex()\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onPage($event)\"\n hidePageSize\n showFirstLastButtons\n>\n</mat-paginator>\n"],"names":[],"mappings":"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"}
|