@masterteam/accessibilities 0.0.8 → 0.0.9

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.
@@ -352,8 +352,8 @@ let AccessibilitiesState = class AccessibilitiesState extends CrudStateBase {
352
352
  errorMessage: 'Failed to update levels tree for category',
353
353
  });
354
354
  }
355
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AccessibilitiesState, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
356
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AccessibilitiesState });
355
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AccessibilitiesState, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
356
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AccessibilitiesState });
357
357
  };
358
358
  __decorate([
359
359
  Action(GetAccessibilities)
@@ -433,7 +433,7 @@ AccessibilitiesState = __decorate([
433
433
  },
434
434
  })
435
435
  ], AccessibilitiesState);
436
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AccessibilitiesState, decorators: [{
436
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AccessibilitiesState, decorators: [{
437
437
  type: Injectable
438
438
  }], propDecorators: { getAccessibilities: [], updateAccessibility: [], updateAccessibilities: [], getGroups: [], getCategories: [], addCategory: [], updateCategory: [], deleteCategory: [], getCategoryDetails: [], addGroupsToCategory: [], removeGroupFromCategory: [], getLevelsTree: [], updateLevelsTreeForCategory: [] } });
439
439
  function mergeAccessibilitiesByCategory(current, updates) {
@@ -460,42 +460,42 @@ class AccessibilitiesFacade {
460
460
  // ============================================================================
461
461
  // Loading Signals - Computed from slice (minimal reactivity)
462
462
  // ============================================================================
463
- isLoadingAccessibilities = computed(() => this.loadingActive().includes(AccessibilityActionKey.GetAccessibilities), ...(ngDevMode ? [{ debugName: "isLoadingAccessibilities" }] : []));
464
- isUpdatingAccessibility = computed(() => this.loadingActive().includes(AccessibilityActionKey.UpdateAccessibility), ...(ngDevMode ? [{ debugName: "isUpdatingAccessibility" }] : []));
465
- isUpdatingAccessibilities = computed(() => this.loadingActive().includes(AccessibilityActionKey.UpdateAccessibilities), ...(ngDevMode ? [{ debugName: "isUpdatingAccessibilities" }] : []));
466
- isLoadingGroups = computed(() => this.loadingActive().includes(AccessibilityActionKey.GetGroups), ...(ngDevMode ? [{ debugName: "isLoadingGroups" }] : []));
467
- isLoadingCategories = computed(() => this.loadingActive().includes(AccessibilityActionKey.GetCategories), ...(ngDevMode ? [{ debugName: "isLoadingCategories" }] : []));
468
- isAddingCategory = computed(() => this.loadingActive().includes(AccessibilityActionKey.AddCategory), ...(ngDevMode ? [{ debugName: "isAddingCategory" }] : []));
469
- isUpdatingCategory = computed(() => this.loadingActive().includes(AccessibilityActionKey.UpdateCategory), ...(ngDevMode ? [{ debugName: "isUpdatingCategory" }] : []));
470
- isDeletingCategory = computed(() => this.loadingActive().includes(AccessibilityActionKey.DeleteCategory), ...(ngDevMode ? [{ debugName: "isDeletingCategory" }] : []));
471
- isLoadingCategoryDetails = computed(() => this.loadingActive().includes(AccessibilityActionKey.GetCategoryDetails), ...(ngDevMode ? [{ debugName: "isLoadingCategoryDetails" }] : []));
472
- isAddingGroupsToCategory = computed(() => this.loadingActive().includes(AccessibilityActionKey.AddGroupsToCategory), ...(ngDevMode ? [{ debugName: "isAddingGroupsToCategory" }] : []));
473
- isRemovingGroupFromCategory = computed(() => this.loadingActive().includes(AccessibilityActionKey.RemoveGroupFromCategory), ...(ngDevMode ? [{ debugName: "isRemovingGroupFromCategory" }] : []));
474
- isLoadingLevelsTree = computed(() => this.loadingActive().includes(AccessibilityActionKey.GetLevelsTree), ...(ngDevMode ? [{ debugName: "isLoadingLevelsTree" }] : []));
475
- isUpdatingLevelsTreeForCategory = computed(() => this.loadingActive().includes(AccessibilityActionKey.UpdateLevelsTreeForCategory), ...(ngDevMode ? [{ debugName: "isUpdatingLevelsTreeForCategory" }] : []));
463
+ isLoadingAccessibilities = computed(() => this.loadingActive().includes(AccessibilityActionKey.GetAccessibilities), ...(ngDevMode ? [{ debugName: "isLoadingAccessibilities" }] : /* istanbul ignore next */ []));
464
+ isUpdatingAccessibility = computed(() => this.loadingActive().includes(AccessibilityActionKey.UpdateAccessibility), ...(ngDevMode ? [{ debugName: "isUpdatingAccessibility" }] : /* istanbul ignore next */ []));
465
+ isUpdatingAccessibilities = computed(() => this.loadingActive().includes(AccessibilityActionKey.UpdateAccessibilities), ...(ngDevMode ? [{ debugName: "isUpdatingAccessibilities" }] : /* istanbul ignore next */ []));
466
+ isLoadingGroups = computed(() => this.loadingActive().includes(AccessibilityActionKey.GetGroups), ...(ngDevMode ? [{ debugName: "isLoadingGroups" }] : /* istanbul ignore next */ []));
467
+ isLoadingCategories = computed(() => this.loadingActive().includes(AccessibilityActionKey.GetCategories), ...(ngDevMode ? [{ debugName: "isLoadingCategories" }] : /* istanbul ignore next */ []));
468
+ isAddingCategory = computed(() => this.loadingActive().includes(AccessibilityActionKey.AddCategory), ...(ngDevMode ? [{ debugName: "isAddingCategory" }] : /* istanbul ignore next */ []));
469
+ isUpdatingCategory = computed(() => this.loadingActive().includes(AccessibilityActionKey.UpdateCategory), ...(ngDevMode ? [{ debugName: "isUpdatingCategory" }] : /* istanbul ignore next */ []));
470
+ isDeletingCategory = computed(() => this.loadingActive().includes(AccessibilityActionKey.DeleteCategory), ...(ngDevMode ? [{ debugName: "isDeletingCategory" }] : /* istanbul ignore next */ []));
471
+ isLoadingCategoryDetails = computed(() => this.loadingActive().includes(AccessibilityActionKey.GetCategoryDetails), ...(ngDevMode ? [{ debugName: "isLoadingCategoryDetails" }] : /* istanbul ignore next */ []));
472
+ isAddingGroupsToCategory = computed(() => this.loadingActive().includes(AccessibilityActionKey.AddGroupsToCategory), ...(ngDevMode ? [{ debugName: "isAddingGroupsToCategory" }] : /* istanbul ignore next */ []));
473
+ isRemovingGroupFromCategory = computed(() => this.loadingActive().includes(AccessibilityActionKey.RemoveGroupFromCategory), ...(ngDevMode ? [{ debugName: "isRemovingGroupFromCategory" }] : /* istanbul ignore next */ []));
474
+ isLoadingLevelsTree = computed(() => this.loadingActive().includes(AccessibilityActionKey.GetLevelsTree), ...(ngDevMode ? [{ debugName: "isLoadingLevelsTree" }] : /* istanbul ignore next */ []));
475
+ isUpdatingLevelsTreeForCategory = computed(() => this.loadingActive().includes(AccessibilityActionKey.UpdateLevelsTreeForCategory), ...(ngDevMode ? [{ debugName: "isUpdatingLevelsTreeForCategory" }] : /* istanbul ignore next */ []));
476
476
  // ============================================================================
477
477
  // Error Signals - Computed from slice (minimal reactivity)
478
478
  // ============================================================================
479
- accessibilitiesError = computed(() => this.errors()[AccessibilityActionKey.GetAccessibilities] ?? null, ...(ngDevMode ? [{ debugName: "accessibilitiesError" }] : []));
480
- updateAccessibilityError = computed(() => this.errors()[AccessibilityActionKey.UpdateAccessibility] ?? null, ...(ngDevMode ? [{ debugName: "updateAccessibilityError" }] : []));
481
- updateAccessibilitiesError = computed(() => this.errors()[AccessibilityActionKey.UpdateAccessibilities] ?? null, ...(ngDevMode ? [{ debugName: "updateAccessibilitiesError" }] : []));
482
- groupsError = computed(() => this.errors()[AccessibilityActionKey.GetGroups] ?? null, ...(ngDevMode ? [{ debugName: "groupsError" }] : []));
483
- categoriesError = computed(() => this.errors()[AccessibilityActionKey.GetCategories] ?? null, ...(ngDevMode ? [{ debugName: "categoriesError" }] : []));
484
- addCategoryError = computed(() => this.errors()[AccessibilityActionKey.AddCategory] ?? null, ...(ngDevMode ? [{ debugName: "addCategoryError" }] : []));
485
- updateCategoryError = computed(() => this.errors()[AccessibilityActionKey.UpdateCategory] ?? null, ...(ngDevMode ? [{ debugName: "updateCategoryError" }] : []));
486
- deleteCategoryError = computed(() => this.errors()[AccessibilityActionKey.DeleteCategory] ?? null, ...(ngDevMode ? [{ debugName: "deleteCategoryError" }] : []));
487
- getCategoryDetailsError = computed(() => this.errors()[AccessibilityActionKey.GetCategoryDetails] ?? null, ...(ngDevMode ? [{ debugName: "getCategoryDetailsError" }] : []));
488
- addGroupsToCategoryError = computed(() => this.errors()[AccessibilityActionKey.AddGroupsToCategory] ?? null, ...(ngDevMode ? [{ debugName: "addGroupsToCategoryError" }] : []));
489
- removeGroupFromCategoryError = computed(() => this.errors()[AccessibilityActionKey.RemoveGroupFromCategory] ?? null, ...(ngDevMode ? [{ debugName: "removeGroupFromCategoryError" }] : []));
490
- getLevelsTreeError = computed(() => this.errors()[AccessibilityActionKey.GetLevelsTree] ?? null, ...(ngDevMode ? [{ debugName: "getLevelsTreeError" }] : []));
491
- updateLevelsTreeForCategoryError = computed(() => this.errors()[AccessibilityActionKey.UpdateLevelsTreeForCategory] ?? null, ...(ngDevMode ? [{ debugName: "updateLevelsTreeForCategoryError" }] : []));
479
+ accessibilitiesError = computed(() => this.errors()[AccessibilityActionKey.GetAccessibilities] ?? null, ...(ngDevMode ? [{ debugName: "accessibilitiesError" }] : /* istanbul ignore next */ []));
480
+ updateAccessibilityError = computed(() => this.errors()[AccessibilityActionKey.UpdateAccessibility] ?? null, ...(ngDevMode ? [{ debugName: "updateAccessibilityError" }] : /* istanbul ignore next */ []));
481
+ updateAccessibilitiesError = computed(() => this.errors()[AccessibilityActionKey.UpdateAccessibilities] ?? null, ...(ngDevMode ? [{ debugName: "updateAccessibilitiesError" }] : /* istanbul ignore next */ []));
482
+ groupsError = computed(() => this.errors()[AccessibilityActionKey.GetGroups] ?? null, ...(ngDevMode ? [{ debugName: "groupsError" }] : /* istanbul ignore next */ []));
483
+ categoriesError = computed(() => this.errors()[AccessibilityActionKey.GetCategories] ?? null, ...(ngDevMode ? [{ debugName: "categoriesError" }] : /* istanbul ignore next */ []));
484
+ addCategoryError = computed(() => this.errors()[AccessibilityActionKey.AddCategory] ?? null, ...(ngDevMode ? [{ debugName: "addCategoryError" }] : /* istanbul ignore next */ []));
485
+ updateCategoryError = computed(() => this.errors()[AccessibilityActionKey.UpdateCategory] ?? null, ...(ngDevMode ? [{ debugName: "updateCategoryError" }] : /* istanbul ignore next */ []));
486
+ deleteCategoryError = computed(() => this.errors()[AccessibilityActionKey.DeleteCategory] ?? null, ...(ngDevMode ? [{ debugName: "deleteCategoryError" }] : /* istanbul ignore next */ []));
487
+ getCategoryDetailsError = computed(() => this.errors()[AccessibilityActionKey.GetCategoryDetails] ?? null, ...(ngDevMode ? [{ debugName: "getCategoryDetailsError" }] : /* istanbul ignore next */ []));
488
+ addGroupsToCategoryError = computed(() => this.errors()[AccessibilityActionKey.AddGroupsToCategory] ?? null, ...(ngDevMode ? [{ debugName: "addGroupsToCategoryError" }] : /* istanbul ignore next */ []));
489
+ removeGroupFromCategoryError = computed(() => this.errors()[AccessibilityActionKey.RemoveGroupFromCategory] ?? null, ...(ngDevMode ? [{ debugName: "removeGroupFromCategoryError" }] : /* istanbul ignore next */ []));
490
+ getLevelsTreeError = computed(() => this.errors()[AccessibilityActionKey.GetLevelsTree] ?? null, ...(ngDevMode ? [{ debugName: "getLevelsTreeError" }] : /* istanbul ignore next */ []));
491
+ updateLevelsTreeForCategoryError = computed(() => this.errors()[AccessibilityActionKey.UpdateLevelsTreeForCategory] ?? null, ...(ngDevMode ? [{ debugName: "updateLevelsTreeForCategoryError" }] : /* istanbul ignore next */ []));
492
492
  // ============================================================================
493
493
  // Derived Data - Computed from data selectors
494
494
  // ============================================================================
495
- categoriesCount = computed(() => this.categories().length, ...(ngDevMode ? [{ debugName: "categoriesCount" }] : []));
496
- hasCategories = computed(() => this.categories().length > 0, ...(ngDevMode ? [{ debugName: "hasCategories" }] : []));
497
- groupsCount = computed(() => this.groups().length, ...(ngDevMode ? [{ debugName: "groupsCount" }] : []));
498
- hasGroups = computed(() => this.groups().length > 0, ...(ngDevMode ? [{ debugName: "hasGroups" }] : []));
495
+ categoriesCount = computed(() => this.categories().length, ...(ngDevMode ? [{ debugName: "categoriesCount" }] : /* istanbul ignore next */ []));
496
+ hasCategories = computed(() => this.categories().length > 0, ...(ngDevMode ? [{ debugName: "hasCategories" }] : /* istanbul ignore next */ []));
497
+ groupsCount = computed(() => this.groups().length, ...(ngDevMode ? [{ debugName: "groupsCount" }] : /* istanbul ignore next */ []));
498
+ hasGroups = computed(() => this.groups().length > 0, ...(ngDevMode ? [{ debugName: "hasGroups" }] : /* istanbul ignore next */ []));
499
499
  // ============================================================================
500
500
  // Action Dispatchers
501
501
  // ============================================================================
@@ -539,10 +539,10 @@ class AccessibilitiesFacade {
539
539
  updateLevelsTreeForCategory(categoryId, keys) {
540
540
  return this.store.dispatch(new UpdateLevelsTreeForCategory(categoryId, { levelDataIds: keys }));
541
541
  }
542
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AccessibilitiesFacade, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
543
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AccessibilitiesFacade, providedIn: 'root' });
542
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AccessibilitiesFacade, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
543
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AccessibilitiesFacade, providedIn: 'root' });
544
544
  }
545
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AccessibilitiesFacade, decorators: [{
545
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AccessibilitiesFacade, decorators: [{
546
546
  type: Injectable,
547
547
  args: [{ providedIn: 'root' }]
548
548
  }] });
@@ -552,7 +552,7 @@ class Accessibilities {
552
552
  route = inject(ActivatedRoute);
553
553
  router = inject(Router);
554
554
  translocoService = inject(TranslocoService);
555
- selectedTab = signal('accessibilities', ...(ngDevMode ? [{ debugName: "selectedTab" }] : []));
555
+ selectedTab = signal('accessibilities', ...(ngDevMode ? [{ debugName: "selectedTab" }] : /* istanbul ignore next */ []));
556
556
  tabsList = [
557
557
  {
558
558
  label: this.translocoService.translate('accessibilities.accessibilities'),
@@ -598,10 +598,10 @@ class Accessibilities {
598
598
  this.router.navigate(['categories'], { relativeTo: this.route });
599
599
  }
600
600
  }
601
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: Accessibilities, deps: [], target: i0.ɵɵFactoryTarget.Component });
602
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.3", type: Accessibilities, isStandalone: true, selector: "mt-accessibilities", ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <mt-page\r\n [title]=\"t('accessibilities')\"\r\n [avatarIcon]=\"'security.passcode-lock'\"\r\n [contentClass]=\"'max-[1025px]:p-4 max-[640px]:p-3'\"\r\n [avatarStyle]=\"{\r\n '--p-avatar-background': 'var(--p-pink-50)',\r\n '--p-avatar-color': 'var(--p-pink-700)',\r\n }\"\r\n [tabs]=\"tabsList\"\r\n [activeTab]=\"selectedTab()\"\r\n (tabChange)=\"onTabChange($event)\"\r\n (backButtonClick)=\"goBack()\"\r\n backButton\r\n >\r\n <router-outlet />\r\n </mt-page>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: Page, selector: "mt-page", inputs: ["backButton", "backButtonIcon", "avatarIcon", "avatarStyle", "avatarShape", "title", "tabs", "activeTab", "contentClass", "contentId"], outputs: ["backButtonClick", "tabChange"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] });
601
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Accessibilities, deps: [], target: i0.ɵɵFactoryTarget.Component });
602
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.8", type: Accessibilities, isStandalone: true, selector: "mt-accessibilities", ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <mt-page\r\n [title]=\"t('accessibilities')\"\r\n [avatarIcon]=\"'security.passcode-lock'\"\r\n [contentClass]=\"'max-[1025px]:p-4 max-[640px]:p-3'\"\r\n [avatarStyle]=\"{\r\n '--p-avatar-background': 'var(--p-pink-50)',\r\n '--p-avatar-color': 'var(--p-pink-700)',\r\n }\"\r\n [tabs]=\"tabsList\"\r\n [activeTab]=\"selectedTab()\"\r\n (tabChange)=\"onTabChange($event)\"\r\n (backButtonClick)=\"goBack()\"\r\n backButton\r\n >\r\n <router-outlet />\r\n </mt-page>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: Page, selector: "mt-page", inputs: ["backButton", "backButtonIcon", "avatarIcon", "avatarStyle", "avatarShape", "title", "tabs", "activeTab", "contentClass", "contentId"], outputs: ["backButtonClick", "tabChange"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] });
603
603
  }
604
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: Accessibilities, decorators: [{
604
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Accessibilities, decorators: [{
605
605
  type: Component,
606
606
  args: [{ selector: 'mt-accessibilities', standalone: true, imports: [CommonModule, Page, RouterOutlet, TranslocoDirective], template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <mt-page\r\n [title]=\"t('accessibilities')\"\r\n [avatarIcon]=\"'security.passcode-lock'\"\r\n [contentClass]=\"'max-[1025px]:p-4 max-[640px]:p-3'\"\r\n [avatarStyle]=\"{\r\n '--p-avatar-background': 'var(--p-pink-50)',\r\n '--p-avatar-color': 'var(--p-pink-700)',\r\n }\"\r\n [tabs]=\"tabsList\"\r\n [activeTab]=\"selectedTab()\"\r\n (tabChange)=\"onTabChange($event)\"\r\n (backButtonClick)=\"goBack()\"\r\n backButton\r\n >\r\n <router-outlet />\r\n </mt-page>\r\n</ng-container>\r\n" }]
607
607
  }] });
@@ -611,10 +611,10 @@ class AccessibilityPermissionsEditModal {
611
611
  ref = inject(ModalRef);
612
612
  accessibilitiesFacade = inject(AccessibilitiesFacade);
613
613
  confirmationService = inject(ConfirmationService);
614
- accessibility = input(null, ...(ngDevMode ? [{ debugName: "accessibility" }] : []));
614
+ accessibility = input(null, ...(ngDevMode ? [{ debugName: "accessibility" }] : /* istanbul ignore next */ []));
615
615
  groups = this.accessibilitiesFacade.groups;
616
616
  saveLoading = this.accessibilitiesFacade.isUpdatingAccessibilities;
617
- selectedGroups = signal({}, ...(ngDevMode ? [{ debugName: "selectedGroups" }] : []));
617
+ selectedGroups = signal({}, ...(ngDevMode ? [{ debugName: "selectedGroups" }] : /* istanbul ignore next */ []));
618
618
  getAvailableGroupsOptions = computed(() => (settingId) => {
619
619
  const selectedIds = this.selectedGroups()[settingId] || [];
620
620
  return this.groups()
@@ -623,7 +623,7 @@ class AccessibilityPermissionsEditModal {
623
623
  label: group.name?.display,
624
624
  value: group.id,
625
625
  }));
626
- }, ...(ngDevMode ? [{ debugName: "getAvailableGroupsOptions" }] : []));
626
+ }, ...(ngDevMode ? [{ debugName: "getAvailableGroupsOptions" }] : /* istanbul ignore next */ []));
627
627
  ngOnInit() {
628
628
  const initialSelectedGroups = {};
629
629
  this.accessibility()?.settings?.forEach((setting) => {
@@ -685,10 +685,10 @@ class AccessibilityPermissionsEditModal {
685
685
  reject: () => { },
686
686
  });
687
687
  }
688
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AccessibilityPermissionsEditModal, deps: [], target: i0.ɵɵFactoryTarget.Component });
689
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: AccessibilityPermissionsEditModal, isStandalone: true, selector: "mt-accessibility-permissions-edit-modal", inputs: { accessibility: { classPropertyName: "accessibility", publicName: "accessibility", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div\r\n [class]=\"\r\n 'accessibility-permissions-modal-content flex min-w-0 flex-col gap-4 overflow-x-hidden p-4 max-[640px]:p-3 ' +\r\n modal.contentClass\r\n \"\r\n >\r\n @if (accessibility()) {\r\n <div class=\"space-y-4\">\r\n @for (setting of this.accessibility()?.settings; track setting.id) {\r\n <div class=\"border border-gray-200 rounded-lg overflow-hidden\">\r\n <div class=\"bg-sky-50 px-4 py-3 border-b border-gray-200\">\r\n <h4 class=\"font-medium text-gray-900\">\r\n {{ setting.name?.display }}\r\n </h4>\r\n </div>\r\n\r\n <div class=\"p-4\">\r\n <div class=\"mb-3\">\r\n <mt-select-field\r\n [placeholder]=\"t('accessibilities.selectGroupsPlaceholder')\"\r\n [options]=\"getAvailableGroupsOptions()(setting.id)\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [ngModel]=\"null\"\r\n (ngModelChange)=\"onGroupSelect(setting.id, $event)\"\r\n class=\"w-full\"\r\n >\r\n </mt-select-field>\r\n </div>\r\n\r\n @if (getSelectedGroupsForSetting(setting.id).length > 0) {\r\n <div class=\"mt-4\">\r\n <h5 class=\"text-sm font-medium text-gray-700 mb-2\">\r\n {{ t(\"accessibilities.selectedGroups\") }}\r\n </h5>\r\n <div class=\"space-y-2\">\r\n @for (\r\n group of getSelectedGroupsForSetting(setting.id);\r\n track group.id\r\n ) {\r\n <div\r\n class=\"flex flex-col gap-3 rounded-lg border border-gray-100 bg-gray-50 px-3 py-2 sm:flex-row sm:items-center sm:justify-between\"\r\n >\r\n <div class=\"flex min-w-0 items-center gap-2\">\r\n <mt-avatar\r\n class=\"shrink-0\"\r\n [icon]=\"'user.users-01'\"\r\n shape=\"square\"\r\n >\r\n </mt-avatar>\r\n <span\r\n class=\"min-w-0 break-words text-sm font-medium\"\r\n >{{ group.name?.display }}</span\r\n >\r\n </div>\r\n <mt-button\r\n variant=\"text\"\r\n size=\"small\"\r\n icon=\"general.trash-01\"\r\n severity=\"danger\"\r\n styleClass=\"w-full sm:w-auto\"\r\n (click)=\"\r\n removeGroupFromSetting($event, setting.id, group.id)\r\n \"\r\n title=\"Remove Group\"\r\n >\r\n </mt-button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @empty {\r\n <div class=\"text-center text-gray-500 py-8 bg-gray-50 rounded-lg\">\r\n <p>{{ \"no-data-found\" | transloco }}</p>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'accessibility-permissions-modal-footer ' +\r\n modal.footerClass +\r\n ' flex-col gap-2 sm:flex-row sm:items-center sm:justify-end'\r\n \"\r\n >\r\n <mt-button\r\n [label]=\"t('save')\"\r\n (click)=\"onSave()\"\r\n [loading]=\"saveLoading()\"\r\n severity=\"primary\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n <mt-button\r\n [label]=\"t('cancel')\"\r\n severity=\"secondary\"\r\n [disabled]=\"saveLoading()\"\r\n (click)=\"onClose()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:block;min-width:0}:host ::ng-deep .accessibility-permissions-modal-footer{height:auto!important;min-height:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "size", "optionGroupLabel", "optionGroupChildren", "loading", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "component", type: Avatar, selector: "mt-avatar", inputs: ["label", "icon", "image", "styleClass", "size", "shape", "badge", "badgeSize", "badgeSeverity"], outputs: ["onImageError"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
688
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AccessibilityPermissionsEditModal, deps: [], target: i0.ɵɵFactoryTarget.Component });
689
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: AccessibilityPermissionsEditModal, isStandalone: true, selector: "mt-accessibility-permissions-edit-modal", inputs: { accessibility: { classPropertyName: "accessibility", publicName: "accessibility", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <div\r\n [class]=\"\r\n 'accessibility-permissions-modal-content flex min-w-0 flex-col gap-4 overflow-x-hidden p-4 max-[640px]:p-3 ' +\r\n modal.contentClass\r\n \"\r\n >\r\n @if (accessibility()) {\r\n <div class=\"space-y-4\">\r\n @for (setting of this.accessibility()?.settings; track setting.id) {\r\n <div class=\"border border-gray-200 rounded-lg overflow-hidden\">\r\n <div class=\"bg-sky-50 px-4 py-3 border-b border-gray-200\">\r\n <h4 class=\"font-medium text-gray-900\">\r\n {{ setting.name?.display }}\r\n </h4>\r\n </div>\r\n\r\n <div class=\"p-4\">\r\n <div class=\"mb-3\">\r\n <mt-select-field\r\n [placeholder]=\"t('accessibilities.selectGroupsPlaceholder')\"\r\n [options]=\"getAvailableGroupsOptions()(setting.id)\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [ngModel]=\"null\"\r\n (ngModelChange)=\"onGroupSelect(setting.id, $event)\"\r\n class=\"w-full\"\r\n >\r\n </mt-select-field>\r\n </div>\r\n\r\n @if (getSelectedGroupsForSetting(setting.id).length > 0) {\r\n <div class=\"mt-4\">\r\n <h5 class=\"text-sm font-medium text-gray-700 mb-2\">\r\n {{ t(\"accessibilities.selectedGroups\") }}\r\n </h5>\r\n <div class=\"space-y-2\">\r\n @for (\r\n group of getSelectedGroupsForSetting(setting.id);\r\n track group.id\r\n ) {\r\n <div\r\n class=\"flex flex-col gap-3 rounded-lg border border-gray-100 bg-gray-50 px-3 py-2 sm:flex-row sm:items-center sm:justify-between\"\r\n >\r\n <div class=\"flex min-w-0 items-center gap-2\">\r\n <mt-avatar\r\n class=\"shrink-0\"\r\n [icon]=\"'user.users-01'\"\r\n shape=\"square\"\r\n >\r\n </mt-avatar>\r\n <span\r\n class=\"min-w-0 break-words text-sm font-medium\"\r\n >{{ group.name?.display }}</span\r\n >\r\n </div>\r\n <mt-button\r\n variant=\"text\"\r\n size=\"small\"\r\n icon=\"general.trash-01\"\r\n severity=\"danger\"\r\n styleClass=\"w-full sm:w-auto\"\r\n (click)=\"\r\n removeGroupFromSetting($event, setting.id, group.id)\r\n \"\r\n title=\"Remove Group\"\r\n >\r\n </mt-button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @empty {\r\n <div class=\"text-center text-gray-500 py-8 bg-gray-50 rounded-lg\">\r\n <p>{{ \"no-data-found\" | transloco }}</p>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'accessibility-permissions-modal-footer ' +\r\n modal.footerClass +\r\n ' flex-col gap-2 sm:flex-row sm:items-center sm:justify-end'\r\n \"\r\n >\r\n <mt-button\r\n [label]=\"t('save')\"\r\n (click)=\"onSave()\"\r\n [loading]=\"saveLoading()\"\r\n severity=\"primary\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n <mt-button\r\n [label]=\"t('cancel')\"\r\n severity=\"secondary\"\r\n [disabled]=\"saveLoading()\"\r\n (click)=\"onClose()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:block;min-width:0}:host ::ng-deep .accessibility-permissions-modal-footer{height:auto!important;min-height:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "size", "optionGroupLabel", "optionGroupChildren", "loading", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "component", type: Avatar, selector: "mt-avatar", inputs: ["label", "icon", "image", "styleClass", "size", "shape", "badge", "badgeSize", "badgeSeverity"], outputs: ["onImageError"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
690
690
  }
691
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AccessibilityPermissionsEditModal, decorators: [{
691
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AccessibilityPermissionsEditModal, decorators: [{
692
692
  type: Component,
693
693
  args: [{ selector: 'mt-accessibility-permissions-edit-modal', standalone: true, imports: [
694
694
  CommonModule,
@@ -710,7 +710,7 @@ class AccessibilitiesList {
710
710
  confirmationService = inject(ConfirmationService);
711
711
  accessibilities = this.accessibilitiesFacade.accessibilities;
712
712
  isLoading = this.accessibilitiesFacade.isLoadingAccessibilities;
713
- itemDeletedId = signal(null, ...(ngDevMode ? [{ debugName: "itemDeletedId" }] : []));
713
+ itemDeletedId = signal(null, ...(ngDevMode ? [{ debugName: "itemDeletedId" }] : /* istanbul ignore next */ []));
714
714
  openPermissionsModal(accessibility) {
715
715
  this.modal.openModal(AccessibilityPermissionsEditModal, 'drawer', {
716
716
  header: this.translocoService.translate('accessibilities.setPermissions'),
@@ -724,10 +724,10 @@ class AccessibilitiesList {
724
724
  },
725
725
  });
726
726
  }
727
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AccessibilitiesList, deps: [], target: i0.ɵɵFactoryTarget.Component });
728
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: AccessibilitiesList, isStandalone: true, selector: "mt-accessibilities-list", ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <mt-card class=\"mx-auto my-5 w-full max-w-[78rem]\">\r\n <div class=\"flex min-h-0 flex-col\">\r\n <ng-template #headless>\r\n <div class=\"p-5 mb-5 border-b border-surface\">\r\n <h2 class=\"text-lg font-semibold m-0\">\r\n {{ t(\"system-accessibilities\") }}\r\n </h2>\r\n </div>\r\n @if (isLoading()) {\r\n <div class=\"space-y-4 p-4\">\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n </div>\r\n } @else {\r\n <div class=\"overflow-auto\">\r\n @for (\r\n accessibility of accessibilities();\r\n track accessibility.category\r\n ) {\r\n <div\r\n class=\"mx-4 mb-4 flex flex-col gap-3 rounded-lg border-1 border-surface p-3 sm:mx-5 sm:flex-row sm:items-center sm:justify-between\"\r\n >\r\n <div class=\"flex min-w-0 items-start gap-3\">\r\n <mt-avatar\r\n class=\"shrink-0\"\r\n [icon]=\"'security.lock-unlocked-01'\"\r\n shape=\"square\"\r\n size=\"normal\"\r\n [style.--p-avatar-background]=\"\r\n 'var(--p-' + 'surface' + '-100)'\r\n \"\r\n [style.--p-avatar-color]=\"'var(--p-' + 'primary' + '-600)'\"\r\n >\r\n </mt-avatar>\r\n <div class=\"min-w-0\">\r\n <div class=\"break-words font-semibold\">\r\n {{ accessibility.name?.display }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex flex-wrap items-center gap-3 sm:justify-end\">\r\n <div\r\n class=\"rounded-lg border-1 border-surface px-3 py-1 text-sm font-semibold\"\r\n >\r\n {{ accessibility.groupsCount }} {{ t(\"groups\") }}\r\n </div>\r\n <div class=\"border-surface px-1 sm:border-s-1\">\r\n <mt-button\r\n [text]=\"true\"\r\n icon=\"security.lock-unlocked-01\"\r\n severity=\"primary\"\r\n (click)=\"openPermissionsModal(accessibility)\"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"mt-20 flex items-center justify-center px-4 text-center text-muted-color\"\r\n >\r\n {{ \"no-data-found\" | transloco }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ng-template>\r\n </div>\r\n </mt-card>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: Avatar, selector: "mt-avatar", inputs: ["label", "icon", "image", "styleClass", "size", "shape", "badge", "badgeSize", "badgeSeverity"], outputs: ["onImageError"] }, { kind: "component", type: Card, selector: "mt-card", inputs: ["class", "title", "paddingless"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i1$1.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
727
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AccessibilitiesList, deps: [], target: i0.ɵɵFactoryTarget.Component });
728
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: AccessibilitiesList, isStandalone: true, selector: "mt-accessibilities-list", ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <mt-card class=\"mx-auto my-5 w-full max-w-[78rem]\">\r\n <div class=\"flex min-h-0 flex-col\">\r\n <ng-template #headless>\r\n <div class=\"p-5 mb-5 border-b border-surface\">\r\n <h2 class=\"text-lg font-semibold m-0\">\r\n {{ t(\"system-accessibilities\") }}\r\n </h2>\r\n </div>\r\n @if (isLoading()) {\r\n <div class=\"space-y-4 p-4\">\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n </div>\r\n } @else {\r\n <div class=\"overflow-auto\">\r\n @for (\r\n accessibility of accessibilities();\r\n track accessibility.category\r\n ) {\r\n <div\r\n class=\"mx-4 mb-4 flex flex-col gap-3 rounded-lg border-1 border-surface p-3 sm:mx-5 sm:flex-row sm:items-center sm:justify-between\"\r\n >\r\n <div class=\"flex min-w-0 items-start gap-3\">\r\n <mt-avatar\r\n class=\"shrink-0\"\r\n [icon]=\"'security.lock-unlocked-01'\"\r\n shape=\"square\"\r\n size=\"normal\"\r\n [style.--p-avatar-background]=\"\r\n 'var(--p-' + 'surface' + '-100)'\r\n \"\r\n [style.--p-avatar-color]=\"'var(--p-' + 'primary' + '-600)'\"\r\n >\r\n </mt-avatar>\r\n <div class=\"min-w-0\">\r\n <div class=\"break-words font-semibold\">\r\n {{ accessibility.name?.display }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex flex-wrap items-center gap-3 sm:justify-end\">\r\n <div\r\n class=\"rounded-lg border-1 border-surface px-3 py-1 text-sm font-semibold\"\r\n >\r\n {{ accessibility.groupsCount }} {{ t(\"groups\") }}\r\n </div>\r\n <div class=\"border-surface px-1 sm:border-s-1\">\r\n <mt-button\r\n [text]=\"true\"\r\n icon=\"security.lock-unlocked-01\"\r\n severity=\"primary\"\r\n (click)=\"openPermissionsModal(accessibility)\"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"mt-20 flex items-center justify-center px-4 text-center text-muted-color\"\r\n >\r\n {{ \"no-data-found\" | transloco }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ng-template>\r\n </div>\r\n </mt-card>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: Avatar, selector: "mt-avatar", inputs: ["label", "icon", "image", "styleClass", "size", "shape", "badge", "badgeSize", "badgeSeverity"], outputs: ["onImageError"] }, { kind: "component", type: Card, selector: "mt-card", inputs: ["class", "title", "paddingless"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i1$1.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
729
729
  }
730
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AccessibilitiesList, decorators: [{
730
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AccessibilitiesList, decorators: [{
731
731
  type: Component,
732
732
  args: [{ selector: 'mt-accessibilities-list', standalone: true, imports: [
733
733
  CommonModule,
@@ -746,7 +746,7 @@ class AddCategoryModal {
746
746
  facade = inject(AccessibilitiesFacade);
747
747
  translocoService = inject(TranslocoService);
748
748
  // Input for edit mode - receives category with rawName
749
- category = input(null, ...(ngDevMode ? [{ debugName: "category" }] : []));
749
+ category = input(null, ...(ngDevMode ? [{ debugName: "category" }] : /* istanbul ignore next */ []));
750
750
  categoryFormControl = new FormControl(null);
751
751
  dynamicFormConfig = linkedSignal(() => ({
752
752
  sections: [
@@ -773,7 +773,7 @@ class AddCategoryModal {
773
773
  ],
774
774
  },
775
775
  ],
776
- }), ...(ngDevMode ? [{ debugName: "dynamicFormConfig" }] : []));
776
+ }), ...(ngDevMode ? [{ debugName: "dynamicFormConfig" }] : /* istanbul ignore next */ []));
777
777
  isAddingCategory = this.facade.isAddingCategory;
778
778
  isUpdatingCategory = this.facade.isUpdatingCategory;
779
779
  constructor() {
@@ -816,10 +816,10 @@ class AddCategoryModal {
816
816
  onCancel() {
817
817
  this.ref.close(false);
818
818
  }
819
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AddCategoryModal, deps: [], target: i0.ɵɵFactoryTarget.Component });
820
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.3", type: AddCategoryModal, isStandalone: true, selector: "mt-add-category-modal", inputs: { category: { classPropertyName: "category", publicName: "category", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div\r\n [class]=\"\r\n 'add-category-modal-content flex min-w-0 flex-col gap-3 overflow-x-hidden p-4 max-[640px]:p-3 ' +\r\n modal.contentClass\r\n \"\r\n >\r\n <mt-dynamic-form\r\n [formConfig]=\"dynamicFormConfig()\"\r\n [formControl]=\"categoryFormControl\"\r\n />\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'add-category-modal-footer ' +\r\n modal.footerClass +\r\n ' flex-col gap-2 sm:flex-row sm:items-center sm:justify-end'\r\n \"\r\n >\r\n <mt-button\r\n variant=\"outlined\"\r\n [label]=\"t('cancel')\"\r\n (click)=\"onCancel()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n\r\n <mt-button\r\n [label]=\"'add' | transloco\"\r\n (click)=\"onSubmit()\"\r\n [loading]=\"isAddingCategory() || isUpdatingCategory()\"\r\n [disabled]=\"!this.categoryFormControl.valid\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:block;min-width:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: DynamicForm, selector: "mt-dynamic-form", inputs: ["formConfig", "forcedHiddenFieldKeys", "preserveForcedHiddenValues", "visibleSectionKeys"], outputs: ["runtimeMessagesChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
819
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AddCategoryModal, deps: [], target: i0.ɵɵFactoryTarget.Component });
820
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.8", type: AddCategoryModal, isStandalone: true, selector: "mt-add-category-modal", inputs: { category: { classPropertyName: "category", publicName: "category", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div\r\n [class]=\"\r\n 'add-category-modal-content flex min-w-0 flex-col gap-3 overflow-x-hidden p-4 max-[640px]:p-3 ' +\r\n modal.contentClass\r\n \"\r\n >\r\n <mt-dynamic-form\r\n [formConfig]=\"dynamicFormConfig()\"\r\n [formControl]=\"categoryFormControl\"\r\n />\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'add-category-modal-footer ' +\r\n modal.footerClass +\r\n ' flex-col gap-2 sm:flex-row sm:items-center sm:justify-end'\r\n \"\r\n >\r\n <mt-button\r\n variant=\"outlined\"\r\n [label]=\"t('cancel')\"\r\n (click)=\"onCancel()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n\r\n <mt-button\r\n [label]=\"'add' | transloco\"\r\n (click)=\"onSubmit()\"\r\n [loading]=\"isAddingCategory() || isUpdatingCategory()\"\r\n [disabled]=\"!this.categoryFormControl.valid\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n </div>\r\n</ng-container>\r\n", styles: [":host{display:block;min-width:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: DynamicForm, selector: "mt-dynamic-form", inputs: ["formConfig", "forcedHiddenFieldKeys", "preserveForcedHiddenValues", "visibleSectionKeys"], outputs: ["runtimeMessagesChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
821
821
  }
822
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AddCategoryModal, decorators: [{
822
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AddCategoryModal, decorators: [{
823
823
  type: Component,
824
824
  args: [{ selector: 'mt-add-category-modal', standalone: true, imports: [
825
825
  CommonModule,
@@ -835,14 +835,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImpor
835
835
  class CategoryGroups {
836
836
  accessibilitiesFacade = inject(AccessibilitiesFacade);
837
837
  confirmationService = inject(ConfirmationService);
838
- groupSelectControl = input.required(...(ngDevMode ? [{ debugName: "groupSelectControl" }] : []));
839
- availableGroups = input.required(...(ngDevMode ? [{ debugName: "availableGroups" }] : []));
840
- categoryGroups = input.required(...(ngDevMode ? [{ debugName: "categoryGroups" }] : []));
841
- selectedCategoryId = input.required(...(ngDevMode ? [{ debugName: "selectedCategoryId" }] : []));
842
- isLoadingCategoryDetails = input.required(...(ngDevMode ? [{ debugName: "isLoadingCategoryDetails" }] : []));
838
+ groupSelectControl = input.required(...(ngDevMode ? [{ debugName: "groupSelectControl" }] : /* istanbul ignore next */ []));
839
+ availableGroups = input.required(...(ngDevMode ? [{ debugName: "availableGroups" }] : /* istanbul ignore next */ []));
840
+ categoryGroups = input.required(...(ngDevMode ? [{ debugName: "categoryGroups" }] : /* istanbul ignore next */ []));
841
+ selectedCategoryId = input.required(...(ngDevMode ? [{ debugName: "selectedCategoryId" }] : /* istanbul ignore next */ []));
842
+ isLoadingCategoryDetails = input.required(...(ngDevMode ? [{ debugName: "isLoadingCategoryDetails" }] : /* istanbul ignore next */ []));
843
843
  isAddingGroupsToCategory = this.accessibilitiesFacade.isAddingGroupsToCategory;
844
844
  isRemovingGroupFromCategory = this.accessibilitiesFacade.isRemovingGroupFromCategory;
845
- groupDeletedId = signal(null, ...(ngDevMode ? [{ debugName: "groupDeletedId" }] : []));
845
+ groupDeletedId = signal(null, ...(ngDevMode ? [{ debugName: "groupDeletedId" }] : /* istanbul ignore next */ []));
846
846
  onDeleteGroup(event, groupId) {
847
847
  event.stopPropagation();
848
848
  const categoryId = this.selectedCategoryId();
@@ -877,10 +877,10 @@ class CategoryGroups {
877
877
  });
878
878
  }
879
879
  }
880
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: CategoryGroups, deps: [], target: i0.ɵɵFactoryTarget.Component });
881
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: CategoryGroups, isStandalone: true, selector: "mt-category-groups", inputs: { groupSelectControl: { classPropertyName: "groupSelectControl", publicName: "groupSelectControl", isSignal: true, isRequired: true, transformFunction: null }, availableGroups: { classPropertyName: "availableGroups", publicName: "availableGroups", isSignal: true, isRequired: true, transformFunction: null }, categoryGroups: { classPropertyName: "categoryGroups", publicName: "categoryGroups", isSignal: true, isRequired: true, transformFunction: null }, selectedCategoryId: { classPropertyName: "selectedCategoryId", publicName: "selectedCategoryId", isSignal: true, isRequired: true, transformFunction: null }, isLoadingCategoryDetails: { classPropertyName: "isLoadingCategoryDetails", publicName: "isLoadingCategoryDetails", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div class=\"p-4\">\r\n <!-- Group Selection Section -->\r\n <div class=\"flex flex-col gap-3 sm:flex-row sm:items-end\">\r\n <div class=\"w-full sm:w-1/2\">\r\n <mt-select-field\r\n [formControl]=\"groupSelectControl()\"\r\n [label]=\"t('groups')\"\r\n [options]=\"availableGroups()\"\r\n optionLabel=\"name.display\"\r\n optionValue=\"id\"\r\n >\r\n </mt-select-field>\r\n </div>\r\n <mt-button\r\n icon=\"general.plus\"\r\n [label]=\"t('add-group')\"\r\n (click)=\"onAddGroupToCategory()\"\r\n [disabled]=\"!groupSelectControl().value || !selectedCategoryId()\"\r\n [loading]=\"isAddingGroupsToCategory()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n >\r\n </mt-button>\r\n </div>\r\n\r\n <div class=\"mt-6\">\r\n @if (isLoadingCategoryDetails()) {\r\n <div class=\"space-y-4 p-4\">\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n </div>\r\n } @else {\r\n @for (group of categoryGroups(); track group.id) {\r\n <div\r\n class=\"my-3 flex flex-col gap-3 rounded-lg border border-surface p-3 sm:flex-row sm:items-center\"\r\n >\r\n <div class=\"min-w-0 flex-1\">\r\n <div class=\"break-words text-base font-medium\">\r\n {{ group.name?.display }}\r\n </div>\r\n </div>\r\n <div class=\"text-sm text-muted-color\">\r\n {{ group.usersCount }} {{ t(\"users\") }}\r\n </div>\r\n <div\r\n class=\"flex items-center gap-0 self-end sm:ms-auto sm:self-auto\"\r\n >\r\n <!-- <mt-button variant=\"text\" size=\"large\" icon=\"user.users-03\">\r\n </mt-button> -->\r\n <mt-button\r\n variant=\"text\"\r\n size=\"large\"\r\n icon=\"general.trash-01\"\r\n severity=\"danger\"\r\n (click)=\"onDeleteGroup($event, group.groupId)\"\r\n [loading]=\"\r\n isRemovingGroupFromCategory() &&\r\n groupDeletedId() === group.groupId\r\n \"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div class=\"flex items-center justify-center h-20 text-muted-color\">\r\n {{ \"no-data-found\" | transloco }}\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "size", "optionGroupLabel", "optionGroupChildren", "loading", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i1$1.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
880
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: CategoryGroups, deps: [], target: i0.ɵɵFactoryTarget.Component });
881
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: CategoryGroups, isStandalone: true, selector: "mt-category-groups", inputs: { groupSelectControl: { classPropertyName: "groupSelectControl", publicName: "groupSelectControl", isSignal: true, isRequired: true, transformFunction: null }, availableGroups: { classPropertyName: "availableGroups", publicName: "availableGroups", isSignal: true, isRequired: true, transformFunction: null }, categoryGroups: { classPropertyName: "categoryGroups", publicName: "categoryGroups", isSignal: true, isRequired: true, transformFunction: null }, selectedCategoryId: { classPropertyName: "selectedCategoryId", publicName: "selectedCategoryId", isSignal: true, isRequired: true, transformFunction: null }, isLoadingCategoryDetails: { classPropertyName: "isLoadingCategoryDetails", publicName: "isLoadingCategoryDetails", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div class=\"p-4\">\r\n <!-- Group Selection Section -->\r\n <div class=\"flex flex-col gap-3 sm:flex-row sm:items-end\">\r\n <div class=\"w-full sm:w-1/2\">\r\n <mt-select-field\r\n [formControl]=\"groupSelectControl()\"\r\n [label]=\"t('groups')\"\r\n [options]=\"availableGroups()\"\r\n optionLabel=\"name.display\"\r\n optionValue=\"id\"\r\n >\r\n </mt-select-field>\r\n </div>\r\n <mt-button\r\n icon=\"general.plus\"\r\n [label]=\"t('add-group')\"\r\n (click)=\"onAddGroupToCategory()\"\r\n [disabled]=\"!groupSelectControl().value || !selectedCategoryId()\"\r\n [loading]=\"isAddingGroupsToCategory()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n >\r\n </mt-button>\r\n </div>\r\n\r\n <div class=\"mt-6\">\r\n @if (isLoadingCategoryDetails()) {\r\n <div class=\"space-y-4 p-4\">\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n </div>\r\n } @else {\r\n @for (group of categoryGroups(); track group.id) {\r\n <div\r\n class=\"my-3 flex flex-col gap-3 rounded-lg border border-surface p-3 sm:flex-row sm:items-center\"\r\n >\r\n <div class=\"min-w-0 flex-1\">\r\n <div class=\"break-words text-base font-medium\">\r\n {{ group.name?.display }}\r\n </div>\r\n </div>\r\n <div class=\"text-sm text-muted-color\">\r\n {{ group.usersCount }} {{ t(\"users\") }}\r\n </div>\r\n <div\r\n class=\"flex items-center gap-0 self-end sm:ms-auto sm:self-auto\"\r\n >\r\n <!-- <mt-button variant=\"text\" size=\"large\" icon=\"user.users-03\">\r\n </mt-button> -->\r\n <mt-button\r\n variant=\"text\"\r\n size=\"large\"\r\n icon=\"general.trash-01\"\r\n severity=\"danger\"\r\n (click)=\"onDeleteGroup($event, group.groupId)\"\r\n [loading]=\"\r\n isRemovingGroupFromCategory() &&\r\n groupDeletedId() === group.groupId\r\n \"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div class=\"flex items-center justify-center h-20 text-muted-color\">\r\n {{ \"no-data-found\" | transloco }}\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "size", "optionGroupLabel", "optionGroupChildren", "loading", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i1$1.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
882
882
  }
883
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: CategoryGroups, decorators: [{
883
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: CategoryGroups, decorators: [{
884
884
  type: Component,
885
885
  args: [{ selector: 'mt-category-groups', standalone: true, imports: [
886
886
  CommonModule,
@@ -896,15 +896,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImpor
896
896
 
897
897
  class CategoryElements {
898
898
  accessibilitiesFacade = inject(AccessibilitiesFacade);
899
- selectedCategoryId = input.required(...(ngDevMode ? [{ debugName: "selectedCategoryId" }] : []));
900
- categoryLevels = model(...(ngDevMode ? [undefined, { debugName: "categoryLevels" }] : []));
899
+ selectedCategoryId = input.required(...(ngDevMode ? [{ debugName: "selectedCategoryId" }] : /* istanbul ignore next */ []));
900
+ categoryLevels = model(...(ngDevMode ? [undefined, { debugName: "categoryLevels" }] : /* istanbul ignore next */ []));
901
901
  nodes = computed(() => {
902
902
  const tree = this.accessibilitiesFacade.levelsTree();
903
903
  return this.transformTreeNodes(tree);
904
- }, ...(ngDevMode ? [{ debugName: "nodes" }] : []));
904
+ }, ...(ngDevMode ? [{ debugName: "nodes" }] : /* istanbul ignore next */ []));
905
905
  isLoadingTree = this.accessibilitiesFacade.isLoadingLevelsTree;
906
906
  isLoadingCategoryDetails = this.accessibilitiesFacade.isLoadingCategoryDetails;
907
- selection = model(null, ...(ngDevMode ? [{ debugName: "selection" }] : []));
907
+ selection = model(null, ...(ngDevMode ? [{ debugName: "selection" }] : /* istanbul ignore next */ []));
908
908
  constructor() {
909
909
  effect(() => {
910
910
  const selectedLevels = this.categoryLevels();
@@ -956,10 +956,10 @@ class CategoryElements {
956
956
  : undefined,
957
957
  }));
958
958
  }
959
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: CategoryElements, deps: [], target: i0.ɵɵFactoryTarget.Component });
960
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.3", type: CategoryElements, isStandalone: true, selector: "mt-category-elements", inputs: { selectedCategoryId: { classPropertyName: "selectedCategoryId", publicName: "selectedCategoryId", isSignal: true, isRequired: true, transformFunction: null }, categoryLevels: { classPropertyName: "categoryLevels", publicName: "categoryLevels", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { categoryLevels: "categoryLevelsChange", selection: "selectionChange" }, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div class=\"p-4\">\r\n <mt-tree\r\n [value]=\"nodes()\"\r\n [(selection)]=\"selection\"\r\n selectionMode=\"checkbox\"\r\n [loading]=\"isLoadingTree() || isLoadingCategoryDetails()\"\r\n (action)=\"onTreeAction($event)\"\r\n [checkAllChildren]=\"true\"\r\n [virtualScroll]=\"true\"\r\n [virtualScrollItemSize]=\"56\"\r\n scrollHeight=\"400px\"\r\n />\r\n </div>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: Tree, selector: "mt-tree", inputs: ["value", "selection", "selectionMode", "nodeIcon", "propagateSelectionUp", "propagateSelectionDown", "checkAllChildren", "loading", "emptyMessage", "checkAllLabel", "filterPlaceholder", "dataKey", "filter", "filterMode", "virtualScroll", "virtualScrollItemSize", "scrollHeight", "styleClass", "style", "pInputs", "nodeActions", "nodeContextmenuActions", "contextMenuSelection"], outputs: ["selectionChange", "contextMenuSelectionChange", "action"] }] });
959
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: CategoryElements, deps: [], target: i0.ɵɵFactoryTarget.Component });
960
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.8", type: CategoryElements, isStandalone: true, selector: "mt-category-elements", inputs: { selectedCategoryId: { classPropertyName: "selectedCategoryId", publicName: "selectedCategoryId", isSignal: true, isRequired: true, transformFunction: null }, categoryLevels: { classPropertyName: "categoryLevels", publicName: "categoryLevels", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { categoryLevels: "categoryLevelsChange", selection: "selectionChange" }, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div class=\"p-4\">\r\n <mt-tree\r\n [value]=\"nodes()\"\r\n [(selection)]=\"selection\"\r\n selectionMode=\"checkbox\"\r\n [loading]=\"isLoadingTree() || isLoadingCategoryDetails()\"\r\n (action)=\"onTreeAction($event)\"\r\n [checkAllChildren]=\"true\"\r\n [virtualScroll]=\"true\"\r\n [virtualScrollItemSize]=\"56\"\r\n scrollHeight=\"400px\"\r\n />\r\n </div>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: Tree, selector: "mt-tree", inputs: ["value", "selection", "selectionMode", "nodeIcon", "propagateSelectionUp", "propagateSelectionDown", "checkAllChildren", "loading", "emptyMessage", "checkAllLabel", "filterPlaceholder", "dataKey", "filter", "filterMode", "virtualScroll", "virtualScrollItemSize", "scrollHeight", "styleClass", "style", "pInputs", "nodeActions", "nodeContextmenuActions", "contextMenuSelection"], outputs: ["selectionChange", "contextMenuSelectionChange", "action"] }] });
961
961
  }
962
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: CategoryElements, decorators: [{
962
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: CategoryElements, decorators: [{
963
963
  type: Component,
964
964
  args: [{ selector: 'mt-category-elements', standalone: true, imports: [CommonModule, TranslocoDirective, Tree], template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div class=\"p-4\">\r\n <mt-tree\r\n [value]=\"nodes()\"\r\n [(selection)]=\"selection\"\r\n selectionMode=\"checkbox\"\r\n [loading]=\"isLoadingTree() || isLoadingCategoryDetails()\"\r\n (action)=\"onTreeAction($event)\"\r\n [checkAllChildren]=\"true\"\r\n [virtualScroll]=\"true\"\r\n [virtualScrollItemSize]=\"56\"\r\n scrollHeight=\"400px\"\r\n />\r\n </div>\r\n</ng-container>\r\n" }]
965
965
  }], ctorParameters: () => [], propDecorators: { selectedCategoryId: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedCategoryId", required: true }] }], categoryLevels: [{ type: i0.Input, args: [{ isSignal: true, alias: "categoryLevels", required: false }] }, { type: i0.Output, args: ["categoryLevelsChange"] }], selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }, { type: i0.Output, args: ["selectionChange"] }] } });
@@ -980,24 +980,24 @@ class AccessibilitiesCategories {
980
980
  selectedCategory = this.accessibilitiesFacade.selectedCategory;
981
981
  isLoadingCategoryDetails = this.accessibilitiesFacade.isLoadingCategoryDetails;
982
982
  isUpdatingCategory = this.accessibilitiesFacade.isUpdatingCategory;
983
- selectedCategoryId = signal(null, ...(ngDevMode ? [{ debugName: "selectedCategoryId" }] : []));
984
- categoryDeletedId = signal(null, ...(ngDevMode ? [{ debugName: "categoryDeletedId" }] : []));
985
- categoryEditedId = signal(null, ...(ngDevMode ? [{ debugName: "categoryEditedId" }] : []));
986
- groupDeletedId = signal(null, ...(ngDevMode ? [{ debugName: "groupDeletedId" }] : []));
983
+ selectedCategoryId = signal(null, ...(ngDevMode ? [{ debugName: "selectedCategoryId" }] : /* istanbul ignore next */ []));
984
+ categoryDeletedId = signal(null, ...(ngDevMode ? [{ debugName: "categoryDeletedId" }] : /* istanbul ignore next */ []));
985
+ categoryEditedId = signal(null, ...(ngDevMode ? [{ debugName: "categoryEditedId" }] : /* istanbul ignore next */ []));
986
+ groupDeletedId = signal(null, ...(ngDevMode ? [{ debugName: "groupDeletedId" }] : /* istanbul ignore next */ []));
987
987
  groupSelectControl = new FormControl(null);
988
988
  availableGroups = computed(() => {
989
989
  const allGroups = this.groups();
990
990
  const selectedCategoryGroups = this.selectedCategory()?.groups || [];
991
991
  const selectedGroupIds = selectedCategoryGroups.map((g) => g.groupId);
992
992
  return allGroups.filter((group) => !selectedGroupIds.includes(group.id));
993
- }, ...(ngDevMode ? [{ debugName: "availableGroups" }] : []));
993
+ }, ...(ngDevMode ? [{ debugName: "availableGroups" }] : /* istanbul ignore next */ []));
994
994
  categoryGroups = computed(() => {
995
995
  return this.selectedCategory()?.groups || [];
996
- }, ...(ngDevMode ? [{ debugName: "categoryGroups" }] : []));
996
+ }, ...(ngDevMode ? [{ debugName: "categoryGroups" }] : /* istanbul ignore next */ []));
997
997
  categoryLevels = computed(() => {
998
998
  return this.selectedCategory()?.levels || [];
999
- }, ...(ngDevMode ? [{ debugName: "categoryLevels" }] : []));
1000
- selectedTab = signal('elements', ...(ngDevMode ? [{ debugName: "selectedTab" }] : []));
999
+ }, ...(ngDevMode ? [{ debugName: "categoryLevels" }] : /* istanbul ignore next */ []));
1000
+ selectedTab = signal('elements', ...(ngDevMode ? [{ debugName: "selectedTab" }] : /* istanbul ignore next */ []));
1001
1001
  tabsList = [
1002
1002
  {
1003
1003
  label: this.translocoService.translate('accessibilities.elements'),
@@ -1100,10 +1100,10 @@ class AccessibilitiesCategories {
1100
1100
  isCategorySelected(categoryId) {
1101
1101
  return this.selectedCategoryId() === categoryId;
1102
1102
  }
1103
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AccessibilitiesCategories, deps: [], target: i0.ɵɵFactoryTarget.Component });
1104
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: AccessibilitiesCategories, isStandalone: true, selector: "mt-accessibilities-categories", ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div\r\n class=\"mt-4 grid min-h-0 gap-4 xl:grid-cols-[minmax(18rem,20rem)_minmax(0,1fr)] xl:gap-7\"\r\n >\r\n <mt-card class=\"h-full min-h-0 max-[1279px]:h-auto\">\r\n <div class=\"flex h-full min-h-0 flex-col\">\r\n <ng-template #headless>\r\n <div\r\n class=\"flex items-center justify-between gap-3 border-b border-surface p-5\"\r\n >\r\n <h2 class=\"text-lg font-semibold m-0\">{{ t(\"categories\") }}</h2>\r\n </div>\r\n @if (isLoadingCategories()) {\r\n <div class=\"space-y-4 p-4\">\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"my-4 flex min-h-0 flex-col gap-3 overflow-auto pb-4 max-[1279px]:max-h-[40vh]\"\r\n >\r\n @for (category of categories(); track category.id) {\r\n <div\r\n class=\"mx-4 flex items-start gap-3 rounded-lg border-1 border-gray-300 p-3 transition-colors cursor-pointer\"\r\n [class.bg-primary-50]=\"isCategorySelected(category.id)\"\r\n [class.border-primary-400]=\"isCategorySelected(category.id)\"\r\n [style.--p-avatar-background]=\"\r\n isCategorySelected(category.id)\r\n ? 'var(--p-primary-color)'\r\n : 'var(--p-surface-100)'\r\n \"\r\n [style.--p-avatar-color]=\"\r\n isCategorySelected(category.id) ? '#ffffff' : ''\r\n \"\r\n (click)=\"onCategoryClick(category.id)\"\r\n >\r\n <mt-avatar\r\n class=\"shrink-0\"\r\n [icon]=\"'user.user-check-01'\"\r\n shape=\"square\"\r\n >\r\n </mt-avatar>\r\n <div class=\"flex-1 min-w-0\">\r\n <div class=\"font-medium truncate\">\r\n {{ category.name?.display }}\r\n </div>\r\n </div>\r\n <div class=\"flex shrink-0 self-start\">\r\n <mt-button\r\n variant=\"text\"\r\n size=\"small\"\r\n icon=\"editor.pencil-01\"\r\n severity=\"primary\"\r\n (click)=\"onEditCategory($event, category)\"\r\n [loading]=\"\r\n isUpdatingCategory() &&\r\n categoryEditedId() === category.id\r\n \"\r\n >\r\n </mt-button>\r\n <mt-button\r\n variant=\"text\"\r\n size=\"small\"\r\n icon=\"general.trash-01\"\r\n severity=\"danger\"\r\n (click)=\"onDeleteCategory($event, category.id)\"\r\n [loading]=\"\r\n isDeletingCategory() &&\r\n categoryDeletedId() === category.id\r\n \"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-12 text-muted-color\"\r\n >\r\n {{ \"no-data-found\" | transloco }}\r\n </div>\r\n }\r\n <div class=\"mx-4 mt-2\">\r\n <mt-button\r\n icon=\"general.plus\"\r\n (click)=\"onAddCategory()\"\r\n [label]=\"t('add-category')\"\r\n styleClass=\"w-full sm:w-auto\"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n }\r\n </ng-template>\r\n </div>\r\n </mt-card>\r\n <mt-card class=\"h-full min-h-0 max-[1279px]:h-auto\">\r\n <div class=\"flex h-full min-h-0 flex-col\">\r\n <ng-template #headless>\r\n <div class=\"p-5 mb-5 border-b border-surface\">\r\n <h2 class=\"text-lg font-semibold m-0\">\r\n {{ t(\"category-relations\") }}\r\n </h2>\r\n </div>\r\n\r\n <div class=\"mb-4 overflow-x-auto px-4 sm:px-5\">\r\n <mt-tabs\r\n class=\"min-w-max\"\r\n [(active)]=\"selectedTab\"\r\n [options]=\"tabsList\"\r\n size=\"small\"\r\n >\r\n </mt-tabs>\r\n </div>\r\n\r\n @if (selectedTab() === \"elements\") {\r\n <mt-category-elements\r\n [selectedCategoryId]=\"selectedCategoryId()\"\r\n [categoryLevels]=\"categoryLevels()\"\r\n />\r\n } @else if (selectedTab() === \"groups\") {\r\n <mt-category-groups\r\n [groupSelectControl]=\"groupSelectControl\"\r\n [availableGroups]=\"availableGroups()\"\r\n [categoryGroups]=\"categoryGroups()\"\r\n [selectedCategoryId]=\"selectedCategoryId()\"\r\n [isLoadingCategoryDetails]=\"isLoadingCategoryDetails()\"\r\n />\r\n }\r\n </ng-template>\r\n </div>\r\n </mt-card>\r\n </div>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: Avatar, selector: "mt-avatar", inputs: ["label", "icon", "image", "styleClass", "size", "shape", "badge", "badgeSize", "badgeSeverity"], outputs: ["onImageError"] }, { kind: "component", type: Card, selector: "mt-card", inputs: ["class", "title", "paddingless"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i1$1.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: Tabs, selector: "mt-tabs", inputs: ["options", "optionLabel", "optionValue", "active", "size", "fluid", "disabled"], outputs: ["activeChange", "onChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: CategoryGroups, selector: "mt-category-groups", inputs: ["groupSelectControl", "availableGroups", "categoryGroups", "selectedCategoryId", "isLoadingCategoryDetails"] }, { kind: "component", type: CategoryElements, selector: "mt-category-elements", inputs: ["selectedCategoryId", "categoryLevels", "selection"], outputs: ["categoryLevelsChange", "selectionChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
1103
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AccessibilitiesCategories, deps: [], target: i0.ɵɵFactoryTarget.Component });
1104
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: AccessibilitiesCategories, isStandalone: true, selector: "mt-accessibilities-categories", ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div\r\n class=\"mt-4 grid min-h-0 gap-4 xl:grid-cols-[minmax(18rem,20rem)_minmax(0,1fr)] xl:gap-7\"\r\n >\r\n <mt-card class=\"h-full min-h-0 max-[1279px]:h-auto\">\r\n <div class=\"flex h-full min-h-0 flex-col\">\r\n <ng-template #headless>\r\n <div\r\n class=\"flex items-center justify-between gap-3 border-b border-surface p-5\"\r\n >\r\n <h2 class=\"text-lg font-semibold m-0\">{{ t(\"categories\") }}</h2>\r\n </div>\r\n @if (isLoadingCategories()) {\r\n <div class=\"space-y-4 p-4\">\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"my-4 flex min-h-0 flex-col gap-3 overflow-auto pb-4 max-[1279px]:max-h-[40vh]\"\r\n >\r\n @for (category of categories(); track category.id) {\r\n <div\r\n class=\"mx-4 flex items-start gap-3 rounded-lg border-1 border-gray-300 p-3 transition-colors cursor-pointer\"\r\n [class.bg-primary-50]=\"isCategorySelected(category.id)\"\r\n [class.border-primary-400]=\"isCategorySelected(category.id)\"\r\n [style.--p-avatar-background]=\"\r\n isCategorySelected(category.id)\r\n ? 'var(--p-primary-color)'\r\n : 'var(--p-surface-100)'\r\n \"\r\n [style.--p-avatar-color]=\"\r\n isCategorySelected(category.id) ? '#ffffff' : ''\r\n \"\r\n (click)=\"onCategoryClick(category.id)\"\r\n >\r\n <mt-avatar\r\n class=\"shrink-0\"\r\n [icon]=\"'user.user-check-01'\"\r\n shape=\"square\"\r\n >\r\n </mt-avatar>\r\n <div class=\"flex-1 min-w-0\">\r\n <div class=\"font-medium truncate\">\r\n {{ category.name?.display }}\r\n </div>\r\n </div>\r\n <div class=\"flex shrink-0 self-start\">\r\n <mt-button\r\n variant=\"text\"\r\n size=\"small\"\r\n icon=\"editor.pencil-01\"\r\n severity=\"primary\"\r\n (click)=\"onEditCategory($event, category)\"\r\n [loading]=\"\r\n isUpdatingCategory() &&\r\n categoryEditedId() === category.id\r\n \"\r\n >\r\n </mt-button>\r\n <mt-button\r\n variant=\"text\"\r\n size=\"small\"\r\n icon=\"general.trash-01\"\r\n severity=\"danger\"\r\n (click)=\"onDeleteCategory($event, category.id)\"\r\n [loading]=\"\r\n isDeletingCategory() &&\r\n categoryDeletedId() === category.id\r\n \"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-12 text-muted-color\"\r\n >\r\n {{ \"no-data-found\" | transloco }}\r\n </div>\r\n }\r\n <div class=\"mx-4 mt-2\">\r\n <mt-button\r\n icon=\"general.plus\"\r\n (click)=\"onAddCategory()\"\r\n [label]=\"t('add-category')\"\r\n styleClass=\"w-full sm:w-auto\"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n }\r\n </ng-template>\r\n </div>\r\n </mt-card>\r\n <mt-card class=\"h-full min-h-0 max-[1279px]:h-auto\">\r\n <div class=\"flex h-full min-h-0 flex-col\">\r\n <ng-template #headless>\r\n <div class=\"p-5 mb-5 border-b border-surface\">\r\n <h2 class=\"text-lg font-semibold m-0\">\r\n {{ t(\"category-relations\") }}\r\n </h2>\r\n </div>\r\n\r\n <div class=\"mb-4 overflow-x-auto px-4 sm:px-5\">\r\n <mt-tabs\r\n class=\"min-w-max\"\r\n [(active)]=\"selectedTab\"\r\n [options]=\"tabsList\"\r\n size=\"small\"\r\n >\r\n </mt-tabs>\r\n </div>\r\n\r\n @if (selectedTab() === \"elements\") {\r\n <mt-category-elements\r\n [selectedCategoryId]=\"selectedCategoryId()\"\r\n [categoryLevels]=\"categoryLevels()\"\r\n />\r\n } @else if (selectedTab() === \"groups\") {\r\n <mt-category-groups\r\n [groupSelectControl]=\"groupSelectControl\"\r\n [availableGroups]=\"availableGroups()\"\r\n [categoryGroups]=\"categoryGroups()\"\r\n [selectedCategoryId]=\"selectedCategoryId()\"\r\n [isLoadingCategoryDetails]=\"isLoadingCategoryDetails()\"\r\n />\r\n }\r\n </ng-template>\r\n </div>\r\n </mt-card>\r\n </div>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: Avatar, selector: "mt-avatar", inputs: ["label", "icon", "image", "styleClass", "size", "shape", "badge", "badgeSize", "badgeSeverity"], outputs: ["onImageError"] }, { kind: "component", type: Card, selector: "mt-card", inputs: ["class", "title", "paddingless"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i1$1.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: Tabs, selector: "mt-tabs", inputs: ["options", "optionLabel", "optionValue", "active", "size", "fluid", "disabled"], outputs: ["activeChange", "onChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: CategoryGroups, selector: "mt-category-groups", inputs: ["groupSelectControl", "availableGroups", "categoryGroups", "selectedCategoryId", "isLoadingCategoryDetails"] }, { kind: "component", type: CategoryElements, selector: "mt-category-elements", inputs: ["selectedCategoryId", "categoryLevels", "selection"], outputs: ["categoryLevelsChange", "selectionChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
1105
1105
  }
1106
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AccessibilitiesCategories, decorators: [{
1106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: AccessibilitiesCategories, decorators: [{
1107
1107
  type: Component,
1108
1108
  args: [{ selector: 'mt-accessibilities-categories', standalone: true, imports: [
1109
1109
  CommonModule,
@@ -1 +1 @@
1
- {"version":3,"file":"masterteam-accessibilities.mjs","sources":["../../../../packages/masterteam/accessibilities/src/store/accessibilities/accessibilities.actions.ts","../../../../packages/masterteam/accessibilities/src/store/accessibilities/accessibilities.model.ts","../../../../packages/masterteam/accessibilities/src/store/accessibilities/accessibilities.state.ts","../../../../packages/masterteam/accessibilities/src/store/accessibilities/accessibilities.facade.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/accessibilities.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/accessibilities.html","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/accessibilities-list/accessibility-permissions-edit-modal/accessibility-permissions-edit-modal.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/accessibilities-list/accessibility-permissions-edit-modal/accessibility-permissions-edit-modal.html","../../../../packages/masterteam/accessibilities/src/store/index.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/accessibilities-list/accessibilities-list.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/accessibilities-list/accessibilities-list.html","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/add-category-modal/add-category-modal.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/add-category-modal/add-category-modal.html","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/category-groups/category-groups.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/category-groups/category-groups.html","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/category-elements/category-elements.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/category-elements/category-elements.html","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/categories.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/categories.html","../../../../packages/masterteam/accessibilities/src/masterteam-accessibilities.ts"],"sourcesContent":["import { Accessibility } from './accessibilities.model';\r\n\r\nexport class GetAccessibilities {\r\n static readonly type = '[Accessibilities] Get Accessibilities';\r\n}\r\n\r\nexport class GetCategories {\r\n static readonly type = '[Accessibilities] Get Categories';\r\n}\r\n\r\nexport class AddCategory {\r\n static readonly type = '[Accessibilities] Add Category';\r\n constructor(public payload: { title: { ar: string; en: string } }) {}\r\n}\r\n\r\nexport class UpdateCategory {\r\n static readonly type = '[Accessibilities] Update Category';\r\n constructor(\r\n public id: number,\r\n public payload: { title: { ar: string; en: string } },\r\n ) {}\r\n}\r\n\r\nexport class DeleteCategory {\r\n static readonly type = '[Accessibilities] Delete Category';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class GetCategoryDetails {\r\n static readonly type = '[Accessibilities] Get Category Details';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class UpdateAccessibility {\r\n static readonly type = '[Accessibilities] Update Accessibility';\r\n constructor(\r\n public id: string | number | undefined,\r\n public changes: Partial<Accessibility>,\r\n ) {}\r\n}\r\n\r\nexport class GetGroups {\r\n static readonly type = '[Accessibilities] Get Groups';\r\n}\r\n\r\nexport class UpdateAccessibilities {\r\n static readonly type = '[Accessibilities] Update Accessibilities';\r\n constructor(\r\n public payload: {\r\n Accessibilities: Array<{ AccessibilityId: number; Groups: number[] }>;\r\n },\r\n ) {}\r\n}\r\n\r\nexport class AddGroupsToCategory {\r\n static readonly type = '[Accessibilities] Add Groups To Category';\r\n constructor(\r\n public categoryId: number,\r\n public payload: { groupsIds: number[] },\r\n ) {}\r\n}\r\n\r\nexport class RemoveGroupFromCategory {\r\n static readonly type = '[Accessibilities] Remove Group From Category';\r\n constructor(\r\n public categoryId: number,\r\n public groupId: number,\r\n ) {}\r\n}\r\n\r\nexport class GetLevelsTree {\r\n static readonly type = '[Accessibilities] Get Levels Tree';\r\n}\r\n\r\nexport class UpdateLevelsTreeForCategory {\r\n static readonly type = '[Accessibilities] Update Levels Tree For Category';\r\n constructor(\r\n public categoryId: number,\r\n public payload: { levelDataIds: number[] },\r\n ) {}\r\n}\r\n","import { LoadingStateShape } from '../utils/state-helpers';\r\n\r\nexport interface CategoryLevelTreeNode {\r\n id: number;\r\n name: any;\r\n level?: Record<string, unknown>;\r\n children?: CategoryLevelTreeNode[];\r\n}\r\n\r\nexport interface Category {\r\n id: number;\r\n name: any;\r\n groups?: Group[];\r\n levels?: any[];\r\n}\r\n\r\nexport interface User {\r\n id: string;\r\n displayName: string;\r\n mobile: string;\r\n userName: string;\r\n email: string;\r\n photo: string;\r\n}\r\n\r\nexport interface GroupMember {\r\n user: User;\r\n}\r\n\r\nexport interface Group {\r\n id: number;\r\n groupId?: number;\r\n name: any;\r\n usersCount?: number;\r\n members?: GroupMember[];\r\n createdAt?: {\r\n displayValue: string;\r\n actualValue: string;\r\n };\r\n description?: string | null;\r\n}\r\n\r\nexport interface AccessibilitySetting {\r\n id: number;\r\n moduleKey: string;\r\n moduleName: any;\r\n category: string;\r\n name: any;\r\n enableMFACheck: boolean;\r\n createdAt: {\r\n displayValue: string;\r\n actualValue: string;\r\n };\r\n applicationId: number;\r\n groups: Group[];\r\n}\r\n\r\nexport interface Accessibility {\r\n category: string;\r\n name: any;\r\n groupsCount: number;\r\n settings: AccessibilitySetting[];\r\n}\r\n\r\nexport enum AccessibilityActionKey {\r\n GetAccessibilities = 'getAccessibilities',\r\n UpdateAccessibility = 'updateAccessibility',\r\n UpdateAccessibilities = 'updateAccessibilities',\r\n GetGroups = 'getGroups',\r\n GetCategories = 'getCategories',\r\n AddCategory = 'addCategory',\r\n UpdateCategory = 'updateCategory',\r\n DeleteCategory = 'deleteCategory',\r\n GetCategoryDetails = 'getCategoryDetails',\r\n AddGroupsToCategory = 'addGroupsToCategory',\r\n RemoveGroupFromCategory = 'removeGroupFromCategory',\r\n GetLevelsTree = 'getLevelsTree',\r\n UpdateLevelsTreeForCategory = 'updateLevelsTreeForCategory',\r\n}\r\n\r\nexport interface AccessibilitiesStateModel extends LoadingStateShape<AccessibilityActionKey> {\r\n accessibilities: Accessibility[];\r\n selectedAccessibility: Accessibility | null;\r\n groups: Group[];\r\n categories: Category[];\r\n selectedCategory: Category | null;\r\n levelsTree: CategoryLevelTreeNode[];\r\n}\r\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Response } from './api.model';\r\nimport { CrudStateBase, handleApiRequest } from '@masterteam/components';\r\nimport {\r\n GetAccessibilities,\r\n UpdateAccessibility,\r\n UpdateAccessibilities,\r\n GetGroups,\r\n GetCategories,\r\n AddCategory,\r\n UpdateCategory,\r\n DeleteCategory,\r\n GetCategoryDetails,\r\n AddGroupsToCategory,\r\n RemoveGroupFromCategory,\r\n GetLevelsTree,\r\n UpdateLevelsTreeForCategory,\r\n} from './accessibilities.actions';\r\nimport {\r\n Accessibility,\r\n Group,\r\n Category,\r\n CategoryLevelTreeNode,\r\n AccessibilityActionKey,\r\n AccessibilitiesStateModel,\r\n} from './accessibilities.model';\r\n\r\n@State<AccessibilitiesStateModel>({\r\n name: 'accessibilities',\r\n defaults: {\r\n accessibilities: [],\r\n selectedAccessibility: null,\r\n groups: [],\r\n categories: [],\r\n selectedCategory: null,\r\n levelsTree: [],\r\n loadingActive: [],\r\n errors: {},\r\n },\r\n})\r\n@Injectable()\r\nexport class AccessibilitiesState extends CrudStateBase<\r\n Accessibility,\r\n AccessibilitiesStateModel,\r\n AccessibilityActionKey\r\n> {\r\n private http = inject(HttpClient);\r\n private baseUrl = 'identity/accessibilities';\r\n\r\n // ============================================================================\r\n // Selectors - Individual data selectors for fine-grained reactivity\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getAccessibilities(state: AccessibilitiesStateModel): Accessibility[] {\r\n return state.accessibilities;\r\n }\r\n\r\n @Selector()\r\n static getSelectedAccessibility(\r\n state: AccessibilitiesStateModel,\r\n ): Accessibility | null {\r\n return state.selectedAccessibility;\r\n }\r\n\r\n @Selector()\r\n static getGroups(state: AccessibilitiesStateModel): Group[] {\r\n return state.groups;\r\n }\r\n\r\n @Selector()\r\n static getCategories(state: AccessibilitiesStateModel): Category[] {\r\n return state.categories;\r\n }\r\n\r\n @Selector()\r\n static getSelectedCategory(\r\n state: AccessibilitiesStateModel,\r\n ): Category | null {\r\n return state.selectedCategory;\r\n }\r\n\r\n @Selector()\r\n static getLevelsTree(\r\n state: AccessibilitiesStateModel,\r\n ): CategoryLevelTreeNode[] {\r\n return state.levelsTree;\r\n }\r\n\r\n // ============================================================================\r\n // Loading/Error Slice Selectors - REQUIRED for optimal performance\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLoadingActive(state: AccessibilitiesStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(\r\n state: AccessibilitiesStateModel,\r\n ): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n // -------- CRUD actions using enum keys --------\r\n\r\n // ============================================================================\r\n // CRUD Actions\r\n // ============================================================================\r\n\r\n // Loading Data - use handleApiRequest\r\n @Action(GetAccessibilities)\r\n getAccessibilities(ctx: StateContext<AccessibilitiesStateModel>) {\r\n const req$ = this.http.get<Response<Accessibility[]>>(this.baseUrl);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.GetAccessibilities,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n accessibilities: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(UpdateAccessibility)\r\n updateAccessibility(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { id, changes }: UpdateAccessibility,\r\n ) {\r\n const req$ = this.http.put<Response<Accessibility>>(\r\n `${this.baseUrl}/${id}`,\r\n changes,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.UpdateAccessibility,\r\n request$: req$,\r\n onSuccess: (response, state) => {\r\n if (response.data) {\r\n const updatedAccessibilities = mergeAccessibilitiesByCategory(\r\n state.accessibilities,\r\n [response.data],\r\n );\r\n return {\r\n accessibilities: updatedAccessibilities,\r\n selectedAccessibility: response.data,\r\n };\r\n }\r\n return {};\r\n },\r\n errorMessage: 'Failed to update accessibility',\r\n });\r\n }\r\n\r\n @Action(UpdateAccessibilities)\r\n updateAccessibilities(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { payload }: UpdateAccessibilities,\r\n ) {\r\n const req$ = this.http.put<Response<Accessibility[]>>(\r\n `${this.baseUrl}/bulk/groups`,\r\n payload,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.UpdateAccessibilities,\r\n request$: req$,\r\n onSuccess: (res, state) => {\r\n if (!res.data || res.data.length === 0) {\r\n return {};\r\n }\r\n const updatedAccessibilities = mergeAccessibilitiesByCategory(\r\n state.accessibilities,\r\n res.data,\r\n );\r\n return {\r\n accessibilities: updatedAccessibilities,\r\n };\r\n },\r\n errorMessage: 'Failed to update accessibilities',\r\n });\r\n }\r\n\r\n @Action(GetGroups)\r\n getGroups(ctx: StateContext<AccessibilitiesStateModel>) {\r\n const req$ = this.http.get<Response<Group[]>>('identity/groups');\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.GetGroups,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n groups: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetCategories)\r\n getCategories(ctx: StateContext<AccessibilitiesStateModel>) {\r\n const req$ = this.http.get<Response<Category[]>>('categories');\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.GetCategories,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n categories: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(AddCategory)\r\n addCategory(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { payload }: AddCategory,\r\n ) {\r\n const req$ = this.http.post<Response<Category>>('categories', payload);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.AddCategory,\r\n request$: req$,\r\n onSuccess: (res, state) => ({\r\n categories: res.data\r\n ? [...state.categories, res.data]\r\n : state.categories,\r\n }),\r\n errorMessage: 'Failed to add category',\r\n });\r\n }\r\n\r\n @Action(UpdateCategory)\r\n updateCategory(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { id, payload }: UpdateCategory,\r\n ) {\r\n const req$ = this.http.put<Response<Category>>(`categories/${id}`, payload);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.UpdateCategory,\r\n request$: req$,\r\n onSuccess: (res, state) => {\r\n if (res.data) {\r\n const updatedCategories = state.categories.map((category) =>\r\n category.id === id ? res.data! : category,\r\n );\r\n return {\r\n categories: updatedCategories,\r\n selectedCategory:\r\n state.selectedCategory?.id === id\r\n ? res.data\r\n : state.selectedCategory,\r\n };\r\n }\r\n return {};\r\n },\r\n errorMessage: 'Failed to update category',\r\n });\r\n }\r\n\r\n @Action(DeleteCategory)\r\n deleteCategory(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { id }: DeleteCategory,\r\n ) {\r\n const req$ = this.http.delete<Response<void>>(`categories/${id}`);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.DeleteCategory,\r\n request$: req$,\r\n onSuccess: (_res, state) => ({\r\n categories: state.categories.filter((category) => category.id !== id),\r\n selectedCategory:\r\n state.selectedCategory?.id === id ? null : state.selectedCategory,\r\n }),\r\n errorMessage: 'Failed to delete category',\r\n });\r\n }\r\n\r\n @Action(GetCategoryDetails)\r\n getCategoryDetails(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { id }: GetCategoryDetails,\r\n ) {\r\n const req$ = this.http.get<Response<Category>>(`categories/${id}`);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.GetCategoryDetails,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n selectedCategory: response.data ?? null,\r\n }),\r\n });\r\n }\r\n\r\n @Action(AddGroupsToCategory)\r\n addGroupsToCategory(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { categoryId, payload }: AddGroupsToCategory,\r\n ) {\r\n const req$ = this.http.post<Response<void>>(\r\n `categories/${categoryId}/mapGroups`,\r\n payload,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.AddGroupsToCategory,\r\n request$: req$,\r\n onSuccess: (_res, _state) => {\r\n // Refresh category details to get updated groups\r\n ctx.dispatch(new GetCategoryDetails(categoryId));\r\n return {};\r\n },\r\n errorMessage: 'Failed to add groups to category',\r\n });\r\n }\r\n\r\n @Action(RemoveGroupFromCategory)\r\n removeGroupFromCategory(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { categoryId, groupId }: RemoveGroupFromCategory,\r\n ) {\r\n const state = ctx.getState();\r\n const currentGroups = state.selectedCategory?.groups ?? [];\r\n const updatedGroupsIds = currentGroups\r\n .filter((group) => group.groupId !== groupId)\r\n .map((group) => group.groupId);\r\n\r\n const req$ = this.http.post<Response<void>>(\r\n `categories/${categoryId}/mapGroups`,\r\n { groupsIds: updatedGroupsIds },\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.RemoveGroupFromCategory,\r\n request$: req$,\r\n onSuccess: (_res, _state) => {\r\n // Refresh category details to get updated groups\r\n ctx.dispatch(new GetCategoryDetails(categoryId));\r\n return {};\r\n },\r\n errorMessage: 'Failed to remove group from category',\r\n });\r\n }\r\n\r\n @Action(GetLevelsTree)\r\n getLevelsTree(ctx: StateContext<AccessibilitiesStateModel>) {\r\n const req$ = this.http.get<Response<CategoryLevelTreeNode[]>>(\r\n 'Categories/levels-tree',\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.GetLevelsTree,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n levelsTree: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(UpdateLevelsTreeForCategory)\r\n updateLevelsTreeForCategory(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { categoryId, payload }: UpdateLevelsTreeForCategory,\r\n ) {\r\n const req$ = this.http.post<Response<void>>(\r\n `categories/${categoryId}/mapLevels`,\r\n payload,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.UpdateLevelsTreeForCategory,\r\n request$: req$,\r\n onSuccess: (_res, _state) => ({}),\r\n errorMessage: 'Failed to update levels tree for category',\r\n });\r\n }\r\n}\r\n\r\nfunction mergeAccessibilitiesByCategory(\r\n current: Accessibility[],\r\n updates: Accessibility[],\r\n): Accessibility[] {\r\n const updatesByCategory = new Map(\r\n updates.map((accessibility) => [accessibility.category, accessibility]),\r\n );\r\n\r\n return current.map(\r\n (accessibility) =>\r\n updatesByCategory.get(accessibility.category) ?? accessibility,\r\n );\r\n}\r\n","import { AccessibilitiesState } from './accessibilities.state';\r\nimport { Injectable, computed, inject } from '@angular/core';\r\nimport { Store, select } from '@ngxs/store';\r\nimport {\r\n GetAccessibilities,\r\n UpdateAccessibility,\r\n UpdateAccessibilities,\r\n GetGroups,\r\n GetCategories,\r\n AddCategory,\r\n UpdateCategory,\r\n DeleteCategory,\r\n GetCategoryDetails,\r\n AddGroupsToCategory,\r\n RemoveGroupFromCategory,\r\n GetLevelsTree,\r\n UpdateLevelsTreeForCategory,\r\n} from './accessibilities.actions';\r\nimport { Accessibility, AccessibilityActionKey } from './accessibilities.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AccessibilitiesFacade {\r\n private readonly store = inject(Store);\r\n\r\n // ============================================================================\r\n // Data Selectors - Memoized by NGXS (fine-grained reactivity)\r\n // ============================================================================\r\n readonly accessibilities = select(AccessibilitiesState.getAccessibilities);\r\n readonly selectedAccessibility = select(\r\n AccessibilitiesState.getSelectedAccessibility,\r\n );\r\n readonly groups = select(AccessibilitiesState.getGroups);\r\n readonly categories = select(AccessibilitiesState.getCategories);\r\n readonly selectedCategory = select(AccessibilitiesState.getSelectedCategory);\r\n readonly levelsTree = select(AccessibilitiesState.getLevelsTree);\r\n\r\n // ============================================================================\r\n // Loading/Error Slices - Memoized by NGXS\r\n // ============================================================================\r\n private readonly loadingActive = select(\r\n AccessibilitiesState.getLoadingActive,\r\n );\r\n private readonly errors = select(AccessibilitiesState.getErrors);\r\n\r\n // ============================================================================\r\n // Loading Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly isLoadingAccessibilities = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.GetAccessibilities),\r\n );\r\n readonly isUpdatingAccessibility = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.UpdateAccessibility),\r\n );\r\n readonly isUpdatingAccessibilities = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.UpdateAccessibilities),\r\n );\r\n readonly isLoadingGroups = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.GetGroups),\r\n );\r\n readonly isLoadingCategories = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.GetCategories),\r\n );\r\n readonly isAddingCategory = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.AddCategory),\r\n );\r\n readonly isUpdatingCategory = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.UpdateCategory),\r\n );\r\n readonly isDeletingCategory = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.DeleteCategory),\r\n );\r\n readonly isLoadingCategoryDetails = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.GetCategoryDetails),\r\n );\r\n readonly isAddingGroupsToCategory = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.AddGroupsToCategory),\r\n );\r\n readonly isRemovingGroupFromCategory = computed(() =>\r\n this.loadingActive().includes(\r\n AccessibilityActionKey.RemoveGroupFromCategory,\r\n ),\r\n );\r\n readonly isLoadingLevelsTree = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.GetLevelsTree),\r\n );\r\n readonly isUpdatingLevelsTreeForCategory = computed(() =>\r\n this.loadingActive().includes(\r\n AccessibilityActionKey.UpdateLevelsTreeForCategory,\r\n ),\r\n );\r\n\r\n // ============================================================================\r\n // Error Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly accessibilitiesError = computed(\r\n () => this.errors()[AccessibilityActionKey.GetAccessibilities] ?? null,\r\n );\r\n readonly updateAccessibilityError = computed(\r\n () => this.errors()[AccessibilityActionKey.UpdateAccessibility] ?? null,\r\n );\r\n readonly updateAccessibilitiesError = computed(\r\n () => this.errors()[AccessibilityActionKey.UpdateAccessibilities] ?? null,\r\n );\r\n readonly groupsError = computed(\r\n () => this.errors()[AccessibilityActionKey.GetGroups] ?? null,\r\n );\r\n readonly categoriesError = computed(\r\n () => this.errors()[AccessibilityActionKey.GetCategories] ?? null,\r\n );\r\n readonly addCategoryError = computed(\r\n () => this.errors()[AccessibilityActionKey.AddCategory] ?? null,\r\n );\r\n readonly updateCategoryError = computed(\r\n () => this.errors()[AccessibilityActionKey.UpdateCategory] ?? null,\r\n );\r\n readonly deleteCategoryError = computed(\r\n () => this.errors()[AccessibilityActionKey.DeleteCategory] ?? null,\r\n );\r\n readonly getCategoryDetailsError = computed(\r\n () => this.errors()[AccessibilityActionKey.GetCategoryDetails] ?? null,\r\n );\r\n readonly addGroupsToCategoryError = computed(\r\n () => this.errors()[AccessibilityActionKey.AddGroupsToCategory] ?? null,\r\n );\r\n readonly removeGroupFromCategoryError = computed(\r\n () => this.errors()[AccessibilityActionKey.RemoveGroupFromCategory] ?? null,\r\n );\r\n readonly getLevelsTreeError = computed(\r\n () => this.errors()[AccessibilityActionKey.GetLevelsTree] ?? null,\r\n );\r\n readonly updateLevelsTreeForCategoryError = computed(\r\n () =>\r\n this.errors()[AccessibilityActionKey.UpdateLevelsTreeForCategory] ?? null,\r\n );\r\n\r\n // ============================================================================\r\n // Derived Data - Computed from data selectors\r\n // ============================================================================\r\n readonly categoriesCount = computed(() => this.categories().length);\r\n readonly hasCategories = computed(() => this.categories().length > 0);\r\n readonly groupsCount = computed(() => this.groups().length);\r\n readonly hasGroups = computed(() => this.groups().length > 0);\r\n\r\n // ============================================================================\r\n // Action Dispatchers\r\n // ============================================================================\r\n\r\n // Actions\r\n getAccessibilities() {\r\n return this.store.dispatch(new GetAccessibilities());\r\n }\r\n\r\n updateAccessibility(\r\n key: string | undefined,\r\n changes: Partial<Accessibility>,\r\n ) {\r\n return this.store.dispatch(new UpdateAccessibility(key as any, changes));\r\n }\r\n\r\n getGroups() {\r\n return this.store.dispatch(new GetGroups());\r\n }\r\n\r\n updateAccessibilities(payload: {\r\n Accessibilities: Array<{ AccessibilityId: number; Groups: number[] }>;\r\n }) {\r\n return this.store.dispatch(new UpdateAccessibilities(payload));\r\n }\r\n\r\n getCategories() {\r\n return this.store.dispatch(new GetCategories());\r\n }\r\n\r\n addCategory(payload: { title: { ar: string; en: string } }) {\r\n return this.store.dispatch(new AddCategory(payload));\r\n }\r\n\r\n updateCategory(id: number, payload: { title: { ar: string; en: string } }) {\r\n return this.store.dispatch(new UpdateCategory(id, payload));\r\n }\r\n\r\n deleteCategory(id: number) {\r\n return this.store.dispatch(new DeleteCategory(id));\r\n }\r\n\r\n getCategoryDetails(id: number) {\r\n return this.store.dispatch(new GetCategoryDetails(id));\r\n }\r\n\r\n addGroupsToCategory(categoryId: number, groupsIds: number[]) {\r\n return this.store.dispatch(\r\n new AddGroupsToCategory(categoryId, { groupsIds }),\r\n );\r\n }\r\n\r\n removeGroupFromCategory(categoryId: number, groupId: number) {\r\n return this.store.dispatch(\r\n new RemoveGroupFromCategory(categoryId, groupId),\r\n );\r\n }\r\n\r\n getLevelsTree() {\r\n return this.store.dispatch(new GetLevelsTree());\r\n }\r\n\r\n updateLevelsTreeForCategory(categoryId: number, keys: number[]) {\r\n return this.store.dispatch(\r\n new UpdateLevelsTreeForCategory(categoryId, { levelDataIds: keys }),\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, inject, OnInit, signal } from '@angular/core';\r\nimport { ActivatedRoute, Router, RouterOutlet } from '@angular/router';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Page } from '@masterteam/components/page';\r\nimport { PageHeaderTab } from '@masterteam/components/page-header';\r\nimport { AccessibilitiesFacade } from '../../store/accessibilities';\r\n\r\n@Component({\r\n selector: 'mt-accessibilities',\r\n styleUrl: './accessibilities.css',\r\n templateUrl: './accessibilities.html',\r\n standalone: true,\r\n imports: [CommonModule, Page, RouterOutlet, TranslocoDirective],\r\n})\r\nexport default class Accessibilities implements OnInit {\r\n private readonly facade = inject(AccessibilitiesFacade);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly router = inject(Router);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n selectedTab = signal<string>('accessibilities');\r\n\r\n tabsList: PageHeaderTab[] = [\r\n {\r\n label: this.translocoService.translate('accessibilities.accessibilities'),\r\n value: 'accessibilities',\r\n },\r\n {\r\n label: this.translocoService.translate('accessibilities.categories'),\r\n value: 'categories',\r\n },\r\n ];\r\n\r\n breadcrumbItems: { label?: string; routerLink?: string; icon?: string }[] = [\r\n {\r\n label: '',\r\n icon: 'general.home-line',\r\n routerLink: '/control-panel/workspaces',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'product-settings.product-settings',\r\n ),\r\n routerLink: '/control-panel/product-settings',\r\n },\r\n {\r\n label: this.translocoService.translate('accessibilities.accessibilities'),\r\n },\r\n ];\r\n\r\n ngOnInit() {\r\n const selectedTab = this.route.snapshot.firstChild?.data['componentType'];\r\n this.selectedTab.set(selectedTab || 'accessibilities');\r\n this.facade.getAccessibilities();\r\n this.facade.getGroups();\r\n this.facade.getCategories();\r\n this.facade.getLevelsTree();\r\n }\r\n\r\n goBack() {\r\n this.router.navigate(['control-panel/product-settings']);\r\n }\r\n\r\n onTabChange(event: any) {\r\n if (event == 'accessibilities') {\r\n this.router.navigate(['accessibilities-list'], {\r\n relativeTo: this.route,\r\n });\r\n } else if (event == 'categories') {\r\n this.router.navigate(['categories'], { relativeTo: this.route });\r\n }\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <mt-page\r\n [title]=\"t('accessibilities')\"\r\n [avatarIcon]=\"'security.passcode-lock'\"\r\n [contentClass]=\"'max-[1025px]:p-4 max-[640px]:p-3'\"\r\n [avatarStyle]=\"{\r\n '--p-avatar-background': 'var(--p-pink-50)',\r\n '--p-avatar-color': 'var(--p-pink-700)',\r\n }\"\r\n [tabs]=\"tabsList\"\r\n [activeTab]=\"selectedTab()\"\r\n (tabChange)=\"onTabChange($event)\"\r\n (backButtonClick)=\"goBack()\"\r\n backButton\r\n >\r\n <router-outlet />\r\n </mt-page>\r\n</ng-container>\r\n","import { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n inject,\r\n input,\r\n computed,\r\n signal,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { ModalRef } from '@masterteam/components/dialog';\r\nimport { SelectField } from '@masterteam/components/select-field';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { ConfirmationService } from '@masterteam/components/confirmation';\r\nimport { TranslocoDirective, TranslocoPipe } from '@jsverse/transloco';\r\nimport {\r\n Accessibility,\r\n AccessibilitiesFacade,\r\n Group,\r\n} from '../../../../../store/accessibilities';\r\n\r\n@Component({\r\n selector: 'mt-accessibility-permissions-edit-modal',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n SelectField,\r\n Avatar,\r\n FormsModule,\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n ],\r\n templateUrl: './accessibility-permissions-edit-modal.html',\r\n styleUrl: './accessibility-permissions-edit-modal.css',\r\n})\r\nexport class AccessibilityPermissionsEditModal implements OnInit {\r\n modal = inject(ModalService);\r\n ref: ModalRef = inject(ModalRef);\r\n private readonly accessibilitiesFacade = inject(AccessibilitiesFacade);\r\n private readonly confirmationService = inject(ConfirmationService);\r\n accessibility = input<Accessibility | null>(null);\r\n groups = this.accessibilitiesFacade.groups;\r\n saveLoading = this.accessibilitiesFacade.isUpdatingAccessibilities;\r\n selectedGroups = signal<{ [settingId: number]: number[] }>({});\r\n getAvailableGroupsOptions = computed(() => (settingId: number) => {\r\n const selectedIds = this.selectedGroups()[settingId] || [];\r\n return this.groups()\r\n .filter((group: Group) => !selectedIds.includes(group.id))\r\n .map((group: Group) => ({\r\n label: group.name?.display,\r\n value: group.id,\r\n }));\r\n });\r\n\r\n ngOnInit(): void {\r\n const initialSelectedGroups: { [settingId: number]: number[] } = {};\r\n this.accessibility()?.settings?.forEach((setting) => {\r\n initialSelectedGroups[setting.id] = setting.groups.map((g: any) => g.id);\r\n });\r\n this.selectedGroups.set(initialSelectedGroups);\r\n }\r\n onClose() {\r\n this.ref.close();\r\n }\r\n\r\n onSave() {\r\n const selectedGroups = this.selectedGroups();\r\n const permissions = this.accessibility()?.settings || [];\r\n const accessibilitiesData = permissions.map((setting) => ({\r\n AccessibilityId: setting.id,\r\n Groups: selectedGroups[setting.id] || [],\r\n }));\r\n\r\n const payload = {\r\n Accessibilities: accessibilitiesData,\r\n };\r\n\r\n this.accessibilitiesFacade.updateAccessibilities(payload).subscribe({\r\n next: () => {\r\n this.ref.close();\r\n },\r\n error: (error: any) => {\r\n console.error('Failed to save accessibility permissions:', error);\r\n },\r\n });\r\n }\r\n\r\n onGroupSelectionChange(settingId: number, selectedGroupIds: number[]): void {\r\n this.selectedGroups.update((current) => ({\r\n ...current,\r\n [settingId]: selectedGroupIds,\r\n }));\r\n }\r\n\r\n onGroupSelect(settingId: number, groupId: number): void {\r\n if (!groupId) return;\r\n\r\n const currentGroups = this.selectedGroups()[settingId] || [];\r\n if (!currentGroups.includes(groupId)) {\r\n const updatedGroups = [...currentGroups, groupId];\r\n this.onGroupSelectionChange(settingId, updatedGroups);\r\n }\r\n }\r\n\r\n getSelectedGroupsForSetting(settingId: number): Group[] {\r\n const selectedIds = this.selectedGroups()[settingId] || [];\r\n return this.groups().filter((group: Group) =>\r\n selectedIds.includes(group.id),\r\n );\r\n }\r\n\r\n removeGroupFromSetting(\r\n event: MouseEvent,\r\n settingId: number,\r\n groupId: number,\r\n ): void {\r\n event.stopPropagation();\r\n\r\n this.confirmationService.confirmDelete({\r\n event: event,\r\n type: 'popup',\r\n accept: () => {\r\n const currentGroups = this.selectedGroups()[settingId] || [];\r\n const updatedGroups = currentGroups.filter((id) => id !== groupId);\r\n this.onGroupSelectionChange(settingId, updatedGroups);\r\n },\r\n reject: () => {},\r\n });\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div\r\n [class]=\"\r\n 'accessibility-permissions-modal-content flex min-w-0 flex-col gap-4 overflow-x-hidden p-4 max-[640px]:p-3 ' +\r\n modal.contentClass\r\n \"\r\n >\r\n @if (accessibility()) {\r\n <div class=\"space-y-4\">\r\n @for (setting of this.accessibility()?.settings; track setting.id) {\r\n <div class=\"border border-gray-200 rounded-lg overflow-hidden\">\r\n <div class=\"bg-sky-50 px-4 py-3 border-b border-gray-200\">\r\n <h4 class=\"font-medium text-gray-900\">\r\n {{ setting.name?.display }}\r\n </h4>\r\n </div>\r\n\r\n <div class=\"p-4\">\r\n <div class=\"mb-3\">\r\n <mt-select-field\r\n [placeholder]=\"t('accessibilities.selectGroupsPlaceholder')\"\r\n [options]=\"getAvailableGroupsOptions()(setting.id)\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [ngModel]=\"null\"\r\n (ngModelChange)=\"onGroupSelect(setting.id, $event)\"\r\n class=\"w-full\"\r\n >\r\n </mt-select-field>\r\n </div>\r\n\r\n @if (getSelectedGroupsForSetting(setting.id).length > 0) {\r\n <div class=\"mt-4\">\r\n <h5 class=\"text-sm font-medium text-gray-700 mb-2\">\r\n {{ t(\"accessibilities.selectedGroups\") }}\r\n </h5>\r\n <div class=\"space-y-2\">\r\n @for (\r\n group of getSelectedGroupsForSetting(setting.id);\r\n track group.id\r\n ) {\r\n <div\r\n class=\"flex flex-col gap-3 rounded-lg border border-gray-100 bg-gray-50 px-3 py-2 sm:flex-row sm:items-center sm:justify-between\"\r\n >\r\n <div class=\"flex min-w-0 items-center gap-2\">\r\n <mt-avatar\r\n class=\"shrink-0\"\r\n [icon]=\"'user.users-01'\"\r\n shape=\"square\"\r\n >\r\n </mt-avatar>\r\n <span\r\n class=\"min-w-0 break-words text-sm font-medium\"\r\n >{{ group.name?.display }}</span\r\n >\r\n </div>\r\n <mt-button\r\n variant=\"text\"\r\n size=\"small\"\r\n icon=\"general.trash-01\"\r\n severity=\"danger\"\r\n styleClass=\"w-full sm:w-auto\"\r\n (click)=\"\r\n removeGroupFromSetting($event, setting.id, group.id)\r\n \"\r\n title=\"Remove Group\"\r\n >\r\n </mt-button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @empty {\r\n <div class=\"text-center text-gray-500 py-8 bg-gray-50 rounded-lg\">\r\n <p>{{ \"no-data-found\" | transloco }}</p>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'accessibility-permissions-modal-footer ' +\r\n modal.footerClass +\r\n ' flex-col gap-2 sm:flex-row sm:items-center sm:justify-end'\r\n \"\r\n >\r\n <mt-button\r\n [label]=\"t('save')\"\r\n (click)=\"onSave()\"\r\n [loading]=\"saveLoading()\"\r\n severity=\"primary\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n <mt-button\r\n [label]=\"t('cancel')\"\r\n severity=\"secondary\"\r\n [disabled]=\"saveLoading()\"\r\n (click)=\"onClose()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n </div>\r\n</ng-container>\r\n","// store/index.ts\r\nexport * from './accessibilities';\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, inject, signal } from '@angular/core';\r\nimport {\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n TranslocoService,\r\n} from '@jsverse/transloco';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { Card } from '@masterteam/components/card';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { ConfirmationService } from '@masterteam/components/confirmation';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { AccessibilityPermissionsEditModal } from './accessibility-permissions-edit-modal/accessibility-permissions-edit-modal';\r\nimport { AccessibilitiesFacade } from '../../../../store';\r\nimport { Accessibility } from '../../../../store/accessibilities';\r\n\r\n@Component({\r\n selector: 'mt-accessibilities-list',\r\n templateUrl: './accessibilities-list.html',\r\n styleUrl: './accessibilities-list.css',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Avatar,\r\n Card,\r\n Button,\r\n SkeletonModule,\r\n TranslocoPipe,\r\n ],\r\n})\r\nexport default class AccessibilitiesList {\r\n private readonly modal: ModalService = inject(ModalService);\r\n private readonly accessibilitiesFacade = inject(AccessibilitiesFacade);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly confirmationService = inject(ConfirmationService);\r\n\r\n accessibilities = this.accessibilitiesFacade.accessibilities;\r\n isLoading = this.accessibilitiesFacade.isLoadingAccessibilities;\r\n itemDeletedId = signal<string | null>(null);\r\n\r\n openPermissionsModal(accessibility?: Accessibility): void {\r\n this.modal.openModal(AccessibilityPermissionsEditModal, 'drawer', {\r\n header: this.translocoService.translate('accessibilities.setPermissions'),\r\n styleClass:\r\n '!absolute !shadow-none !w-full !max-w-full sm:!w-[30rem] xl:!w-[30vw]',\r\n height: '100%',\r\n position: 'end',\r\n appendTo: 'page-content',\r\n dismissible: true,\r\n inputValues: {\r\n accessibility: accessibility,\r\n },\r\n });\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <mt-card class=\"mx-auto my-5 w-full max-w-[78rem]\">\r\n <div class=\"flex min-h-0 flex-col\">\r\n <ng-template #headless>\r\n <div class=\"p-5 mb-5 border-b border-surface\">\r\n <h2 class=\"text-lg font-semibold m-0\">\r\n {{ t(\"system-accessibilities\") }}\r\n </h2>\r\n </div>\r\n @if (isLoading()) {\r\n <div class=\"space-y-4 p-4\">\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n </div>\r\n } @else {\r\n <div class=\"overflow-auto\">\r\n @for (\r\n accessibility of accessibilities();\r\n track accessibility.category\r\n ) {\r\n <div\r\n class=\"mx-4 mb-4 flex flex-col gap-3 rounded-lg border-1 border-surface p-3 sm:mx-5 sm:flex-row sm:items-center sm:justify-between\"\r\n >\r\n <div class=\"flex min-w-0 items-start gap-3\">\r\n <mt-avatar\r\n class=\"shrink-0\"\r\n [icon]=\"'security.lock-unlocked-01'\"\r\n shape=\"square\"\r\n size=\"normal\"\r\n [style.--p-avatar-background]=\"\r\n 'var(--p-' + 'surface' + '-100)'\r\n \"\r\n [style.--p-avatar-color]=\"'var(--p-' + 'primary' + '-600)'\"\r\n >\r\n </mt-avatar>\r\n <div class=\"min-w-0\">\r\n <div class=\"break-words font-semibold\">\r\n {{ accessibility.name?.display }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex flex-wrap items-center gap-3 sm:justify-end\">\r\n <div\r\n class=\"rounded-lg border-1 border-surface px-3 py-1 text-sm font-semibold\"\r\n >\r\n {{ accessibility.groupsCount }} {{ t(\"groups\") }}\r\n </div>\r\n <div class=\"border-surface px-1 sm:border-s-1\">\r\n <mt-button\r\n [text]=\"true\"\r\n icon=\"security.lock-unlocked-01\"\r\n severity=\"primary\"\r\n (click)=\"openPermissionsModal(accessibility)\"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"mt-20 flex items-center justify-center px-4 text-center text-muted-color\"\r\n >\r\n {{ \"no-data-found\" | transloco }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ng-template>\r\n </div>\r\n </mt-card>\r\n</ng-container>\r\n","import {\r\n Component,\r\n inject,\r\n Signal,\r\n linkedSignal,\r\n input,\r\n effect,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { AccessibilitiesFacade } from '../../../../../store/accessibilities';\r\nimport { Category } from '../../../../../store/accessibilities';\r\n\r\nimport { Button } from '@masterteam/components/button';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig, ValidatorConfig } from '@masterteam/components';\r\n\r\nimport { ModalRef } from '@masterteam/components/dialog';\r\nimport {\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n TranslocoService,\r\n} from '@jsverse/transloco';\r\nimport { ModalService } from '@masterteam/components/modal';\r\n\r\n@Component({\r\n selector: 'mt-add-category-modal',\r\n templateUrl: './add-category-modal.html',\r\n styleUrls: ['./add-category-modal.css'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n SkeletonModule,\r\n DynamicForm,\r\n ReactiveFormsModule,\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n ],\r\n})\r\nexport default class AddCategoryModal {\r\n modal = inject(ModalService);\r\n ref: ModalRef = inject(ModalRef);\r\n private readonly facade = inject(AccessibilitiesFacade);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n // Input for edit mode - receives category with rawName\r\n category = input<Category | null>(null);\r\n\r\n categoryFormControl: any = new FormControl(null);\r\n\r\n dynamicFormConfig = linkedSignal<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: '',\r\n label: '',\r\n type: 'header',\r\n order: 1,\r\n fields: [\r\n {\r\n key: 'name.en',\r\n label: this.translocoService.translate(\r\n 'accessibilities.category-title-en',\r\n ),\r\n placeholder: this.translocoService.translate(\r\n 'accessibilities.category-title-en',\r\n ),\r\n validators: [ValidatorConfig.required()],\r\n order: 1,\r\n },\r\n {\r\n key: 'name.ar',\r\n label: this.translocoService.translate(\r\n 'accessibilities.category-title-ar',\r\n ),\r\n placeholder: this.translocoService.translate(\r\n 'accessibilities.category-title-ar',\r\n ),\r\n validators: [ValidatorConfig.required()],\r\n order: 1,\r\n },\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n isAddingCategory: Signal<boolean> = this.facade.isAddingCategory;\r\n isUpdatingCategory: Signal<boolean> = this.facade.isUpdatingCategory;\r\n\r\n constructor() {\r\n // Initialize form with category data if in edit mode\r\n effect(() => {\r\n const cat = this.category();\r\n if (cat?.name) {\r\n this.categoryFormControl.patchValue({\r\n name: {\r\n en: cat.name.en,\r\n ar: cat.name.ar,\r\n },\r\n });\r\n }\r\n });\r\n }\r\n\r\n onSubmit() {\r\n if (this.categoryFormControl.invalid) return;\r\n\r\n const formValue = this.categoryFormControl.getRawValue();\r\n const cat = this.category();\r\n\r\n // Check if we're in edit mode\r\n if (cat?.id) {\r\n this.facade.updateCategory(cat.id, formValue).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n } else {\r\n this.facade.addCategory(formValue).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n }\r\n }\r\n\r\n onCancel() {\r\n this.ref.close(false);\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div\r\n [class]=\"\r\n 'add-category-modal-content flex min-w-0 flex-col gap-3 overflow-x-hidden p-4 max-[640px]:p-3 ' +\r\n modal.contentClass\r\n \"\r\n >\r\n <mt-dynamic-form\r\n [formConfig]=\"dynamicFormConfig()\"\r\n [formControl]=\"categoryFormControl\"\r\n />\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'add-category-modal-footer ' +\r\n modal.footerClass +\r\n ' flex-col gap-2 sm:flex-row sm:items-center sm:justify-end'\r\n \"\r\n >\r\n <mt-button\r\n variant=\"outlined\"\r\n [label]=\"t('cancel')\"\r\n (click)=\"onCancel()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n\r\n <mt-button\r\n [label]=\"'add' | transloco\"\r\n (click)=\"onSubmit()\"\r\n [loading]=\"isAddingCategory() || isUpdatingCategory()\"\r\n [disabled]=\"!this.categoryFormControl.valid\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, inject, input, signal } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslocoDirective, TranslocoPipe } from '@jsverse/transloco';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { SelectField } from '@masterteam/components/select-field';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { ConfirmationService } from '@masterteam/components/confirmation';\r\nimport { AccessibilitiesFacade } from '../../../../../store/accessibilities';\r\n\r\n@Component({\r\n selector: 'mt-category-groups',\r\n templateUrl: './category-groups.html',\r\n styleUrl: './category-groups.css',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n Button,\r\n SelectField,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SkeletonModule,\r\n ],\r\n})\r\nexport default class CategoryGroups {\r\n private readonly accessibilitiesFacade = inject(AccessibilitiesFacade);\r\n private readonly confirmationService = inject(ConfirmationService);\r\n\r\n groupSelectControl = input.required<FormControl<number | null>>();\r\n availableGroups = input.required<any[]>();\r\n categoryGroups = input.required<any[]>();\r\n selectedCategoryId = input.required<number | null>();\r\n isLoadingCategoryDetails = input.required<boolean>();\r\n isAddingGroupsToCategory =\r\n this.accessibilitiesFacade.isAddingGroupsToCategory;\r\n isRemovingGroupFromCategory =\r\n this.accessibilitiesFacade.isRemovingGroupFromCategory;\r\n groupDeletedId = signal<number | null>(null);\r\n\r\n onDeleteGroup(event: MouseEvent, groupId: any) {\r\n event.stopPropagation();\r\n const categoryId = this.selectedCategoryId();\r\n if (!categoryId) return;\r\n\r\n this.confirmationService.confirmDelete({\r\n event: event,\r\n type: 'popup',\r\n accept: () => {\r\n this.groupDeletedId.set(groupId);\r\n this.accessibilitiesFacade\r\n .removeGroupFromCategory(categoryId, groupId)\r\n .subscribe({\r\n complete: () => this.groupDeletedId.set(null),\r\n error: () => this.groupDeletedId.set(null),\r\n });\r\n },\r\n reject: () => {},\r\n });\r\n }\r\n\r\n onAddGroupToCategory() {\r\n const selectedGroupId = this.groupSelectControl().value;\r\n const categoryId = this.selectedCategoryId();\r\n\r\n if (selectedGroupId && categoryId) {\r\n const currentGroups = this.categoryGroups();\r\n const currentGroupIds = currentGroups.map((g: any) => g.groupId);\r\n const updatedGroupIds: any = [...currentGroupIds, selectedGroupId];\r\n\r\n this.accessibilitiesFacade\r\n .addGroupsToCategory(categoryId, updatedGroupIds)\r\n .subscribe(() => {\r\n this.groupSelectControl().setValue(null);\r\n });\r\n }\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div class=\"p-4\">\r\n <!-- Group Selection Section -->\r\n <div class=\"flex flex-col gap-3 sm:flex-row sm:items-end\">\r\n <div class=\"w-full sm:w-1/2\">\r\n <mt-select-field\r\n [formControl]=\"groupSelectControl()\"\r\n [label]=\"t('groups')\"\r\n [options]=\"availableGroups()\"\r\n optionLabel=\"name.display\"\r\n optionValue=\"id\"\r\n >\r\n </mt-select-field>\r\n </div>\r\n <mt-button\r\n icon=\"general.plus\"\r\n [label]=\"t('add-group')\"\r\n (click)=\"onAddGroupToCategory()\"\r\n [disabled]=\"!groupSelectControl().value || !selectedCategoryId()\"\r\n [loading]=\"isAddingGroupsToCategory()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n >\r\n </mt-button>\r\n </div>\r\n\r\n <div class=\"mt-6\">\r\n @if (isLoadingCategoryDetails()) {\r\n <div class=\"space-y-4 p-4\">\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n </div>\r\n } @else {\r\n @for (group of categoryGroups(); track group.id) {\r\n <div\r\n class=\"my-3 flex flex-col gap-3 rounded-lg border border-surface p-3 sm:flex-row sm:items-center\"\r\n >\r\n <div class=\"min-w-0 flex-1\">\r\n <div class=\"break-words text-base font-medium\">\r\n {{ group.name?.display }}\r\n </div>\r\n </div>\r\n <div class=\"text-sm text-muted-color\">\r\n {{ group.usersCount }} {{ t(\"users\") }}\r\n </div>\r\n <div\r\n class=\"flex items-center gap-0 self-end sm:ms-auto sm:self-auto\"\r\n >\r\n <!-- <mt-button variant=\"text\" size=\"large\" icon=\"user.users-03\">\r\n </mt-button> -->\r\n <mt-button\r\n variant=\"text\"\r\n size=\"large\"\r\n icon=\"general.trash-01\"\r\n severity=\"danger\"\r\n (click)=\"onDeleteGroup($event, group.groupId)\"\r\n [loading]=\"\r\n isRemovingGroupFromCategory() &&\r\n groupDeletedId() === group.groupId\r\n \"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div class=\"flex items-center justify-center h-20 text-muted-color\">\r\n {{ \"no-data-found\" | transloco }}\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</ng-container>\r\n","import { Tree, TreeNode, TreeActionEvent } from '@masterteam/components/tree';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n inject,\r\n effect,\r\n model,\r\n input,\r\n computed,\r\n} from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { AccessibilitiesFacade } from '../../../../../store/accessibilities';\r\n@Component({\r\n selector: 'mt-category-elements',\r\n templateUrl: './category-elements.html',\r\n styleUrl: './category-elements.css',\r\n standalone: true,\r\n imports: [CommonModule, TranslocoDirective, Tree],\r\n})\r\nexport default class CategoryElements {\r\n private readonly accessibilitiesFacade = inject(AccessibilitiesFacade);\r\n\r\n selectedCategoryId = input.required<number | null>();\r\n categoryLevels = model<any[]>();\r\n\r\n readonly nodes = computed(() => {\r\n const tree = this.accessibilitiesFacade.levelsTree();\r\n return this.transformTreeNodes(tree);\r\n });\r\n readonly isLoadingTree = this.accessibilitiesFacade.isLoadingLevelsTree;\r\n readonly isLoadingCategoryDetails =\r\n this.accessibilitiesFacade.isLoadingCategoryDetails;\r\n readonly selection = model<any | TreeNode[] | null>(null);\r\n\r\n constructor() {\r\n effect(() => {\r\n const selectedLevels = this.categoryLevels();\r\n if (selectedLevels?.length) {\r\n const selection = selectedLevels.map((level: any) => {\r\n return { key: String(level.id) };\r\n });\r\n this.selection.set(selection);\r\n } else {\r\n this.selection.set([]);\r\n }\r\n });\r\n }\r\n onTreeAction(event: TreeActionEvent) {\r\n switch (event.action) {\r\n case 'selectionChange':\r\n const selection = this.selection();\r\n const categoryId = this.selectedCategoryId();\r\n if (categoryId && selection) {\r\n const keys = this.extractKeys(selection);\r\n if (Array.isArray(keys)) {\r\n this.accessibilitiesFacade.updateLevelsTreeForCategory(\r\n categoryId,\r\n keys,\r\n );\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n private extractKeys(selection: TreeNode[] | null): number[] {\r\n if (selection?.length) {\r\n return (\r\n selection\r\n .map((node: any) => Number(node.key))\r\n .filter((id: number) => Number.isFinite(id)) || []\r\n );\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n private transformTreeNodes(nodes: any[]): any[] {\r\n if (!nodes || !Array.isArray(nodes)) return [];\r\n\r\n return nodes.map((node) => ({\r\n ...node,\r\n label: node.name?.display ?? node.name,\r\n icon: node?.level.icon || 'file.folder',\r\n key: node.id.toString(),\r\n children: node.children\r\n ? this.transformTreeNodes(node.children)\r\n : undefined,\r\n }));\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div class=\"p-4\">\r\n <mt-tree\r\n [value]=\"nodes()\"\r\n [(selection)]=\"selection\"\r\n selectionMode=\"checkbox\"\r\n [loading]=\"isLoadingTree() || isLoadingCategoryDetails()\"\r\n (action)=\"onTreeAction($event)\"\r\n [checkAllChildren]=\"true\"\r\n [virtualScroll]=\"true\"\r\n [virtualScrollItemSize]=\"56\"\r\n scrollHeight=\"400px\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, inject, signal, effect, computed } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n TranslocoService,\r\n} from '@jsverse/transloco';\r\nimport { AccessibilitiesFacade } from '../../../../store/accessibilities';\r\nimport { Category } from '../../../../store/accessibilities';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { Card } from '@masterteam/components/card';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { ConfirmationService } from '@masterteam/components/confirmation';\r\nimport AddCategoryModal from './add-category-modal/add-category-modal';\r\nimport CategoryGroups from './category-groups/category-groups';\r\nimport CategoryElements from './category-elements/category-elements';\r\n\r\n@Component({\r\n selector: 'mt-accessibilities-categories',\r\n templateUrl: './categories.html',\r\n styleUrl: './categories.css',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Avatar,\r\n Card,\r\n SkeletonModule,\r\n Button,\r\n Tabs,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TranslocoPipe,\r\n CategoryGroups,\r\n CategoryElements,\r\n ],\r\n})\r\nexport default class AccessibilitiesCategories {\r\n private readonly categoryDialogStyleClass =\r\n '!w-[min(92vw,31rem)] !max-w-[92vw]';\r\n\r\n private readonly accessibilitiesFacade = inject(AccessibilitiesFacade);\r\n private readonly modalService = inject(ModalService);\r\n private readonly confirmationService = inject(ConfirmationService);\r\n private readonly router = inject(Router);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n isLoading = this.accessibilitiesFacade.isLoadingGroups;\r\n groups = this.accessibilitiesFacade.groups;\r\n categories = this.accessibilitiesFacade.categories;\r\n isLoadingCategories = this.accessibilitiesFacade.isLoadingCategories;\r\n isDeletingCategory = this.accessibilitiesFacade.isDeletingCategory;\r\n selectedCategory = this.accessibilitiesFacade.selectedCategory;\r\n isLoadingCategoryDetails =\r\n this.accessibilitiesFacade.isLoadingCategoryDetails;\r\n isUpdatingCategory = this.accessibilitiesFacade.isUpdatingCategory;\r\n selectedCategoryId = signal<number | null>(null);\r\n categoryDeletedId = signal<number | null>(null);\r\n categoryEditedId = signal<number | null>(null);\r\n groupDeletedId = signal<number | null>(null);\r\n\r\n groupSelectControl = new FormControl<number | null>(null);\r\n\r\n availableGroups = computed(() => {\r\n const allGroups = this.groups();\r\n const selectedCategoryGroups = this.selectedCategory()?.groups || [];\r\n const selectedGroupIds = selectedCategoryGroups.map((g) => g.groupId);\r\n return allGroups.filter((group) => !selectedGroupIds.includes(group.id));\r\n });\r\n\r\n categoryGroups = computed(() => {\r\n return this.selectedCategory()?.groups || [];\r\n });\r\n categoryLevels = computed(() => {\r\n return this.selectedCategory()?.levels || [];\r\n });\r\n\r\n selectedTab = signal<string>('elements');\r\n tabsList = [\r\n {\r\n label: this.translocoService.translate('accessibilities.elements'),\r\n value: 'elements',\r\n },\r\n {\r\n label: this.translocoService.translate('accessibilities.groups'),\r\n value: 'groups',\r\n },\r\n ];\r\n\r\n constructor() {\r\n effect(() => {\r\n const categories = this.categories();\r\n const routeId = this.route.snapshot.params['id'];\r\n const categoryId = routeId ? +routeId : null;\r\n\r\n if (categories && categories.length > 0) {\r\n if (categoryId && categories.find((c) => c.id === categoryId)) {\r\n if (this.selectedCategoryId() !== categoryId) {\r\n this.selectedCategoryId.set(categoryId);\r\n this.accessibilitiesFacade.getCategoryDetails(categoryId);\r\n }\r\n } else if (!this.selectedCategoryId()) {\r\n const firstCategoryId = categories[0].id;\r\n this.selectedCategoryId.set(firstCategoryId);\r\n this.router.navigate([firstCategoryId], {\r\n relativeTo: this.route,\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n onAddCategory() {\r\n this.modalService\r\n .openModal(AddCategoryModal, 'dialog', {\r\n header: this.translocoService.translate(\r\n 'accessibilities.add-new-category',\r\n ),\r\n styleClass: this.categoryDialogStyleClass,\r\n position: '',\r\n appendTo: 'body',\r\n dismissableMask: true,\r\n dismissible: true,\r\n })\r\n .onClose.subscribe((result: any) => {\r\n if (result) {\r\n // this.accessibilitiesFacade.getCategories();\r\n }\r\n });\r\n }\r\n\r\n onEditCategory(event: MouseEvent, category: Category) {\r\n event.stopPropagation();\r\n this.categoryEditedId.set(category.id);\r\n\r\n this.modalService\r\n .openModal(AddCategoryModal, 'dialog', {\r\n header: this.translocoService.translate(\r\n 'accessibilities.edit-category',\r\n ),\r\n styleClass: this.categoryDialogStyleClass,\r\n dismissableMask: true,\r\n inputValues: {\r\n category: category,\r\n },\r\n })\r\n .onClose.subscribe((result: any) => {\r\n this.categoryEditedId.set(null);\r\n if (result) {\r\n // this.accessibilitiesFacade.getCategories();\r\n // // Refresh category details if currently selected\r\n // if (this.selectedCategoryId() === category.id) {\r\n // this.accessibilitiesFacade.getCategoryDetails(category.id);\r\n // }\r\n }\r\n });\r\n }\r\n\r\n onDeleteCategory(event: MouseEvent, categoryId: number) {\r\n event.stopPropagation();\r\n\r\n this.confirmationService.confirmDelete({\r\n event: event,\r\n type: 'popup',\r\n accept: () => {\r\n this.categoryDeletedId.set(categoryId);\r\n this.accessibilitiesFacade.deleteCategory(categoryId).subscribe({\r\n next: () => {\r\n this.categoryDeletedId.set(null);\r\n if (this.selectedCategoryId() === categoryId) {\r\n this.selectedCategoryId.set(null);\r\n this.router.navigate(['../'], { relativeTo: this.route });\r\n }\r\n },\r\n error: () => {\r\n this.categoryDeletedId.set(null);\r\n },\r\n });\r\n },\r\n reject: () => {},\r\n });\r\n }\r\n\r\n onCategoryClick(categoryId: number) {\r\n this.selectedCategoryId.set(categoryId);\r\n this.accessibilitiesFacade.getCategoryDetails(categoryId);\r\n this.router.navigate(['../', categoryId], { relativeTo: this.route });\r\n }\r\n\r\n isCategorySelected(categoryId: number): boolean {\r\n return this.selectedCategoryId() === categoryId;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div\r\n class=\"mt-4 grid min-h-0 gap-4 xl:grid-cols-[minmax(18rem,20rem)_minmax(0,1fr)] xl:gap-7\"\r\n >\r\n <mt-card class=\"h-full min-h-0 max-[1279px]:h-auto\">\r\n <div class=\"flex h-full min-h-0 flex-col\">\r\n <ng-template #headless>\r\n <div\r\n class=\"flex items-center justify-between gap-3 border-b border-surface p-5\"\r\n >\r\n <h2 class=\"text-lg font-semibold m-0\">{{ t(\"categories\") }}</h2>\r\n </div>\r\n @if (isLoadingCategories()) {\r\n <div class=\"space-y-4 p-4\">\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"my-4 flex min-h-0 flex-col gap-3 overflow-auto pb-4 max-[1279px]:max-h-[40vh]\"\r\n >\r\n @for (category of categories(); track category.id) {\r\n <div\r\n class=\"mx-4 flex items-start gap-3 rounded-lg border-1 border-gray-300 p-3 transition-colors cursor-pointer\"\r\n [class.bg-primary-50]=\"isCategorySelected(category.id)\"\r\n [class.border-primary-400]=\"isCategorySelected(category.id)\"\r\n [style.--p-avatar-background]=\"\r\n isCategorySelected(category.id)\r\n ? 'var(--p-primary-color)'\r\n : 'var(--p-surface-100)'\r\n \"\r\n [style.--p-avatar-color]=\"\r\n isCategorySelected(category.id) ? '#ffffff' : ''\r\n \"\r\n (click)=\"onCategoryClick(category.id)\"\r\n >\r\n <mt-avatar\r\n class=\"shrink-0\"\r\n [icon]=\"'user.user-check-01'\"\r\n shape=\"square\"\r\n >\r\n </mt-avatar>\r\n <div class=\"flex-1 min-w-0\">\r\n <div class=\"font-medium truncate\">\r\n {{ category.name?.display }}\r\n </div>\r\n </div>\r\n <div class=\"flex shrink-0 self-start\">\r\n <mt-button\r\n variant=\"text\"\r\n size=\"small\"\r\n icon=\"editor.pencil-01\"\r\n severity=\"primary\"\r\n (click)=\"onEditCategory($event, category)\"\r\n [loading]=\"\r\n isUpdatingCategory() &&\r\n categoryEditedId() === category.id\r\n \"\r\n >\r\n </mt-button>\r\n <mt-button\r\n variant=\"text\"\r\n size=\"small\"\r\n icon=\"general.trash-01\"\r\n severity=\"danger\"\r\n (click)=\"onDeleteCategory($event, category.id)\"\r\n [loading]=\"\r\n isDeletingCategory() &&\r\n categoryDeletedId() === category.id\r\n \"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-12 text-muted-color\"\r\n >\r\n {{ \"no-data-found\" | transloco }}\r\n </div>\r\n }\r\n <div class=\"mx-4 mt-2\">\r\n <mt-button\r\n icon=\"general.plus\"\r\n (click)=\"onAddCategory()\"\r\n [label]=\"t('add-category')\"\r\n styleClass=\"w-full sm:w-auto\"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n }\r\n </ng-template>\r\n </div>\r\n </mt-card>\r\n <mt-card class=\"h-full min-h-0 max-[1279px]:h-auto\">\r\n <div class=\"flex h-full min-h-0 flex-col\">\r\n <ng-template #headless>\r\n <div class=\"p-5 mb-5 border-b border-surface\">\r\n <h2 class=\"text-lg font-semibold m-0\">\r\n {{ t(\"category-relations\") }}\r\n </h2>\r\n </div>\r\n\r\n <div class=\"mb-4 overflow-x-auto px-4 sm:px-5\">\r\n <mt-tabs\r\n class=\"min-w-max\"\r\n [(active)]=\"selectedTab\"\r\n [options]=\"tabsList\"\r\n size=\"small\"\r\n >\r\n </mt-tabs>\r\n </div>\r\n\r\n @if (selectedTab() === \"elements\") {\r\n <mt-category-elements\r\n [selectedCategoryId]=\"selectedCategoryId()\"\r\n [categoryLevels]=\"categoryLevels()\"\r\n />\r\n } @else if (selectedTab() === \"groups\") {\r\n <mt-category-groups\r\n [groupSelectControl]=\"groupSelectControl\"\r\n [availableGroups]=\"availableGroups()\"\r\n [categoryGroups]=\"categoryGroups()\"\r\n [selectedCategoryId]=\"selectedCategoryId()\"\r\n [isLoadingCategoryDetails]=\"isLoadingCategoryDetails()\"\r\n />\r\n }\r\n </ng-template>\r\n </div>\r\n </mt-card>\r\n </div>\r\n</ng-container>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"masterteam-accessibilities.mjs","sources":["../../../../packages/masterteam/accessibilities/src/store/accessibilities/accessibilities.actions.ts","../../../../packages/masterteam/accessibilities/src/store/accessibilities/accessibilities.model.ts","../../../../packages/masterteam/accessibilities/src/store/accessibilities/accessibilities.state.ts","../../../../packages/masterteam/accessibilities/src/store/accessibilities/accessibilities.facade.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/accessibilities.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/accessibilities.html","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/accessibilities-list/accessibility-permissions-edit-modal/accessibility-permissions-edit-modal.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/accessibilities-list/accessibility-permissions-edit-modal/accessibility-permissions-edit-modal.html","../../../../packages/masterteam/accessibilities/src/store/index.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/accessibilities-list/accessibilities-list.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/accessibilities-list/accessibilities-list.html","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/add-category-modal/add-category-modal.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/add-category-modal/add-category-modal.html","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/category-groups/category-groups.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/category-groups/category-groups.html","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/category-elements/category-elements.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/category-elements/category-elements.html","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/categories.ts","../../../../packages/masterteam/accessibilities/src/lib/accessibilities/pages/categories/categories.html","../../../../packages/masterteam/accessibilities/src/masterteam-accessibilities.ts"],"sourcesContent":["import { Accessibility } from './accessibilities.model';\r\n\r\nexport class GetAccessibilities {\r\n static readonly type = '[Accessibilities] Get Accessibilities';\r\n}\r\n\r\nexport class GetCategories {\r\n static readonly type = '[Accessibilities] Get Categories';\r\n}\r\n\r\nexport class AddCategory {\r\n static readonly type = '[Accessibilities] Add Category';\r\n constructor(public payload: { title: { ar: string; en: string } }) {}\r\n}\r\n\r\nexport class UpdateCategory {\r\n static readonly type = '[Accessibilities] Update Category';\r\n constructor(\r\n public id: number,\r\n public payload: { title: { ar: string; en: string } },\r\n ) {}\r\n}\r\n\r\nexport class DeleteCategory {\r\n static readonly type = '[Accessibilities] Delete Category';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class GetCategoryDetails {\r\n static readonly type = '[Accessibilities] Get Category Details';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class UpdateAccessibility {\r\n static readonly type = '[Accessibilities] Update Accessibility';\r\n constructor(\r\n public id: string | number | undefined,\r\n public changes: Partial<Accessibility>,\r\n ) {}\r\n}\r\n\r\nexport class GetGroups {\r\n static readonly type = '[Accessibilities] Get Groups';\r\n}\r\n\r\nexport class UpdateAccessibilities {\r\n static readonly type = '[Accessibilities] Update Accessibilities';\r\n constructor(\r\n public payload: {\r\n Accessibilities: Array<{ AccessibilityId: number; Groups: number[] }>;\r\n },\r\n ) {}\r\n}\r\n\r\nexport class AddGroupsToCategory {\r\n static readonly type = '[Accessibilities] Add Groups To Category';\r\n constructor(\r\n public categoryId: number,\r\n public payload: { groupsIds: number[] },\r\n ) {}\r\n}\r\n\r\nexport class RemoveGroupFromCategory {\r\n static readonly type = '[Accessibilities] Remove Group From Category';\r\n constructor(\r\n public categoryId: number,\r\n public groupId: number,\r\n ) {}\r\n}\r\n\r\nexport class GetLevelsTree {\r\n static readonly type = '[Accessibilities] Get Levels Tree';\r\n}\r\n\r\nexport class UpdateLevelsTreeForCategory {\r\n static readonly type = '[Accessibilities] Update Levels Tree For Category';\r\n constructor(\r\n public categoryId: number,\r\n public payload: { levelDataIds: number[] },\r\n ) {}\r\n}\r\n","import { LoadingStateShape } from '../utils/state-helpers';\r\n\r\nexport interface CategoryLevelTreeNode {\r\n id: number;\r\n name: any;\r\n level?: Record<string, unknown>;\r\n children?: CategoryLevelTreeNode[];\r\n}\r\n\r\nexport interface Category {\r\n id: number;\r\n name: any;\r\n groups?: Group[];\r\n levels?: any[];\r\n}\r\n\r\nexport interface User {\r\n id: string;\r\n displayName: string;\r\n mobile: string;\r\n userName: string;\r\n email: string;\r\n photo: string;\r\n}\r\n\r\nexport interface GroupMember {\r\n user: User;\r\n}\r\n\r\nexport interface Group {\r\n id: number;\r\n groupId?: number;\r\n name: any;\r\n usersCount?: number;\r\n members?: GroupMember[];\r\n createdAt?: {\r\n displayValue: string;\r\n actualValue: string;\r\n };\r\n description?: string | null;\r\n}\r\n\r\nexport interface AccessibilitySetting {\r\n id: number;\r\n moduleKey: string;\r\n moduleName: any;\r\n category: string;\r\n name: any;\r\n enableMFACheck: boolean;\r\n createdAt: {\r\n displayValue: string;\r\n actualValue: string;\r\n };\r\n applicationId: number;\r\n groups: Group[];\r\n}\r\n\r\nexport interface Accessibility {\r\n category: string;\r\n name: any;\r\n groupsCount: number;\r\n settings: AccessibilitySetting[];\r\n}\r\n\r\nexport enum AccessibilityActionKey {\r\n GetAccessibilities = 'getAccessibilities',\r\n UpdateAccessibility = 'updateAccessibility',\r\n UpdateAccessibilities = 'updateAccessibilities',\r\n GetGroups = 'getGroups',\r\n GetCategories = 'getCategories',\r\n AddCategory = 'addCategory',\r\n UpdateCategory = 'updateCategory',\r\n DeleteCategory = 'deleteCategory',\r\n GetCategoryDetails = 'getCategoryDetails',\r\n AddGroupsToCategory = 'addGroupsToCategory',\r\n RemoveGroupFromCategory = 'removeGroupFromCategory',\r\n GetLevelsTree = 'getLevelsTree',\r\n UpdateLevelsTreeForCategory = 'updateLevelsTreeForCategory',\r\n}\r\n\r\nexport interface AccessibilitiesStateModel extends LoadingStateShape<AccessibilityActionKey> {\r\n accessibilities: Accessibility[];\r\n selectedAccessibility: Accessibility | null;\r\n groups: Group[];\r\n categories: Category[];\r\n selectedCategory: Category | null;\r\n levelsTree: CategoryLevelTreeNode[];\r\n}\r\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Response } from './api.model';\r\nimport { CrudStateBase, handleApiRequest } from '@masterteam/components';\r\nimport {\r\n GetAccessibilities,\r\n UpdateAccessibility,\r\n UpdateAccessibilities,\r\n GetGroups,\r\n GetCategories,\r\n AddCategory,\r\n UpdateCategory,\r\n DeleteCategory,\r\n GetCategoryDetails,\r\n AddGroupsToCategory,\r\n RemoveGroupFromCategory,\r\n GetLevelsTree,\r\n UpdateLevelsTreeForCategory,\r\n} from './accessibilities.actions';\r\nimport {\r\n Accessibility,\r\n Group,\r\n Category,\r\n CategoryLevelTreeNode,\r\n AccessibilityActionKey,\r\n AccessibilitiesStateModel,\r\n} from './accessibilities.model';\r\n\r\n@State<AccessibilitiesStateModel>({\r\n name: 'accessibilities',\r\n defaults: {\r\n accessibilities: [],\r\n selectedAccessibility: null,\r\n groups: [],\r\n categories: [],\r\n selectedCategory: null,\r\n levelsTree: [],\r\n loadingActive: [],\r\n errors: {},\r\n },\r\n})\r\n@Injectable()\r\nexport class AccessibilitiesState extends CrudStateBase<\r\n Accessibility,\r\n AccessibilitiesStateModel,\r\n AccessibilityActionKey\r\n> {\r\n private http = inject(HttpClient);\r\n private baseUrl = 'identity/accessibilities';\r\n\r\n // ============================================================================\r\n // Selectors - Individual data selectors for fine-grained reactivity\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getAccessibilities(state: AccessibilitiesStateModel): Accessibility[] {\r\n return state.accessibilities;\r\n }\r\n\r\n @Selector()\r\n static getSelectedAccessibility(\r\n state: AccessibilitiesStateModel,\r\n ): Accessibility | null {\r\n return state.selectedAccessibility;\r\n }\r\n\r\n @Selector()\r\n static getGroups(state: AccessibilitiesStateModel): Group[] {\r\n return state.groups;\r\n }\r\n\r\n @Selector()\r\n static getCategories(state: AccessibilitiesStateModel): Category[] {\r\n return state.categories;\r\n }\r\n\r\n @Selector()\r\n static getSelectedCategory(\r\n state: AccessibilitiesStateModel,\r\n ): Category | null {\r\n return state.selectedCategory;\r\n }\r\n\r\n @Selector()\r\n static getLevelsTree(\r\n state: AccessibilitiesStateModel,\r\n ): CategoryLevelTreeNode[] {\r\n return state.levelsTree;\r\n }\r\n\r\n // ============================================================================\r\n // Loading/Error Slice Selectors - REQUIRED for optimal performance\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLoadingActive(state: AccessibilitiesStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(\r\n state: AccessibilitiesStateModel,\r\n ): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n // -------- CRUD actions using enum keys --------\r\n\r\n // ============================================================================\r\n // CRUD Actions\r\n // ============================================================================\r\n\r\n // Loading Data - use handleApiRequest\r\n @Action(GetAccessibilities)\r\n getAccessibilities(ctx: StateContext<AccessibilitiesStateModel>) {\r\n const req$ = this.http.get<Response<Accessibility[]>>(this.baseUrl);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.GetAccessibilities,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n accessibilities: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(UpdateAccessibility)\r\n updateAccessibility(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { id, changes }: UpdateAccessibility,\r\n ) {\r\n const req$ = this.http.put<Response<Accessibility>>(\r\n `${this.baseUrl}/${id}`,\r\n changes,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.UpdateAccessibility,\r\n request$: req$,\r\n onSuccess: (response, state) => {\r\n if (response.data) {\r\n const updatedAccessibilities = mergeAccessibilitiesByCategory(\r\n state.accessibilities,\r\n [response.data],\r\n );\r\n return {\r\n accessibilities: updatedAccessibilities,\r\n selectedAccessibility: response.data,\r\n };\r\n }\r\n return {};\r\n },\r\n errorMessage: 'Failed to update accessibility',\r\n });\r\n }\r\n\r\n @Action(UpdateAccessibilities)\r\n updateAccessibilities(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { payload }: UpdateAccessibilities,\r\n ) {\r\n const req$ = this.http.put<Response<Accessibility[]>>(\r\n `${this.baseUrl}/bulk/groups`,\r\n payload,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.UpdateAccessibilities,\r\n request$: req$,\r\n onSuccess: (res, state) => {\r\n if (!res.data || res.data.length === 0) {\r\n return {};\r\n }\r\n const updatedAccessibilities = mergeAccessibilitiesByCategory(\r\n state.accessibilities,\r\n res.data,\r\n );\r\n return {\r\n accessibilities: updatedAccessibilities,\r\n };\r\n },\r\n errorMessage: 'Failed to update accessibilities',\r\n });\r\n }\r\n\r\n @Action(GetGroups)\r\n getGroups(ctx: StateContext<AccessibilitiesStateModel>) {\r\n const req$ = this.http.get<Response<Group[]>>('identity/groups');\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.GetGroups,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n groups: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetCategories)\r\n getCategories(ctx: StateContext<AccessibilitiesStateModel>) {\r\n const req$ = this.http.get<Response<Category[]>>('categories');\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.GetCategories,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n categories: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(AddCategory)\r\n addCategory(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { payload }: AddCategory,\r\n ) {\r\n const req$ = this.http.post<Response<Category>>('categories', payload);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.AddCategory,\r\n request$: req$,\r\n onSuccess: (res, state) => ({\r\n categories: res.data\r\n ? [...state.categories, res.data]\r\n : state.categories,\r\n }),\r\n errorMessage: 'Failed to add category',\r\n });\r\n }\r\n\r\n @Action(UpdateCategory)\r\n updateCategory(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { id, payload }: UpdateCategory,\r\n ) {\r\n const req$ = this.http.put<Response<Category>>(`categories/${id}`, payload);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.UpdateCategory,\r\n request$: req$,\r\n onSuccess: (res, state) => {\r\n if (res.data) {\r\n const updatedCategories = state.categories.map((category) =>\r\n category.id === id ? res.data! : category,\r\n );\r\n return {\r\n categories: updatedCategories,\r\n selectedCategory:\r\n state.selectedCategory?.id === id\r\n ? res.data\r\n : state.selectedCategory,\r\n };\r\n }\r\n return {};\r\n },\r\n errorMessage: 'Failed to update category',\r\n });\r\n }\r\n\r\n @Action(DeleteCategory)\r\n deleteCategory(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { id }: DeleteCategory,\r\n ) {\r\n const req$ = this.http.delete<Response<void>>(`categories/${id}`);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.DeleteCategory,\r\n request$: req$,\r\n onSuccess: (_res, state) => ({\r\n categories: state.categories.filter((category) => category.id !== id),\r\n selectedCategory:\r\n state.selectedCategory?.id === id ? null : state.selectedCategory,\r\n }),\r\n errorMessage: 'Failed to delete category',\r\n });\r\n }\r\n\r\n @Action(GetCategoryDetails)\r\n getCategoryDetails(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { id }: GetCategoryDetails,\r\n ) {\r\n const req$ = this.http.get<Response<Category>>(`categories/${id}`);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.GetCategoryDetails,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n selectedCategory: response.data ?? null,\r\n }),\r\n });\r\n }\r\n\r\n @Action(AddGroupsToCategory)\r\n addGroupsToCategory(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { categoryId, payload }: AddGroupsToCategory,\r\n ) {\r\n const req$ = this.http.post<Response<void>>(\r\n `categories/${categoryId}/mapGroups`,\r\n payload,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.AddGroupsToCategory,\r\n request$: req$,\r\n onSuccess: (_res, _state) => {\r\n // Refresh category details to get updated groups\r\n ctx.dispatch(new GetCategoryDetails(categoryId));\r\n return {};\r\n },\r\n errorMessage: 'Failed to add groups to category',\r\n });\r\n }\r\n\r\n @Action(RemoveGroupFromCategory)\r\n removeGroupFromCategory(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { categoryId, groupId }: RemoveGroupFromCategory,\r\n ) {\r\n const state = ctx.getState();\r\n const currentGroups = state.selectedCategory?.groups ?? [];\r\n const updatedGroupsIds = currentGroups\r\n .filter((group) => group.groupId !== groupId)\r\n .map((group) => group.groupId);\r\n\r\n const req$ = this.http.post<Response<void>>(\r\n `categories/${categoryId}/mapGroups`,\r\n { groupsIds: updatedGroupsIds },\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.RemoveGroupFromCategory,\r\n request$: req$,\r\n onSuccess: (_res, _state) => {\r\n // Refresh category details to get updated groups\r\n ctx.dispatch(new GetCategoryDetails(categoryId));\r\n return {};\r\n },\r\n errorMessage: 'Failed to remove group from category',\r\n });\r\n }\r\n\r\n @Action(GetLevelsTree)\r\n getLevelsTree(ctx: StateContext<AccessibilitiesStateModel>) {\r\n const req$ = this.http.get<Response<CategoryLevelTreeNode[]>>(\r\n 'Categories/levels-tree',\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.GetLevelsTree,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n levelsTree: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(UpdateLevelsTreeForCategory)\r\n updateLevelsTreeForCategory(\r\n ctx: StateContext<AccessibilitiesStateModel>,\r\n { categoryId, payload }: UpdateLevelsTreeForCategory,\r\n ) {\r\n const req$ = this.http.post<Response<void>>(\r\n `categories/${categoryId}/mapLevels`,\r\n payload,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: AccessibilityActionKey.UpdateLevelsTreeForCategory,\r\n request$: req$,\r\n onSuccess: (_res, _state) => ({}),\r\n errorMessage: 'Failed to update levels tree for category',\r\n });\r\n }\r\n}\r\n\r\nfunction mergeAccessibilitiesByCategory(\r\n current: Accessibility[],\r\n updates: Accessibility[],\r\n): Accessibility[] {\r\n const updatesByCategory = new Map(\r\n updates.map((accessibility) => [accessibility.category, accessibility]),\r\n );\r\n\r\n return current.map(\r\n (accessibility) =>\r\n updatesByCategory.get(accessibility.category) ?? accessibility,\r\n );\r\n}\r\n","import { AccessibilitiesState } from './accessibilities.state';\r\nimport { Injectable, computed, inject } from '@angular/core';\r\nimport { Store, select } from '@ngxs/store';\r\nimport {\r\n GetAccessibilities,\r\n UpdateAccessibility,\r\n UpdateAccessibilities,\r\n GetGroups,\r\n GetCategories,\r\n AddCategory,\r\n UpdateCategory,\r\n DeleteCategory,\r\n GetCategoryDetails,\r\n AddGroupsToCategory,\r\n RemoveGroupFromCategory,\r\n GetLevelsTree,\r\n UpdateLevelsTreeForCategory,\r\n} from './accessibilities.actions';\r\nimport { Accessibility, AccessibilityActionKey } from './accessibilities.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AccessibilitiesFacade {\r\n private readonly store = inject(Store);\r\n\r\n // ============================================================================\r\n // Data Selectors - Memoized by NGXS (fine-grained reactivity)\r\n // ============================================================================\r\n readonly accessibilities = select(AccessibilitiesState.getAccessibilities);\r\n readonly selectedAccessibility = select(\r\n AccessibilitiesState.getSelectedAccessibility,\r\n );\r\n readonly groups = select(AccessibilitiesState.getGroups);\r\n readonly categories = select(AccessibilitiesState.getCategories);\r\n readonly selectedCategory = select(AccessibilitiesState.getSelectedCategory);\r\n readonly levelsTree = select(AccessibilitiesState.getLevelsTree);\r\n\r\n // ============================================================================\r\n // Loading/Error Slices - Memoized by NGXS\r\n // ============================================================================\r\n private readonly loadingActive = select(\r\n AccessibilitiesState.getLoadingActive,\r\n );\r\n private readonly errors = select(AccessibilitiesState.getErrors);\r\n\r\n // ============================================================================\r\n // Loading Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly isLoadingAccessibilities = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.GetAccessibilities),\r\n );\r\n readonly isUpdatingAccessibility = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.UpdateAccessibility),\r\n );\r\n readonly isUpdatingAccessibilities = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.UpdateAccessibilities),\r\n );\r\n readonly isLoadingGroups = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.GetGroups),\r\n );\r\n readonly isLoadingCategories = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.GetCategories),\r\n );\r\n readonly isAddingCategory = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.AddCategory),\r\n );\r\n readonly isUpdatingCategory = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.UpdateCategory),\r\n );\r\n readonly isDeletingCategory = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.DeleteCategory),\r\n );\r\n readonly isLoadingCategoryDetails = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.GetCategoryDetails),\r\n );\r\n readonly isAddingGroupsToCategory = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.AddGroupsToCategory),\r\n );\r\n readonly isRemovingGroupFromCategory = computed(() =>\r\n this.loadingActive().includes(\r\n AccessibilityActionKey.RemoveGroupFromCategory,\r\n ),\r\n );\r\n readonly isLoadingLevelsTree = computed(() =>\r\n this.loadingActive().includes(AccessibilityActionKey.GetLevelsTree),\r\n );\r\n readonly isUpdatingLevelsTreeForCategory = computed(() =>\r\n this.loadingActive().includes(\r\n AccessibilityActionKey.UpdateLevelsTreeForCategory,\r\n ),\r\n );\r\n\r\n // ============================================================================\r\n // Error Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly accessibilitiesError = computed(\r\n () => this.errors()[AccessibilityActionKey.GetAccessibilities] ?? null,\r\n );\r\n readonly updateAccessibilityError = computed(\r\n () => this.errors()[AccessibilityActionKey.UpdateAccessibility] ?? null,\r\n );\r\n readonly updateAccessibilitiesError = computed(\r\n () => this.errors()[AccessibilityActionKey.UpdateAccessibilities] ?? null,\r\n );\r\n readonly groupsError = computed(\r\n () => this.errors()[AccessibilityActionKey.GetGroups] ?? null,\r\n );\r\n readonly categoriesError = computed(\r\n () => this.errors()[AccessibilityActionKey.GetCategories] ?? null,\r\n );\r\n readonly addCategoryError = computed(\r\n () => this.errors()[AccessibilityActionKey.AddCategory] ?? null,\r\n );\r\n readonly updateCategoryError = computed(\r\n () => this.errors()[AccessibilityActionKey.UpdateCategory] ?? null,\r\n );\r\n readonly deleteCategoryError = computed(\r\n () => this.errors()[AccessibilityActionKey.DeleteCategory] ?? null,\r\n );\r\n readonly getCategoryDetailsError = computed(\r\n () => this.errors()[AccessibilityActionKey.GetCategoryDetails] ?? null,\r\n );\r\n readonly addGroupsToCategoryError = computed(\r\n () => this.errors()[AccessibilityActionKey.AddGroupsToCategory] ?? null,\r\n );\r\n readonly removeGroupFromCategoryError = computed(\r\n () => this.errors()[AccessibilityActionKey.RemoveGroupFromCategory] ?? null,\r\n );\r\n readonly getLevelsTreeError = computed(\r\n () => this.errors()[AccessibilityActionKey.GetLevelsTree] ?? null,\r\n );\r\n readonly updateLevelsTreeForCategoryError = computed(\r\n () =>\r\n this.errors()[AccessibilityActionKey.UpdateLevelsTreeForCategory] ?? null,\r\n );\r\n\r\n // ============================================================================\r\n // Derived Data - Computed from data selectors\r\n // ============================================================================\r\n readonly categoriesCount = computed(() => this.categories().length);\r\n readonly hasCategories = computed(() => this.categories().length > 0);\r\n readonly groupsCount = computed(() => this.groups().length);\r\n readonly hasGroups = computed(() => this.groups().length > 0);\r\n\r\n // ============================================================================\r\n // Action Dispatchers\r\n // ============================================================================\r\n\r\n // Actions\r\n getAccessibilities() {\r\n return this.store.dispatch(new GetAccessibilities());\r\n }\r\n\r\n updateAccessibility(\r\n key: string | undefined,\r\n changes: Partial<Accessibility>,\r\n ) {\r\n return this.store.dispatch(new UpdateAccessibility(key as any, changes));\r\n }\r\n\r\n getGroups() {\r\n return this.store.dispatch(new GetGroups());\r\n }\r\n\r\n updateAccessibilities(payload: {\r\n Accessibilities: Array<{ AccessibilityId: number; Groups: number[] }>;\r\n }) {\r\n return this.store.dispatch(new UpdateAccessibilities(payload));\r\n }\r\n\r\n getCategories() {\r\n return this.store.dispatch(new GetCategories());\r\n }\r\n\r\n addCategory(payload: { title: { ar: string; en: string } }) {\r\n return this.store.dispatch(new AddCategory(payload));\r\n }\r\n\r\n updateCategory(id: number, payload: { title: { ar: string; en: string } }) {\r\n return this.store.dispatch(new UpdateCategory(id, payload));\r\n }\r\n\r\n deleteCategory(id: number) {\r\n return this.store.dispatch(new DeleteCategory(id));\r\n }\r\n\r\n getCategoryDetails(id: number) {\r\n return this.store.dispatch(new GetCategoryDetails(id));\r\n }\r\n\r\n addGroupsToCategory(categoryId: number, groupsIds: number[]) {\r\n return this.store.dispatch(\r\n new AddGroupsToCategory(categoryId, { groupsIds }),\r\n );\r\n }\r\n\r\n removeGroupFromCategory(categoryId: number, groupId: number) {\r\n return this.store.dispatch(\r\n new RemoveGroupFromCategory(categoryId, groupId),\r\n );\r\n }\r\n\r\n getLevelsTree() {\r\n return this.store.dispatch(new GetLevelsTree());\r\n }\r\n\r\n updateLevelsTreeForCategory(categoryId: number, keys: number[]) {\r\n return this.store.dispatch(\r\n new UpdateLevelsTreeForCategory(categoryId, { levelDataIds: keys }),\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, inject, OnInit, signal } from '@angular/core';\r\nimport { ActivatedRoute, Router, RouterOutlet } from '@angular/router';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Page } from '@masterteam/components/page';\r\nimport { PageHeaderTab } from '@masterteam/components/page-header';\r\nimport { AccessibilitiesFacade } from '../../store/accessibilities';\r\n\r\n@Component({\r\n selector: 'mt-accessibilities',\r\n styleUrl: './accessibilities.css',\r\n templateUrl: './accessibilities.html',\r\n standalone: true,\r\n imports: [CommonModule, Page, RouterOutlet, TranslocoDirective],\r\n})\r\nexport default class Accessibilities implements OnInit {\r\n private readonly facade = inject(AccessibilitiesFacade);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly router = inject(Router);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n selectedTab = signal<string>('accessibilities');\r\n\r\n tabsList: PageHeaderTab[] = [\r\n {\r\n label: this.translocoService.translate('accessibilities.accessibilities'),\r\n value: 'accessibilities',\r\n },\r\n {\r\n label: this.translocoService.translate('accessibilities.categories'),\r\n value: 'categories',\r\n },\r\n ];\r\n\r\n breadcrumbItems: { label?: string; routerLink?: string; icon?: string }[] = [\r\n {\r\n label: '',\r\n icon: 'general.home-line',\r\n routerLink: '/control-panel/workspaces',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'product-settings.product-settings',\r\n ),\r\n routerLink: '/control-panel/product-settings',\r\n },\r\n {\r\n label: this.translocoService.translate('accessibilities.accessibilities'),\r\n },\r\n ];\r\n\r\n ngOnInit() {\r\n const selectedTab = this.route.snapshot.firstChild?.data['componentType'];\r\n this.selectedTab.set(selectedTab || 'accessibilities');\r\n this.facade.getAccessibilities();\r\n this.facade.getGroups();\r\n this.facade.getCategories();\r\n this.facade.getLevelsTree();\r\n }\r\n\r\n goBack() {\r\n this.router.navigate(['control-panel/product-settings']);\r\n }\r\n\r\n onTabChange(event: any) {\r\n if (event == 'accessibilities') {\r\n this.router.navigate(['accessibilities-list'], {\r\n relativeTo: this.route,\r\n });\r\n } else if (event == 'categories') {\r\n this.router.navigate(['categories'], { relativeTo: this.route });\r\n }\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <mt-page\r\n [title]=\"t('accessibilities')\"\r\n [avatarIcon]=\"'security.passcode-lock'\"\r\n [contentClass]=\"'max-[1025px]:p-4 max-[640px]:p-3'\"\r\n [avatarStyle]=\"{\r\n '--p-avatar-background': 'var(--p-pink-50)',\r\n '--p-avatar-color': 'var(--p-pink-700)',\r\n }\"\r\n [tabs]=\"tabsList\"\r\n [activeTab]=\"selectedTab()\"\r\n (tabChange)=\"onTabChange($event)\"\r\n (backButtonClick)=\"goBack()\"\r\n backButton\r\n >\r\n <router-outlet />\r\n </mt-page>\r\n</ng-container>\r\n","import { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n inject,\r\n input,\r\n computed,\r\n signal,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { ModalRef } from '@masterteam/components/dialog';\r\nimport { SelectField } from '@masterteam/components/select-field';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { ConfirmationService } from '@masterteam/components/confirmation';\r\nimport { TranslocoDirective, TranslocoPipe } from '@jsverse/transloco';\r\nimport {\r\n Accessibility,\r\n AccessibilitiesFacade,\r\n Group,\r\n} from '../../../../../store/accessibilities';\r\n\r\n@Component({\r\n selector: 'mt-accessibility-permissions-edit-modal',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n SelectField,\r\n Avatar,\r\n FormsModule,\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n ],\r\n templateUrl: './accessibility-permissions-edit-modal.html',\r\n styleUrl: './accessibility-permissions-edit-modal.css',\r\n})\r\nexport class AccessibilityPermissionsEditModal implements OnInit {\r\n modal = inject(ModalService);\r\n ref: ModalRef = inject(ModalRef);\r\n private readonly accessibilitiesFacade = inject(AccessibilitiesFacade);\r\n private readonly confirmationService = inject(ConfirmationService);\r\n accessibility = input<Accessibility | null>(null);\r\n groups = this.accessibilitiesFacade.groups;\r\n saveLoading = this.accessibilitiesFacade.isUpdatingAccessibilities;\r\n selectedGroups = signal<{ [settingId: number]: number[] }>({});\r\n getAvailableGroupsOptions = computed(() => (settingId: number) => {\r\n const selectedIds = this.selectedGroups()[settingId] || [];\r\n return this.groups()\r\n .filter((group: Group) => !selectedIds.includes(group.id))\r\n .map((group: Group) => ({\r\n label: group.name?.display,\r\n value: group.id,\r\n }));\r\n });\r\n\r\n ngOnInit(): void {\r\n const initialSelectedGroups: { [settingId: number]: number[] } = {};\r\n this.accessibility()?.settings?.forEach((setting) => {\r\n initialSelectedGroups[setting.id] = setting.groups.map((g: any) => g.id);\r\n });\r\n this.selectedGroups.set(initialSelectedGroups);\r\n }\r\n onClose() {\r\n this.ref.close();\r\n }\r\n\r\n onSave() {\r\n const selectedGroups = this.selectedGroups();\r\n const permissions = this.accessibility()?.settings || [];\r\n const accessibilitiesData = permissions.map((setting) => ({\r\n AccessibilityId: setting.id,\r\n Groups: selectedGroups[setting.id] || [],\r\n }));\r\n\r\n const payload = {\r\n Accessibilities: accessibilitiesData,\r\n };\r\n\r\n this.accessibilitiesFacade.updateAccessibilities(payload).subscribe({\r\n next: () => {\r\n this.ref.close();\r\n },\r\n error: (error: any) => {\r\n console.error('Failed to save accessibility permissions:', error);\r\n },\r\n });\r\n }\r\n\r\n onGroupSelectionChange(settingId: number, selectedGroupIds: number[]): void {\r\n this.selectedGroups.update((current) => ({\r\n ...current,\r\n [settingId]: selectedGroupIds,\r\n }));\r\n }\r\n\r\n onGroupSelect(settingId: number, groupId: number): void {\r\n if (!groupId) return;\r\n\r\n const currentGroups = this.selectedGroups()[settingId] || [];\r\n if (!currentGroups.includes(groupId)) {\r\n const updatedGroups = [...currentGroups, groupId];\r\n this.onGroupSelectionChange(settingId, updatedGroups);\r\n }\r\n }\r\n\r\n getSelectedGroupsForSetting(settingId: number): Group[] {\r\n const selectedIds = this.selectedGroups()[settingId] || [];\r\n return this.groups().filter((group: Group) =>\r\n selectedIds.includes(group.id),\r\n );\r\n }\r\n\r\n removeGroupFromSetting(\r\n event: MouseEvent,\r\n settingId: number,\r\n groupId: number,\r\n ): void {\r\n event.stopPropagation();\r\n\r\n this.confirmationService.confirmDelete({\r\n event: event,\r\n type: 'popup',\r\n accept: () => {\r\n const currentGroups = this.selectedGroups()[settingId] || [];\r\n const updatedGroups = currentGroups.filter((id) => id !== groupId);\r\n this.onGroupSelectionChange(settingId, updatedGroups);\r\n },\r\n reject: () => {},\r\n });\r\n }\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n <div\r\n [class]=\"\r\n 'accessibility-permissions-modal-content flex min-w-0 flex-col gap-4 overflow-x-hidden p-4 max-[640px]:p-3 ' +\r\n modal.contentClass\r\n \"\r\n >\r\n @if (accessibility()) {\r\n <div class=\"space-y-4\">\r\n @for (setting of this.accessibility()?.settings; track setting.id) {\r\n <div class=\"border border-gray-200 rounded-lg overflow-hidden\">\r\n <div class=\"bg-sky-50 px-4 py-3 border-b border-gray-200\">\r\n <h4 class=\"font-medium text-gray-900\">\r\n {{ setting.name?.display }}\r\n </h4>\r\n </div>\r\n\r\n <div class=\"p-4\">\r\n <div class=\"mb-3\">\r\n <mt-select-field\r\n [placeholder]=\"t('accessibilities.selectGroupsPlaceholder')\"\r\n [options]=\"getAvailableGroupsOptions()(setting.id)\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [ngModel]=\"null\"\r\n (ngModelChange)=\"onGroupSelect(setting.id, $event)\"\r\n class=\"w-full\"\r\n >\r\n </mt-select-field>\r\n </div>\r\n\r\n @if (getSelectedGroupsForSetting(setting.id).length > 0) {\r\n <div class=\"mt-4\">\r\n <h5 class=\"text-sm font-medium text-gray-700 mb-2\">\r\n {{ t(\"accessibilities.selectedGroups\") }}\r\n </h5>\r\n <div class=\"space-y-2\">\r\n @for (\r\n group of getSelectedGroupsForSetting(setting.id);\r\n track group.id\r\n ) {\r\n <div\r\n class=\"flex flex-col gap-3 rounded-lg border border-gray-100 bg-gray-50 px-3 py-2 sm:flex-row sm:items-center sm:justify-between\"\r\n >\r\n <div class=\"flex min-w-0 items-center gap-2\">\r\n <mt-avatar\r\n class=\"shrink-0\"\r\n [icon]=\"'user.users-01'\"\r\n shape=\"square\"\r\n >\r\n </mt-avatar>\r\n <span\r\n class=\"min-w-0 break-words text-sm font-medium\"\r\n >{{ group.name?.display }}</span\r\n >\r\n </div>\r\n <mt-button\r\n variant=\"text\"\r\n size=\"small\"\r\n icon=\"general.trash-01\"\r\n severity=\"danger\"\r\n styleClass=\"w-full sm:w-auto\"\r\n (click)=\"\r\n removeGroupFromSetting($event, setting.id, group.id)\r\n \"\r\n title=\"Remove Group\"\r\n >\r\n </mt-button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @empty {\r\n <div class=\"text-center text-gray-500 py-8 bg-gray-50 rounded-lg\">\r\n <p>{{ \"no-data-found\" | transloco }}</p>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'accessibility-permissions-modal-footer ' +\r\n modal.footerClass +\r\n ' flex-col gap-2 sm:flex-row sm:items-center sm:justify-end'\r\n \"\r\n >\r\n <mt-button\r\n [label]=\"t('save')\"\r\n (click)=\"onSave()\"\r\n [loading]=\"saveLoading()\"\r\n severity=\"primary\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n <mt-button\r\n [label]=\"t('cancel')\"\r\n severity=\"secondary\"\r\n [disabled]=\"saveLoading()\"\r\n (click)=\"onClose()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n </div>\r\n</ng-container>\r\n","// store/index.ts\r\nexport * from './accessibilities';\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, inject, signal } from '@angular/core';\r\nimport {\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n TranslocoService,\r\n} from '@jsverse/transloco';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { Card } from '@masterteam/components/card';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { ConfirmationService } from '@masterteam/components/confirmation';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { AccessibilityPermissionsEditModal } from './accessibility-permissions-edit-modal/accessibility-permissions-edit-modal';\r\nimport { AccessibilitiesFacade } from '../../../../store';\r\nimport { Accessibility } from '../../../../store/accessibilities';\r\n\r\n@Component({\r\n selector: 'mt-accessibilities-list',\r\n templateUrl: './accessibilities-list.html',\r\n styleUrl: './accessibilities-list.css',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Avatar,\r\n Card,\r\n Button,\r\n SkeletonModule,\r\n TranslocoPipe,\r\n ],\r\n})\r\nexport default class AccessibilitiesList {\r\n private readonly modal: ModalService = inject(ModalService);\r\n private readonly accessibilitiesFacade = inject(AccessibilitiesFacade);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly confirmationService = inject(ConfirmationService);\r\n\r\n accessibilities = this.accessibilitiesFacade.accessibilities;\r\n isLoading = this.accessibilitiesFacade.isLoadingAccessibilities;\r\n itemDeletedId = signal<string | null>(null);\r\n\r\n openPermissionsModal(accessibility?: Accessibility): void {\r\n this.modal.openModal(AccessibilityPermissionsEditModal, 'drawer', {\r\n header: this.translocoService.translate('accessibilities.setPermissions'),\r\n styleClass:\r\n '!absolute !shadow-none !w-full !max-w-full sm:!w-[30rem] xl:!w-[30vw]',\r\n height: '100%',\r\n position: 'end',\r\n appendTo: 'page-content',\r\n dismissible: true,\r\n inputValues: {\r\n accessibility: accessibility,\r\n },\r\n });\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <mt-card class=\"mx-auto my-5 w-full max-w-[78rem]\">\r\n <div class=\"flex min-h-0 flex-col\">\r\n <ng-template #headless>\r\n <div class=\"p-5 mb-5 border-b border-surface\">\r\n <h2 class=\"text-lg font-semibold m-0\">\r\n {{ t(\"system-accessibilities\") }}\r\n </h2>\r\n </div>\r\n @if (isLoading()) {\r\n <div class=\"space-y-4 p-4\">\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n </div>\r\n } @else {\r\n <div class=\"overflow-auto\">\r\n @for (\r\n accessibility of accessibilities();\r\n track accessibility.category\r\n ) {\r\n <div\r\n class=\"mx-4 mb-4 flex flex-col gap-3 rounded-lg border-1 border-surface p-3 sm:mx-5 sm:flex-row sm:items-center sm:justify-between\"\r\n >\r\n <div class=\"flex min-w-0 items-start gap-3\">\r\n <mt-avatar\r\n class=\"shrink-0\"\r\n [icon]=\"'security.lock-unlocked-01'\"\r\n shape=\"square\"\r\n size=\"normal\"\r\n [style.--p-avatar-background]=\"\r\n 'var(--p-' + 'surface' + '-100)'\r\n \"\r\n [style.--p-avatar-color]=\"'var(--p-' + 'primary' + '-600)'\"\r\n >\r\n </mt-avatar>\r\n <div class=\"min-w-0\">\r\n <div class=\"break-words font-semibold\">\r\n {{ accessibility.name?.display }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex flex-wrap items-center gap-3 sm:justify-end\">\r\n <div\r\n class=\"rounded-lg border-1 border-surface px-3 py-1 text-sm font-semibold\"\r\n >\r\n {{ accessibility.groupsCount }} {{ t(\"groups\") }}\r\n </div>\r\n <div class=\"border-surface px-1 sm:border-s-1\">\r\n <mt-button\r\n [text]=\"true\"\r\n icon=\"security.lock-unlocked-01\"\r\n severity=\"primary\"\r\n (click)=\"openPermissionsModal(accessibility)\"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"mt-20 flex items-center justify-center px-4 text-center text-muted-color\"\r\n >\r\n {{ \"no-data-found\" | transloco }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ng-template>\r\n </div>\r\n </mt-card>\r\n</ng-container>\r\n","import {\r\n Component,\r\n inject,\r\n Signal,\r\n linkedSignal,\r\n input,\r\n effect,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { AccessibilitiesFacade } from '../../../../../store/accessibilities';\r\nimport { Category } from '../../../../../store/accessibilities';\r\n\r\nimport { Button } from '@masterteam/components/button';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig, ValidatorConfig } from '@masterteam/components';\r\n\r\nimport { ModalRef } from '@masterteam/components/dialog';\r\nimport {\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n TranslocoService,\r\n} from '@jsverse/transloco';\r\nimport { ModalService } from '@masterteam/components/modal';\r\n\r\n@Component({\r\n selector: 'mt-add-category-modal',\r\n templateUrl: './add-category-modal.html',\r\n styleUrls: ['./add-category-modal.css'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n SkeletonModule,\r\n DynamicForm,\r\n ReactiveFormsModule,\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n ],\r\n})\r\nexport default class AddCategoryModal {\r\n modal = inject(ModalService);\r\n ref: ModalRef = inject(ModalRef);\r\n private readonly facade = inject(AccessibilitiesFacade);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n // Input for edit mode - receives category with rawName\r\n category = input<Category | null>(null);\r\n\r\n categoryFormControl: any = new FormControl(null);\r\n\r\n dynamicFormConfig = linkedSignal<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: '',\r\n label: '',\r\n type: 'header',\r\n order: 1,\r\n fields: [\r\n {\r\n key: 'name.en',\r\n label: this.translocoService.translate(\r\n 'accessibilities.category-title-en',\r\n ),\r\n placeholder: this.translocoService.translate(\r\n 'accessibilities.category-title-en',\r\n ),\r\n validators: [ValidatorConfig.required()],\r\n order: 1,\r\n },\r\n {\r\n key: 'name.ar',\r\n label: this.translocoService.translate(\r\n 'accessibilities.category-title-ar',\r\n ),\r\n placeholder: this.translocoService.translate(\r\n 'accessibilities.category-title-ar',\r\n ),\r\n validators: [ValidatorConfig.required()],\r\n order: 1,\r\n },\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n isAddingCategory: Signal<boolean> = this.facade.isAddingCategory;\r\n isUpdatingCategory: Signal<boolean> = this.facade.isUpdatingCategory;\r\n\r\n constructor() {\r\n // Initialize form with category data if in edit mode\r\n effect(() => {\r\n const cat = this.category();\r\n if (cat?.name) {\r\n this.categoryFormControl.patchValue({\r\n name: {\r\n en: cat.name.en,\r\n ar: cat.name.ar,\r\n },\r\n });\r\n }\r\n });\r\n }\r\n\r\n onSubmit() {\r\n if (this.categoryFormControl.invalid) return;\r\n\r\n const formValue = this.categoryFormControl.getRawValue();\r\n const cat = this.category();\r\n\r\n // Check if we're in edit mode\r\n if (cat?.id) {\r\n this.facade.updateCategory(cat.id, formValue).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n } else {\r\n this.facade.addCategory(formValue).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n }\r\n }\r\n\r\n onCancel() {\r\n this.ref.close(false);\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div\r\n [class]=\"\r\n 'add-category-modal-content flex min-w-0 flex-col gap-3 overflow-x-hidden p-4 max-[640px]:p-3 ' +\r\n modal.contentClass\r\n \"\r\n >\r\n <mt-dynamic-form\r\n [formConfig]=\"dynamicFormConfig()\"\r\n [formControl]=\"categoryFormControl\"\r\n />\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'add-category-modal-footer ' +\r\n modal.footerClass +\r\n ' flex-col gap-2 sm:flex-row sm:items-center sm:justify-end'\r\n \"\r\n >\r\n <mt-button\r\n variant=\"outlined\"\r\n [label]=\"t('cancel')\"\r\n (click)=\"onCancel()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n\r\n <mt-button\r\n [label]=\"'add' | transloco\"\r\n (click)=\"onSubmit()\"\r\n [loading]=\"isAddingCategory() || isUpdatingCategory()\"\r\n [disabled]=\"!this.categoryFormControl.valid\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, inject, input, signal } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslocoDirective, TranslocoPipe } from '@jsverse/transloco';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { SelectField } from '@masterteam/components/select-field';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { ConfirmationService } from '@masterteam/components/confirmation';\r\nimport { AccessibilitiesFacade } from '../../../../../store/accessibilities';\r\n\r\n@Component({\r\n selector: 'mt-category-groups',\r\n templateUrl: './category-groups.html',\r\n styleUrl: './category-groups.css',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n Button,\r\n SelectField,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SkeletonModule,\r\n ],\r\n})\r\nexport default class CategoryGroups {\r\n private readonly accessibilitiesFacade = inject(AccessibilitiesFacade);\r\n private readonly confirmationService = inject(ConfirmationService);\r\n\r\n groupSelectControl = input.required<FormControl<number | null>>();\r\n availableGroups = input.required<any[]>();\r\n categoryGroups = input.required<any[]>();\r\n selectedCategoryId = input.required<number | null>();\r\n isLoadingCategoryDetails = input.required<boolean>();\r\n isAddingGroupsToCategory =\r\n this.accessibilitiesFacade.isAddingGroupsToCategory;\r\n isRemovingGroupFromCategory =\r\n this.accessibilitiesFacade.isRemovingGroupFromCategory;\r\n groupDeletedId = signal<number | null>(null);\r\n\r\n onDeleteGroup(event: MouseEvent, groupId: any) {\r\n event.stopPropagation();\r\n const categoryId = this.selectedCategoryId();\r\n if (!categoryId) return;\r\n\r\n this.confirmationService.confirmDelete({\r\n event: event,\r\n type: 'popup',\r\n accept: () => {\r\n this.groupDeletedId.set(groupId);\r\n this.accessibilitiesFacade\r\n .removeGroupFromCategory(categoryId, groupId)\r\n .subscribe({\r\n complete: () => this.groupDeletedId.set(null),\r\n error: () => this.groupDeletedId.set(null),\r\n });\r\n },\r\n reject: () => {},\r\n });\r\n }\r\n\r\n onAddGroupToCategory() {\r\n const selectedGroupId = this.groupSelectControl().value;\r\n const categoryId = this.selectedCategoryId();\r\n\r\n if (selectedGroupId && categoryId) {\r\n const currentGroups = this.categoryGroups();\r\n const currentGroupIds = currentGroups.map((g: any) => g.groupId);\r\n const updatedGroupIds: any = [...currentGroupIds, selectedGroupId];\r\n\r\n this.accessibilitiesFacade\r\n .addGroupsToCategory(categoryId, updatedGroupIds)\r\n .subscribe(() => {\r\n this.groupSelectControl().setValue(null);\r\n });\r\n }\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div class=\"p-4\">\r\n <!-- Group Selection Section -->\r\n <div class=\"flex flex-col gap-3 sm:flex-row sm:items-end\">\r\n <div class=\"w-full sm:w-1/2\">\r\n <mt-select-field\r\n [formControl]=\"groupSelectControl()\"\r\n [label]=\"t('groups')\"\r\n [options]=\"availableGroups()\"\r\n optionLabel=\"name.display\"\r\n optionValue=\"id\"\r\n >\r\n </mt-select-field>\r\n </div>\r\n <mt-button\r\n icon=\"general.plus\"\r\n [label]=\"t('add-group')\"\r\n (click)=\"onAddGroupToCategory()\"\r\n [disabled]=\"!groupSelectControl().value || !selectedCategoryId()\"\r\n [loading]=\"isAddingGroupsToCategory()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n >\r\n </mt-button>\r\n </div>\r\n\r\n <div class=\"mt-6\">\r\n @if (isLoadingCategoryDetails()) {\r\n <div class=\"space-y-4 p-4\">\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n </div>\r\n } @else {\r\n @for (group of categoryGroups(); track group.id) {\r\n <div\r\n class=\"my-3 flex flex-col gap-3 rounded-lg border border-surface p-3 sm:flex-row sm:items-center\"\r\n >\r\n <div class=\"min-w-0 flex-1\">\r\n <div class=\"break-words text-base font-medium\">\r\n {{ group.name?.display }}\r\n </div>\r\n </div>\r\n <div class=\"text-sm text-muted-color\">\r\n {{ group.usersCount }} {{ t(\"users\") }}\r\n </div>\r\n <div\r\n class=\"flex items-center gap-0 self-end sm:ms-auto sm:self-auto\"\r\n >\r\n <!-- <mt-button variant=\"text\" size=\"large\" icon=\"user.users-03\">\r\n </mt-button> -->\r\n <mt-button\r\n variant=\"text\"\r\n size=\"large\"\r\n icon=\"general.trash-01\"\r\n severity=\"danger\"\r\n (click)=\"onDeleteGroup($event, group.groupId)\"\r\n [loading]=\"\r\n isRemovingGroupFromCategory() &&\r\n groupDeletedId() === group.groupId\r\n \"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div class=\"flex items-center justify-center h-20 text-muted-color\">\r\n {{ \"no-data-found\" | transloco }}\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</ng-container>\r\n","import { Tree, TreeNode, TreeActionEvent } from '@masterteam/components/tree';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n inject,\r\n effect,\r\n model,\r\n input,\r\n computed,\r\n} from '@angular/core';\r\nimport { TranslocoDirective } from '@jsverse/transloco';\r\nimport { AccessibilitiesFacade } from '../../../../../store/accessibilities';\r\n@Component({\r\n selector: 'mt-category-elements',\r\n templateUrl: './category-elements.html',\r\n styleUrl: './category-elements.css',\r\n standalone: true,\r\n imports: [CommonModule, TranslocoDirective, Tree],\r\n})\r\nexport default class CategoryElements {\r\n private readonly accessibilitiesFacade = inject(AccessibilitiesFacade);\r\n\r\n selectedCategoryId = input.required<number | null>();\r\n categoryLevels = model<any[]>();\r\n\r\n readonly nodes = computed(() => {\r\n const tree = this.accessibilitiesFacade.levelsTree();\r\n return this.transformTreeNodes(tree);\r\n });\r\n readonly isLoadingTree = this.accessibilitiesFacade.isLoadingLevelsTree;\r\n readonly isLoadingCategoryDetails =\r\n this.accessibilitiesFacade.isLoadingCategoryDetails;\r\n readonly selection = model<any | TreeNode[] | null>(null);\r\n\r\n constructor() {\r\n effect(() => {\r\n const selectedLevels = this.categoryLevels();\r\n if (selectedLevels?.length) {\r\n const selection = selectedLevels.map((level: any) => {\r\n return { key: String(level.id) };\r\n });\r\n this.selection.set(selection);\r\n } else {\r\n this.selection.set([]);\r\n }\r\n });\r\n }\r\n onTreeAction(event: TreeActionEvent) {\r\n switch (event.action) {\r\n case 'selectionChange':\r\n const selection = this.selection();\r\n const categoryId = this.selectedCategoryId();\r\n if (categoryId && selection) {\r\n const keys = this.extractKeys(selection);\r\n if (Array.isArray(keys)) {\r\n this.accessibilitiesFacade.updateLevelsTreeForCategory(\r\n categoryId,\r\n keys,\r\n );\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n private extractKeys(selection: TreeNode[] | null): number[] {\r\n if (selection?.length) {\r\n return (\r\n selection\r\n .map((node: any) => Number(node.key))\r\n .filter((id: number) => Number.isFinite(id)) || []\r\n );\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n private transformTreeNodes(nodes: any[]): any[] {\r\n if (!nodes || !Array.isArray(nodes)) return [];\r\n\r\n return nodes.map((node) => ({\r\n ...node,\r\n label: node.name?.display ?? node.name,\r\n icon: node?.level.icon || 'file.folder',\r\n key: node.id.toString(),\r\n children: node.children\r\n ? this.transformTreeNodes(node.children)\r\n : undefined,\r\n }));\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div class=\"p-4\">\r\n <mt-tree\r\n [value]=\"nodes()\"\r\n [(selection)]=\"selection\"\r\n selectionMode=\"checkbox\"\r\n [loading]=\"isLoadingTree() || isLoadingCategoryDetails()\"\r\n (action)=\"onTreeAction($event)\"\r\n [checkAllChildren]=\"true\"\r\n [virtualScroll]=\"true\"\r\n [virtualScrollItemSize]=\"56\"\r\n scrollHeight=\"400px\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, inject, signal, effect, computed } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n TranslocoService,\r\n} from '@jsverse/transloco';\r\nimport { AccessibilitiesFacade } from '../../../../store/accessibilities';\r\nimport { Category } from '../../../../store/accessibilities';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { Card } from '@masterteam/components/card';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { ConfirmationService } from '@masterteam/components/confirmation';\r\nimport AddCategoryModal from './add-category-modal/add-category-modal';\r\nimport CategoryGroups from './category-groups/category-groups';\r\nimport CategoryElements from './category-elements/category-elements';\r\n\r\n@Component({\r\n selector: 'mt-accessibilities-categories',\r\n templateUrl: './categories.html',\r\n styleUrl: './categories.css',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslocoDirective,\r\n Avatar,\r\n Card,\r\n SkeletonModule,\r\n Button,\r\n Tabs,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TranslocoPipe,\r\n CategoryGroups,\r\n CategoryElements,\r\n ],\r\n})\r\nexport default class AccessibilitiesCategories {\r\n private readonly categoryDialogStyleClass =\r\n '!w-[min(92vw,31rem)] !max-w-[92vw]';\r\n\r\n private readonly accessibilitiesFacade = inject(AccessibilitiesFacade);\r\n private readonly modalService = inject(ModalService);\r\n private readonly confirmationService = inject(ConfirmationService);\r\n private readonly router = inject(Router);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n isLoading = this.accessibilitiesFacade.isLoadingGroups;\r\n groups = this.accessibilitiesFacade.groups;\r\n categories = this.accessibilitiesFacade.categories;\r\n isLoadingCategories = this.accessibilitiesFacade.isLoadingCategories;\r\n isDeletingCategory = this.accessibilitiesFacade.isDeletingCategory;\r\n selectedCategory = this.accessibilitiesFacade.selectedCategory;\r\n isLoadingCategoryDetails =\r\n this.accessibilitiesFacade.isLoadingCategoryDetails;\r\n isUpdatingCategory = this.accessibilitiesFacade.isUpdatingCategory;\r\n selectedCategoryId = signal<number | null>(null);\r\n categoryDeletedId = signal<number | null>(null);\r\n categoryEditedId = signal<number | null>(null);\r\n groupDeletedId = signal<number | null>(null);\r\n\r\n groupSelectControl = new FormControl<number | null>(null);\r\n\r\n availableGroups = computed(() => {\r\n const allGroups = this.groups();\r\n const selectedCategoryGroups = this.selectedCategory()?.groups || [];\r\n const selectedGroupIds = selectedCategoryGroups.map((g) => g.groupId);\r\n return allGroups.filter((group) => !selectedGroupIds.includes(group.id));\r\n });\r\n\r\n categoryGroups = computed(() => {\r\n return this.selectedCategory()?.groups || [];\r\n });\r\n categoryLevels = computed(() => {\r\n return this.selectedCategory()?.levels || [];\r\n });\r\n\r\n selectedTab = signal<string>('elements');\r\n tabsList = [\r\n {\r\n label: this.translocoService.translate('accessibilities.elements'),\r\n value: 'elements',\r\n },\r\n {\r\n label: this.translocoService.translate('accessibilities.groups'),\r\n value: 'groups',\r\n },\r\n ];\r\n\r\n constructor() {\r\n effect(() => {\r\n const categories = this.categories();\r\n const routeId = this.route.snapshot.params['id'];\r\n const categoryId = routeId ? +routeId : null;\r\n\r\n if (categories && categories.length > 0) {\r\n if (categoryId && categories.find((c) => c.id === categoryId)) {\r\n if (this.selectedCategoryId() !== categoryId) {\r\n this.selectedCategoryId.set(categoryId);\r\n this.accessibilitiesFacade.getCategoryDetails(categoryId);\r\n }\r\n } else if (!this.selectedCategoryId()) {\r\n const firstCategoryId = categories[0].id;\r\n this.selectedCategoryId.set(firstCategoryId);\r\n this.router.navigate([firstCategoryId], {\r\n relativeTo: this.route,\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n onAddCategory() {\r\n this.modalService\r\n .openModal(AddCategoryModal, 'dialog', {\r\n header: this.translocoService.translate(\r\n 'accessibilities.add-new-category',\r\n ),\r\n styleClass: this.categoryDialogStyleClass,\r\n position: '',\r\n appendTo: 'body',\r\n dismissableMask: true,\r\n dismissible: true,\r\n })\r\n .onClose.subscribe((result: any) => {\r\n if (result) {\r\n // this.accessibilitiesFacade.getCategories();\r\n }\r\n });\r\n }\r\n\r\n onEditCategory(event: MouseEvent, category: Category) {\r\n event.stopPropagation();\r\n this.categoryEditedId.set(category.id);\r\n\r\n this.modalService\r\n .openModal(AddCategoryModal, 'dialog', {\r\n header: this.translocoService.translate(\r\n 'accessibilities.edit-category',\r\n ),\r\n styleClass: this.categoryDialogStyleClass,\r\n dismissableMask: true,\r\n inputValues: {\r\n category: category,\r\n },\r\n })\r\n .onClose.subscribe((result: any) => {\r\n this.categoryEditedId.set(null);\r\n if (result) {\r\n // this.accessibilitiesFacade.getCategories();\r\n // // Refresh category details if currently selected\r\n // if (this.selectedCategoryId() === category.id) {\r\n // this.accessibilitiesFacade.getCategoryDetails(category.id);\r\n // }\r\n }\r\n });\r\n }\r\n\r\n onDeleteCategory(event: MouseEvent, categoryId: number) {\r\n event.stopPropagation();\r\n\r\n this.confirmationService.confirmDelete({\r\n event: event,\r\n type: 'popup',\r\n accept: () => {\r\n this.categoryDeletedId.set(categoryId);\r\n this.accessibilitiesFacade.deleteCategory(categoryId).subscribe({\r\n next: () => {\r\n this.categoryDeletedId.set(null);\r\n if (this.selectedCategoryId() === categoryId) {\r\n this.selectedCategoryId.set(null);\r\n this.router.navigate(['../'], { relativeTo: this.route });\r\n }\r\n },\r\n error: () => {\r\n this.categoryDeletedId.set(null);\r\n },\r\n });\r\n },\r\n reject: () => {},\r\n });\r\n }\r\n\r\n onCategoryClick(categoryId: number) {\r\n this.selectedCategoryId.set(categoryId);\r\n this.accessibilitiesFacade.getCategoryDetails(categoryId);\r\n this.router.navigate(['../', categoryId], { relativeTo: this.route });\r\n }\r\n\r\n isCategorySelected(categoryId: number): boolean {\r\n return this.selectedCategoryId() === categoryId;\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <div\r\n class=\"mt-4 grid min-h-0 gap-4 xl:grid-cols-[minmax(18rem,20rem)_minmax(0,1fr)] xl:gap-7\"\r\n >\r\n <mt-card class=\"h-full min-h-0 max-[1279px]:h-auto\">\r\n <div class=\"flex h-full min-h-0 flex-col\">\r\n <ng-template #headless>\r\n <div\r\n class=\"flex items-center justify-between gap-3 border-b border-surface p-5\"\r\n >\r\n <h2 class=\"text-lg font-semibold m-0\">{{ t(\"categories\") }}</h2>\r\n </div>\r\n @if (isLoadingCategories()) {\r\n <div class=\"space-y-4 p-4\">\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"4rem\" />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"my-4 flex min-h-0 flex-col gap-3 overflow-auto pb-4 max-[1279px]:max-h-[40vh]\"\r\n >\r\n @for (category of categories(); track category.id) {\r\n <div\r\n class=\"mx-4 flex items-start gap-3 rounded-lg border-1 border-gray-300 p-3 transition-colors cursor-pointer\"\r\n [class.bg-primary-50]=\"isCategorySelected(category.id)\"\r\n [class.border-primary-400]=\"isCategorySelected(category.id)\"\r\n [style.--p-avatar-background]=\"\r\n isCategorySelected(category.id)\r\n ? 'var(--p-primary-color)'\r\n : 'var(--p-surface-100)'\r\n \"\r\n [style.--p-avatar-color]=\"\r\n isCategorySelected(category.id) ? '#ffffff' : ''\r\n \"\r\n (click)=\"onCategoryClick(category.id)\"\r\n >\r\n <mt-avatar\r\n class=\"shrink-0\"\r\n [icon]=\"'user.user-check-01'\"\r\n shape=\"square\"\r\n >\r\n </mt-avatar>\r\n <div class=\"flex-1 min-w-0\">\r\n <div class=\"font-medium truncate\">\r\n {{ category.name?.display }}\r\n </div>\r\n </div>\r\n <div class=\"flex shrink-0 self-start\">\r\n <mt-button\r\n variant=\"text\"\r\n size=\"small\"\r\n icon=\"editor.pencil-01\"\r\n severity=\"primary\"\r\n (click)=\"onEditCategory($event, category)\"\r\n [loading]=\"\r\n isUpdatingCategory() &&\r\n categoryEditedId() === category.id\r\n \"\r\n >\r\n </mt-button>\r\n <mt-button\r\n variant=\"text\"\r\n size=\"small\"\r\n icon=\"general.trash-01\"\r\n severity=\"danger\"\r\n (click)=\"onDeleteCategory($event, category.id)\"\r\n [loading]=\"\r\n isDeletingCategory() &&\r\n categoryDeletedId() === category.id\r\n \"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-12 text-muted-color\"\r\n >\r\n {{ \"no-data-found\" | transloco }}\r\n </div>\r\n }\r\n <div class=\"mx-4 mt-2\">\r\n <mt-button\r\n icon=\"general.plus\"\r\n (click)=\"onAddCategory()\"\r\n [label]=\"t('add-category')\"\r\n styleClass=\"w-full sm:w-auto\"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n }\r\n </ng-template>\r\n </div>\r\n </mt-card>\r\n <mt-card class=\"h-full min-h-0 max-[1279px]:h-auto\">\r\n <div class=\"flex h-full min-h-0 flex-col\">\r\n <ng-template #headless>\r\n <div class=\"p-5 mb-5 border-b border-surface\">\r\n <h2 class=\"text-lg font-semibold m-0\">\r\n {{ t(\"category-relations\") }}\r\n </h2>\r\n </div>\r\n\r\n <div class=\"mb-4 overflow-x-auto px-4 sm:px-5\">\r\n <mt-tabs\r\n class=\"min-w-max\"\r\n [(active)]=\"selectedTab\"\r\n [options]=\"tabsList\"\r\n size=\"small\"\r\n >\r\n </mt-tabs>\r\n </div>\r\n\r\n @if (selectedTab() === \"elements\") {\r\n <mt-category-elements\r\n [selectedCategoryId]=\"selectedCategoryId()\"\r\n [categoryLevels]=\"categoryLevels()\"\r\n />\r\n } @else if (selectedTab() === \"groups\") {\r\n <mt-category-groups\r\n [groupSelectControl]=\"groupSelectControl\"\r\n [availableGroups]=\"availableGroups()\"\r\n [categoryGroups]=\"categoryGroups()\"\r\n [selectedCategoryId]=\"selectedCategoryId()\"\r\n [isLoadingCategoryDetails]=\"isLoadingCategoryDetails()\"\r\n />\r\n }\r\n </ng-template>\r\n </div>\r\n </mt-card>\r\n </div>\r\n</ng-container>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,28 +1,28 @@
1
1
  {
2
2
  "name": "@masterteam/accessibilities",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
4
4
  "publishConfig": {
5
5
  "directory": "../../../dist/masterteam/accessibilities",
6
6
  "linkDirectory": false,
7
7
  "access": "public"
8
8
  },
9
9
  "peerDependencies": {
10
- "@angular/common": "^21.0.3",
11
- "@angular/core": "^21.0.3",
12
- "@angular/forms": "^21.0.3",
13
- "@angular/cdk": "^21.0.2",
14
- "@primeuix/themes": "^2.0.2",
15
- "@tailwindcss/postcss": "^4.1.17",
16
- "@jsverse/transloco": "^8.0.2",
17
- "postcss": "^8.5.6",
18
- "primeng": "21.0.1",
10
+ "@angular/common": "^21.2.8",
11
+ "@angular/core": "^21.2.8",
12
+ "@angular/forms": "^21.2.8",
13
+ "@angular/cdk": "^21.2.6",
14
+ "@primeuix/themes": "^2.0.3",
15
+ "@tailwindcss/postcss": "^4.2.2",
16
+ "@jsverse/transloco": "^8.3.0",
17
+ "postcss": "^8.5.9",
18
+ "primeng": "21.1.5",
19
19
  "rxjs": "^7.8.2",
20
- "tailwindcss": "^4.1.17",
20
+ "tailwindcss": "^4.2.2",
21
21
  "tailwindcss-primeui": "^0.6.1",
22
22
  "@ngxs/store": "^20.1.0",
23
- "@masterteam/components": "^0.0.135",
24
- "@masterteam/icons": "^0.0.14",
25
- "@masterteam/forms": "^0.0.63"
23
+ "@masterteam/forms": "^0.0.66",
24
+ "@masterteam/components": "^0.0.143",
25
+ "@masterteam/icons": "^0.0.14"
26
26
  },
27
27
  "sideEffects": false,
28
28
  "exports": {
@@ -42,6 +42,7 @@
42
42
  },
43
43
  "module": "fesm2022/masterteam-accessibilities.mjs",
44
44
  "typings": "types/masterteam-accessibilities.d.ts",
45
+ "type": "module",
45
46
  "dependencies": {
46
47
  "tslib": "^2.8.1"
47
48
  }