@memberjunction/ng-explorer-core 2.121.0 → 2.122.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/README.md +0 -1
- package/dist/app-routing.module.d.ts +6 -5
- package/dist/app-routing.module.d.ts.map +1 -1
- package/dist/app-routing.module.js +266 -132
- package/dist/app-routing.module.js.map +1 -1
- package/dist/lib/app-view/application-view.component.js +10 -10
- package/dist/lib/app-view/application-view.component.js.map +1 -1
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js +11 -12
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js.map +1 -1
- package/dist/lib/data-browser-component/data-browser.component.js +8 -8
- package/dist/lib/data-browser-component/data-browser.component.js.map +1 -1
- package/dist/lib/generic-browse-list/generic-browse-list.component.js +10 -7
- package/dist/lib/generic-browse-list/generic-browse-list.component.js.map +1 -1
- package/dist/lib/generic-browser-list/generic-browser-list.component.js +14 -11
- package/dist/lib/generic-browser-list/generic-browser-list.component.js.map +1 -1
- package/dist/lib/list-view/list-view.component.js +24 -21
- package/dist/lib/list-view/list-view.component.js.map +1 -1
- package/dist/lib/navigation/navigation.component.d.ts +0 -1
- package/dist/lib/navigation/navigation.component.d.ts.map +1 -1
- package/dist/lib/navigation/navigation.component.js +11 -19
- package/dist/lib/navigation/navigation.component.js.map +1 -1
- package/dist/lib/resource-browser/resource-browser.component.js +14 -11
- package/dist/lib/resource-browser/resource-browser.component.js.map +1 -1
- package/dist/lib/resource-wrappers/artifact-resource.component.d.ts +20 -0
- package/dist/lib/resource-wrappers/artifact-resource.component.d.ts.map +1 -0
- package/dist/lib/resource-wrappers/artifact-resource.component.js +92 -0
- package/dist/lib/resource-wrappers/artifact-resource.component.js.map +1 -0
- package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts +119 -0
- package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts.map +1 -0
- package/dist/lib/resource-wrappers/chat-collections-resource.component.js +500 -0
- package/dist/lib/resource-wrappers/chat-collections-resource.component.js.map +1 -0
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +87 -0
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -0
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +345 -0
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -0
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts +67 -0
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts.map +1 -0
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.js +244 -0
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.js.map +1 -0
- package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts +46 -3
- package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/dashboard-resource.component.js +298 -21
- package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/list-detail-resource.component.js +1 -1
- package/dist/lib/resource-wrappers/list-detail-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/query-resource.component.js +1 -1
- package/dist/lib/resource-wrappers/query-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/record-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/record-resource.component.js +22 -5
- package/dist/lib/resource-wrappers/record-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/report-resource.component.js +1 -1
- package/dist/lib/resource-wrappers/report-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/resource-wrappers-loader.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/resource-wrappers-loader.js +15 -0
- package/dist/lib/resource-wrappers/resource-wrappers-loader.js.map +1 -1
- package/dist/lib/resource-wrappers/search-results-resource.component.js +1 -1
- package/dist/lib/resource-wrappers/search-results-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.js +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
- package/dist/lib/shell/components/header/app-nav.component.d.ts +45 -0
- package/dist/lib/shell/components/header/app-nav.component.d.ts.map +1 -0
- package/dist/lib/shell/components/header/app-nav.component.js +127 -0
- package/dist/lib/shell/components/header/app-nav.component.js.map +1 -0
- package/dist/lib/shell/components/header/app-switcher.component.d.ts +53 -0
- package/dist/lib/shell/components/header/app-switcher.component.d.ts.map +1 -0
- package/dist/lib/shell/components/header/app-switcher.component.js +190 -0
- package/dist/lib/shell/components/header/app-switcher.component.js.map +1 -0
- package/dist/lib/shell/components/tabs/component-cache-manager.d.ts +83 -0
- package/dist/lib/shell/components/tabs/component-cache-manager.d.ts.map +1 -0
- package/dist/lib/shell/components/tabs/component-cache-manager.js +175 -0
- package/dist/lib/shell/components/tabs/component-cache-manager.js.map +1 -0
- package/dist/lib/shell/components/tabs/tab-container.component.d.ts +138 -0
- package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -0
- package/dist/lib/shell/components/tabs/tab-container.component.js +920 -0
- package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -0
- package/dist/lib/shell/services/settings-dialog.service.d.ts +28 -0
- package/dist/lib/shell/services/settings-dialog.service.d.ts.map +1 -0
- package/dist/lib/shell/services/settings-dialog.service.js +67 -0
- package/dist/lib/shell/services/settings-dialog.service.js.map +1 -0
- package/dist/lib/shell/shell.component.d.ts +166 -0
- package/dist/lib/shell/shell.component.d.ts.map +1 -0
- package/dist/lib/shell/shell.component.js +1173 -0
- package/dist/lib/shell/shell.component.js.map +1 -0
- package/dist/lib/shell/shell.module.d.ts +14 -0
- package/dist/lib/shell/shell.module.d.ts.map +1 -0
- package/dist/lib/shell/shell.module.js +42 -0
- package/dist/lib/shell/shell.module.js.map +1 -0
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.js +17 -13
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.js.map +1 -1
- package/dist/lib/single-dashboard/single-dashboard.component.d.ts +2 -1
- package/dist/lib/single-dashboard/single-dashboard.component.d.ts.map +1 -1
- package/dist/lib/single-dashboard/single-dashboard.component.js +6 -1
- package/dist/lib/single-dashboard/single-dashboard.component.js.map +1 -1
- package/dist/lib/single-entity/single-entity.component.js +21 -17
- package/dist/lib/single-entity/single-entity.component.js.map +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.js +36 -30
- package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
- package/dist/lib/single-record/single-record.component.d.ts +1 -0
- package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
- package/dist/lib/single-record/single-record.component.js +16 -9
- package/dist/lib/single-record/single-record.component.js.map +1 -1
- package/dist/lib/single-report/single-report.component.d.ts +1 -7
- package/dist/lib/single-report/single-report.component.d.ts.map +1 -1
- package/dist/lib/single-report/single-report.component.js +16 -37
- package/dist/lib/single-report/single-report.component.js.map +1 -1
- package/dist/lib/single-view/single-view.component.d.ts +1 -2
- package/dist/lib/single-view/single-view.component.d.ts.map +1 -1
- package/dist/lib/single-view/single-view.component.js +35 -43
- package/dist/lib/single-view/single-view.component.js.map +1 -1
- package/dist/lib/style-guide-test/style-guide-test.component.js +20 -13
- package/dist/lib/style-guide-test/style-guide-test.component.js.map +1 -1
- package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.d.ts +1 -1
- package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.d.ts.map +1 -1
- package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.js +8 -11
- package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.js.map +1 -1
- package/dist/lib/user-notifications/user-notifications.component.d.ts.map +1 -1
- package/dist/lib/user-notifications/user-notifications.component.js +0 -5
- package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
- package/dist/module.d.ts +50 -46
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +23 -11
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +4 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +5 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +36 -35
|
@@ -12,13 +12,13 @@ import * as i0 from "@angular/core";
|
|
|
12
12
|
import * as i1 from "@memberjunction/ng-shared";
|
|
13
13
|
import * as i2 from "@angular/router";
|
|
14
14
|
import * as i3 from "@angular/common";
|
|
15
|
-
import * as i4 from "@progress/kendo-angular-
|
|
16
|
-
import * as i5 from "@progress/kendo-angular-
|
|
17
|
-
import * as i6 from "@
|
|
18
|
-
import * as i7 from "@memberjunction/ng-
|
|
15
|
+
import * as i4 from "@progress/kendo-angular-buttons";
|
|
16
|
+
import * as i5 from "@progress/kendo-angular-layout";
|
|
17
|
+
import * as i6 from "@memberjunction/ng-record-selector";
|
|
18
|
+
import * as i7 from "@memberjunction/ng-shared-generic";
|
|
19
19
|
function DataBrowserComponent_div_15_Template(rf, ctx) { if (rf & 1) {
|
|
20
20
|
i0.ɵɵelementStart(0, "div", 15);
|
|
21
|
-
i0.ɵɵelement(1, "
|
|
21
|
+
i0.ɵɵelement(1, "mj-loading", 16);
|
|
22
22
|
i0.ɵɵelementEnd();
|
|
23
23
|
} }
|
|
24
24
|
function DataBrowserComponent_div_16_kendo_card_1_i_2_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -221,7 +221,7 @@ let DataBrowserComponent = class DataBrowserComponent extends BaseNavigationComp
|
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
223
|
static ɵfac = function DataBrowserComponent_Factory(t) { return new (t || DataBrowserComponent)(i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i2.Router)); };
|
|
224
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataBrowserComponent, selectors: [["app-data-browser"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 19, vars: 8, consts: [[1, "mj-page-container"], [1, "mj-breadcrumb"], [1, "mj-breadcrumb-item", 3, "click"], [1, "fas", "fa-home"], [1, "fas", "fa-chevron-right", "mj-breadcrumb-separator"], [1, "mj-breadcrumb-current"], [1, "mj-header"], [1, "mj-header-title"], [1, "mj-header-actions"], ["kendoButton", "", "fillMode", "flat", "rounded", "full", "size", "large", "themeColor", "primary", 3, "click", "title"], [1, "fas", "fa-cog"], ["class", "mj-loading mj-loading-overlay", 4, "ngIf"], ["class", "mj-grid mj-grid-responsive", 4, "ngIf"], ["class", "mj-empty-state", 4, "ngIf"], ["EntityName", "Applications", "DisplayField", "Name", "DisplayIconField", "Icon", "DialogTitle", "Select Applications", 3, "DialogClosed", "AvailableRecords", "SelectedRecords", "UnselectedRecords", "DialogVisible"], [1, "mj-loading", "mj-loading-overlay"], ["
|
|
224
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataBrowserComponent, selectors: [["app-data-browser"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 19, vars: 8, consts: [[1, "mj-page-container"], [1, "mj-breadcrumb"], [1, "mj-breadcrumb-item", 3, "click"], [1, "fas", "fa-home"], [1, "fas", "fa-chevron-right", "mj-breadcrumb-separator"], [1, "mj-breadcrumb-current"], [1, "mj-header"], [1, "mj-header-title"], [1, "mj-header-actions"], ["kendoButton", "", "fillMode", "flat", "rounded", "full", "size", "large", "themeColor", "primary", 3, "click", "title"], [1, "fas", "fa-cog"], ["class", "mj-loading mj-loading-overlay", 4, "ngIf"], ["class", "mj-grid mj-grid-responsive", 4, "ngIf"], ["class", "mj-empty-state", 4, "ngIf"], ["EntityName", "Applications", "DisplayField", "Name", "DisplayIconField", "Icon", "DialogTitle", "Select Applications", 3, "DialogClosed", "AvailableRecords", "SelectedRecords", "UnselectedRecords", "DialogVisible"], [1, "mj-loading", "mj-loading-overlay"], ["text", "Loading applications...", "size", "large"], [1, "mj-grid", "mj-grid-responsive"], ["class", "mj-kendo-icon-card mj-kendo-icon-card-clickable", 3, "click", 4, "ngFor", "ngForOf"], [1, "mj-kendo-icon-card", "mj-kendo-icon-card-clickable", 3, "click"], ["class", "mj-card-icon-large", 3, "ngClass", 4, "ngIf"], ["class", "fas fa-cube mj-card-icon-large", 4, "ngIf"], [4, "ngIf"], ["class", "text-muted", 4, "ngIf"], ["class", "mj-app-status", 4, "ngIf"], [1, "mj-card-icon-large", 3, "ngClass"], [1, "fas", "fa-cube", "mj-card-icon-large"], [1, "text-muted"], [1, "mj-app-status"], [1, "fas", "fa-star"], [1, "mj-empty-state"], [1, "fas", "fa-server", "mj-empty-icon"], ["kendoButton", "", "themeColor", "primary", "rounded", "medium", "size", "large", 3, "click"], [1, "button-content"]], template: function DataBrowserComponent_Template(rf, ctx) { if (rf & 1) {
|
|
225
225
|
i0.ɵɵelementStart(0, "div", 0)(1, "nav", 1)(2, "span", 2);
|
|
226
226
|
i0.ɵɵlistener("click", function DataBrowserComponent_Template_span_click_2_listener($event) { return ctx.GoHome($event); });
|
|
227
227
|
i0.ɵɵelement(3, "i", 3);
|
|
@@ -253,7 +253,7 @@ let DataBrowserComponent = class DataBrowserComponent extends BaseNavigationComp
|
|
|
253
253
|
i0.ɵɵproperty("ngIf", ctx.SelectedApplications.length === 0 && !ctx.showLoader);
|
|
254
254
|
i0.ɵɵadvance();
|
|
255
255
|
i0.ɵɵproperty("AvailableRecords", ctx.AllApplications)("SelectedRecords", ctx.SelectedApplications)("UnselectedRecords", ctx.UnselectedApplications)("DialogVisible", ctx.AppSelectionDialogVisible);
|
|
256
|
-
} }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i4.
|
|
256
|
+
} }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i4.ButtonComponent, i5.CardComponent, i5.CardBodyComponent, i6.RecordSelectorDialogComponent, i7.LoadingComponent], styles: ["\n\n\n\n\n\n\n\n\n\n mj-record-selector-dialog {\n .mj-record-selector-content {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 20px;\n }\n \n \n\n @media (max-width: 768px) {\n .mj-record-selector-content {\n grid-template-columns: 1fr;\n }\n }\n}\n\n\n\n.mj-header[_ngcontent-%COMP%] .mj-header-title[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n &::before {\n content: '\\f5fd'; \n\n font-family: 'Font Awesome 6 Free', 'FontAwesome';\n font-weight: 900;\n font-size: 2.5rem;\n margin-right: 1rem;\n color: var(--mj-blue);\n }\n}\n\n\n\n.mj-app-status[_ngcontent-%COMP%] {\n margin-top: auto;\n padding-top: 16px;\n font-size: 0.875rem;\n color: var(--mj-blue);\n font-weight: 500;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n \n i {\n font-size: 0.75rem;\n }\n}\n\n\n\n.mj-kendo-icon-card[_ngcontent-%COMP%] .k-card-body[_ngcontent-%COMP%] {\n min-height: 280px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n\n\n@media (max-width: 1024px) {\n .mj-kendo-icon-card[_ngcontent-%COMP%] .k-card-body[_ngcontent-%COMP%] {\n min-height: 240px;\n }\n}\n\n@media (max-width: 768px) {\n .mj-kendo-icon-card[_ngcontent-%COMP%] .k-card-body[_ngcontent-%COMP%] {\n min-height: 200px;\n }\n \n .mj-header[_ngcontent-%COMP%] .mj-header-title[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]::before {\n font-size: 1.875rem;\n }\n}\n\n@media (max-width: 480px) {\n .mj-header[_ngcontent-%COMP%] .mj-header-title[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]::before {\n display: none; \n\n }\n}"] });
|
|
257
257
|
};
|
|
258
258
|
DataBrowserComponent = __decorate([
|
|
259
259
|
RegisterClass(BaseNavigationComponent, 'Data')
|
|
@@ -261,7 +261,7 @@ DataBrowserComponent = __decorate([
|
|
|
261
261
|
export { DataBrowserComponent };
|
|
262
262
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DataBrowserComponent, [{
|
|
263
263
|
type: Component,
|
|
264
|
-
args: [{ selector: 'app-data-browser', template: "<!-- Enhanced Data Browser Component -->\n<div class=\"mj-page-container\">\n <!-- Breadcrumb Navigation -->\n <nav class=\"mj-breadcrumb\">\n <span class=\"mj-breadcrumb-item\" (click)=\"GoHome($event)\">\n <i class=\"fas fa-home\"></i>\n Home\n </span>\n <i class=\"fas fa-chevron-right mj-breadcrumb-separator\"></i>\n <span class=\"mj-breadcrumb-current\">Applications</span>\n </nav>\n\n <!-- Header using global styles -->\n <div class=\"mj-header\">\n <div class=\"mj-header-title\">\n <h1>Applications</h1>\n </div>\n <div class=\"mj-header-actions\">\n <button kendoButton\n fillMode=\"flat\"\n rounded=\"full\"\n size=\"large\"\n themeColor=\"primary\"\n [title]=\"'Configure Applications'\"\n (click)=\"ShowAppSelectionDialog()\">\n <i class=\"fas fa-cog\"></i>\n </button>\n </div>\n </div>\n\n <!-- Loading State using global styles -->\n <div class=\"mj-loading mj-loading-overlay\" *ngIf=\"showLoader\">\n <
|
|
264
|
+
args: [{ selector: 'app-data-browser', template: "<!-- Enhanced Data Browser Component -->\n<div class=\"mj-page-container\">\n <!-- Breadcrumb Navigation -->\n <nav class=\"mj-breadcrumb\">\n <span class=\"mj-breadcrumb-item\" (click)=\"GoHome($event)\">\n <i class=\"fas fa-home\"></i>\n Home\n </span>\n <i class=\"fas fa-chevron-right mj-breadcrumb-separator\"></i>\n <span class=\"mj-breadcrumb-current\">Applications</span>\n </nav>\n\n <!-- Header using global styles -->\n <div class=\"mj-header\">\n <div class=\"mj-header-title\">\n <h1>Applications</h1>\n </div>\n <div class=\"mj-header-actions\">\n <button kendoButton\n fillMode=\"flat\"\n rounded=\"full\"\n size=\"large\"\n themeColor=\"primary\"\n [title]=\"'Configure Applications'\"\n (click)=\"ShowAppSelectionDialog()\">\n <i class=\"fas fa-cog\"></i>\n </button>\n </div>\n </div>\n\n <!-- Loading State using global styles -->\n <div class=\"mj-loading mj-loading-overlay\" *ngIf=\"showLoader\">\n <mj-loading text=\"Loading applications...\" size=\"large\"></mj-loading>\n </div>\n\n <!-- Applications Grid using global grid and icon card styles -->\n <div class=\"mj-grid mj-grid-responsive\" *ngIf=\"!showLoader && SelectedApplications.length > 0\">\n <kendo-card \n class=\"mj-kendo-icon-card mj-kendo-icon-card-clickable\" \n *ngFor=\"let app of SelectedApplications\" \n (click)=\"appItemClick(app)\"\n [attr.tabindex]=\"0\"\n [attr.role]=\"'button'\"\n [attr.aria-label]=\"'Open ' + app.Name + ' application'\">\n <kendo-card-body>\n <i *ngIf=\"app.Icon && app.Icon.length > 0\" \n [ngClass]=\"app.Icon\" \n class=\"mj-card-icon-large\"\n [attr.aria-hidden]=\"true\"></i>\n <i *ngIf=\"!app.Icon || app.Icon.length === 0\" \n class=\"fas fa-cube mj-card-icon-large\"\n [attr.aria-hidden]=\"true\"></i>\n <h3>{{ app.Name }}</h3>\n <p *ngIf=\"app.Description\">{{ app.Description }}</p>\n <p *ngIf=\"!app.Description\" class=\"text-muted\">No description available</p>\n <div class=\"mj-app-status\" *ngIf=\"app.DefaultForNewUser\">\n <i class=\"fas fa-star\"></i>\n Default App\n </div>\n </kendo-card-body>\n </kendo-card>\n </div>\n\n <!-- Empty State using global styles -->\n <div class=\"mj-empty-state\" *ngIf=\"SelectedApplications.length === 0 && !showLoader\">\n <i class=\"fas fa-server mj-empty-icon\"></i>\n <h3>No Applications Selected</h3>\n <p>Choose which applications you'd like to access from your dashboard</p>\n <button kendoButton\n themeColor=\"primary\"\n rounded=\"medium\"\n size=\"large\"\n (click)=\"ShowAppSelectionDialog()\">\n <span class=\"button-content\">\n <i class=\"fas fa-cog\"></i>\n Configure Applications\n </span>\n </button>\n </div>\n\n <!-- Application Selection Dialog -->\n <mj-record-selector-dialog \n EntityName=\"Applications\"\n [AvailableRecords]=\"AllApplications\" \n [SelectedRecords]=\"SelectedApplications\" \n [UnselectedRecords]=\"UnselectedApplications\"\n [DialogVisible]=\"AppSelectionDialogVisible\"\n DisplayField=\"Name\"\n DisplayIconField=\"Icon\"\n DialogTitle=\"Select Applications\"\n (DialogClosed)=\"OnAppSelectionDialogClosed($event)\">\n </mj-record-selector-dialog>\n</div>\n", styles: ["/* Data Browser Component - Minimal Custom Styles */\n/* Leveraging global styles from the MJ design system */\n\n/* Only component-specific overrides that can't be handled by global styles */\n\n/* Record Selector Dialog - Two column layout */\n::ng-deep mj-record-selector-dialog {\n .mj-record-selector-content {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 20px;\n }\n \n /* Responsive - single column on mobile */\n @media (max-width: 768px) {\n .mj-record-selector-content {\n grid-template-columns: 1fr;\n }\n }\n}\n\n/* Header title with icon - specific to this page */\n.mj-header .mj-header-title h1 {\n &::before {\n content: '\\f5fd'; /* Font Awesome server icon */\n font-family: 'Font Awesome 6 Free', 'FontAwesome';\n font-weight: 900;\n font-size: 2.5rem;\n margin-right: 1rem;\n color: var(--mj-blue);\n }\n}\n\n/* App status indicator - component specific */\n.mj-app-status {\n margin-top: auto;\n padding-top: 16px;\n font-size: 0.875rem;\n color: var(--mj-blue);\n font-weight: 500;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n \n i {\n font-size: 0.75rem;\n }\n}\n\n/* Ensure consistent card body height in grid */\n.mj-kendo-icon-card .k-card-body {\n min-height: 280px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n}\n\n/* Responsive adjustments for card height */\n@media (max-width: 1024px) {\n .mj-kendo-icon-card .k-card-body {\n min-height: 240px;\n }\n}\n\n@media (max-width: 768px) {\n .mj-kendo-icon-card .k-card-body {\n min-height: 200px;\n }\n \n .mj-header .mj-header-title h1::before {\n font-size: 1.875rem;\n }\n}\n\n@media (max-width: 480px) {\n .mj-header .mj-header-title h1::before {\n display: none; /* Hide icon on very small screens */\n }\n}\n"] }]
|
|
265
265
|
}], () => [{ type: i1.SharedService }, { type: i2.Router }], null); })();
|
|
266
266
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataBrowserComponent, { className: "DataBrowserComponent", filePath: "src/lib/data-browser-component/data-browser.component.ts", lineNumber: 14 }); })();
|
|
267
267
|
//# sourceMappingURL=data-browser.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-browser.component.js","sourceRoot":"","sources":["../../../src/lib/data-browser-component/data-browser.component.ts","../../../src/lib/data-browser-component/data-browser.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAmB,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAiB,MAAM,2BAA2B,CAAC;;;;;;;;;;IC0B/E,+BAA8D;IAC1D,
|
|
1
|
+
{"version":3,"file":"data-browser.component.js","sourceRoot":"","sources":["../../../src/lib/data-browser-component/data-browser.component.ts","../../../src/lib/data-browser-component/data-browser.component.html"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,15 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
import * as i1 from "@memberjunction/ng-shared";
|
|
4
4
|
import * as i2 from "@angular/router";
|
|
5
5
|
import * as i3 from "@angular/common";
|
|
6
|
-
import * as i4 from "@progress/kendo-angular-
|
|
7
|
-
import * as i5 from "@
|
|
6
|
+
import * as i4 from "@progress/kendo-angular-buttons";
|
|
7
|
+
import * as i5 from "@memberjunction/ng-shared-generic";
|
|
8
8
|
function GenericBrowseListComponent_div_17_Template(rf, ctx) { if (rf & 1) {
|
|
9
9
|
i0.ɵɵelementStart(0, "div", 13);
|
|
10
|
-
i0.ɵɵelement(1, "
|
|
10
|
+
i0.ɵɵelement(1, "mj-loading", 14);
|
|
11
11
|
i0.ɵɵelementEnd();
|
|
12
|
+
} if (rf & 2) {
|
|
13
|
+
i0.ɵɵadvance();
|
|
14
|
+
i0.ɵɵproperty("showText", false);
|
|
12
15
|
} }
|
|
13
16
|
function GenericBrowseListComponent_div_18_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
14
17
|
i0.ɵɵelementStart(0, "div", 16)(1, "div", 18);
|
|
@@ -108,7 +111,7 @@ export class GenericBrowseListComponent {
|
|
|
108
111
|
this.router.navigate(["dashboard"]);
|
|
109
112
|
}
|
|
110
113
|
static ɵfac = function GenericBrowseListComponent_Factory(t) { return new (t || GenericBrowseListComponent)(i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i2.Router)); };
|
|
111
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: GenericBrowseListComponent, selectors: [["app-generic-browse-list"]], inputs: { showLoader: "showLoader", itemType: "itemType", title: "title", items: "items", iconName: "iconName", showAddButton: "showAddButton", addText: "addText", backText: "backText" }, outputs: { addButtonClickEvent: "addButtonClickEvent", deleteButtonClickEvent: "deleteButtonClickEvent", itemClickEvent: "itemClickEvent" }, decls: 19, vars: 4, consts: [[1, "generic-browse-list-container"], [1, "card-header-entity"], [1, "title-wrap"], [1, "add-item"], ["kendoButton", "", 1, "edit-btn", "mj-btn-primary", 3, "click"], [1, "fa-solid", "fa-pen-to-square"], [1, "main-fav-wrapper"], [1, "title-wrapper"], ["themeColor", "primary", 3, "data"], [1, "fa-solid", "fa-plus"], [1, "main-area"], ["class", "mj-loading", 4, "ngIf"], ["class", "card-list", 4, "ngIf"], [1, "mj-loading"], ["
|
|
114
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: GenericBrowseListComponent, selectors: [["app-generic-browse-list"]], inputs: { showLoader: "showLoader", itemType: "itemType", title: "title", items: "items", iconName: "iconName", showAddButton: "showAddButton", addText: "addText", backText: "backText" }, outputs: { addButtonClickEvent: "addButtonClickEvent", deleteButtonClickEvent: "deleteButtonClickEvent", itemClickEvent: "itemClickEvent" }, decls: 19, vars: 4, consts: [[1, "generic-browse-list-container"], [1, "card-header-entity"], [1, "title-wrap"], [1, "add-item"], ["kendoButton", "", 1, "edit-btn", "mj-btn-primary", 3, "click"], [1, "fa-solid", "fa-pen-to-square"], [1, "main-fav-wrapper"], [1, "title-wrapper"], ["themeColor", "primary", 3, "data"], [1, "fa-solid", "fa-plus"], [1, "main-area"], ["class", "mj-loading", 4, "ngIf"], ["class", "card-list", 4, "ngIf"], [1, "mj-loading"], ["size", "large", 3, "showText"], [1, "card-list"], [1, "mj-empty-state"], [1, "card-wrapper"], [1, "mj-empty-icon"], [1, "fa-solid", "fa-star"], ["class", "card-wrapper", 4, "ngFor", "ngForOf"], [1, "mj-card-body"], [1, "list-item-icon"], ["title", "Add to Favorites", 1, "common-btn"], [1, "fa-regular", "fa-star"], ["title", "Open", 1, "common-btn"], [1, "fa-solid", "fa-external-link-alt"], ["title", "Edit", 1, "common-btn"], [1, "fa-regular", "fa-pen-to-square"], ["title", "Delete", 1, "common-btn"], [1, "fa-regular", "fa-trash-can"], [1, "view-card-content-list", 3, "click"], [1, "card-icon"], [1, "fa-solid", "fa-chart-bar", "fa-3x", 2, "color", "var(--mj-blue)"]], template: function GenericBrowseListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
112
115
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "h1");
|
|
113
116
|
i0.ɵɵtext(4);
|
|
114
117
|
i0.ɵɵelementEnd()();
|
|
@@ -125,7 +128,7 @@ export class GenericBrowseListComponent {
|
|
|
125
128
|
i0.ɵɵtext(15, " Create New ");
|
|
126
129
|
i0.ɵɵelementEnd()();
|
|
127
130
|
i0.ɵɵelementStart(16, "div", 10);
|
|
128
|
-
i0.ɵɵtemplate(17, GenericBrowseListComponent_div_17_Template, 2,
|
|
131
|
+
i0.ɵɵtemplate(17, GenericBrowseListComponent_div_17_Template, 2, 1, "div", 11)(18, GenericBrowseListComponent_div_18_Template, 3, 1, "div", 12);
|
|
129
132
|
i0.ɵɵelementEnd()()();
|
|
130
133
|
} if (rf & 2) {
|
|
131
134
|
i0.ɵɵadvance(4);
|
|
@@ -136,11 +139,11 @@ export class GenericBrowseListComponent {
|
|
|
136
139
|
i0.ɵɵproperty("ngIf", ctx.showLoader);
|
|
137
140
|
i0.ɵɵadvance();
|
|
138
141
|
i0.ɵɵproperty("ngIf", !ctx.showLoader);
|
|
139
|
-
} }, dependencies: [i3.NgForOf, i3.NgIf, i4.
|
|
142
|
+
} }, dependencies: [i3.NgForOf, i3.NgIf, i4.ButtonComponent, i4.DropDownButtonComponent, i5.LoadingComponent], styles: ["\n\n\n\n\n.generic-browse-list-container[_ngcontent-%COMP%] {\n @extend .mj-page-container;\n}\n\n\n\n.card-header-entity[_ngcontent-%COMP%] {\n @extend .mj-header;\n}\n\n.title-wrap[_ngcontent-%COMP%] {\n @extend .mj-header-title;\n}\n\n.title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 2.25rem;\n line-height: 1.2;\n color: var(--navy);\n}\n\n.add-item[_ngcontent-%COMP%] {\n @extend .mj-header-actions;\n}\n\n.add-item[_ngcontent-%COMP%] .edit-btn[_ngcontent-%COMP%] {\n @extend .mj-btn-primary;\n}\n\n\n\n.main-fav-wrapper[_ngcontent-%COMP%] {\n @extend .mj-content-container;\n}\n\n\n\n.title-wrapper[_ngcontent-%COMP%] {\n @extend .mj-toolbar;\n}\n\n.title-wrapper[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n @extend .mj-toolbar-title;\n margin: 0;\n font-size: 1.5rem;\n font-weight: 600;\n color: var(--navy);\n}\n\n\n\n .main-fav-wrapper .title-wrapper .k-dropdown-button .k-button {\n @extend .mj-btn-primary;\n}\n\n\n\n.card-list[_ngcontent-%COMP%] {\n @extend .mj-grid-responsive;\n margin-top: 20px;\n}\n\n.card-wrapper[_ngcontent-%COMP%] {\n @extend .mj-card;\n @extend .mj-grid-item;\n position: relative;\n cursor: pointer;\n}\n\n\n\n.view-card-content-list[_ngcontent-%COMP%] {\n @extend .mj-card-body;\n text-align: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 24px 16px;\n}\n\n.view-card-content-list[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n margin-bottom: 16px;\n transition: var(--transition-time);\n}\n\n.view-card-content-list[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--navy);\n margin: 0 0 8px 0;\n transition: var(--transition-time);\n text-align: center;\n}\n\n.view-card-content-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 0.9rem;\n color: var(--gray-800);\n line-height: 1.4;\n margin: 0;\n text-align: center;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n\n\n.list-item-icon[_ngcontent-%COMP%] {\n @extend .mj-card-actions;\n background: rgba(255, 255, 255, 0.95);\n backdrop-filter: blur(4px);\n border-radius: var(--border-radius);\n padding: 8px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.common-btn[_ngcontent-%COMP%] {\n @extend .mj-btn-icon-only;\n @extend .mj-btn-sm;\n background: transparent;\n border: 1px solid var(--gray-700);\n color: var(--gray-800);\n \n &:hover {\n background: var(--mj-blue);\n color: var(--white-color);\n border-color: var(--mj-blue);\n }\n}\n\n.common-btn[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n}\n\n.common-btn[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] path[_ngcontent-%COMP%] {\n transition: var(--transition-time);\n}\n\n.common-btn[_ngcontent-%COMP%]:hover svg[_ngcontent-%COMP%] path[_ngcontent-%COMP%] {\n fill: var(--white-color);\n}\n\n\n\n.card-wrapper[_ngcontent-%COMP%]:hover {\n .view-card-content-list svg {\n transform: scale(1.1);\n }\n \n .view-card-content-list svg path {\n fill: var(--mj-blue);\n }\n \n .view-card-content-list h5 {\n color: var(--mj-blue);\n transform: scale(1.02);\n }\n}\n\n\n\n.breadcrumb-wrap[_ngcontent-%COMP%] {\n @extend .mj-breadcrumb;\n}\n\n\n\n .generic-browse-list-container .card-header-entity .title-wrap h1 {\n margin: 0 !important;\n font-size: 2.25rem !important;\n line-height: 1.2 !important;\n color: var(--navy) !important;\n}\n\n .generic-browse-list-container .card-header-entity .add-item .k-button {\n @extend .mj-btn-primary;\n}\n\n\n\n\n\n\n@media (max-width: 768px) {\n .card-header-entity[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n gap: 20px;\n text-align: center;\n }\n \n .title-wrapper[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n gap: 15px;\n }\n \n .list-item-icon[_ngcontent-%COMP%] {\n opacity: 1;\n position: static;\n justify-content: center;\n margin-top: 16px;\n background: var(--gray-600);\n border-radius: var(--border-radius);\n }\n}\n\n@media (max-width: 480px) {\n .view-card-content-list[_ngcontent-%COMP%] {\n padding: 20px 12px;\n }\n \n .view-card-content-list[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n margin-bottom: 12px;\n }\n \n .view-card-content-list[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n font-size: 1.1rem;\n }\n \n .view-card-content-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n }\n}"] });
|
|
140
143
|
}
|
|
141
144
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GenericBrowseListComponent, [{
|
|
142
145
|
type: Component,
|
|
143
|
-
args: [{ selector: 'app-generic-browse-list', template: "<div class=\"generic-browse-list-container\">\n <!-- Main Header -->\n <div class=\"card-header-entity\">\n <div class=\"title-wrap\">\n <h1>{{ title }}</h1>\n </div>\n <div class=\"add-item\">\n <button class=\"edit-btn mj-btn-primary\" kendoButton (click)=\"addButtonClicked()\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n Add/Edit Entities\n </button>\n </div>\n </div>\n\n <!-- Content Section -->\n <div class=\"main-fav-wrapper\">\n <!-- Section Header -->\n <div class=\"title-wrapper\">\n <h4>Favorites</h4>\n <kendo-dropdownbutton [data]=\"data\" themeColor=\"primary\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New\n </kendo-dropdownbutton>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-area\">\n <!-- Loading State -->\n <div class=\"mj-loading\" *ngIf=\"showLoader\">\n <
|
|
146
|
+
args: [{ selector: 'app-generic-browse-list', template: "<div class=\"generic-browse-list-container\">\n <!-- Main Header -->\n <div class=\"card-header-entity\">\n <div class=\"title-wrap\">\n <h1>{{ title }}</h1>\n </div>\n <div class=\"add-item\">\n <button class=\"edit-btn mj-btn-primary\" kendoButton (click)=\"addButtonClicked()\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n Add/Edit Entities\n </button>\n </div>\n </div>\n\n <!-- Content Section -->\n <div class=\"main-fav-wrapper\">\n <!-- Section Header -->\n <div class=\"title-wrapper\">\n <h4>Favorites</h4>\n <kendo-dropdownbutton [data]=\"data\" themeColor=\"primary\">\n <i class=\"fa-solid fa-plus\"></i>\n Create New\n </kendo-dropdownbutton>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-area\">\n <!-- Loading State -->\n <div class=\"mj-loading\" *ngIf=\"showLoader\">\n <mj-loading [showText]=\"false\" size=\"large\"></mj-loading>\n </div>\n\n <!-- Items Grid -->\n <div class=\"card-list\" *ngIf=\"!showLoader\">\n @if(items.length === 0) {\n <div class=\"mj-empty-state\">\n <div class=\"mj-empty-icon\">\n <i class=\"fa-solid fa-star\"></i>\n </div>\n <h3>No Favorites Yet</h3>\n <p>Add items to your favorites to see them here</p>\n </div>\n }\n @else {\n <div *ngFor=\"let d of items\" class=\"card-wrapper\">\n <div class=\"mj-card-body\">\n <!-- Card Actions -->\n <div class=\"list-item-icon\">\n <button class=\"common-btn\" title=\"Add to Favorites\">\n <i class=\"fa-regular fa-star\"></i>\n </button>\n <button class=\"common-btn\" title=\"Open\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n <button class=\"common-btn\" title=\"Edit\">\n <i class=\"fa-regular fa-pen-to-square\"></i>\n </button>\n <button class=\"common-btn\" title=\"Delete\">\n <i class=\"fa-regular fa-trash-can\"></i>\n </button>\n </div>\n\n <!-- Card Content -->\n <div class=\"view-card-content-list\" (click)=\"itemClick(d)\">\n <div class=\"card-icon\">\n <i class=\"fa-solid fa-chart-bar fa-3x\" style=\"color: var(--mj-blue);\"></i>\n </div>\n <h5>{{ d.Name }}</h5>\n <p>{{ d.Description }}</p>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n</div>", styles: ["/* ===================================\n GENERIC BROWSE LIST COMPONENT - STANDARDIZED\n =================================== */\n\n.generic-browse-list-container {\n @extend .mj-page-container;\n}\n\n/* Main Header */\n.card-header-entity {\n @extend .mj-header;\n}\n\n.title-wrap {\n @extend .mj-header-title;\n}\n\n.title-wrap h1 {\n margin: 0;\n font-size: 2.25rem;\n line-height: 1.2;\n color: var(--navy);\n}\n\n.add-item {\n @extend .mj-header-actions;\n}\n\n.add-item .edit-btn {\n @extend .mj-btn-primary;\n}\n\n/* Main Content Wrapper */\n.main-fav-wrapper {\n @extend .mj-content-container;\n}\n\n/* Section Title */\n.title-wrapper {\n @extend .mj-toolbar;\n}\n\n.title-wrapper h4 {\n @extend .mj-toolbar-title;\n margin: 0;\n font-size: 1.5rem;\n font-weight: 600;\n color: var(--navy);\n}\n\n/* Create New Dropdown */\n::ng-deep .main-fav-wrapper .title-wrapper .k-dropdown-button .k-button {\n @extend .mj-btn-primary;\n}\n\n/* Card Grid */\n.card-list {\n @extend .mj-grid-responsive;\n margin-top: 20px;\n}\n\n.card-wrapper {\n @extend .mj-card;\n @extend .mj-grid-item;\n position: relative;\n cursor: pointer;\n}\n\n/* Card Content */\n.view-card-content-list {\n @extend .mj-card-body;\n text-align: center;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 24px 16px;\n}\n\n.view-card-content-list svg {\n width: 48px;\n height: 48px;\n margin-bottom: 16px;\n transition: var(--transition-time);\n}\n\n.view-card-content-list h5 {\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--navy);\n margin: 0 0 8px 0;\n transition: var(--transition-time);\n text-align: center;\n}\n\n.view-card-content-list p {\n font-size: 0.9rem;\n color: var(--gray-800);\n line-height: 1.4;\n margin: 0;\n text-align: center;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n/* Card Actions */\n.list-item-icon {\n @extend .mj-card-actions;\n background: rgba(255, 255, 255, 0.95);\n backdrop-filter: blur(4px);\n border-radius: var(--border-radius);\n padding: 8px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.common-btn {\n @extend .mj-btn-icon-only;\n @extend .mj-btn-sm;\n background: transparent;\n border: 1px solid var(--gray-700);\n color: var(--gray-800);\n \n &:hover {\n background: var(--mj-blue);\n color: var(--white-color);\n border-color: var(--mj-blue);\n }\n}\n\n.common-btn svg {\n width: 16px;\n height: 16px;\n}\n\n.common-btn svg path {\n transition: var(--transition-time);\n}\n\n.common-btn:hover svg path {\n fill: var(--white-color);\n}\n\n/* Card Hover Effects */\n.card-wrapper:hover {\n .view-card-content-list svg {\n transform: scale(1.1);\n }\n \n .view-card-content-list svg path {\n fill: var(--mj-blue);\n }\n \n .view-card-content-list h5 {\n color: var(--mj-blue);\n transform: scale(1.02);\n }\n}\n\n/* Breadcrumb */\n.breadcrumb-wrap {\n @extend .mj-breadcrumb;\n}\n\n/* Legacy Support */\n::ng-deep .generic-browse-list-container .card-header-entity .title-wrap h1 {\n margin: 0 !important;\n font-size: 2.25rem !important;\n line-height: 1.2 !important;\n color: var(--navy) !important;\n}\n\n::ng-deep .generic-browse-list-container .card-header-entity .add-item .k-button {\n @extend .mj-btn-primary;\n}\n\n/* ===================================\n RESPONSIVE DESIGN\n =================================== */\n\n@media (max-width: 768px) {\n .card-header-entity {\n flex-direction: column;\n align-items: stretch;\n gap: 20px;\n text-align: center;\n }\n \n .title-wrapper {\n flex-direction: column;\n align-items: stretch;\n gap: 15px;\n }\n \n .list-item-icon {\n opacity: 1;\n position: static;\n justify-content: center;\n margin-top: 16px;\n background: var(--gray-600);\n border-radius: var(--border-radius);\n }\n}\n\n@media (max-width: 480px) {\n .view-card-content-list {\n padding: 20px 12px;\n }\n \n .view-card-content-list svg {\n width: 40px;\n height: 40px;\n margin-bottom: 12px;\n }\n \n .view-card-content-list h5 {\n font-size: 1.1rem;\n }\n \n .view-card-content-list p {\n font-size: 0.85rem;\n }\n}"] }]
|
|
144
147
|
}], () => [{ type: i1.SharedService }, { type: i2.Router }], { showLoader: [{
|
|
145
148
|
type: Input
|
|
146
149
|
}], itemType: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic-browse-list.component.js","sourceRoot":"","sources":["../../../src/lib/generic-browse-list/generic-browse-list.component.ts","../../../src/lib/generic-browse-list/generic-browse-list.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;;;;;;;;IC4BjE,+BAA2C;IACzC,
|
|
1
|
+
{"version":3,"file":"generic-browse-list.component.js","sourceRoot":"","sources":["../../../src/lib/generic-browse-list/generic-browse-list.component.ts","../../../src/lib/generic-browse-list/generic-browse-list.component.html"],"names":[],"mappings":"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"}
|
|
@@ -9,12 +9,12 @@ import * as i1 from "@memberjunction/ng-shared";
|
|
|
9
9
|
import * as i2 from "@angular/common";
|
|
10
10
|
import * as i3 from "@progress/kendo-angular-grid";
|
|
11
11
|
import * as i4 from "@progress/kendo-angular-dialog";
|
|
12
|
-
import * as i5 from "@progress/kendo-angular-
|
|
13
|
-
import * as i6 from "@progress/kendo-angular-
|
|
14
|
-
import * as i7 from "@progress/kendo-angular-
|
|
15
|
-
import * as i8 from "@progress/kendo-angular-
|
|
16
|
-
import * as i9 from "@
|
|
17
|
-
import * as i10 from "@memberjunction/ng-
|
|
12
|
+
import * as i5 from "@progress/kendo-angular-buttons";
|
|
13
|
+
import * as i6 from "@progress/kendo-angular-inputs";
|
|
14
|
+
import * as i7 from "@progress/kendo-angular-label";
|
|
15
|
+
import * as i8 from "@progress/kendo-angular-layout";
|
|
16
|
+
import * as i9 from "@memberjunction/ng-entity-form-dialog";
|
|
17
|
+
import * as i10 from "@memberjunction/ng-shared-generic";
|
|
18
18
|
const _c0 = ["entityFormDialog"];
|
|
19
19
|
function GenericBrowserListComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
20
20
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
@@ -34,8 +34,11 @@ function GenericBrowserListComponent_ng_template_20_Template(rf, ctx) { if (rf &
|
|
|
34
34
|
} }
|
|
35
35
|
function GenericBrowserListComponent_div_28_Template(rf, ctx) { if (rf & 1) {
|
|
36
36
|
i0.ɵɵelementStart(0, "div", 32);
|
|
37
|
-
i0.ɵɵelement(1, "
|
|
37
|
+
i0.ɵɵelement(1, "mj-loading", 33);
|
|
38
38
|
i0.ɵɵelementEnd();
|
|
39
|
+
} if (rf & 2) {
|
|
40
|
+
i0.ɵɵadvance();
|
|
41
|
+
i0.ɵɵproperty("showText", false);
|
|
39
42
|
} }
|
|
40
43
|
function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
41
44
|
i0.ɵɵelementStart(0, "div", 43)(1, "span", 44);
|
|
@@ -942,7 +945,7 @@ export class GenericBrowserListComponent {
|
|
|
942
945
|
} if (rf & 2) {
|
|
943
946
|
let _t;
|
|
944
947
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.entityFormDialogRef = _t.first);
|
|
945
|
-
} }, inputs: { showLoader: "showLoader", itemType: "itemType", title: "title", items: "items", iconName: "iconName", disableEditButton: "disableEditButton", addText: "addText", backText: "backText", ItemEntityName: "ItemEntityName", CategoryEntityName: "CategoryEntityName", selectedFolderID: "selectedFolderID", showNotifications: "showNotifications", categoryEntityID: "categoryEntityID", displayAsGrid: "displayAsGrid", resourceName: "resourceName", viewingResource: "viewingResource", displayItemsAsList: "displayItemsAsList", extraDropdownOptions: "extraDropdownOptions" }, outputs: { BeforeAddFolderEvent: "BeforeAddFolderEvent", BeforeAddItemEvent: "BeforeAddItemEvent", BeforeDeleteFolderEvent: "BeforeDeleteFolderEvent", BeforeDeleteItemEvent: "BeforeDeleteItemEvent", BeforeUnlinkItemEvent: "BeforeUnlinkItemEvent", BeforeUpdateFolderEvent: "BeforeUpdateFolderEvent", BeforeUpdateItemEvent: "BeforeUpdateItemEvent", AfterAddFolderEvent: "AfterAddFolderEvent", AfterAddItemEvent: "AfterAddItemEvent", AfterDeleteFolderEvent: "AfterDeleteFolderEvent", AfterDeleteItemEvent: "AfterDeleteItemEvent", AfterUnlinkItemEvent: "AfterUnlinkItemEvent", AfterUpdateFolderEvent: "AfterUpdateFolderEvent", AfterUpdateItemEvent: "AfterUpdateItemEvent", NavigateToParentEvent: "NavigateToParentEvent", itemClickEvent: "itemClickEvent", backButtonClickEvent: "backButtonClickEvent", dropdownOptionClickEvent: "dropdownOptionClickEvent", viewModeChangeEvent: "viewModeChangeEvent" }, decls: 34, vars: 14, consts: [["searchInput", ""], ["entityFormDialog", ""], [1, "mj-page-container"], [1, "mj-content-container"], [1, "mj-header"], [1, "mj-header-title"], ["title", "Back to Parent", 1, "mj-btn-icon-only"], [1, "mj-header-icon"], [3, "ngClass"], [1, "mj-header-subtitle"], [1, "mj-header-actions"], ["themeColor", "primary", 1, "mj-btn-primary", 3, "itemClick", "data"], [1, "fa-solid", "fa-plus", "mj-btn-icon"], [1, "mj-btn-text"], [1, "mj-toolbar"], [1, "mj-search"], ["type", "text", "placeholder", "Search items...", "size", "medium", "rounded", "medium", "fillMode", "outline", 1, "mj-search-input", 3, "keyup", "clearButton"], ["kendoTextBoxPrefixTemplate", ""], [1, "mj-toolbar-actions"], ["kendoButton", "", "title", "Table View", "fillMode", "outline", "themeColor", "base", 3, "click", "toggleable", "selected"], [1, "fa-solid", "fa-table"], ["kendoButton", "", "title", "Card View", "fillMode", "outline", "themeColor", "base", 3, "click", "toggleable", "selected"], [1, "fa-solid", "fa-grip"], [1, "main-area"], ["class", "mj-loading", 4, "ngIf"], ["class", "mj-dialog-confirm", "title", "Confirm Action", 3, "minWidth", "width", "close", 4, "ngIf"], ["title", "Create New Folder", "class", "mj-dialog-form", 3, "minWidth", "width", "close", 4, "ngIf"], ["Mode", "complete"], ["title", "Back to Parent", 1, "mj-btn-icon-only", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "fa-solid", "fa-folder-open"], [1, "fas", "fa-search", "search-prefix-icon"], [1, "mj-loading"], ["
|
|
948
|
+
} }, inputs: { showLoader: "showLoader", itemType: "itemType", title: "title", items: "items", iconName: "iconName", disableEditButton: "disableEditButton", addText: "addText", backText: "backText", ItemEntityName: "ItemEntityName", CategoryEntityName: "CategoryEntityName", selectedFolderID: "selectedFolderID", showNotifications: "showNotifications", categoryEntityID: "categoryEntityID", displayAsGrid: "displayAsGrid", resourceName: "resourceName", viewingResource: "viewingResource", displayItemsAsList: "displayItemsAsList", extraDropdownOptions: "extraDropdownOptions" }, outputs: { BeforeAddFolderEvent: "BeforeAddFolderEvent", BeforeAddItemEvent: "BeforeAddItemEvent", BeforeDeleteFolderEvent: "BeforeDeleteFolderEvent", BeforeDeleteItemEvent: "BeforeDeleteItemEvent", BeforeUnlinkItemEvent: "BeforeUnlinkItemEvent", BeforeUpdateFolderEvent: "BeforeUpdateFolderEvent", BeforeUpdateItemEvent: "BeforeUpdateItemEvent", AfterAddFolderEvent: "AfterAddFolderEvent", AfterAddItemEvent: "AfterAddItemEvent", AfterDeleteFolderEvent: "AfterDeleteFolderEvent", AfterDeleteItemEvent: "AfterDeleteItemEvent", AfterUnlinkItemEvent: "AfterUnlinkItemEvent", AfterUpdateFolderEvent: "AfterUpdateFolderEvent", AfterUpdateItemEvent: "AfterUpdateItemEvent", NavigateToParentEvent: "NavigateToParentEvent", itemClickEvent: "itemClickEvent", backButtonClickEvent: "backButtonClickEvent", dropdownOptionClickEvent: "dropdownOptionClickEvent", viewModeChangeEvent: "viewModeChangeEvent" }, decls: 34, vars: 14, consts: [["searchInput", ""], ["entityFormDialog", ""], [1, "mj-page-container"], [1, "mj-content-container"], [1, "mj-header"], [1, "mj-header-title"], ["title", "Back to Parent", 1, "mj-btn-icon-only"], [1, "mj-header-icon"], [3, "ngClass"], [1, "mj-header-subtitle"], [1, "mj-header-actions"], ["themeColor", "primary", 1, "mj-btn-primary", 3, "itemClick", "data"], [1, "fa-solid", "fa-plus", "mj-btn-icon"], [1, "mj-btn-text"], [1, "mj-toolbar"], [1, "mj-search"], ["type", "text", "placeholder", "Search items...", "size", "medium", "rounded", "medium", "fillMode", "outline", 1, "mj-search-input", 3, "keyup", "clearButton"], ["kendoTextBoxPrefixTemplate", ""], [1, "mj-toolbar-actions"], ["kendoButton", "", "title", "Table View", "fillMode", "outline", "themeColor", "base", 3, "click", "toggleable", "selected"], [1, "fa-solid", "fa-table"], ["kendoButton", "", "title", "Card View", "fillMode", "outline", "themeColor", "base", 3, "click", "toggleable", "selected"], [1, "fa-solid", "fa-grip"], [1, "main-area"], ["class", "mj-loading", 4, "ngIf"], ["class", "mj-dialog-confirm", "title", "Confirm Action", 3, "minWidth", "width", "close", 4, "ngIf"], ["title", "Create New Folder", "class", "mj-dialog-form", 3, "minWidth", "width", "close", 4, "ngIf"], ["Mode", "complete"], ["title", "Back to Parent", 1, "mj-btn-icon-only", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "fa-solid", "fa-folder-open"], [1, "fas", "fa-search", "search-prefix-icon"], [1, "mj-loading"], ["size", "large", 3, "showText"], [1, "mj-grid-table", 3, "kendoGridBinding"], [1, "mj-grid-table", 3, "cellClick", "kendoGridBinding"], ["field", "Name", "title", "Name"], ["kendoGridCellTemplate", ""], ["field", "Size", "title", "Size"], ["field", "LastOpened", "title", "Last Opened"], ["field", "ModifiedBy", "title", "Modified By"], ["field", "Type", "title", "Type"], ["title", "Actions"], [1, "mj-grid-name-cell"], [1, "mj-grid-name"], [1, "mj-grid-date"], ["label", "Folder", "rounded", "full", "themeColor", "info", "size", "small"], ["rounded", "full", "themeColor", "base", "size", "small", 3, "label"], [1, "mj-btn-icon-only", "mj-btn-sm", 3, "title"], ["title", "Edit Item", 1, "mj-btn-icon-only", "mj-btn-sm"], ["title", "Delete Item", 1, "mj-btn-icon-only", "mj-btn-sm"], ["title", "Remove Link", 1, "mj-btn-icon-only", "mj-btn-sm"], [1, "mj-btn-icon-only", "mj-btn-sm", 3, "click", "title"], ["title", "Edit Item", 1, "mj-btn-icon-only", "mj-btn-sm", 3, "click"], [1, "fa-regular", "fa-pen-to-square"], ["title", "Delete Item", 1, "mj-btn-icon-only", "mj-btn-sm", 3, "click"], [1, "fa-regular", "fa-trash-can"], ["title", "Remove Link", 1, "mj-btn-icon-only", "mj-btn-sm", 3, "click"], [1, "fa-solid", "fa-link-slash"], [1, "mj-empty-state"], [1, "mj-grid-responsive"], [1, "mj-empty-icon"], [1, "fa-regular", "fa-folder-open"], ["kendoButton", "", "themeColor", "primary", "rounded", "medium", 3, "click"], [1, "button-content"], [1, "fas", "fa-plus"], [1, "mj-kendo-icon-card", "mj-kendo-icon-card-clickable"], [1, "mj-kendo-icon-card", "mj-kendo-icon-card-clickable", 3, "click"], [1, "mj-card-actions"], [1, "mj-icon-wrapper-linked", 3, "title"], [1, "mj-card-icon-large", 3, "ngClass", "title"], [1, "mj-card-metadata"], [1, "mj-card-icon-large", 3, "ngClass"], [1, "fa-solid", "fa-link", "mj-link-indicator"], [1, "mj-metadata-item"], [1, "fa-regular", "fa-clock"], [1, "fa-regular", "fa-user"], ["title", "Confirm Action", 1, "mj-dialog-confirm", 3, "close", "minWidth", "width"], [1, "mj-dialog-content"], [1, "mj-dialog-icon"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "mj-dialog-warning"], [1, "mj-dialog-actions"], ["kendoButton", "", "fillMode", "outline", "rounded", "medium", 3, "click"], ["kendoButton", "", "themeColor", "error", "rounded", "medium", 3, "click"], ["title", "Create New Folder", 1, "mj-dialog-form", 3, "close", "minWidth", "width"], ["orientation", "vertical"], ["text", "Folder Name"], ["placeholder", "Enter folder name...", "rounded", "medium", "fillMode", "outline", 3, "valueChange", "clearButton"], [1, "fas", "fa-folder-plus"], [1, "fas", "fa-folder", "search-prefix-icon"]], template: function GenericBrowserListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
946
949
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
947
950
|
i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "div", 4)(3, "div", 5);
|
|
948
951
|
i0.ɵɵtemplate(4, GenericBrowserListComponent_Conditional_4_Template, 2, 0, "span", 6);
|
|
@@ -973,7 +976,7 @@ export class GenericBrowserListComponent {
|
|
|
973
976
|
i0.ɵɵelement(26, "span", 22);
|
|
974
977
|
i0.ɵɵelementEnd()()()();
|
|
975
978
|
i0.ɵɵelementStart(27, "div", 23);
|
|
976
|
-
i0.ɵɵtemplate(28, GenericBrowserListComponent_div_28_Template, 2,
|
|
979
|
+
i0.ɵɵtemplate(28, GenericBrowserListComponent_div_28_Template, 2, 1, "div", 24)(29, GenericBrowserListComponent_Conditional_29_Template, 2, 1);
|
|
977
980
|
i0.ɵɵelementEnd()();
|
|
978
981
|
i0.ɵɵtemplate(30, GenericBrowserListComponent_kendo_dialog_30_Template, 19, 7, "kendo-dialog", 25)(31, GenericBrowserListComponent_kendo_dialog_31_Template, 13, 3, "kendo-dialog", 26);
|
|
979
982
|
i0.ɵɵelement(32, "mj-entity-form-dialog", 27, 1);
|
|
@@ -1003,11 +1006,11 @@ export class GenericBrowserListComponent {
|
|
|
1003
1006
|
i0.ɵɵproperty("ngIf", ctx.deleteDialogOpened);
|
|
1004
1007
|
i0.ɵɵadvance();
|
|
1005
1008
|
i0.ɵɵproperty("ngIf", ctx.createFolderDialogOpened);
|
|
1006
|
-
} }, dependencies: [i2.NgClass, i2.NgIf, i3.GridComponent, i3.DataBindingDirective, i3.ColumnComponent, i3.CellTemplateDirective, i4.DialogComponent, i4.DialogActionsComponent, i5.
|
|
1009
|
+
} }, dependencies: [i2.NgClass, i2.NgIf, i3.GridComponent, i3.DataBindingDirective, i3.ColumnComponent, i3.CellTemplateDirective, i4.DialogComponent, i4.DialogActionsComponent, i5.ButtonGroupComponent, i5.ButtonComponent, i5.DropDownButtonComponent, i5.ChipComponent, i6.TextBoxComponent, i6.TextBoxPrefixTemplateDirective, i6.FormFieldComponent, i7.LabelComponent, i8.CardComponent, i8.CardBodyComponent, i9.EntityFormDialogComponent, i10.LoadingComponent], styles: ["\n\n\n\n\n\n\n.mj-icon-wrapper-linked[_ngcontent-%COMP%] {\n position: relative;\n display: inline-block;\n}\n\n.mj-link-indicator[_ngcontent-%COMP%] {\n position: absolute;\n bottom: -5px;\n right: -5px;\n font-size: 1.5rem;\n color: var(--mj-blue);\n background: var(--white-color);\n border-radius: 50%;\n padding: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n\n\n.mj-grid-name-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n \n .mj-grid-icon {\n font-size: 1.25rem;\n color: var(--mj-blue);\n flex-shrink: 0;\n }\n \n .mj-grid-name {\n font-weight: 500;\n color: var(--navy);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n \n .mj-grid-link-indicator {\n position: absolute;\n bottom: -4px;\n right: -4px;\n font-size: 0.75rem;\n color: var(--mj-blue);\n background: var(--white-color);\n border-radius: 50%;\n padding: 1px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n }\n}\n\n.mj-grid-date[_ngcontent-%COMP%] {\n color: var(--gray-800);\n font-size: 0.875rem;\n}\n\n\n\n.mj-card-metadata[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n justify-content: center;\n margin: 12px 0;\n font-size: 0.875rem;\n color: var(--gray-800);\n \n .mj-metadata-item {\n display: flex;\n align-items: center;\n gap: 6px;\n \n span:first-child {\n font-size: 0.875rem;\n color: var(--mj-blue);\n }\n }\n}\n\n\n\n.mj-card-actions[_ngcontent-%COMP%] {\n .fa-star {\n transition: all 0.2s ease;\n \n &.fa-solid {\n color: #ffc107;\n }\n \n &.fa-regular {\n color: var(--gray-800);\n }\n }\n \n button:hover .fa-star.fa-regular {\n color: #ffc107;\n }\n}\n\n\n\n .mj-grid-table {\n .mj-toolbar-actions {\n .mj-btn-icon-only {\n width: 32px;\n height: 32px;\n padding: 0;\n font-size: 14px;\n }\n }\n}"] });
|
|
1007
1010
|
}
|
|
1008
1011
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GenericBrowserListComponent, [{
|
|
1009
1012
|
type: Component,
|
|
1010
|
-
args: [{ selector: 'app-generic-browser-list', template: "<div class=\"mj-page-container\">\n <div class=\"mj-content-container\">\n \n <!-- Header Section -->\n <div class=\"mj-header\">\n <div class=\"mj-header-title\">\n @if(selectedFolderID){\n <span title=\"Back to Parent\" class=\"mj-btn-icon-only\" (click)=\"goToParent()\">\n <span class=\"fa-solid fa-arrow-left\"></span>\n </span>\n }\n <div class=\"mj-header-icon\">\n <span [ngClass]=\"getHeaderIconClass()\"></span>\n </div>\n <div>\n <h1>{{title}}</h1>\n @if(selectedFolderID){\n <div class=\"mj-header-subtitle\">\n <span class=\"fa-solid fa-folder-open\"></span>\n Current Folder\n </div>\n }\n </div>\n </div>\n \n <div class=\"mj-header-actions\">\n <kendo-dropdownbutton \n class=\"mj-btn-primary\" \n (itemClick)=\"onDropdownItemClick($event)\" \n [data]=\"dropdownOptions\" \n themeColor=\"primary\">\n <span class=\"fa-solid fa-plus mj-btn-icon\"></span>\n <span class=\"mj-btn-text\">Create New</span>\n </kendo-dropdownbutton>\n </div>\n </div>\n\n <!-- Toolbar Section -->\n <div class=\"mj-toolbar\">\n <div class=\"mj-search\">\n <kendo-textbox \n class=\"mj-search-input\"\n type=\"text\" \n #searchInput \n placeholder=\"Search items...\" \n (keyup)=\"onKeyup(searchInput.value)\"\n [clearButton]=\"true\"\n size=\"medium\"\n rounded=\"medium\"\n fillMode=\"outline\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fas fa-search search-prefix-icon\"></i>\n </ng-template>\n </kendo-textbox>\n </div>\n \n <div class=\"mj-toolbar-actions\">\n <kendo-buttongroup>\n <button kendoButton \n [toggleable]=\"true\" \n [selected]=\"displayAsGrid\"\n (click)=\"changeViewMode('grid')\" \n title=\"Table View\"\n fillMode=\"outline\"\n themeColor=\"base\">\n <span class=\"fa-solid fa-table\"></span>\n </button>\n <button kendoButton \n [toggleable]=\"true\" \n [selected]=\"!displayAsGrid\"\n (click)=\"changeViewMode('list')\" \n title=\"Card View\"\n fillMode=\"outline\"\n themeColor=\"base\">\n <span class=\"fa-solid fa-grip\"></span>\n </button>\n </kendo-buttongroup>\n </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-area\">\n <!-- Loading State -->\n <div class=\"mj-loading\" *ngIf=\"showLoader\">\n <kendo-loader type=\"converging-spinner\"></kendo-loader>\n </div>\n \n @if(!showLoader){\n <!-- Grid View -->\n @if(displayAsGrid){\n <kendo-grid \n class=\"mj-grid-table\"\n (cellClick)=\"onCellItemClicked($event)\" \n [kendoGridBinding]=\"items\">\n <kendo-grid-column field=\"Name\" title=\"Name\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <div class=\"mj-grid-name-cell\"> \n <span class=\"mj-grid-name\">{{ dataItem.Name }}</span>\n </div>\n </ng-template>\n </kendo-grid-column>\n <kendo-grid-column field=\"Size\" title=\"Size\"></kendo-grid-column>\n <kendo-grid-column field=\"LastOpened\" title=\"Last Opened\">\n <ng-template kendoGridCellTemplate let-dataItem>\n @if(getItemProperty(dataItem, 'LastOpened')) {\n <span class=\"mj-grid-date\">{{ getFormattedDate(getItemProperty(dataItem, 'LastOpened')) }}</span>\n }\n </ng-template>\n </kendo-grid-column>\n <kendo-grid-column field=\"ModifiedBy\" title=\"Modified By\">\n <ng-template kendoGridCellTemplate let-dataItem>\n {{ getItemProperty(dataItem, 'ModifiedBy') || '' }}\n </ng-template>\n </kendo-grid-column>\n <kendo-grid-column field=\"Type\" title=\"Type\">\n <ng-template kendoGridCellTemplate let-dataItem>\n @if(dataItem.Type === 'Folder') {\n <kendo-chip \n label=\"Folder\" \n rounded=\"full\"\n themeColor=\"info\"\n size=\"small\">\n </kendo-chip>\n }\n @else if(dataItem.Type === 'Resource') {\n <kendo-chip \n [label]=\"getResourceTypeLabel(dataItem)\" \n rounded=\"full\"\n themeColor=\"base\"\n size=\"small\">\n </kendo-chip>\n }\n </ng-template>\n </kendo-grid-column>\n <kendo-grid-column title=\"Actions\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <div class=\"mj-toolbar-actions\">\n @if(dataItem.Favorite !== undefined) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" \n (click)=\"SetFavoriteStatus(dataItem); $event.stopPropagation()\" \n [title]=\"dataItem.Favorite ? 'Remove from favorites' : 'Add to favorites'\">\n <span [ngClass]=\"dataItem.Favorite ? 'fa-solid fa-star' : 'fa-regular fa-star'\"></span>\n </button>\n }\n @if(!disableEditButton && (!dataItem.IsLink || dataItem.LinkPermissionLevel === 'Owner' || dataItem.LinkPermissionLevel === 'Edit')) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"editItem(dataItem)\" title=\"Edit Item\">\n <span class=\"fa-regular fa-pen-to-square\"></span>\n </button>\n }\n @if(!dataItem.IsLink || dataItem.LinkPermissionLevel === 'Owner') {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"deleteItem(dataItem)\" title=\"Delete Item\">\n <span class=\"fa-regular fa-trash-can\"></span>\n </button>\n }\n @else if (dataItem.IsLink) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"unlinkItem(dataItem)\" title=\"Remove Link\">\n <span class=\"fa-solid fa-link-slash\"></span>\n </button>\n }\n </div>\n </ng-template>\n </kendo-grid-column>\n </kendo-grid>\n }\n \n <!-- Card View -->\n @else{\n <!-- Empty State -->\n @if(items.length === 0){\n <div class=\"mj-empty-state\">\n <div class=\"mj-empty-icon\">\n <span class=\"fa-regular fa-folder-open\"></span>\n </div>\n <h3>No items found</h3>\n <p>This folder is empty or no items match your search criteria.</p>\n <button kendoButton themeColor=\"primary\" rounded=\"medium\" (click)=\"onDropdownItemClick({text: 'Folder'})\">\n <span class=\"button-content\">\n <i class=\"fas fa-plus\"></i>\n Create Your First Item\n </span>\n </button>\n </div>\n }\n \n <!-- Cards Grid -->\n @else{\n <div class=\"mj-grid-responsive\">\n @for(item of items; track item){\n <kendo-card class=\"mj-kendo-icon-card mj-kendo-icon-card-clickable\" (click)=\"itemClick(item)\">\n <!-- Card Actions -->\n <div class=\"mj-card-actions\">\n @if(item.Favorite !== undefined) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" \n (click)=\"SetFavoriteStatus(item); $event.stopPropagation()\" \n [title]=\"item.Favorite ? 'Remove from favorites' : 'Add to favorites'\">\n <span [ngClass]=\"item.Favorite ? 'fa-solid fa-star' : 'fa-regular fa-star'\"></span>\n </button>\n }\n @if(!disableEditButton && (!item.IsLink || item.LinkPermissionLevel === 'Owner' || item.LinkPermissionLevel === 'Edit')) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"editItem(item); $event.stopPropagation()\" title=\"Edit Item\">\n <span class=\"fa-regular fa-pen-to-square\"></span>\n </button>\n }\n @if(!item.IsLink || item.LinkPermissionLevel === 'Owner') {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"deleteItem(item); $event.stopPropagation()\" title=\"Delete Item\">\n <span class=\"fa-regular fa-trash-can\"></span>\n </button>\n }\n @else if (item.IsLink) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"unlinkItem(item); $event.stopPropagation()\" title=\"Remove Link\">\n <span class=\"fa-solid fa-link-slash\"></span>\n </button>\n }\n </div>\n \n <!-- Card Body -->\n <kendo-card-body>\n @if(item.IsLink) {\n <div class=\"mj-icon-wrapper-linked\" [title]=\"item.Name + ' (Shared)'\">\n <span [ngClass]=\"getIconForResourceType(item)\" class=\"mj-card-icon-large\"></span>\n <span class=\"fa-solid fa-link mj-link-indicator\"></span>\n </div>\n }\n @else {\n <span [ngClass]=\"getIconForResourceType(item)\" class=\"mj-card-icon-large\" [title]=\"item.Name\"></span>\n }\n \n <h3>{{ item.Name }}</h3>\n <p>{{ item.Description || 'No description available' }}</p>\n \n <!-- Resource metadata -->\n @if(getItemProperty(item, 'LastOpened') || getItemProperty(item, 'ModifiedBy')) {\n <div class=\"mj-card-metadata\">\n @if(getItemProperty(item, 'LastOpened')) {\n <div class=\"mj-metadata-item\">\n <span class=\"fa-regular fa-clock\"></span>\n <span>{{ getFormattedDate(getItemProperty(item, 'LastOpened')) }}</span>\n </div>\n }\n @if(getItemProperty(item, 'ModifiedBy')) {\n <div class=\"mj-metadata-item\">\n <span class=\"fa-regular fa-user\"></span>\n <span>{{ getItemProperty(item, 'ModifiedBy') }}</span>\n </div>\n }\n </div>\n }\n \n <!-- Type chip -->\n @if(item.Type === 'Folder') {\n <kendo-chip \n label=\"Folder\" \n rounded=\"full\"\n themeColor=\"info\"\n size=\"small\">\n </kendo-chip>\n }\n @else if(item.Type === 'Resource') {\n <kendo-chip \n [label]=\"getResourceTypeLabel(item)\" \n rounded=\"full\"\n themeColor=\"base\"\n size=\"small\">\n </kendo-chip>\n }\n </kendo-card-body>\n </kendo-card>\n }\n </div>\n }\n }\n }\n </div>\n </div>\n\n <!-- Delete Confirmation Dialog -->\n <kendo-dialog \n [minWidth]=\"400\"\n [width]=\"500\"\n class=\"mj-dialog-confirm\" \n title=\"Confirm Action\" \n *ngIf=\"deleteDialogOpened\" \n (close)=\"onConfirmDeleteItem(false)\">\n \n <div class=\"mj-dialog-content\">\n <div class=\"mj-dialog-icon\">\n <span class=\"fa-solid fa-triangle-exclamation\"></span>\n </div>\n <p>\n Are you sure you want to \n <strong>{{(selectedItem?.IsLink && selectedItem?.LinkPermissionLevel === 'Owner') || !selectedItem?.IsLink ? 'delete' : 'unlink'}}</strong> \n <strong>{{selectedItem?.Name}}</strong>?\n </p>\n @if((selectedItem?.IsLink && selectedItem?.LinkPermissionLevel === 'Owner') || !selectedItem?.IsLink){\n <p class=\"mj-dialog-warning\">This action cannot be undone.</p>\n }\n </div>\n \n <kendo-dialog-actions class=\"mj-dialog-actions\">\n <button kendoButton fillMode=\"outline\" rounded=\"medium\" (click)=\"onConfirmDeleteItem(false)\">\n Cancel\n </button>\n <button kendoButton themeColor=\"error\" rounded=\"medium\" (click)=\"onConfirmDeleteItem(true)\">\n <span class=\"button-content\">\n <i [ngClass]=\"(selectedItem?.IsLink && selectedItem?.LinkPermissionLevel === 'Owner') || !selectedItem?.IsLink ? 'fas fa-trash' : 'fas fa-link-slash'\"></i>\n {{(selectedItem?.IsLink && selectedItem?.LinkPermissionLevel === 'Owner') || !selectedItem?.IsLink ? 'Delete' : 'Unlink'}}\n </span>\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n\n <!-- Create Folder Dialog -->\n <kendo-dialog \n title=\"Create New Folder\" \n *ngIf=\"createFolderDialogOpened\" \n (close)=\"toggleCreateFolderView()\"\n [minWidth]=\"350\"\n [width]=\"450\"\n class=\"mj-dialog-form\">\n \n <div class=\"mj-dialog-content\">\n <kendo-formfield orientation=\"vertical\">\n <kendo-label text=\"Folder Name\"></kendo-label>\n <kendo-textbox \n placeholder=\"Enter folder name...\" \n (valueChange)=\"onCreateFolderKeyup($event)\"\n rounded=\"medium\"\n fillMode=\"outline\"\n [clearButton]=\"true\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fas fa-folder search-prefix-icon\"></i>\n </ng-template>\n </kendo-textbox>\n </kendo-formfield>\n </div>\n \n <kendo-dialog-actions class=\"mj-dialog-actions\">\n <button kendoButton fillMode=\"outline\" rounded=\"medium\" (click)=\"toggleCreateFolderView()\">\n Cancel\n </button>\n <button kendoButton themeColor=\"primary\" rounded=\"medium\" (click)=\"createFolder()\">\n <span class=\"button-content\">\n <i class=\"fas fa-folder-plus\"></i>\n Create Folder\n </span>\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n\n <!-- Entity Form Dialog -->\n <mj-entity-form-dialog\n #entityFormDialog\n Mode=\"complete\">\n </mj-entity-form-dialog>\n</div>", styles: ["/* ===================================\n GENERIC BROWSER LIST SPECIFIC STYLES\n =================================== */\n\n/* Link indicator for shared items */\n.mj-icon-wrapper-linked {\n position: relative;\n display: inline-block;\n}\n\n.mj-link-indicator {\n position: absolute;\n bottom: -5px;\n right: -5px;\n font-size: 1.5rem;\n color: var(--mj-blue);\n background: var(--white-color);\n border-radius: 50%;\n padding: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n/* Grid specific cells for this component */\n.mj-grid-name-cell {\n display: flex;\n align-items: center;\n gap: 10px;\n \n .mj-grid-icon {\n font-size: 1.25rem;\n color: var(--mj-blue);\n flex-shrink: 0;\n }\n \n .mj-grid-name {\n font-weight: 500;\n color: var(--navy);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n \n .mj-grid-link-indicator {\n position: absolute;\n bottom: -4px;\n right: -4px;\n font-size: 0.75rem;\n color: var(--mj-blue);\n background: var(--white-color);\n border-radius: 50%;\n padding: 1px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n }\n}\n\n.mj-grid-date {\n color: var(--gray-800);\n font-size: 0.875rem;\n}\n\n/* Card metadata section specific to this component */\n.mj-card-metadata {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n justify-content: center;\n margin: 12px 0;\n font-size: 0.875rem;\n color: var(--gray-800);\n \n .mj-metadata-item {\n display: flex;\n align-items: center;\n gap: 6px;\n \n span:first-child {\n font-size: 0.875rem;\n color: var(--mj-blue);\n }\n }\n}\n\n/* Favorite star specific styling */\n.mj-card-actions {\n .fa-star {\n transition: all 0.2s ease;\n \n &.fa-solid {\n color: #ffc107;\n }\n \n &.fa-regular {\n color: var(--gray-800);\n }\n }\n \n button:hover .fa-star.fa-regular {\n color: #ffc107;\n }\n}\n\n/* Action buttons in grid cells - specific sizing for this component */\n::ng-deep .mj-grid-table {\n .mj-toolbar-actions {\n .mj-btn-icon-only {\n width: 32px;\n height: 32px;\n padding: 0;\n font-size: 14px;\n }\n }\n}\n"] }]
|
|
1013
|
+
args: [{ selector: 'app-generic-browser-list', template: "<div class=\"mj-page-container\">\n <div class=\"mj-content-container\">\n \n <!-- Header Section -->\n <div class=\"mj-header\">\n <div class=\"mj-header-title\">\n @if(selectedFolderID){\n <span title=\"Back to Parent\" class=\"mj-btn-icon-only\" (click)=\"goToParent()\">\n <span class=\"fa-solid fa-arrow-left\"></span>\n </span>\n }\n <div class=\"mj-header-icon\">\n <span [ngClass]=\"getHeaderIconClass()\"></span>\n </div>\n <div>\n <h1>{{title}}</h1>\n @if(selectedFolderID){\n <div class=\"mj-header-subtitle\">\n <span class=\"fa-solid fa-folder-open\"></span>\n Current Folder\n </div>\n }\n </div>\n </div>\n \n <div class=\"mj-header-actions\">\n <kendo-dropdownbutton \n class=\"mj-btn-primary\" \n (itemClick)=\"onDropdownItemClick($event)\" \n [data]=\"dropdownOptions\" \n themeColor=\"primary\">\n <span class=\"fa-solid fa-plus mj-btn-icon\"></span>\n <span class=\"mj-btn-text\">Create New</span>\n </kendo-dropdownbutton>\n </div>\n </div>\n\n <!-- Toolbar Section -->\n <div class=\"mj-toolbar\">\n <div class=\"mj-search\">\n <kendo-textbox \n class=\"mj-search-input\"\n type=\"text\" \n #searchInput \n placeholder=\"Search items...\" \n (keyup)=\"onKeyup(searchInput.value)\"\n [clearButton]=\"true\"\n size=\"medium\"\n rounded=\"medium\"\n fillMode=\"outline\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fas fa-search search-prefix-icon\"></i>\n </ng-template>\n </kendo-textbox>\n </div>\n \n <div class=\"mj-toolbar-actions\">\n <kendo-buttongroup>\n <button kendoButton \n [toggleable]=\"true\" \n [selected]=\"displayAsGrid\"\n (click)=\"changeViewMode('grid')\" \n title=\"Table View\"\n fillMode=\"outline\"\n themeColor=\"base\">\n <span class=\"fa-solid fa-table\"></span>\n </button>\n <button kendoButton \n [toggleable]=\"true\" \n [selected]=\"!displayAsGrid\"\n (click)=\"changeViewMode('list')\" \n title=\"Card View\"\n fillMode=\"outline\"\n themeColor=\"base\">\n <span class=\"fa-solid fa-grip\"></span>\n </button>\n </kendo-buttongroup>\n </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-area\">\n <!-- Loading State -->\n <div class=\"mj-loading\" *ngIf=\"showLoader\">\n <mj-loading [showText]=\"false\" size=\"large\"></mj-loading>\n </div>\n \n @if(!showLoader){\n <!-- Grid View -->\n @if(displayAsGrid){\n <kendo-grid \n class=\"mj-grid-table\"\n (cellClick)=\"onCellItemClicked($event)\" \n [kendoGridBinding]=\"items\">\n <kendo-grid-column field=\"Name\" title=\"Name\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <div class=\"mj-grid-name-cell\"> \n <span class=\"mj-grid-name\">{{ dataItem.Name }}</span>\n </div>\n </ng-template>\n </kendo-grid-column>\n <kendo-grid-column field=\"Size\" title=\"Size\"></kendo-grid-column>\n <kendo-grid-column field=\"LastOpened\" title=\"Last Opened\">\n <ng-template kendoGridCellTemplate let-dataItem>\n @if(getItemProperty(dataItem, 'LastOpened')) {\n <span class=\"mj-grid-date\">{{ getFormattedDate(getItemProperty(dataItem, 'LastOpened')) }}</span>\n }\n </ng-template>\n </kendo-grid-column>\n <kendo-grid-column field=\"ModifiedBy\" title=\"Modified By\">\n <ng-template kendoGridCellTemplate let-dataItem>\n {{ getItemProperty(dataItem, 'ModifiedBy') || '' }}\n </ng-template>\n </kendo-grid-column>\n <kendo-grid-column field=\"Type\" title=\"Type\">\n <ng-template kendoGridCellTemplate let-dataItem>\n @if(dataItem.Type === 'Folder') {\n <kendo-chip \n label=\"Folder\" \n rounded=\"full\"\n themeColor=\"info\"\n size=\"small\">\n </kendo-chip>\n }\n @else if(dataItem.Type === 'Resource') {\n <kendo-chip \n [label]=\"getResourceTypeLabel(dataItem)\" \n rounded=\"full\"\n themeColor=\"base\"\n size=\"small\">\n </kendo-chip>\n }\n </ng-template>\n </kendo-grid-column>\n <kendo-grid-column title=\"Actions\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <div class=\"mj-toolbar-actions\">\n @if(dataItem.Favorite !== undefined) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" \n (click)=\"SetFavoriteStatus(dataItem); $event.stopPropagation()\" \n [title]=\"dataItem.Favorite ? 'Remove from favorites' : 'Add to favorites'\">\n <span [ngClass]=\"dataItem.Favorite ? 'fa-solid fa-star' : 'fa-regular fa-star'\"></span>\n </button>\n }\n @if(!disableEditButton && (!dataItem.IsLink || dataItem.LinkPermissionLevel === 'Owner' || dataItem.LinkPermissionLevel === 'Edit')) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"editItem(dataItem)\" title=\"Edit Item\">\n <span class=\"fa-regular fa-pen-to-square\"></span>\n </button>\n }\n @if(!dataItem.IsLink || dataItem.LinkPermissionLevel === 'Owner') {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"deleteItem(dataItem)\" title=\"Delete Item\">\n <span class=\"fa-regular fa-trash-can\"></span>\n </button>\n }\n @else if (dataItem.IsLink) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"unlinkItem(dataItem)\" title=\"Remove Link\">\n <span class=\"fa-solid fa-link-slash\"></span>\n </button>\n }\n </div>\n </ng-template>\n </kendo-grid-column>\n </kendo-grid>\n }\n \n <!-- Card View -->\n @else{\n <!-- Empty State -->\n @if(items.length === 0){\n <div class=\"mj-empty-state\">\n <div class=\"mj-empty-icon\">\n <span class=\"fa-regular fa-folder-open\"></span>\n </div>\n <h3>No items found</h3>\n <p>This folder is empty or no items match your search criteria.</p>\n <button kendoButton themeColor=\"primary\" rounded=\"medium\" (click)=\"onDropdownItemClick({text: 'Folder'})\">\n <span class=\"button-content\">\n <i class=\"fas fa-plus\"></i>\n Create Your First Item\n </span>\n </button>\n </div>\n }\n \n <!-- Cards Grid -->\n @else{\n <div class=\"mj-grid-responsive\">\n @for(item of items; track item){\n <kendo-card class=\"mj-kendo-icon-card mj-kendo-icon-card-clickable\" (click)=\"itemClick(item)\">\n <!-- Card Actions -->\n <div class=\"mj-card-actions\">\n @if(item.Favorite !== undefined) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" \n (click)=\"SetFavoriteStatus(item); $event.stopPropagation()\" \n [title]=\"item.Favorite ? 'Remove from favorites' : 'Add to favorites'\">\n <span [ngClass]=\"item.Favorite ? 'fa-solid fa-star' : 'fa-regular fa-star'\"></span>\n </button>\n }\n @if(!disableEditButton && (!item.IsLink || item.LinkPermissionLevel === 'Owner' || item.LinkPermissionLevel === 'Edit')) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"editItem(item); $event.stopPropagation()\" title=\"Edit Item\">\n <span class=\"fa-regular fa-pen-to-square\"></span>\n </button>\n }\n @if(!item.IsLink || item.LinkPermissionLevel === 'Owner') {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"deleteItem(item); $event.stopPropagation()\" title=\"Delete Item\">\n <span class=\"fa-regular fa-trash-can\"></span>\n </button>\n }\n @else if (item.IsLink) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"unlinkItem(item); $event.stopPropagation()\" title=\"Remove Link\">\n <span class=\"fa-solid fa-link-slash\"></span>\n </button>\n }\n </div>\n \n <!-- Card Body -->\n <kendo-card-body>\n @if(item.IsLink) {\n <div class=\"mj-icon-wrapper-linked\" [title]=\"item.Name + ' (Shared)'\">\n <span [ngClass]=\"getIconForResourceType(item)\" class=\"mj-card-icon-large\"></span>\n <span class=\"fa-solid fa-link mj-link-indicator\"></span>\n </div>\n }\n @else {\n <span [ngClass]=\"getIconForResourceType(item)\" class=\"mj-card-icon-large\" [title]=\"item.Name\"></span>\n }\n \n <h3>{{ item.Name }}</h3>\n <p>{{ item.Description || 'No description available' }}</p>\n \n <!-- Resource metadata -->\n @if(getItemProperty(item, 'LastOpened') || getItemProperty(item, 'ModifiedBy')) {\n <div class=\"mj-card-metadata\">\n @if(getItemProperty(item, 'LastOpened')) {\n <div class=\"mj-metadata-item\">\n <span class=\"fa-regular fa-clock\"></span>\n <span>{{ getFormattedDate(getItemProperty(item, 'LastOpened')) }}</span>\n </div>\n }\n @if(getItemProperty(item, 'ModifiedBy')) {\n <div class=\"mj-metadata-item\">\n <span class=\"fa-regular fa-user\"></span>\n <span>{{ getItemProperty(item, 'ModifiedBy') }}</span>\n </div>\n }\n </div>\n }\n \n <!-- Type chip -->\n @if(item.Type === 'Folder') {\n <kendo-chip \n label=\"Folder\" \n rounded=\"full\"\n themeColor=\"info\"\n size=\"small\">\n </kendo-chip>\n }\n @else if(item.Type === 'Resource') {\n <kendo-chip \n [label]=\"getResourceTypeLabel(item)\" \n rounded=\"full\"\n themeColor=\"base\"\n size=\"small\">\n </kendo-chip>\n }\n </kendo-card-body>\n </kendo-card>\n }\n </div>\n }\n }\n }\n </div>\n </div>\n\n <!-- Delete Confirmation Dialog -->\n <kendo-dialog \n [minWidth]=\"400\"\n [width]=\"500\"\n class=\"mj-dialog-confirm\" \n title=\"Confirm Action\" \n *ngIf=\"deleteDialogOpened\" \n (close)=\"onConfirmDeleteItem(false)\">\n \n <div class=\"mj-dialog-content\">\n <div class=\"mj-dialog-icon\">\n <span class=\"fa-solid fa-triangle-exclamation\"></span>\n </div>\n <p>\n Are you sure you want to \n <strong>{{(selectedItem?.IsLink && selectedItem?.LinkPermissionLevel === 'Owner') || !selectedItem?.IsLink ? 'delete' : 'unlink'}}</strong> \n <strong>{{selectedItem?.Name}}</strong>?\n </p>\n @if((selectedItem?.IsLink && selectedItem?.LinkPermissionLevel === 'Owner') || !selectedItem?.IsLink){\n <p class=\"mj-dialog-warning\">This action cannot be undone.</p>\n }\n </div>\n \n <kendo-dialog-actions class=\"mj-dialog-actions\">\n <button kendoButton fillMode=\"outline\" rounded=\"medium\" (click)=\"onConfirmDeleteItem(false)\">\n Cancel\n </button>\n <button kendoButton themeColor=\"error\" rounded=\"medium\" (click)=\"onConfirmDeleteItem(true)\">\n <span class=\"button-content\">\n <i [ngClass]=\"(selectedItem?.IsLink && selectedItem?.LinkPermissionLevel === 'Owner') || !selectedItem?.IsLink ? 'fas fa-trash' : 'fas fa-link-slash'\"></i>\n {{(selectedItem?.IsLink && selectedItem?.LinkPermissionLevel === 'Owner') || !selectedItem?.IsLink ? 'Delete' : 'Unlink'}}\n </span>\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n\n <!-- Create Folder Dialog -->\n <kendo-dialog \n title=\"Create New Folder\" \n *ngIf=\"createFolderDialogOpened\" \n (close)=\"toggleCreateFolderView()\"\n [minWidth]=\"350\"\n [width]=\"450\"\n class=\"mj-dialog-form\">\n \n <div class=\"mj-dialog-content\">\n <kendo-formfield orientation=\"vertical\">\n <kendo-label text=\"Folder Name\"></kendo-label>\n <kendo-textbox \n placeholder=\"Enter folder name...\" \n (valueChange)=\"onCreateFolderKeyup($event)\"\n rounded=\"medium\"\n fillMode=\"outline\"\n [clearButton]=\"true\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fas fa-folder search-prefix-icon\"></i>\n </ng-template>\n </kendo-textbox>\n </kendo-formfield>\n </div>\n \n <kendo-dialog-actions class=\"mj-dialog-actions\">\n <button kendoButton fillMode=\"outline\" rounded=\"medium\" (click)=\"toggleCreateFolderView()\">\n Cancel\n </button>\n <button kendoButton themeColor=\"primary\" rounded=\"medium\" (click)=\"createFolder()\">\n <span class=\"button-content\">\n <i class=\"fas fa-folder-plus\"></i>\n Create Folder\n </span>\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n\n <!-- Entity Form Dialog -->\n <mj-entity-form-dialog\n #entityFormDialog\n Mode=\"complete\">\n </mj-entity-form-dialog>\n</div>", styles: ["/* ===================================\n GENERIC BROWSER LIST SPECIFIC STYLES\n =================================== */\n\n/* Link indicator for shared items */\n.mj-icon-wrapper-linked {\n position: relative;\n display: inline-block;\n}\n\n.mj-link-indicator {\n position: absolute;\n bottom: -5px;\n right: -5px;\n font-size: 1.5rem;\n color: var(--mj-blue);\n background: var(--white-color);\n border-radius: 50%;\n padding: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n/* Grid specific cells for this component */\n.mj-grid-name-cell {\n display: flex;\n align-items: center;\n gap: 10px;\n \n .mj-grid-icon {\n font-size: 1.25rem;\n color: var(--mj-blue);\n flex-shrink: 0;\n }\n \n .mj-grid-name {\n font-weight: 500;\n color: var(--navy);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n \n .mj-grid-link-indicator {\n position: absolute;\n bottom: -4px;\n right: -4px;\n font-size: 0.75rem;\n color: var(--mj-blue);\n background: var(--white-color);\n border-radius: 50%;\n padding: 1px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n }\n}\n\n.mj-grid-date {\n color: var(--gray-800);\n font-size: 0.875rem;\n}\n\n/* Card metadata section specific to this component */\n.mj-card-metadata {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n justify-content: center;\n margin: 12px 0;\n font-size: 0.875rem;\n color: var(--gray-800);\n \n .mj-metadata-item {\n display: flex;\n align-items: center;\n gap: 6px;\n \n span:first-child {\n font-size: 0.875rem;\n color: var(--mj-blue);\n }\n }\n}\n\n/* Favorite star specific styling */\n.mj-card-actions {\n .fa-star {\n transition: all 0.2s ease;\n \n &.fa-solid {\n color: #ffc107;\n }\n \n &.fa-regular {\n color: var(--gray-800);\n }\n }\n \n button:hover .fa-star.fa-regular {\n color: #ffc107;\n }\n}\n\n/* Action buttons in grid cells - specific sizing for this component */\n::ng-deep .mj-grid-table {\n .mj-toolbar-actions {\n .mj-btn-icon-only {\n width: 32px;\n height: 32px;\n padding: 0;\n font-size: 14px;\n }\n }\n}\n"] }]
|
|
1011
1014
|
}], () => [{ type: i1.SharedService }], { entityFormDialogRef: [{
|
|
1012
1015
|
type: ViewChild,
|
|
1013
1016
|
args: ['entityFormDialog']
|