@masterteam/accessibilities 0.0.4 → 0.0.6

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.
@@ -1,2 +1,2 @@
1
- /*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
2
  @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-sky-50:oklch(97.7% .013 236.62);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--spacing:.25rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-medium:500;--font-weight-semibold:600;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\!absolute{position:absolute!important}.static{position:static}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.m-0{margin:calc(var(--spacing) * 0)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-auto{margin-inline:auto}.my-3{margin-block:calc(var(--spacing) * 3)}.my-5{margin-block:calc(var(--spacing) * 5)}.ms-auto{margin-inline-start:auto}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-20{margin-top:calc(var(--spacing) * 20)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.flex{display:flex}.h-12{height:calc(var(--spacing) * 12)}.h-20{height:calc(var(--spacing) * 20)}.h-full{height:100%}.\!w-\[30vw\]{width:30vw!important}.w-250{width:calc(var(--spacing) * 250)}.w-\[20\%\]{width:20%}.w-\[30\%\]{width:30%}.w-\[50\%\]{width:50%}.w-\[80\%\]{width:80%}.w-full{width:100%}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0{gap:calc(var(--spacing) * 0)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-7{gap:calc(var(--spacing) * 7)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded-lg{border-radius:var(--radius-lg)}.border,.border-1{border-style:var(--tw-border-style);border-width:1px}.border-s-1{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-primary-400{border-color:var(--p-primary-400)}@supports (color:color-mix(in lab, red, red)){.border-primary-400{border-color:color-mix(in srgb, var(--p-primary-400) calc(100% * 1), transparent)}}.border-surface{border-color:var(--p-content-border-color)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-primary-50{background-color:var(--p-primary-50)}@supports (color:color-mix(in lab, red, red)){.bg-primary-50{background-color:color-mix(in srgb, var(--p-primary-50) calc(100% * 1), transparent)}}.bg-sky-50{background-color:var(--color-sky-50)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-8{padding-block:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-gray-500{color:var(--color-gray-500)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-muted-color{color:var(--p-text-muted-color)}.\!shadow-none{--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}@keyframes enter{0%{opacity:var(--p-enter-opacity,1);transform:translate3d(var(--p-enter-translate-x,0), var(--p-enter-translate-y,0), 0) scale3d(var(--p-enter-scale,1), var(--p-enter-scale,1), var(--p-enter-scale,1)) rotate(var(--p-enter-rotate,0))}}@keyframes leave{to{opacity:var(--p-leave-opacity,1);transform:translate3d(var(--p-leave-translate-x,0), var(--p-leave-translate-y,0), 0) scale3d(var(--p-leave-scale,1), var(--p-leave-scale,1), var(--p-leave-scale,1)) rotate(var(--p-leave-rotate,0))}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
@@ -188,7 +188,7 @@ let AccessibilitiesState = class AccessibilitiesState extends CrudStateBase {
188
188
  request$: req$,
189
189
  onSuccess: (response, state) => {
190
190
  if (response.data) {
191
- const updatedAccessibilities = state.accessibilities.map((a) => a.key === response.data.key ? response.data : a);
191
+ const updatedAccessibilities = mergeAccessibilitiesByCategory(state.accessibilities, [response.data]);
192
192
  return {
193
193
  accessibilities: updatedAccessibilities,
194
194
  selectedAccessibility: response.data,
@@ -209,10 +209,7 @@ let AccessibilitiesState = class AccessibilitiesState extends CrudStateBase {
209
209
  if (!res.data || res.data.length === 0) {
210
210
  return {};
211
211
  }
212
- const updatedAccessibilities = state.accessibilities.map((accessibility) => {
213
- const updated = res.data.find((a) => a.key === accessibility.key);
214
- return updated ?? accessibility;
215
- });
212
+ const updatedAccessibilities = mergeAccessibilitiesByCategory(state.accessibilities, res.data);
216
213
  return {
217
214
  accessibilities: updatedAccessibilities,
218
215
  };
@@ -439,6 +436,10 @@ AccessibilitiesState = __decorate([
439
436
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AccessibilitiesState, decorators: [{
440
437
  type: Injectable
441
438
  }], propDecorators: { getAccessibilities: [], updateAccessibility: [], updateAccessibilities: [], getGroups: [], getCategories: [], addCategory: [], updateCategory: [], deleteCategory: [], getCategoryDetails: [], addGroupsToCategory: [], removeGroupFromCategory: [], getLevelsTree: [], updateLevelsTreeForCategory: [] } });
439
+ function mergeAccessibilitiesByCategory(current, updates) {
440
+ const updatesByCategory = new Map(updates.map((accessibility) => [accessibility.category, accessibility]));
441
+ return current.map((accessibility) => updatesByCategory.get(accessibility.category) ?? accessibility);
442
+ }
442
443
 
443
444
  class AccessibilitiesFacade {
444
445
  store = inject(Store);
@@ -724,7 +725,7 @@ class AccessibilitiesList {
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 });
727
- 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=\"w-250 my-5 mx-auto\">\r\n <div class=\"flex 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=\"mb-5 p-2 mx-5 rounded-lg border-1 border-surface flex items-center justify-between\"\r\n >\r\n <div class=\"flex items-center gap-3\">\r\n <mt-avatar\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>\r\n <div class=\"font-semibold\">\r\n {{ accessibility.name?.display }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center\">\r\n <div\r\n class=\"py-1 px-3 mx-4 text-sm font-semibold rounded-lg border-1 border-surface\"\r\n >\r\n {{ accessibility.groupsCounts }} {{ t(\"groups\") }}\r\n </div>\r\n <div class=\"border-surface border-s-1 px-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=\"flex items-center justify-center mt-20 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" }] });
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=\"w-250 my-5 mx-auto\">\r\n <div class=\"flex 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=\"mb-5 p-2 mx-5 rounded-lg border-1 border-surface flex items-center justify-between\"\r\n >\r\n <div class=\"flex items-center gap-3\">\r\n <mt-avatar\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>\r\n <div class=\"font-semibold\">\r\n {{ accessibility.name?.display }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center\">\r\n <div\r\n class=\"py-1 px-3 mx-4 text-sm font-semibold rounded-lg border-1 border-surface\"\r\n >\r\n {{ accessibility.groupsCount }} {{ t(\"groups\") }}\r\n </div>\r\n <div class=\"border-surface border-s-1 px-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=\"flex items-center justify-center mt-20 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" }] });
728
729
  }
729
730
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: AccessibilitiesList, decorators: [{
730
731
  type: Component,
@@ -736,7 +737,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImpor
736
737
  Button,
737
738
  SkeletonModule,
738
739
  TranslocoPipe,
739
- ], template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <mt-card class=\"w-250 my-5 mx-auto\">\r\n <div class=\"flex 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=\"mb-5 p-2 mx-5 rounded-lg border-1 border-surface flex items-center justify-between\"\r\n >\r\n <div class=\"flex items-center gap-3\">\r\n <mt-avatar\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>\r\n <div class=\"font-semibold\">\r\n {{ accessibility.name?.display }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center\">\r\n <div\r\n class=\"py-1 px-3 mx-4 text-sm font-semibold rounded-lg border-1 border-surface\"\r\n >\r\n {{ accessibility.groupsCounts }} {{ t(\"groups\") }}\r\n </div>\r\n <div class=\"border-surface border-s-1 px-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=\"flex items-center justify-center mt-20 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" }]
740
+ ], template: "<ng-container *transloco=\"let t; prefix: 'accessibilities'\">\r\n <mt-card class=\"w-250 my-5 mx-auto\">\r\n <div class=\"flex 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=\"mb-5 p-2 mx-5 rounded-lg border-1 border-surface flex items-center justify-between\"\r\n >\r\n <div class=\"flex items-center gap-3\">\r\n <mt-avatar\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>\r\n <div class=\"font-semibold\">\r\n {{ accessibility.name?.display }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center\">\r\n <div\r\n class=\"py-1 px-3 mx-4 text-sm font-semibold rounded-lg border-1 border-surface\"\r\n >\r\n {{ accessibility.groupsCount }} {{ t(\"groups\") }}\r\n </div>\r\n <div class=\"border-surface border-s-1 px-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=\"flex items-center justify-center mt-20 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" }]
740
741
  }] });
741
742
 
742
743
  class AddCategoryModal {
@@ -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;\r\n}\r\n\r\nexport interface AccessibilitySetting {\r\n id: number;\r\n moduleKey: string;\r\n name: any;\r\n groupsCount: number;\r\n groups: Group[];\r\n}\r\n\r\nexport interface Accessibility {\r\n key: string;\r\n name: any;\r\n groupsCounts: 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 = state.accessibilities.map((a) =>\r\n a.key === response.data!.key ? response.data! : a,\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 = state.accessibilities.map(\r\n (accessibility) => {\r\n const updated = res.data!.find((a) => a.key === accessibility.key);\r\n return updated ?? accessibility;\r\n },\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","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 [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 [class]=\"'flex flex-col gap-4 p-4 ' + modal.contentClass\">\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 items-center justify-between bg-gray-50 px-3 py-2 rounded-lg border border-gray-100\"\r\n >\r\n <div class=\"flex items-center gap-2\">\r\n <mt-avatar [icon]=\"'user.users-01'\" shape=\"square\">\r\n </mt-avatar>\r\n <span class=\"text-sm font-medium\">{{\r\n group.name?.display\r\n }}</span>\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 (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 [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"t('save')\"\r\n (click)=\"onSave()\"\r\n [loading]=\"saveLoading()\"\r\n severity=\"primary\"\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 />\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: '!w-[30vw] !absolute !shadow-none',\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=\"w-250 my-5 mx-auto\">\r\n <div class=\"flex 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=\"mb-5 p-2 mx-5 rounded-lg border-1 border-surface flex items-center justify-between\"\r\n >\r\n <div class=\"flex items-center gap-3\">\r\n <mt-avatar\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>\r\n <div class=\"font-semibold\">\r\n {{ accessibility.name?.display }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center\">\r\n <div\r\n class=\"py-1 px-3 mx-4 text-sm font-semibold rounded-lg border-1 border-surface\"\r\n >\r\n {{ accessibility.groupsCounts }} {{ t(\"groups\") }}\r\n </div>\r\n <div class=\"border-surface border-s-1 px-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=\"flex items-center justify-center mt-20 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 [class]=\"'flex flex-col gap-3 p-4 ' + modal.contentClass\">\r\n <mt-dynamic-form\r\n [formConfig]=\"dynamicFormConfig()\"\r\n [formControl]=\"categoryFormControl\"\r\n />\r\n </div>\r\n\r\n <div [class]=\"modal.footerClass\">\r\n <mt-button variant=\"outlined\" [label]=\"t('cancel')\" (click)=\"onCancel()\" />\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 />\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 gap-3 items-end\">\r\n <div class=\"w-[50%]\">\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 >\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=\"flex my-3 items-center border rounded-lg p-1 px-6 border-surface\"\r\n >\r\n <div class=\"text-lg w-[30%]\">{{ group.name?.display }}</div>\r\n <div class=\"text-md w-[30%]\">\r\n {{ group.usersCount }} {{ t(\"users\") }}\r\n </div>\r\n <div class=\"flex items-center gap-0 ms-auto\">\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 />\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 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 width: '500px',\r\n styleClass: '!absolute !shadow-none',\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 width: '500px',\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 class=\"flex gap-7\">\r\n <mt-card class=\"h-full w-[20%] mt-4\">\r\n <div class=\"flex flex-col h-full\">\r\n <ng-template #headless>\r\n <div\r\n class=\"p-5 mb-5 border-b border-surface flex justify-between items-center\"\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 class=\"flex flex-col gap-3 mb-4 overflow-auto\">\r\n @for (category of categories(); track category.id) {\r\n <div\r\n class=\"p-2 mx-4 border-1 border-gray-300 rounded-lg cursor-pointer transition-colors flex items-center gap-3\"\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 [icon]=\"'user.user-check-01'\" shape=\"square\">\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\">\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 >\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 w-[80%] mt-4\">\r\n <div class=\"flex flex-col h-full\">\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=\"px-5 mb-4\">\r\n <mt-tabs [(active)]=\"selectedTab\" [options]=\"tabsList\" size=\"small\">\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 [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 [class]=\"'flex flex-col gap-4 p-4 ' + modal.contentClass\">\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 items-center justify-between bg-gray-50 px-3 py-2 rounded-lg border border-gray-100\"\r\n >\r\n <div class=\"flex items-center gap-2\">\r\n <mt-avatar [icon]=\"'user.users-01'\" shape=\"square\">\r\n </mt-avatar>\r\n <span class=\"text-sm font-medium\">{{\r\n group.name?.display\r\n }}</span>\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 (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 [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"t('save')\"\r\n (click)=\"onSave()\"\r\n [loading]=\"saveLoading()\"\r\n severity=\"primary\"\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 />\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: '!w-[30vw] !absolute !shadow-none',\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=\"w-250 my-5 mx-auto\">\r\n <div class=\"flex 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=\"mb-5 p-2 mx-5 rounded-lg border-1 border-surface flex items-center justify-between\"\r\n >\r\n <div class=\"flex items-center gap-3\">\r\n <mt-avatar\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>\r\n <div class=\"font-semibold\">\r\n {{ accessibility.name?.display }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex items-center\">\r\n <div\r\n class=\"py-1 px-3 mx-4 text-sm font-semibold rounded-lg border-1 border-surface\"\r\n >\r\n {{ accessibility.groupsCount }} {{ t(\"groups\") }}\r\n </div>\r\n <div class=\"border-surface border-s-1 px-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=\"flex items-center justify-center mt-20 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 [class]=\"'flex flex-col gap-3 p-4 ' + modal.contentClass\">\r\n <mt-dynamic-form\r\n [formConfig]=\"dynamicFormConfig()\"\r\n [formControl]=\"categoryFormControl\"\r\n />\r\n </div>\r\n\r\n <div [class]=\"modal.footerClass\">\r\n <mt-button variant=\"outlined\" [label]=\"t('cancel')\" (click)=\"onCancel()\" />\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 />\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 gap-3 items-end\">\r\n <div class=\"w-[50%]\">\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 >\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=\"flex my-3 items-center border rounded-lg p-1 px-6 border-surface\"\r\n >\r\n <div class=\"text-lg w-[30%]\">{{ group.name?.display }}</div>\r\n <div class=\"text-md w-[30%]\">\r\n {{ group.usersCount }} {{ t(\"users\") }}\r\n </div>\r\n <div class=\"flex items-center gap-0 ms-auto\">\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 />\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 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 width: '500px',\r\n styleClass: '!absolute !shadow-none',\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 width: '500px',\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 class=\"flex gap-7\">\r\n <mt-card class=\"h-full w-[20%] mt-4\">\r\n <div class=\"flex flex-col h-full\">\r\n <ng-template #headless>\r\n <div\r\n class=\"p-5 mb-5 border-b border-surface flex justify-between items-center\"\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 class=\"flex flex-col gap-3 mb-4 overflow-auto\">\r\n @for (category of categories(); track category.id) {\r\n <div\r\n class=\"p-2 mx-4 border-1 border-gray-300 rounded-lg cursor-pointer transition-colors flex items-center gap-3\"\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 [icon]=\"'user.user-check-01'\" shape=\"square\">\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\">\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 >\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 w-[80%] mt-4\">\r\n <div class=\"flex flex-col h-full\">\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=\"px-5 mb-4\">\r\n <mt-tabs [(active)]=\"selectedTab\" [options]=\"tabsList\" size=\"small\">\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,6 +1,6 @@
1
1
  {
2
2
  "name": "@masterteam/accessibilities",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "publishConfig": {
5
5
  "directory": "../../../dist/masterteam/accessibilities",
6
6
  "linkDirectory": false,
@@ -20,9 +20,9 @@
20
20
  "tailwindcss": "^4.1.17",
21
21
  "tailwindcss-primeui": "^0.6.1",
22
22
  "@ngxs/store": "^20.1.0",
23
- "@masterteam/components": "^0.0.103",
24
- "@masterteam/icons": "^0.0.13",
25
- "@masterteam/forms": "^0.0.49"
23
+ "@masterteam/components": "^0.0.116",
24
+ "@masterteam/forms": "^0.0.56",
25
+ "@masterteam/icons": "^0.0.14"
26
26
  },
27
27
  "sideEffects": false,
28
28
  "exports": {
@@ -58,25 +58,32 @@ interface Group {
58
58
  id: number;
59
59
  groupId?: number;
60
60
  name: any;
61
- usersCount: number;
62
- members: GroupMember[];
63
- createdAt: {
61
+ usersCount?: number;
62
+ members?: GroupMember[];
63
+ createdAt?: {
64
64
  displayValue: string;
65
65
  actualValue: string;
66
66
  };
67
- description: string;
67
+ description?: string | null;
68
68
  }
69
69
  interface AccessibilitySetting {
70
70
  id: number;
71
71
  moduleKey: string;
72
+ moduleName: any;
73
+ category: string;
72
74
  name: any;
73
- groupsCount: number;
75
+ enableMFACheck: boolean;
76
+ createdAt: {
77
+ displayValue: string;
78
+ actualValue: string;
79
+ };
80
+ applicationId: number;
74
81
  groups: Group[];
75
82
  }
76
83
  interface Accessibility {
77
- key: string;
84
+ category: string;
78
85
  name: any;
79
- groupsCounts: number;
86
+ groupsCount: number;
80
87
  settings: AccessibilitySetting[];
81
88
  }
82
89
  declare enum AccessibilityActionKey {