@memberjunction/ng-explorer-settings 6.1.4 → 6.2.0-edge.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/dist/lib/account-info/account-info.component.d.ts +1 -1
- package/dist/lib/account-info/account-info.component.js +2 -2
- package/dist/lib/account-info/account-info.component.js.map +1 -1
- package/dist/lib/application-management/application-dialog/application-dialog.component.d.ts +93 -10
- package/dist/lib/application-management/application-dialog/application-dialog.component.d.ts.map +1 -1
- package/dist/lib/application-management/application-dialog/application-dialog.component.js +232 -80
- package/dist/lib/application-management/application-dialog/application-dialog.component.js.map +1 -1
- package/dist/lib/application-management/application-management.component.d.ts +94 -11
- package/dist/lib/application-management/application-management.component.d.ts.map +1 -1
- package/dist/lib/application-management/application-management.component.js +231 -67
- package/dist/lib/application-management/application-management.component.js.map +1 -1
- package/dist/lib/application-settings/application-settings.component.d.ts +4 -4
- package/dist/lib/application-settings/application-settings.component.js +10 -10
- package/dist/lib/application-settings/application-settings.component.js.map +1 -1
- package/dist/lib/entity-permissions/entity-permissions.component.d.ts +88 -10
- package/dist/lib/entity-permissions/entity-permissions.component.d.ts.map +1 -1
- package/dist/lib/entity-permissions/entity-permissions.component.js +219 -63
- package/dist/lib/entity-permissions/entity-permissions.component.js.map +1 -1
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts +44 -6
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts.map +1 -1
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js +117 -43
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js.map +1 -1
- package/dist/lib/notification-preferences/notification-preferences.component.d.ts +25 -3
- package/dist/lib/notification-preferences/notification-preferences.component.d.ts.map +1 -1
- package/dist/lib/notification-preferences/notification-preferences.component.js +62 -18
- package/dist/lib/notification-preferences/notification-preferences.component.js.map +1 -1
- package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts +32 -4
- package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts.map +1 -1
- package/dist/lib/role-management/role-dialog/role-dialog.component.js +84 -30
- package/dist/lib/role-management/role-dialog/role-dialog.component.js.map +1 -1
- package/dist/lib/role-management/role-management-agent-context.d.ts +12 -4
- package/dist/lib/role-management/role-management-agent-context.d.ts.map +1 -1
- package/dist/lib/role-management/role-management-agent-context.js +26 -10
- package/dist/lib/role-management/role-management-agent-context.js.map +1 -1
- package/dist/lib/role-management/role-management.component.d.ts +95 -11
- package/dist/lib/role-management/role-management.component.d.ts.map +1 -1
- package/dist/lib/role-management/role-management.component.js +259 -91
- package/dist/lib/role-management/role-management.component.js.map +1 -1
- package/dist/lib/settings/settings.component.d.ts +87 -11
- package/dist/lib/settings/settings.component.d.ts.map +1 -1
- package/dist/lib/settings/settings.component.js +211 -65
- package/dist/lib/settings/settings.component.js.map +1 -1
- package/dist/lib/shared/settings-card.component.d.ts +24 -4
- package/dist/lib/shared/settings-card.component.d.ts.map +1 -1
- package/dist/lib/shared/settings-card.component.js +46 -6
- package/dist/lib/shared/settings-card.component.js.map +1 -1
- package/dist/lib/sql-logging/sql-logging.component.d.ts +172 -18
- package/dist/lib/sql-logging/sql-logging.component.d.ts.map +1 -1
- package/dist/lib/sql-logging/sql-logging.component.js +320 -108
- package/dist/lib/sql-logging/sql-logging.component.js.map +1 -1
- package/dist/lib/user-app-config/user-app-config-content.component.js +3 -3
- package/dist/lib/user-app-config/user-app-config-content.component.js.map +1 -1
- package/dist/lib/user-app-config/user-app-config-reorder.d.ts +4 -0
- package/dist/lib/user-app-config/user-app-config-reorder.d.ts.map +1 -1
- package/dist/lib/user-app-config/user-app-config-reorder.js +11 -3
- package/dist/lib/user-app-config/user-app-config-reorder.js.map +1 -1
- package/dist/lib/user-management/transaction-group-refusals.d.ts +45 -0
- package/dist/lib/user-management/transaction-group-refusals.d.ts.map +1 -0
- package/dist/lib/user-management/transaction-group-refusals.js +49 -0
- package/dist/lib/user-management/transaction-group-refusals.js.map +1 -0
- package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts +44 -6
- package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts.map +1 -1
- package/dist/lib/user-management/user-dialog/user-dialog.component.js +134 -45
- package/dist/lib/user-management/user-dialog/user-dialog.component.js.map +1 -1
- package/dist/lib/user-management/user-management-agent-context.d.ts +10 -0
- package/dist/lib/user-management/user-management-agent-context.d.ts.map +1 -1
- package/dist/lib/user-management/user-management-agent-context.js +26 -6
- package/dist/lib/user-management/user-management-agent-context.js.map +1 -1
- package/dist/lib/user-management/user-management.component.d.ts +174 -16
- package/dist/lib/user-management/user-management.component.d.ts.map +1 -1
- package/dist/lib/user-management/user-management.component.js +501 -177
- package/dist/lib/user-management/user-management.component.js.map +1 -1
- package/dist/lib/user-profile-settings/user-profile-settings.component.d.ts +97 -15
- package/dist/lib/user-profile-settings/user-profile-settings.component.d.ts.map +1 -1
- package/dist/lib/user-profile-settings/user-profile-settings.component.js +280 -116
- package/dist/lib/user-profile-settings/user-profile-settings.component.js.map +1 -1
- package/package.json +20 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.component.js","sourceRoot":"","sources":["../../../src/lib/settings/settings.component.ts","../../../src/lib/settings/settings.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, EventEmitter, Output, ChangeDetectorRef, NgZone } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { RegisterClass } from '@memberjunction/global';\nimport { Subject, BehaviorSubject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { BaseNavigationComponent } from '@memberjunction/ng-shared';\n\nexport interface SettingsTab {\n id: string;\n label: string;\n icon: string;\n component?: unknown;\n badgeCount?: number;\n badgeColor?: 'primary' | 'danger' | 'warning' | 'success';\n disabled?: boolean;\n description?: string;\n}\n\nexport interface SettingsComponentState {\n activeTab: string;\n searchTerm: string;\n expandedSections: string[];\n}\n\nexport interface SearchableItem {\n id: string;\n tabId: string;\n sectionId?: string;\n label: string;\n keywords: string[];\n description?: string;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.css']\n})\n@RegisterClass(BaseNavigationComponent, 'Settings')\nexport class SettingsComponent extends BaseNavigationComponent implements OnInit, OnDestroy {\n @Output() stateChange = new EventEmitter<SettingsComponentState>();\n\n // State management\n public activeTab = 'general';\n public searchTerm$ = new BehaviorSubject<string>('');\n public isLoading = false;\n public error: string | null = null;\n\n // Search state\n public filteredTabs: SettingsTab[] = [];\n public searchResults: SearchableItem[] = [];\n public isSearching = false;\n public showSearchResults = false;\n\n // Tab configuration - User-focused tabs only\n public tabs: SettingsTab[] = [\n {\n id: 'general',\n label: 'General',\n icon: 'fa-solid fa-user',\n description: 'Profile and account information'\n },\n {\n id: 'notifications',\n label: 'Notifications',\n icon: 'fa-solid fa-bell',\n description: 'Notification preferences and delivery channels'\n },\n {\n id: 'applications',\n label: 'Applications',\n icon: 'fa-solid fa-th-large',\n description: 'Manage visible applications and ordering'\n },\n {\n id: 'appearance',\n label: 'Appearance',\n icon: 'fa-solid fa-palette',\n description: 'Theme and display settings',\n disabled: true\n }\n ];\n\n // Searchable content registry - User settings only\n private searchableItems: SearchableItem[] = [\n // General tab\n {\n id: 'profile',\n tabId: 'general',\n sectionId: 'profile',\n label: 'Profile Information',\n keywords: ['profile', 'avatar', 'picture', 'photo', 'name', 'user', 'image', 'account'],\n description: 'Manage your profile picture and account information'\n },\n {\n id: 'account',\n tabId: 'general',\n sectionId: 'account',\n label: 'Account Information',\n keywords: ['account', 'email', 'role', 'login', 'status', 'type'],\n description: 'View your account details and status'\n },\n // Notifications tab\n {\n id: 'notifications',\n tabId: 'notifications',\n sectionId: 'notifications',\n label: 'Notification Preferences',\n keywords: ['notifications', 'alerts', 'email', 'sms', 'in-app', 'messages'],\n description: 'Configure how and when you receive notifications'\n },\n // Applications tab\n {\n id: 'applications',\n tabId: 'applications',\n sectionId: 'applications',\n label: 'MJ: Application Settings',\n keywords: ['applications', 'apps', 'switcher', 'order', 'visibility', 'menu'],\n description: 'Choose which applications appear in your app switcher'\n },\n // Appearance tab\n {\n id: 'appearance',\n tabId: 'appearance',\n sectionId: 'appearance',\n label: 'Appearance Settings',\n keywords: ['appearance', 'theme', 'dark', 'light', 'display', 'font', 'density'],\n description: 'Customize how the application looks'\n }\n ];\n\n // Section expansion state\n public expandedSections: string[] = ['profile', 'account'];\n\n // Mobile state\n public isMobile = window.innerWidth < 768;\n public isMobileNavOpen = false;\n\n private destroy$ = new Subject<void>();\n\n constructor(private location: Location, private cdr: ChangeDetectorRef, private ngZone: NgZone) {\n super();\n window.addEventListener('resize', this.handleResize.bind(this));\n }\n\n ngOnInit(): void {\n this.filteredTabs = [...this.tabs];\n this.setupSearchFilter();\n this.loadInitialData();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n window.removeEventListener('resize', this.handleResize.bind(this));\n }\n\n private setupSearchFilter(): void {\n this.searchTerm$\n .pipe(\n debounceTime(200),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n )\n .subscribe(term => {\n this.filterContent(term);\n this.emitStateChange();\n });\n }\n\n public async loadInitialData(): Promise<void> {\n try {\n this.isLoading = true;\n await this.simulateDataLoad();\n this.ngZone.run(() => {\n this.isLoading = false;\n this.cdr.markForCheck();\n });\n } catch (error) {\n this.ngZone.run(() => {\n this.error = 'Failed to load settings data';\n this.isLoading = false;\n this.cdr.markForCheck();\n });\n }\n }\n\n private async simulateDataLoad(): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, 300));\n }\n\n public onTabChange(tabId: string): void {\n const tab = this.tabs.find(t => t.id === tabId);\n if (tab?.disabled) {\n return; // Don't switch to disabled tabs\n }\n this.activeTab = tabId;\n this.emitStateChange();\n }\n\n public onSearchChange(event: Event): void {\n const term = (event.target as HTMLInputElement).value;\n this.searchTerm$.next(term);\n }\n\n public toggleSection(sectionId: string): void {\n const index = this.expandedSections.indexOf(sectionId);\n if (index === -1) {\n this.expandedSections.push(sectionId);\n } else {\n this.expandedSections.splice(index, 1);\n }\n this.emitStateChange();\n }\n\n public isSectionExpanded(sectionId: string): boolean {\n return this.expandedSections.includes(sectionId);\n }\n\n /**\n * Filters searchable content based on search term\n */\n private filterContent(term: string): void {\n if (!term || term.trim() === '') {\n this.showSearchResults = false;\n this.searchResults = [];\n this.filteredTabs = [...this.tabs];\n return;\n }\n\n const searchLower = term.toLowerCase().trim();\n this.isSearching = true;\n\n // Filter searchable items\n this.searchResults = this.searchableItems.filter(item => {\n const matchesLabel = item.label.toLowerCase().includes(searchLower);\n const matchesKeywords = item.keywords.some(kw => kw.toLowerCase().includes(searchLower));\n const matchesDescription = item.description?.toLowerCase().includes(searchLower) || false;\n return matchesLabel || matchesKeywords || matchesDescription;\n });\n\n // Get unique tabs that have matching results\n const matchingTabIds = new Set(this.searchResults.map(r => r.tabId));\n this.filteredTabs = this.tabs.filter(tab => matchingTabIds.has(tab.id));\n\n this.showSearchResults = true;\n this.isSearching = false;\n }\n\n /**\n * Navigates to a search result\n */\n public navigateToSearchResult(result: SearchableItem): void {\n const tab = this.tabs.find(t => t.id === result.tabId);\n if (tab?.disabled) {\n return; // Don't navigate to disabled tabs\n }\n\n this.activeTab = result.tabId;\n\n // Expand the section if applicable\n if (result.sectionId && !this.expandedSections.includes(result.sectionId)) {\n this.expandedSections.push(result.sectionId);\n }\n\n this.clearSearch();\n this.emitStateChange();\n }\n\n /**\n * Clears the search and resets the view\n */\n public clearSearch(): void {\n this.searchTerm$.next('');\n this.showSearchResults = false;\n this.searchResults = [];\n this.filteredTabs = [...this.tabs];\n }\n\n /**\n * Toggles the mobile navigation rail\n */\n public toggleMobileNav(): void {\n this.isMobileNavOpen = !this.isMobileNavOpen;\n }\n\n /**\n * Closes the mobile navigation rail\n */\n public closeMobileNav(): void {\n this.isMobileNavOpen = false;\n }\n\n /**\n * Closes the settings page and navigates back\n */\n public closeSettings(): void {\n this.location.back();\n }\n\n /**\n * Handles tab change on mobile\n */\n public onMobileTabChange(tabId: string): void {\n this.onTabChange(tabId);\n this.closeMobileNav();\n }\n\n private handleResize(): void {\n this.isMobile = window.innerWidth < 768;\n if (!this.isMobile) {\n this.isMobileNavOpen = false;\n }\n }\n\n private emitStateChange(): void {\n const state: SettingsComponentState = {\n activeTab: this.activeTab,\n searchTerm: this.searchTerm$.value,\n expandedSections: [...this.expandedSections]\n };\n this.stateChange.emit(state);\n }\n\n public loadUserState(state: Partial<SettingsComponentState>): void {\n if (state.activeTab) {\n this.activeTab = state.activeTab;\n }\n if (state.searchTerm !== undefined) {\n this.searchTerm$.next(state.searchTerm);\n }\n if (state.expandedSections) {\n this.expandedSections = [...state.expandedSections];\n }\n }\n\n public getTabIcon(tab: SettingsTab): string {\n return tab.icon;\n }\n\n public getTabClass(tab: SettingsTab): string {\n const classes = ['settings-tab'];\n if (this.activeTab === tab.id) {\n classes.push('active');\n }\n if (tab.disabled) {\n classes.push('disabled');\n }\n if (tab.badgeCount && tab.badgeCount > 0) {\n classes.push('has-badge');\n }\n return classes.join(' ');\n }\n\n public isTabDisabled(tab: SettingsTab): boolean {\n return tab.disabled || false;\n }\n}\n","<div class=\"mj-page-container\">\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-container\" role=\"status\" aria-live=\"polite\">\n <mj-loading text=\"Loading settings...\"></mj-loading>\n </div>\n }\n\n <!-- Error State -->\n @if (error && !isLoading) {\n <div class=\"error-container\" role=\"alert\">\n <div class=\"error-content\">\n <i class=\"fa-solid fa-exclamation-triangle error-icon\" aria-hidden=\"true\"></i>\n <p class=\"error-message\">{{ error }}</p>\n <button class=\"retry-button\" (click)=\"loadInitialData()\">\n <i class=\"fa-solid fa-refresh\" aria-hidden=\"true\"></i>\n Try Again\n </button>\n </div>\n </div>\n }\n\n <!-- Main Content -->\n @if (!isLoading && !error) {\n <div class=\"settings-content\">\n <!-- Desktop Layout -->\n @if (!isMobile) {\n <div class=\"desktop-layout\" style=\"display: flex;\">\n <!-- Side Navigation -->\n <nav class=\"side-navigation\" role=\"navigation\" aria-label=\"Settings navigation\">\n <!-- Search Bar -->\n <div class=\"nav-search\">\n <i class=\"fa-solid fa-search nav-search-icon\" aria-hidden=\"true\"></i>\n <input\n type=\"text\"\n class=\"nav-search-input\"\n placeholder=\"Search settings...\"\n (input)=\"onSearchChange($event)\"\n [value]=\"searchTerm$.value\"\n aria-label=\"Search settings\"\n />\n @if (searchTerm$.value) {\n <button\n class=\"nav-search-clear\"\n (click)=\"clearSearch()\"\n aria-label=\"Clear search\"\n tabindex=\"0\"\n >\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n\n <ul class=\"nav-list\" role=\"tablist\" aria-orientation=\"vertical\">\n @for (tab of filteredTabs; track tab.id) {\n <li\n class=\"nav-item\"\n [class.active]=\"activeTab === tab.id\"\n [class.disabled]=\"tab.disabled\"\n (click)=\"onTabChange(tab.id)\"\n (keydown.enter)=\"onTabChange(tab.id)\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === tab.id\"\n [attr.aria-controls]=\"'panel-' + tab.id\"\n [attr.aria-disabled]=\"tab.disabled\"\n tabindex=\"0\"\n >\n <i [class]=\"tab.icon\" aria-hidden=\"true\"></i>\n <span class=\"nav-label\">{{ tab.label }}</span>\n @if (tab.disabled) {\n <span class=\"coming-soon-badge\">Soon</span>\n }\n @if (tab.badgeCount && tab.badgeCount > 0) {\n <span class=\"nav-badge\" [class]=\"'badge-' + (tab.badgeColor || 'primary')\">\n {{ tab.badgeCount }}\n </span>\n }\n </li>\n }\n </ul>\n </nav>\n\n <!-- Content Area -->\n <div class=\"content-area\" role=\"tabpanel\" [attr.id]=\"'panel-' + activeTab\">\n <div class=\"tab-content\">\n @switch (activeTab) {\n @case ('general') {\n <mj-general-settings></mj-general-settings>\n }\n\n @case ('notifications') {\n <div class=\"notifications-settings\">\n <h2 class=\"section-title\">Notifications</h2>\n <p class=\"section-description\">Configure how and when you receive notifications</p>\n <mj-notification-preferences></mj-notification-preferences>\n </div>\n }\n\n @case ('applications') {\n <mj-application-settings></mj-application-settings>\n }\n\n @case ('appearance') {\n <mj-appearance-settings></mj-appearance-settings>\n }\n }\n </div>\n </div>\n </div>\n }\n\n <!-- Mobile Layout -->\n @if (isMobile) {\n <div class=\"mobile-layout\">\n <!-- Mobile Header -->\n @if (!isMobileNavOpen) {\n <header class=\"mobile-header\">\n <button\n class=\"mobile-header-icon\"\n (click)=\"toggleMobileNav()\"\n aria-label=\"Toggle navigation menu\"\n [attr.aria-expanded]=\"isMobileNavOpen\"\n >\n <i class=\"fa-solid fa-bars\" aria-hidden=\"true\"></i>\n </button>\n <h1 class=\"mobile-header-title\">Settings</h1>\n <div class=\"mobile-header-spacer\"></div>\n </header>\n }\n\n <!-- Backdrop Overlay -->\n @if (isMobileNavOpen) {\n <div\n class=\"mobile-nav-backdrop\"\n (click)=\"closeMobileNav()\"\n aria-hidden=\"true\"\n ></div>\n }\n\n <!-- Mobile Navigation Rail -->\n <nav\n class=\"mobile-nav-rail\"\n [class.open]=\"isMobileNavOpen\"\n role=\"navigation\"\n aria-label=\"Settings navigation\"\n >\n <div class=\"nav-rail-header\">\n <span class=\"nav-rail-title\">Settings</span>\n </div>\n\n <div class=\"nav-rail-items\" role=\"tablist\">\n @for (tab of filteredTabs; track tab.id) {\n <button\n class=\"nav-rail-item\"\n [class.active]=\"activeTab === tab.id\"\n [class.disabled]=\"tab.disabled\"\n [disabled]=\"tab.disabled\"\n (click)=\"onMobileTabChange(tab.id)\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === tab.id\"\n [attr.aria-label]=\"tab.label\"\n >\n <i [class]=\"tab.icon\" aria-hidden=\"true\"></i>\n <span class=\"nav-rail-label\">{{ tab.label }}</span>\n @if (tab.disabled) {\n <span class=\"coming-soon-badge\">Soon</span>\n }\n @if (tab.badgeCount && tab.badgeCount > 0) {\n <span class=\"rail-badge\" [class]=\"'badge-' + (tab.badgeColor || 'primary')\">\n {{ tab.badgeCount }}\n </span>\n }\n </button>\n }\n\n <button\n class=\"nav-rail-item nav-rail-close-item\"\n (click)=\"closeSettings()\"\n aria-label=\"Close settings\"\n >\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\n <span class=\"nav-rail-label\">Close</span>\n </button>\n </div>\n </nav>\n\n <!-- Mobile Content Area -->\n <div class=\"mobile-content\">\n <div class=\"tab-content\">\n @switch (activeTab) {\n @case ('general') {\n <mj-general-settings></mj-general-settings>\n }\n\n @case ('notifications') {\n <div class=\"notifications-settings\">\n <h2 class=\"section-title\">Notifications</h2>\n <p class=\"section-description\">Configure how and when you receive notifications</p>\n <mj-notification-preferences></mj-notification-preferences>\n </div>\n }\n\n @case ('applications') {\n <mj-application-settings></mj-application-settings>\n }\n\n @case ('appearance') {\n <mj-appearance-settings></mj-appearance-settings>\n }\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n</div>\n"]}
|
|
1
|
+
{"version":3,"file":"settings.component.js","sourceRoot":"","sources":["../../../src/lib/settings/settings.component.ts","../../../src/lib/settings/settings.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, EventEmitter, Output, ChangeDetectorRef, NgZone } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { RegisterClass } from '@memberjunction/global';\nimport { Subject, BehaviorSubject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { BaseNavigationComponent } from '@memberjunction/ng-shared';\n\nexport interface SettingsTab {\n id: string;\n label: string;\n icon: string;\n component?: unknown;\n badgeCount?: number;\n badgeColor?: 'primary' | 'danger' | 'warning' | 'success';\n disabled?: boolean;\n description?: string;\n}\n\nexport interface SettingsComponentState {\n activeTab: string;\n searchTerm: string;\n expandedSections: string[];\n}\n\nexport interface SearchableItem {\n id: string;\n tabId: string;\n sectionId?: string;\n label: string;\n keywords: string[];\n description?: string;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.css']\n})\n@RegisterClass(BaseNavigationComponent, 'Settings')\nexport class SettingsComponent extends BaseNavigationComponent implements OnInit, OnDestroy {\n @Output() StateChange = new EventEmitter<SettingsComponentState>();\n\n /**\n * @deprecated Use {@link StateChange}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (stateChange) keeps working. Must stay AFTER StateChange: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() stateChange = this.StateChange;\n\n // State management\n public ActiveTab = 'general';\n\n /** @deprecated Use {@link ActiveTab}. */\n public get activeTab() {\n return this.ActiveTab;\n }\n /** @deprecated Use {@link ActiveTab}. */\n public set activeTab(value) {\n this.ActiveTab = value;\n }\n public SearchTerm$ = new BehaviorSubject<string>('');\n\n /** @deprecated Use {@link SearchTerm$}. */\n public get searchTerm$() {\n return this.SearchTerm$;\n }\n /** @deprecated Use {@link SearchTerm$}. */\n public set searchTerm$(value) {\n this.SearchTerm$ = value;\n }\n public isLoading = false;\n public error: string | null = null;\n\n // Search state\n public FilteredTabs: SettingsTab[] = [];\n\n /** @deprecated Use {@link FilteredTabs}. */\n public get filteredTabs(): SettingsTab[] {\n return this.FilteredTabs;\n }\n /** @deprecated Use {@link FilteredTabs}. */\n public set filteredTabs(value: SettingsTab[]) {\n this.FilteredTabs = value;\n }\n public SearchResults: SearchableItem[] = [];\n\n /** @deprecated Use {@link SearchResults}. */\n public get searchResults(): SearchableItem[] {\n return this.SearchResults;\n }\n /** @deprecated Use {@link SearchResults}. */\n public set searchResults(value: SearchableItem[]) {\n this.SearchResults = value;\n }\n public IsSearching = false;\n\n /** @deprecated Use {@link IsSearching}. */\n public get isSearching() {\n return this.IsSearching;\n }\n /** @deprecated Use {@link IsSearching}. */\n public set isSearching(value) {\n this.IsSearching = value;\n }\n public ShowSearchResults = false;\n\n /** @deprecated Use {@link ShowSearchResults}. */\n public get showSearchResults() {\n return this.ShowSearchResults;\n }\n /** @deprecated Use {@link ShowSearchResults}. */\n public set showSearchResults(value) {\n this.ShowSearchResults = value;\n }\n\n // Tab configuration - User-focused tabs only\n public Tabs: SettingsTab[] = [\n {\n id: 'general',\n label: 'General',\n icon: 'fa-solid fa-user',\n description: 'Profile and account information'\n },\n {\n id: 'notifications',\n label: 'Notifications',\n icon: 'fa-solid fa-bell',\n description: 'Notification preferences and delivery channels'\n },\n {\n id: 'applications',\n label: 'Applications',\n icon: 'fa-solid fa-th-large',\n description: 'Manage visible applications and ordering'\n },\n {\n id: 'appearance',\n label: 'Appearance',\n icon: 'fa-solid fa-palette',\n description: 'Theme and display settings',\n disabled: true\n }\n ];\n\n /** @deprecated Use {@link Tabs}. */\n public get tabs(): SettingsTab[] {\n return this.Tabs;\n }\n /** @deprecated Use {@link Tabs}. */\n public set tabs(value: SettingsTab[]) {\n this.Tabs = value;\n }\n\n // Searchable content registry - User settings only\n private searchableItems: SearchableItem[] = [\n // General tab\n {\n id: 'profile',\n tabId: 'general',\n sectionId: 'profile',\n label: 'Profile Information',\n keywords: ['profile', 'avatar', 'picture', 'photo', 'name', 'user', 'image', 'account'],\n description: 'Manage your profile picture and account information'\n },\n {\n id: 'account',\n tabId: 'general',\n sectionId: 'account',\n label: 'Account Information',\n keywords: ['account', 'email', 'role', 'login', 'status', 'type'],\n description: 'View your account details and status'\n },\n // Notifications tab\n {\n id: 'notifications',\n tabId: 'notifications',\n sectionId: 'notifications',\n label: 'Notification Preferences',\n keywords: ['notifications', 'alerts', 'email', 'sms', 'in-app', 'messages'],\n description: 'Configure how and when you receive notifications'\n },\n // Applications tab\n {\n id: 'applications',\n tabId: 'applications',\n sectionId: 'applications',\n label: 'MJ: Application Settings',\n keywords: ['applications', 'apps', 'switcher', 'order', 'visibility', 'menu'],\n description: 'Choose which applications appear in your app switcher'\n },\n // Appearance tab\n {\n id: 'appearance',\n tabId: 'appearance',\n sectionId: 'appearance',\n label: 'Appearance Settings',\n keywords: ['appearance', 'theme', 'dark', 'light', 'display', 'font', 'density'],\n description: 'Customize how the application looks'\n }\n ];\n\n // Section expansion state\n public ExpandedSections: string[] = ['profile', 'account'];\n\n /** @deprecated Use {@link ExpandedSections}. */\n public get expandedSections(): string[] {\n return this.ExpandedSections;\n }\n /** @deprecated Use {@link ExpandedSections}. */\n public set expandedSections(value: string[]) {\n this.ExpandedSections = value;\n }\n\n // Mobile state\n public IsMobile = window.innerWidth < 768;\n\n /** @deprecated Use {@link IsMobile}. */\n public get isMobile() {\n return this.IsMobile;\n }\n /** @deprecated Use {@link IsMobile}. */\n public set isMobile(value) {\n this.IsMobile = value;\n }\n public IsMobileNavOpen = false;\n\n /** @deprecated Use {@link IsMobileNavOpen}. */\n public get isMobileNavOpen() {\n return this.IsMobileNavOpen;\n }\n /** @deprecated Use {@link IsMobileNavOpen}. */\n public set isMobileNavOpen(value) {\n this.IsMobileNavOpen = value;\n }\n\n private destroy$ = new Subject<void>();\n\n constructor(private location: Location, private cdr: ChangeDetectorRef, private ngZone: NgZone) {\n super();\n window.addEventListener('resize', this.handleResize.bind(this));\n }\n\n ngOnInit(): void {\n this.FilteredTabs = [...this.Tabs];\n this.setupSearchFilter();\n this.LoadInitialData();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n window.removeEventListener('resize', this.handleResize.bind(this));\n }\n\n private setupSearchFilter(): void {\n this.SearchTerm$\n .pipe(\n debounceTime(200),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n )\n .subscribe(term => {\n this.filterContent(term);\n this.emitStateChange();\n });\n }\n\n public async LoadInitialData(): Promise<void> {\n try {\n this.isLoading = true;\n await this.simulateDataLoad();\n this.ngZone.run(() => {\n this.isLoading = false;\n this.cdr.markForCheck();\n });\n } catch (error) {\n this.ngZone.run(() => {\n this.error = 'Failed to load settings data';\n this.isLoading = false;\n this.cdr.markForCheck();\n });\n }\n }\n\n /** @deprecated Use {@link LoadInitialData}. */\n public async loadInitialData(): Promise<void> {\n return this.LoadInitialData();\n }\n\n private async simulateDataLoad(): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, 300));\n }\n\n public OnTabChange(tabId: string): void {\n const tab = this.Tabs.find(t => t.id === tabId);\n if (tab?.disabled) {\n return; // Don't switch to disabled tabs\n }\n this.ActiveTab = tabId;\n this.emitStateChange();\n }\n\n /** @deprecated Use {@link OnTabChange}. */\n public onTabChange(tabId: string): void {\n return this.OnTabChange(tabId);\n }\n\n public OnSearchChange(event: Event): void {\n const term = (event.target as HTMLInputElement).value;\n this.SearchTerm$.next(term);\n }\n\n /** @deprecated Use {@link OnSearchChange}. */\n public onSearchChange(event: Event): void {\n return this.OnSearchChange(event);\n }\n\n public toggleSection(sectionId: string): void {\n const index = this.ExpandedSections.indexOf(sectionId);\n if (index === -1) {\n this.ExpandedSections.push(sectionId);\n } else {\n this.ExpandedSections.splice(index, 1);\n }\n this.emitStateChange();\n }\n\n public IsSectionExpanded(sectionId: string): boolean {\n return this.ExpandedSections.includes(sectionId);\n }\n\n /** @deprecated Use {@link IsSectionExpanded}. */\n public isSectionExpanded(sectionId: string): boolean {\n return this.IsSectionExpanded(sectionId);\n }\n\n /**\n * Filters searchable content based on search term\n */\n private filterContent(term: string): void {\n if (!term || term.trim() === '') {\n this.ShowSearchResults = false;\n this.SearchResults = [];\n this.FilteredTabs = [...this.Tabs];\n return;\n }\n\n const searchLower = term.toLowerCase().trim();\n this.IsSearching = true;\n\n // Filter searchable items\n this.SearchResults = this.searchableItems.filter(item => {\n const matchesLabel = item.label.toLowerCase().includes(searchLower);\n const matchesKeywords = item.keywords.some(kw => kw.toLowerCase().includes(searchLower));\n const matchesDescription = item.description?.toLowerCase().includes(searchLower) || false;\n return matchesLabel || matchesKeywords || matchesDescription;\n });\n\n // Get unique tabs that have matching results\n const matchingTabIds = new Set(this.SearchResults.map(r => r.tabId));\n this.FilteredTabs = this.Tabs.filter(tab => matchingTabIds.has(tab.id));\n\n this.ShowSearchResults = true;\n this.IsSearching = false;\n }\n\n /**\n * Navigates to a search result\n */\n public NavigateToSearchResult(result: SearchableItem): void {\n const tab = this.Tabs.find(t => t.id === result.tabId);\n if (tab?.disabled) {\n return; // Don't navigate to disabled tabs\n }\n\n this.ActiveTab = result.tabId;\n\n // Expand the section if applicable\n if (result.sectionId && !this.ExpandedSections.includes(result.sectionId)) {\n this.ExpandedSections.push(result.sectionId);\n }\n\n this.ClearSearch();\n this.emitStateChange();\n }\n\n /** @deprecated Use {@link NavigateToSearchResult}. */\n public navigateToSearchResult(result: SearchableItem): void {\n return this.NavigateToSearchResult(result);\n }\n\n /**\n * Clears the search and resets the view\n */\n public ClearSearch(): void {\n this.SearchTerm$.next('');\n this.ShowSearchResults = false;\n this.SearchResults = [];\n this.FilteredTabs = [...this.Tabs];\n }\n\n /** @deprecated Use {@link ClearSearch}. */\n public clearSearch(): void {\n return this.ClearSearch();\n }\n\n /**\n * Toggles the mobile navigation rail\n */\n public ToggleMobileNav(): void {\n this.IsMobileNavOpen = !this.IsMobileNavOpen;\n }\n\n /** @deprecated Use {@link ToggleMobileNav}. */\n public toggleMobileNav(): void {\n return this.ToggleMobileNav();\n }\n\n /**\n * Closes the mobile navigation rail\n */\n public CloseMobileNav(): void {\n this.IsMobileNavOpen = false;\n }\n\n /** @deprecated Use {@link CloseMobileNav}. */\n public closeMobileNav(): void {\n return this.CloseMobileNav();\n }\n\n /**\n * Closes the settings page and navigates back\n */\n public CloseSettings(): void {\n this.location.back();\n }\n\n /** @deprecated Use {@link CloseSettings}. */\n public closeSettings(): void {\n return this.CloseSettings();\n }\n\n /**\n * Handles tab change on mobile\n */\n public OnMobileTabChange(tabId: string): void {\n this.OnTabChange(tabId);\n this.CloseMobileNav();\n }\n\n /** @deprecated Use {@link OnMobileTabChange}. */\n public onMobileTabChange(tabId: string): void {\n return this.OnMobileTabChange(tabId);\n }\n\n private handleResize(): void {\n this.IsMobile = window.innerWidth < 768;\n if (!this.IsMobile) {\n this.IsMobileNavOpen = false;\n }\n }\n\n private emitStateChange(): void {\n const state: SettingsComponentState = {\n activeTab: this.ActiveTab,\n searchTerm: this.SearchTerm$.value,\n expandedSections: [...this.ExpandedSections]\n };\n this.StateChange.emit(state);\n }\n\n public LoadUserState(state: Partial<SettingsComponentState>): void {\n if (state.activeTab) {\n this.ActiveTab = state.activeTab;\n }\n if (state.searchTerm !== undefined) {\n this.SearchTerm$.next(state.searchTerm);\n }\n if (state.expandedSections) {\n this.ExpandedSections = [...state.expandedSections];\n }\n }\n\n /** @deprecated Use {@link LoadUserState}. */\n public loadUserState(state: Partial<SettingsComponentState>): void {\n return this.LoadUserState(state);\n }\n\n public GetTabIcon(tab: SettingsTab): string {\n return tab.icon;\n }\n\n /** @deprecated Use {@link GetTabIcon}. */\n public getTabIcon(tab: SettingsTab): string {\n return this.GetTabIcon(tab);\n }\n\n public GetTabClass(tab: SettingsTab): string {\n const classes = ['settings-tab'];\n if (this.ActiveTab === tab.id) {\n classes.push('active');\n }\n if (tab.disabled) {\n classes.push('disabled');\n }\n if (tab.badgeCount && tab.badgeCount > 0) {\n classes.push('has-badge');\n }\n return classes.join(' ');\n }\n\n /** @deprecated Use {@link GetTabClass}. */\n public getTabClass(tab: SettingsTab): string {\n return this.GetTabClass(tab);\n }\n\n public IsTabDisabled(tab: SettingsTab): boolean {\n return tab.disabled || false;\n }\n\n /** @deprecated Use {@link IsTabDisabled}. */\n public isTabDisabled(tab: SettingsTab): boolean {\n return this.IsTabDisabled(tab);\n }\n}\n","<div class=\"mj-page-container\">\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-container\" role=\"status\" aria-live=\"polite\">\n <mj-loading text=\"Loading settings...\"></mj-loading>\n </div>\n }\n\n <!-- Error State -->\n @if (error && !isLoading) {\n <div class=\"error-container\" role=\"alert\">\n <div class=\"error-content\">\n <i class=\"fa-solid fa-exclamation-triangle error-icon\" aria-hidden=\"true\"></i>\n <p class=\"error-message\">{{ error }}</p>\n <button class=\"retry-button\" (click)=\"loadInitialData()\">\n <i class=\"fa-solid fa-refresh\" aria-hidden=\"true\"></i>\n Try Again\n </button>\n </div>\n </div>\n }\n\n <!-- Main Content -->\n @if (!isLoading && !error) {\n <div class=\"settings-content\">\n <!-- Desktop Layout -->\n @if (!isMobile) {\n <div class=\"desktop-layout\" style=\"display: flex;\">\n <!-- Side Navigation -->\n <nav class=\"side-navigation\" role=\"navigation\" aria-label=\"Settings navigation\">\n <!-- Search Bar -->\n <div class=\"nav-search\">\n <i class=\"fa-solid fa-search nav-search-icon\" aria-hidden=\"true\"></i>\n <input\n type=\"text\"\n class=\"nav-search-input\"\n placeholder=\"Search settings...\"\n (input)=\"onSearchChange($event)\"\n [value]=\"searchTerm$.value\"\n aria-label=\"Search settings\"\n />\n @if (searchTerm$.value) {\n <button\n class=\"nav-search-clear\"\n (click)=\"clearSearch()\"\n aria-label=\"Clear search\"\n tabindex=\"0\"\n >\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n\n <ul class=\"nav-list\" role=\"tablist\" aria-orientation=\"vertical\">\n @for (tab of filteredTabs; track tab.id) {\n <li\n class=\"nav-item\"\n [class.active]=\"activeTab === tab.id\"\n [class.disabled]=\"tab.disabled\"\n (click)=\"onTabChange(tab.id)\"\n (keydown.enter)=\"onTabChange(tab.id)\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === tab.id\"\n [attr.aria-controls]=\"'panel-' + tab.id\"\n [attr.aria-disabled]=\"tab.disabled\"\n tabindex=\"0\"\n >\n <i [class]=\"tab.icon\" aria-hidden=\"true\"></i>\n <span class=\"nav-label\">{{ tab.label }}</span>\n @if (tab.disabled) {\n <span class=\"coming-soon-badge\">Soon</span>\n }\n @if (tab.badgeCount && tab.badgeCount > 0) {\n <span class=\"nav-badge\" [class]=\"'badge-' + (tab.badgeColor || 'primary')\">\n {{ tab.badgeCount }}\n </span>\n }\n </li>\n }\n </ul>\n </nav>\n\n <!-- Content Area -->\n <div class=\"content-area\" role=\"tabpanel\" [attr.id]=\"'panel-' + activeTab\">\n <div class=\"tab-content\">\n @switch (activeTab) {\n @case ('general') {\n <mj-general-settings></mj-general-settings>\n }\n\n @case ('notifications') {\n <div class=\"notifications-settings\">\n <h2 class=\"section-title\">Notifications</h2>\n <p class=\"section-description\">Configure how and when you receive notifications</p>\n <mj-notification-preferences></mj-notification-preferences>\n </div>\n }\n\n @case ('applications') {\n <mj-application-settings></mj-application-settings>\n }\n\n @case ('appearance') {\n <mj-appearance-settings></mj-appearance-settings>\n }\n }\n </div>\n </div>\n </div>\n }\n\n <!-- Mobile Layout -->\n @if (isMobile) {\n <div class=\"mobile-layout\">\n <!-- Mobile Header -->\n @if (!isMobileNavOpen) {\n <header class=\"mobile-header\">\n <button\n class=\"mobile-header-icon\"\n (click)=\"toggleMobileNav()\"\n aria-label=\"Toggle navigation menu\"\n [attr.aria-expanded]=\"isMobileNavOpen\"\n >\n <i class=\"fa-solid fa-bars\" aria-hidden=\"true\"></i>\n </button>\n <h1 class=\"mobile-header-title\">Settings</h1>\n <div class=\"mobile-header-spacer\"></div>\n </header>\n }\n\n <!-- Backdrop Overlay -->\n @if (isMobileNavOpen) {\n <div\n class=\"mobile-nav-backdrop\"\n (click)=\"closeMobileNav()\"\n aria-hidden=\"true\"\n ></div>\n }\n\n <!-- Mobile Navigation Rail -->\n <nav\n class=\"mobile-nav-rail\"\n [class.open]=\"isMobileNavOpen\"\n role=\"navigation\"\n aria-label=\"Settings navigation\"\n >\n <div class=\"nav-rail-header\">\n <span class=\"nav-rail-title\">Settings</span>\n </div>\n\n <div class=\"nav-rail-items\" role=\"tablist\">\n @for (tab of filteredTabs; track tab.id) {\n <button\n class=\"nav-rail-item\"\n [class.active]=\"activeTab === tab.id\"\n [class.disabled]=\"tab.disabled\"\n [disabled]=\"tab.disabled\"\n (click)=\"onMobileTabChange(tab.id)\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === tab.id\"\n [attr.aria-label]=\"tab.label\"\n >\n <i [class]=\"tab.icon\" aria-hidden=\"true\"></i>\n <span class=\"nav-rail-label\">{{ tab.label }}</span>\n @if (tab.disabled) {\n <span class=\"coming-soon-badge\">Soon</span>\n }\n @if (tab.badgeCount && tab.badgeCount > 0) {\n <span class=\"rail-badge\" [class]=\"'badge-' + (tab.badgeColor || 'primary')\">\n {{ tab.badgeCount }}\n </span>\n }\n </button>\n }\n\n <button\n class=\"nav-rail-item nav-rail-close-item\"\n (click)=\"closeSettings()\"\n aria-label=\"Close settings\"\n >\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\n <span class=\"nav-rail-label\">Close</span>\n </button>\n </div>\n </nav>\n\n <!-- Mobile Content Area -->\n <div class=\"mobile-content\">\n <div class=\"tab-content\">\n @switch (activeTab) {\n @case ('general') {\n <mj-general-settings></mj-general-settings>\n }\n\n @case ('notifications') {\n <div class=\"notifications-settings\">\n <h2 class=\"section-title\">Notifications</h2>\n <p class=\"section-description\">Configure how and when you receive notifications</p>\n <mj-notification-preferences></mj-notification-preferences>\n </div>\n }\n\n @case ('applications') {\n <mj-application-settings></mj-application-settings>\n }\n\n @case ('appearance') {\n <mj-appearance-settings></mj-appearance-settings>\n }\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n</div>\n"]}
|
|
@@ -1,11 +1,31 @@
|
|
|
1
1
|
import { EventEmitter } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class SettingsCardComponent {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
Title: string;
|
|
5
|
+
/** @deprecated Use {@link Title}. */
|
|
6
|
+
set title(value: SettingsCardComponent['Title']);
|
|
7
|
+
/** @deprecated Use {@link Title}. */
|
|
8
|
+
get title(): SettingsCardComponent['Title'];
|
|
9
|
+
Icon: string;
|
|
10
|
+
/** @deprecated Use {@link Icon}. */
|
|
11
|
+
set icon(value: SettingsCardComponent['Icon']);
|
|
12
|
+
/** @deprecated Use {@link Icon}. */
|
|
13
|
+
get icon(): SettingsCardComponent['Icon'];
|
|
14
|
+
Expanded: boolean;
|
|
15
|
+
/** @deprecated Use {@link Expanded}. */
|
|
16
|
+
set expanded(value: SettingsCardComponent['Expanded']);
|
|
17
|
+
/** @deprecated Use {@link Expanded}. */
|
|
18
|
+
get expanded(): SettingsCardComponent['Expanded'];
|
|
19
|
+
Toggle: EventEmitter<void>;
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated Use {@link Toggle}.
|
|
22
|
+
*
|
|
23
|
+
* The same emitter under the old binding name, so a template still binding
|
|
24
|
+
* (toggle) keeps working. Must stay AFTER Toggle: class fields
|
|
25
|
+
* initialise in order, and the other way round this captures undefined.
|
|
26
|
+
*/
|
|
7
27
|
toggle: EventEmitter<void>;
|
|
8
28
|
static ɵfac: i0.ɵɵFactoryDeclaration<SettingsCardComponent, never>;
|
|
9
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SettingsCardComponent, "mj-settings-card", never, { "title": { "alias": "title"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; }, { "toggle": "toggle"; }, never, ["*"], false, never>;
|
|
29
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SettingsCardComponent, "mj-settings-card", never, { "Title": { "alias": "Title"; "required": false; }; "title": { "alias": "title"; "required": false; }; "Icon": { "alias": "Icon"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "Expanded": { "alias": "Expanded"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; }, { "Toggle": "Toggle"; "toggle": "toggle"; }, never, ["*"], false, never>;
|
|
10
30
|
}
|
|
11
31
|
//# sourceMappingURL=settings-card.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-card.component.d.ts","sourceRoot":"","sources":["../../../src/lib/shared/settings-card.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;;AAEvE,qBAwBa,qBAAqB;IACvB,KAAK,SAAM;
|
|
1
|
+
{"version":3,"file":"settings-card.component.d.ts","sourceRoot":"","sources":["../../../src/lib/shared/settings-card.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;;AAEvE,qBAwBa,qBAAqB;IACvB,KAAK,SAAM;IAEpB,qCAAqC;IACrC,IAAa,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,EAEvD;IACD,qCAAqC;IACrC,IAAI,KAAK,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAE1C;IACQ,IAAI,SAAM;IAEnB,oCAAoC;IACpC,IAAa,IAAI,CAAC,KAAK,EAAE,qBAAqB,CAAC,MAAM,CAAC,EAErD;IACD,oCAAoC;IACpC,IAAI,IAAI,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAExC;IACQ,QAAQ,UAAS;IAE1B,wCAAwC;IACxC,IAAa,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,UAAU,CAAC,EAE7D;IACD,wCAAwC;IACxC,IAAI,QAAQ,IAAI,qBAAqB,CAAC,UAAU,CAAC,CAEhD;IACS,MAAM,qBAA4B;IAE5C;;;;;;OAMG;IACO,MAAM,qBAAe;yCAxCpB,qBAAqB;2CAArB,qBAAqB;CAyCjC"}
|
|
@@ -10,12 +10,44 @@ function SettingsCardComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
|
10
10
|
i0.ɵɵattribute("aria-label", ctx_r0.title + " content");
|
|
11
11
|
} }
|
|
12
12
|
export class SettingsCardComponent {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
Title = '';
|
|
14
|
+
/** @deprecated Use {@link Title}. */
|
|
15
|
+
set title(value) {
|
|
16
|
+
this.Title = value;
|
|
17
|
+
}
|
|
18
|
+
/** @deprecated Use {@link Title}. */
|
|
19
|
+
get title() {
|
|
20
|
+
return this.Title;
|
|
21
|
+
}
|
|
22
|
+
Icon = '';
|
|
23
|
+
/** @deprecated Use {@link Icon}. */
|
|
24
|
+
set icon(value) {
|
|
25
|
+
this.Icon = value;
|
|
26
|
+
}
|
|
27
|
+
/** @deprecated Use {@link Icon}. */
|
|
28
|
+
get icon() {
|
|
29
|
+
return this.Icon;
|
|
30
|
+
}
|
|
31
|
+
Expanded = false;
|
|
32
|
+
/** @deprecated Use {@link Expanded}. */
|
|
33
|
+
set expanded(value) {
|
|
34
|
+
this.Expanded = value;
|
|
35
|
+
}
|
|
36
|
+
/** @deprecated Use {@link Expanded}. */
|
|
37
|
+
get expanded() {
|
|
38
|
+
return this.Expanded;
|
|
39
|
+
}
|
|
40
|
+
Toggle = new EventEmitter();
|
|
41
|
+
/**
|
|
42
|
+
* @deprecated Use {@link Toggle}.
|
|
43
|
+
*
|
|
44
|
+
* The same emitter under the old binding name, so a template still binding
|
|
45
|
+
* (toggle) keeps working. Must stay AFTER Toggle: class fields
|
|
46
|
+
* initialise in order, and the other way round this captures undefined.
|
|
47
|
+
*/
|
|
48
|
+
toggle = this.Toggle;
|
|
17
49
|
static ɵfac = function SettingsCardComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SettingsCardComponent)(); };
|
|
18
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SettingsCardComponent, selectors: [["mj-settings-card"]], inputs: { title: "title", icon: "icon", expanded: "expanded" }, outputs: { toggle: "toggle" }, standalone: false, ngContentSelectors: _c0, decls: 9, vars: 8, consts: [[1, "settings-card"], ["role", "button", "tabindex", "0", 1, "card-header", 3, "click", "keydown.enter", "keydown.space"], [1, "card-icon"], ["aria-hidden", "true"], [1, "card-title"], ["type", "button", 1, "expand-button"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-down"], ["role", "region", 1, "card-content"]], template: function SettingsCardComponent_Template(rf, ctx) { if (rf & 1) {
|
|
50
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SettingsCardComponent, selectors: [["mj-settings-card"]], inputs: { Title: "Title", title: "title", Icon: "Icon", icon: "icon", Expanded: "Expanded", expanded: "expanded" }, outputs: { Toggle: "Toggle", toggle: "toggle" }, standalone: false, ngContentSelectors: _c0, decls: 9, vars: 8, consts: [[1, "settings-card"], ["role", "button", "tabindex", "0", 1, "card-header", 3, "click", "keydown.enter", "keydown.space"], [1, "card-icon"], ["aria-hidden", "true"], [1, "card-title"], ["type", "button", 1, "expand-button"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-down"], ["role", "region", 1, "card-content"]], template: function SettingsCardComponent_Template(rf, ctx) { if (rf & 1) {
|
|
19
51
|
i0.ɵɵprojectionDef();
|
|
20
52
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
21
53
|
i0.ɵɵlistener("click", function SettingsCardComponent_Template_div_click_1_listener() { return ctx.toggle.emit(); })("keydown.enter", function SettingsCardComponent_Template_div_keydown_enter_1_listener() { return ctx.toggle.emit(); })("keydown.space", function SettingsCardComponent_Template_div_keydown_space_1_listener($event) { ctx.toggle.emit(); return $event.preventDefault(); });
|
|
@@ -63,12 +95,20 @@ export class SettingsCardComponent {
|
|
|
63
95
|
}
|
|
64
96
|
</div>
|
|
65
97
|
`, styles: ["/* =============================================================================\n Settings Card Component - MD3 Design System\n Expandable card for settings sections\n ============================================================================= */\n\n/* Settings Card Container */\n.settings-card {\n background: var(--mat-sys-surface);\n border-radius: var(--mat-sys-corner-medium);\n border: 1px solid var(--mat-sys-outline-variant);\n box-shadow: var(--mat-sys-elevation-1);\n overflow: hidden;\n transition: all 0.3s ease;\n}\n\n.settings-card:hover {\n box-shadow: var(--mat-sys-elevation-2);\n}\n\n.settings-card.expanded {\n box-shadow: var(--mat-sys-elevation-2);\n}\n\n/* Card Header - Clickable area */\n.card-header {\n padding: 1.25rem;\n display: flex;\n align-items: center;\n gap: 1rem;\n cursor: pointer;\n user-select: none;\n transition: background-color 0.2s ease;\n background: var(--mat-sys-surface-container-low);\n}\n\n.card-header:hover {\n background: var(--mat-sys-surface-container);\n}\n\n/* Card Icon */\n.card-icon {\n width: 40px;\n height: 40px;\n border-radius: var(--mat-sys-corner-small);\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mat-sys-primary-container);\n color: var(--mat-sys-on-primary-container);\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n/* Card Title */\n.card-title {\n flex: 1;\n margin: 0;\n font: var(--mat-sys-title-medium);\n font-weight: 600;\n color: var(--mat-sys-on-surface);\n}\n\n/* Expand Button */\n.expand-button {\n background: none;\n border: none;\n padding: 0.5rem;\n cursor: pointer;\n color: var(--mat-sys-on-surface-variant);\n transition: transform 0.3s ease, color 0.2s ease;\n border-radius: var(--mat-sys-corner-small);\n min-width: 44px;\n min-height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.expand-button:hover {\n color: var(--mat-sys-on-surface);\n background: var(--mat-sys-surface-container);\n}\n\n.expand-button:focus-visible {\n outline: 2px solid var(--mat-sys-primary);\n outline-offset: 2px;\n}\n\n/* Rotate chevron when expanded */\n.expanded .expand-button i {\n transform: rotate(180deg);\n}\n\n/* Card Content - Expandable area */\n.card-content {\n padding: 0 1.25rem 1.25rem;\n animation: slideDown 0.3s ease-out;\n background: var(--mat-sys-surface);\n}\n\n/* Slide down animation */\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* -----------------------------------------------------------------------------\n Responsive Styles\n ----------------------------------------------------------------------------- */\n\n/* Tablet and below */\n@media (max-width: 768px) {\n .card-header {\n padding: 1rem;\n }\n\n .card-icon {\n width: 36px;\n height: 36px;\n font-size: 1.125rem;\n }\n\n .card-title {\n font: var(--mat-sys-label-large);\n font-weight: 600;\n }\n\n .card-content {\n padding: 0 1rem 1rem;\n }\n}\n\n/* Mobile */\n@media (max-width: 639px) {\n .settings-card {\n border-radius: var(--mat-sys-corner-small);\n }\n\n .card-header {\n padding: 0.875rem;\n gap: 0.75rem;\n }\n\n .card-icon {\n width: 32px;\n height: 32px;\n font-size: 1rem;\n border-radius: var(--mat-sys-corner-extra-small);\n }\n\n .expand-button {\n min-width: 36px;\n min-height: 36px;\n padding: 0.375rem;\n }\n\n .card-content {\n padding: 0 0.875rem 0.875rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Accessibility\n ----------------------------------------------------------------------------- */\n\n/* Reduced Motion Support */\n@media (prefers-reduced-motion: reduce) {\n .settings-card,\n .card-header,\n .expand-button,\n .expand-button i {\n transition-duration: 0.01ms !important;\n }\n\n .card-content {\n animation-duration: 0.01ms !important;\n }\n}\n"] }]
|
|
66
|
-
}], null, {
|
|
98
|
+
}], null, { Title: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], title: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], Icon: [{
|
|
67
103
|
type: Input
|
|
68
104
|
}], icon: [{
|
|
69
105
|
type: Input
|
|
106
|
+
}], Expanded: [{
|
|
107
|
+
type: Input
|
|
70
108
|
}], expanded: [{
|
|
71
109
|
type: Input
|
|
110
|
+
}], Toggle: [{
|
|
111
|
+
type: Output
|
|
72
112
|
}], toggle: [{
|
|
73
113
|
type: Output
|
|
74
114
|
}] }); })();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-card.component.js","sourceRoot":"","sources":["../../../src/lib/shared/settings-card.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;;;;IAkB/D,8BAA+E;IAC7E,kBAAyB;IAC3B,iBAAM;;;;;AAMd,MAAM,OAAO,qBAAqB;IACvB,KAAK,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"settings-card.component.js","sourceRoot":"","sources":["../../../src/lib/shared/settings-card.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;;;;IAkB/D,8BAA+E;IAC7E,kBAAyB;IAC3B,iBAAM;;;;;AAMd,MAAM,OAAO,qBAAqB;IACvB,KAAK,GAAG,EAAE,CAAC;IAEpB,qCAAqC;IACrC,IAAa,KAAK,CAAC,KAAqC;QACtD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IACD,qCAAqC;IACrC,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACQ,IAAI,GAAG,EAAE,CAAC;IAEnB,oCAAoC;IACpC,IAAa,IAAI,CAAC,KAAoC;QACpD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;IACD,oCAAoC;IACpC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACQ,QAAQ,GAAG,KAAK,CAAC;IAE1B,wCAAwC;IACxC,IAAa,QAAQ,CAAC,KAAwC;QAC5D,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,wCAAwC;IACxC,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IACS,MAAM,GAAG,IAAI,YAAY,EAAQ,CAAC;IAE5C;;;;;;OAMG;IACO,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;+GAxCpB,qBAAqB;6DAArB,qBAAqB;;YAnB5B,AADF,8BAAuD,aACgH;YAAzD,AAAhC,AAAnD,+FAAS,iBAAa,IAAC,kGAA6C,iBAAa,IAAC,iGAAkB,iBAAa,SAAE,uBAAuB,IAAC;YAClK,8BAAuB;YACrB,uBAAyC;YAC3C,iBAAM;YACN,6BAAuB;YAAA,YAAW;YAAA,iBAAK;YACvC,iCAAmJ;YACjJ,uBAA2D;YAE/D,AADE,iBAAS,EACL;YAEN,uFAAgB;YAKlB,iBAAM;;YAhBqB,wCAA2B;YAG7C,eAAc;YAAd,uBAAc;YAEI,eAAW;YAAX,+BAAW;YACJ,cAA+B;;YAK/D,eAIC;YAJD,uCAIC;;;iFAKM,qBAAqB;cAxBjC,SAAS;6BACI,KAAK,YACP,kBAAkB,YAClB;;;;;;;;;;;;;;;;;;GAkBT;;kBAIA,KAAK;;kBAGL,KAAK;;kBAOL,KAAK;;kBAGL,KAAK;;kBAOL,KAAK;;kBAGL,KAAK;;kBAOL,MAAM;;kBASN,MAAM;;kFAxCI,qBAAqB","sourcesContent":["import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n standalone: false,\n selector: 'mj-settings-card',\n template: `\n <div class=\"settings-card\" [class.expanded]=\"expanded\">\n <div class=\"card-header\" (click)=\"toggle.emit()\" role=\"button\" tabindex=\"0\" (keydown.enter)=\"toggle.emit()\" (keydown.space)=\"toggle.emit(); $event.preventDefault()\">\n <div class=\"card-icon\">\n <i [class]=\"icon\" aria-hidden=\"true\"></i>\n </div>\n <h3 class=\"card-title\">{{ title }}</h3>\n <button class=\"expand-button\" [attr.aria-expanded]=\"expanded\" [attr.aria-label]=\"expanded ? 'Collapse ' + title : 'Expand ' + title\" type=\"button\">\n <i class=\"fa-solid fa-chevron-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n @if (expanded) {\n <div class=\"card-content\" role=\"region\" [attr.aria-label]=\"title + ' content'\">\n <ng-content></ng-content>\n </div>\n }\n </div>\n `,\n styleUrls: ['./settings-card.component.css']\n})\nexport class SettingsCardComponent {\n @Input() Title = '';\n\n /** @deprecated Use {@link Title}. */\n @Input() set title(value: SettingsCardComponent['Title']) {\n this.Title = value;\n }\n /** @deprecated Use {@link Title}. */\n get title(): SettingsCardComponent['Title'] {\n return this.Title;\n }\n @Input() Icon = '';\n\n /** @deprecated Use {@link Icon}. */\n @Input() set icon(value: SettingsCardComponent['Icon']) {\n this.Icon = value;\n }\n /** @deprecated Use {@link Icon}. */\n get icon(): SettingsCardComponent['Icon'] {\n return this.Icon;\n }\n @Input() Expanded = false;\n\n /** @deprecated Use {@link Expanded}. */\n @Input() set expanded(value: SettingsCardComponent['Expanded']) {\n this.Expanded = value;\n }\n /** @deprecated Use {@link Expanded}. */\n get expanded(): SettingsCardComponent['Expanded'] {\n return this.Expanded;\n }\n @Output() Toggle = new EventEmitter<void>();\n\n /**\n * @deprecated Use {@link Toggle}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (toggle) keeps working. Must stay AFTER Toggle: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() toggle = this.Toggle;\n}"]}
|