@masterteam/permissions 0.0.4 → 0.0.5

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.1.18 | MIT License | https://tailwindcss.com */
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-gray-300:oklch(87.2% .01 258.338);--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--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;--radius-2xl:1rem;--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}.mx-4{margin-inline:calc(var(--spacing)*4)}.my-4{margin-block:calc(var(--spacing)*4)}.my-5{margin-block:calc(var(--spacing)*5)}.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-full{height:100%}.\!w-\[24\%\]{width:24%!important}.w-1\/2{width:50%}.w-1\/5{width:20%}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-lg{border-radius:var(--radius-lg)}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.border,.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.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-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-surface-50{background-color:var(--p-surface-50)}@supports (color:color-mix(in lab, red, red)){.bg-surface-50{background-color:color-mix(in srgb,var(--p-surface-50)calc(100%*1),transparent)}}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.px-4{padding-inline:calc(var(--spacing)*4)}.pb-0{padding-bottom:calc(var(--spacing)*0)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.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))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--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-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))}@media (hover:hover){.hover\:bg-surface-100:hover{background-color:var(--p-surface-100)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-100:hover{background-color:color-mix(in srgb,var(--p-surface-100)calc(100%*1),transparent)}}}}@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}
1
+ /*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
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-gray-300:oklch(87.2% .01 258.338);--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--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;--radius-2xl:1rem;--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)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-5{margin-block:calc(var(--spacing) * 5)}.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-full{height:100%}.\!w-\[24\%\]{width:24%!important}.w-1\/2{width:50%}.w-1\/5{width:20%}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-lg{border-radius:var(--radius-lg)}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.border,.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.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-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-surface-50{background-color:var(--p-surface-50)}@supports (color:color-mix(in lab, red, red)){.bg-surface-50{background-color:color-mix(in srgb, var(--p-surface-50) calc(100% * 1), transparent)}}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.px-4{padding-inline:calc(var(--spacing) * 4)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.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))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--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-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))}@media (hover:hover){.hover\:bg-surface-100:hover{background-color:var(--p-surface-100)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-100:hover{background-color:color-mix(in srgb, var(--p-surface-100) calc(100% * 1), transparent)}}}}@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}
@@ -742,18 +742,32 @@ class PermissionsPage {
742
742
  return;
743
743
  }
744
744
  }
745
- if (this.permissions().length == 0 && this.selectedTab() == 'roles') {
746
- if (this.groupOrRoleId() && this.levelRoles().length > 0) {
747
- const role = this.levelRoles()
748
- .map((levelRoles) => levelRoles.roles)
749
- .flat()
750
- .find((r) => r?.value === this.groupOrRoleId()?.toString());
751
- if (role) {
752
- this.selectedRole.set(this.groupOrRoleId().toString());
753
- this.permissionsFacade.selectRole(role.value);
754
- }
745
+ });
746
+ effect(() => {
747
+ if (this.selectedTab() !== 'roles' || this.loading()) {
748
+ return;
749
+ }
750
+ const roles = this.getRoles();
751
+ if (!roles.length) {
752
+ return;
753
+ }
754
+ const routeRoleValue = this.groupOrRoleId()?.toString();
755
+ const selectedRoleValue = this.selectedRoleValue();
756
+ const routeRole = routeRoleValue
757
+ ? roles.find((role) => role?.value === routeRoleValue)
758
+ : null;
759
+ if (routeRole) {
760
+ if (selectedRoleValue !== routeRole.value) {
761
+ this.selectedRole.set(routeRole.value);
762
+ this.permissionsFacade.selectRole(routeRole.value);
755
763
  }
764
+ return;
756
765
  }
766
+ if (selectedRoleValue &&
767
+ roles.some((role) => role?.value === selectedRoleValue)) {
768
+ return;
769
+ }
770
+ this.selectFirstRole(true);
757
771
  });
758
772
  }
759
773
  ngOnInit() {
@@ -782,6 +796,23 @@ class PermissionsPage {
782
796
  this.router.navigate(['roles', roleValue], { relativeTo: this.route });
783
797
  this.permissionsFacade.selectRole(roleValue);
784
798
  }
799
+ getRoles() {
800
+ return this.levelRoles()
801
+ .map((levelRoles) => levelRoles.roles ?? [])
802
+ .flat();
803
+ }
804
+ selectFirstRole(replaceUrl = false) {
805
+ const firstRoleValue = this.getRoles()[0]?.value;
806
+ if (!firstRoleValue) {
807
+ return;
808
+ }
809
+ this.selectedRole.set(firstRoleValue);
810
+ this.router.navigate(['roles', firstRoleValue], {
811
+ relativeTo: this.route,
812
+ replaceUrl,
813
+ });
814
+ this.permissionsFacade.selectRole(firstRoleValue);
815
+ }
785
816
  selectGroup(groupId) {
786
817
  this.router.navigate(['groups', groupId], { relativeTo: this.route });
787
818
  this.permissionsFacade.selectGroup(groupId);
@@ -830,15 +861,8 @@ class PermissionsPage {
830
861
  }
831
862
  onTabChange($event) {
832
863
  if ($event == 'roles') {
833
- // Navigate to first role if available
834
- const firstRole = this.levelRoles()
835
- .map((levelRoles) => levelRoles.roles)
836
- .flat()[0];
837
- if (firstRole?.value) {
838
- this.router.navigate(['roles', firstRole.value], {
839
- relativeTo: this.route,
840
- });
841
- this.permissionsFacade.selectRole(firstRole.value);
864
+ if (this.levelRoles().length) {
865
+ this.selectFirstRole();
842
866
  }
843
867
  else {
844
868
  this.router.navigate(['roles'], { relativeTo: this.route });
@@ -1 +1 @@
1
- {"version":3,"file":"masterteam-permissions.mjs","sources":["../../../../packages/masterteam/permissions/src/store/permissions/permissions.model.ts","../../../../packages/masterteam/permissions/src/store/permissions/permissions.actions.ts","../../../../packages/masterteam/permissions/src/store/permissions/permissions.state.ts","../../../../packages/masterteam/permissions/src/store/permissions/permissions.facade.ts","../../../../packages/masterteam/permissions/src/lib/permissions-page/permissions-edit-dialog/permissions-edit-dialog.ts","../../../../packages/masterteam/permissions/src/lib/permissions-page/permissions-edit-dialog/permissions-edit-dialog.html","../../../../packages/masterteam/permissions/src/lib/permissions-page/permissions-page.ts","../../../../packages/masterteam/permissions/src/lib/permissions-page/permissions-page.html","../../../../packages/masterteam/permissions/src/store/index.ts","../../../../packages/masterteam/permissions/src/masterteam-permissions.ts"],"sourcesContent":["import { LoadingStateShape } from '../utils/state-helpers';\r\n\r\nexport interface Role {\r\n name: string;\r\n value: string;\r\n}\r\nexport interface LevelRoles {\r\n level?: string;\r\n levelKey?: string;\r\n scopeType?: string;\r\n scopeId?: string;\r\n roles?: Role[];\r\n}\r\n\r\nexport interface PermissionAction {\r\n id: number;\r\n name: string;\r\n isSelected: boolean;\r\n}\r\n\r\nexport interface PermissionLog {\r\n name: string;\r\n actions: PermissionAction[];\r\n}\r\n\r\nexport interface LevelPermission {\r\n levelName: string;\r\n modules: PermissionLog[];\r\n}\r\n\r\nexport interface RolesResponse {\r\n endpoint: string;\r\n status: number;\r\n code: number;\r\n locale: string;\r\n message: string;\r\n errors: null | string[];\r\n data: LevelRoles[];\r\n cacheSession: string;\r\n}\r\n\r\nexport interface PermissionsResponseData {\r\n modules: PermissionLog[];\r\n}\r\n\r\nexport interface PermissionsResponse {\r\n endpoint: string;\r\n status: number;\r\n code: number;\r\n locale: string;\r\n message: string;\r\n errors: null | string[];\r\n data: PermissionsResponseData;\r\n cacheSession: string;\r\n}\r\n\r\nexport interface GroupPermissionsResponse {\r\n endpoint: string;\r\n status: number;\r\n code: number;\r\n locale: string;\r\n message: string;\r\n errors: null | string[];\r\n data: LevelPermission[];\r\n cacheSession: string;\r\n}\r\n\r\nexport interface UpdatePermissionPayload {\r\n roleValue: string;\r\n levelId: string;\r\n permissions: LevelPermission[];\r\n}\r\n\r\nexport enum PermissionsActionKey {\r\n LoadRoles = 'loadRoles',\r\n SelectRole = 'selectRole',\r\n SelectGroup = 'selectGroup',\r\n LoadPermissions = 'loadPermissions',\r\n LoadGroupPermissions = 'loadGroupPermissions',\r\n UpdatePermission = 'updatePermission',\r\n UpdateGroupPermission = 'updateGroupPermission',\r\n ToggleAllLevelPermissions = 'toggleAllLevelPermissions',\r\n ToggleAllGroupPermissions = 'toggleAllGroupPermissions',\r\n}\r\n\r\nexport interface PermissionsStateModel extends LoadingStateShape<PermissionsActionKey> {\r\n roles: LevelRoles[];\r\n selectedRoleValue: string | null;\r\n selectedGroupValue: string | number | null;\r\n permissions: PermissionLog[];\r\n groupPermissions: LevelPermission[];\r\n currentLevelId: string | null;\r\n moduleType: string;\r\n moduleId: string | number;\r\n parentModuleType?: string | null;\r\n parentModuleId?: string | number | null;\r\n parentPath?: string;\r\n}\r\n\r\nexport enum ModuleType {\r\n LEVEL = 'level',\r\n LOG = 'log',\r\n LEVELLOG = 'levelLog',\r\n}\r\n","export class LoadRoles {\r\n static readonly type = '[Permissions] Load Roles';\r\n constructor() {}\r\n}\r\n\r\nexport class SelectRole {\r\n static readonly type = '[Permissions] Select Role';\r\n constructor(public roleValue: string) {}\r\n}\r\n\r\nexport class SelectGroup {\r\n static readonly type = '[Permissions] Select Group';\r\n constructor(public groupId: number) {}\r\n}\r\n\r\nexport class LoadPermissions {\r\n static readonly type = '[Permissions] Load Permissions';\r\n constructor(\r\n public roleValue: string,\r\n public levelId: string,\r\n ) {}\r\n}\r\n\r\nexport class LoadGroupPermissions {\r\n static readonly type = '[Permissions] Load Group Permissions';\r\n constructor(\r\n public groupId: number,\r\n public levelId: string,\r\n ) {}\r\n}\r\n\r\nexport class UpdatePermissionLocally {\r\n static readonly type = '[Permissions] Update Permission Locally';\r\n constructor(\r\n public roleValue: string,\r\n public levelId: string,\r\n public actionId: number,\r\n public isSelected: boolean,\r\n ) {}\r\n}\r\n\r\nexport class UpdatePermission {\r\n static readonly type = '[Permissions] Update Permission';\r\n constructor(\r\n public roleValue: string,\r\n public levelId: string,\r\n ) {}\r\n}\r\n\r\nexport class UpdateGroupPermission {\r\n static readonly type = '[Permissions] Update Group Permission';\r\n constructor(\r\n public groupId: string,\r\n public levelId: string,\r\n ) {}\r\n}\r\n\r\nexport class ToggleAllLevelPermissions {\r\n static readonly type = '[Permissions] Toggle All Level Permissions';\r\n constructor(\r\n public roleValue: string,\r\n public levelId: string,\r\n public levelName: string,\r\n public enabled: boolean,\r\n ) {}\r\n}\r\n\r\nexport class ToggleAllGroupPermissions {\r\n static readonly type = '[Permissions] Toggle All Group Permissions';\r\n constructor(\r\n public levelId: string,\r\n public groupId: string,\r\n public enabled: boolean,\r\n ) {}\r\n}\r\n\r\nexport class SetModuleInfo {\r\n static readonly type = '[Permissions] Set Module Info';\r\n\r\n constructor(\r\n public readonly moduleType: string,\r\n public readonly moduleId: string | number,\r\n public readonly parentModuleType?: string,\r\n public readonly parentModuleId?: string | number,\r\n public readonly parentPath?: string,\r\n ) {}\r\n}\r\n\r\nexport class Reset {\r\n static readonly type = '[Permissions] Reset Module Info';\r\n\r\n constructor() {}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Action, Selector, State, StateContext } from '@ngxs/store';\r\nimport { map } from 'rxjs';\r\nimport { CrudStateBase, handleApiRequest } from '@masterteam/components';\r\nimport {\r\n GroupPermissionsResponse,\r\n LevelPermission,\r\n LevelRoles,\r\n ModuleType,\r\n PermissionLog,\r\n PermissionsResponse,\r\n PermissionsActionKey,\r\n PermissionsStateModel,\r\n RolesResponse,\r\n} from './permissions.model';\r\nimport * as PermissionsActions from './permissions.actions';\r\n\r\n@State<PermissionsStateModel>({\r\n name: 'permissions',\r\n defaults: {\r\n roles: [],\r\n selectedRoleValue: null,\r\n selectedGroupValue: null,\r\n permissions: [],\r\n groupPermissions: [],\r\n currentLevelId: null,\r\n moduleType: '',\r\n moduleId: '',\r\n parentModuleType: null,\r\n parentModuleId: null,\r\n parentPath: '',\r\n loadingActive: [], // Required by LoadingStateShape\r\n errors: {}, // Required by LoadingStateShape\r\n },\r\n})\r\n@Injectable()\r\nexport class PermissionsState extends CrudStateBase<\r\n LevelRoles,\r\n PermissionsStateModel,\r\n PermissionsActionKey\r\n> {\r\n private http = inject(HttpClient);\r\n\r\n // ============================================================================\r\n // Data Selectors - Individual for fine-grained reactivity\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getRoles(state: PermissionsStateModel): LevelRoles[] {\r\n return state.roles;\r\n }\r\n\r\n @Selector()\r\n static getSelectedRoleValue(state: PermissionsStateModel): string | null {\r\n return state.selectedRoleValue;\r\n }\r\n\r\n @Selector()\r\n static getSelectedGroupValue(\r\n state: PermissionsStateModel,\r\n ): string | number | null {\r\n return state.selectedGroupValue;\r\n }\r\n\r\n @Selector()\r\n static getPermissions(state: PermissionsStateModel): PermissionLog[] {\r\n return state.permissions;\r\n }\r\n\r\n @Selector()\r\n static getGroupPermissions(state: PermissionsStateModel): LevelPermission[] {\r\n return state.groupPermissions;\r\n }\r\n\r\n @Selector()\r\n static getModuleType(state: PermissionsStateModel): string {\r\n return state.moduleType;\r\n }\r\n\r\n @Selector()\r\n static getModuleId(state: PermissionsStateModel): string | number {\r\n return state.moduleId;\r\n }\r\n\r\n @Selector()\r\n static getLevelId(state: PermissionsStateModel): string {\r\n return state.moduleType === 'module'\r\n ? state.parentModuleId!.toString()\r\n : state.moduleId.toString();\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: PermissionsStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(\r\n state: PermissionsStateModel,\r\n ): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n // ============================================================================\r\n // CRUD Actions\r\n // ============================================================================\r\n\r\n // ============================================================================\r\n // CRUD Actions\r\n // ============================================================================\r\n\r\n @Action(PermissionsActions.LoadRoles)\r\n loadRoles(ctx: StateContext<PermissionsStateModel>) {\r\n const { moduleType, moduleId, parentPath } = ctx.getState();\r\n const state = ctx.getState();\r\n const req$ = this.http\r\n .get<RolesResponse>(\r\n `identity/roles${parentPath ? '' : '/scopes'}${parentPath}/${moduleType}/${moduleId}${parentPath ? '' : '?inherited=true'}`,\r\n )\r\n .pipe(map((response) => response.data));\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: PermissionsActionKey.LoadRoles,\r\n request$: req$,\r\n onSuccess: (roles: any) => ({\r\n roles: state.moduleType === 'module' ? [{ roles: roles }] : roles,\r\n currentLevelId: moduleId.toString() || '',\r\n }),\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // Simple State Updates (No HTTP)\r\n // ============================================================================\r\n\r\n @Action(PermissionsActions.SelectRole)\r\n selectRole(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.SelectRole,\r\n ) {\r\n const state = ctx.getState();\r\n ctx.patchState({ selectedRoleValue: action.roleValue });\r\n\r\n if (state.currentLevelId && action.roleValue) {\r\n ctx.dispatch(\r\n new PermissionsActions.LoadPermissions(\r\n action.roleValue,\r\n state.currentLevelId,\r\n ),\r\n );\r\n }\r\n }\r\n\r\n @Action(PermissionsActions.SelectGroup)\r\n selectGroup(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.SelectGroup,\r\n ) {\r\n const state = ctx.getState();\r\n ctx.patchState({ selectedGroupValue: action.groupId });\r\n\r\n if (state.currentLevelId) {\r\n ctx.dispatch(\r\n new PermissionsActions.LoadGroupPermissions(\r\n action.groupId,\r\n state.currentLevelId,\r\n ),\r\n );\r\n }\r\n }\r\n\r\n @Action(PermissionsActions.LoadPermissions)\r\n loadPermissions(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.LoadPermissions,\r\n ) {\r\n const state = ctx.getState();\r\n const modulePath =\r\n state.moduleType === 'module' ? `module/${state.moduleId}/` : '';\r\n const levelId =\r\n state.moduleType === 'module' ? state.parentModuleId! : state.moduleId;\r\n\r\n const req$ = this.http\r\n .get<PermissionsResponse>(\r\n `identity/roles/level/${levelId}/${modulePath}${action.roleValue}/permissions`,\r\n )\r\n .pipe(map((response) => response.data.modules));\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: PermissionsActionKey.LoadPermissions,\r\n request$: req$,\r\n onSuccess: (permissions) => ({\r\n permissions,\r\n }),\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.LoadGroupPermissions)\r\n loadGroupPermissions(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.LoadGroupPermissions,\r\n ) {\r\n const state = ctx.getState();\r\n const modulePath =\r\n state.moduleType === 'module' ? `module/${state.moduleId}/` : '';\r\n const levelId =\r\n state.moduleType === 'module' ? state.parentModuleId! : state.moduleId;\r\n\r\n const req$ = this.http\r\n .get<GroupPermissionsResponse>(\r\n `identity/groups/level/${levelId}/${modulePath}${action.groupId}/permissions`,\r\n )\r\n .pipe(map((response: any) => response.data.modules));\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: PermissionsActionKey.LoadPermissions,\r\n request$: req$,\r\n onSuccess: (permissions) => ({\r\n permissions,\r\n }),\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.UpdatePermissionLocally)\r\n updatePermissionLocally(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.UpdatePermissionLocally,\r\n ) {\r\n const state = ctx.getState();\r\n\r\n const updatedPermissions = state.permissions.map((log) => ({\r\n ...log,\r\n actions: log.actions.map((act) =>\r\n act.id === action.actionId\r\n ? { ...act, isSelected: action.isSelected }\r\n : act,\r\n ),\r\n }));\r\n\r\n ctx.patchState({ permissions: updatedPermissions });\r\n }\r\n\r\n // ============================================================================\r\n // Complex Operations - use handleApiRequest for transformations\r\n // ============================================================================\r\n\r\n @Action(PermissionsActions.UpdatePermission)\r\n updatePermission(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.UpdatePermission,\r\n ) {\r\n const state = ctx.getState();\r\n const updatedPermissions: any[] = [];\r\n state.permissions?.forEach((p) => {\r\n p?.actions.forEach((a: any) => {\r\n updatedPermissions.push({ id: a?.id, isSelected: a?.isSelected });\r\n });\r\n });\r\n const scopeId =\r\n state.moduleType === 'module' ? state.parentModuleId! : state.moduleId;\r\n\r\n const req$ = this.http.put<PermissionsResponse>(\r\n `identity/roles/${action.roleValue}/setAllPermissions`,\r\n { permissions: updatedPermissions },\r\n {\r\n params: {\r\n scopeId,\r\n scopeType: ModuleType.LEVEL,\r\n },\r\n },\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: PermissionsActionKey.UpdatePermission,\r\n request$: req$,\r\n onSuccess: () => ({}),\r\n onError: (error, currentState) => {\r\n // Rollback on error\r\n return { permissions: currentState.permissions };\r\n },\r\n errorMessage: 'Failed to update permission',\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.UpdateGroupPermission)\r\n updateGroupPermission(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.UpdateGroupPermission,\r\n ) {\r\n const state = ctx.getState();\r\n const updatedPermissions: any[] = [];\r\n state.permissions?.forEach((p) => {\r\n p?.actions.forEach((a: any) => {\r\n updatedPermissions.push({ id: a?.id, isSelected: a?.isSelected });\r\n });\r\n });\r\n\r\n const req$ = this.http.put<PermissionsResponse>(\r\n `identity/groups/${action.groupId}/setAllPermissions`,\r\n { permissions: updatedPermissions },\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: PermissionsActionKey.UpdateGroupPermission,\r\n request$: req$,\r\n onSuccess: () => ({}),\r\n onError: (error, currentState) => {\r\n // Rollback on error\r\n return { permissions: currentState.permissions };\r\n },\r\n errorMessage: 'Failed to update permission',\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.ToggleAllLevelPermissions)\r\n toggleAllLevelPermissions(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.ToggleAllLevelPermissions,\r\n ) {\r\n const state = ctx.getState();\r\n\r\n const updatedPermissions: any[] = [];\r\n state.permissions?.forEach((p) => {\r\n p?.actions.forEach((a: any) => {\r\n updatedPermissions.push({ id: a?.id, isSelected: action.enabled });\r\n });\r\n });\r\n\r\n const scopeId =\r\n state.moduleType === 'module' ? state.parentModuleId! : state.moduleId;\r\n\r\n const req$ = this.http.put<PermissionsResponse>(\r\n `identity/roles/${action.roleValue}/setAllPermissions`,\r\n { permissions: updatedPermissions },\r\n {\r\n params: {\r\n scopeId,\r\n scopeType: ModuleType.LEVEL,\r\n },\r\n },\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: PermissionsActionKey.ToggleAllLevelPermissions,\r\n request$: req$,\r\n onSuccess: () => ({}),\r\n onError: () => ({\r\n permissions: state.permissions,\r\n }),\r\n errorMessage: 'Failed to toggle all permissions',\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.ToggleAllGroupPermissions)\r\n toggleAllGroupPermissions(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.ToggleAllGroupPermissions,\r\n ) {\r\n const state = ctx.getState();\r\n\r\n const updatedPermissions: any[] = [];\r\n state.permissions?.forEach((p) => {\r\n p?.actions.forEach((a: any) => {\r\n updatedPermissions.push({ id: a?.id, isSelected: action.enabled });\r\n });\r\n });\r\n\r\n const req$ = this.http.put<PermissionsResponse>(\r\n `identity/groups/${action.groupId}/setAllPermissions`,\r\n { permissions: updatedPermissions },\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: PermissionsActionKey.ToggleAllGroupPermissions,\r\n request$: req$,\r\n onSuccess: () => ({\r\n groupPermissions: updatedPermissions,\r\n }),\r\n onError: () => ({\r\n groupPermissions: state.groupPermissions,\r\n }),\r\n errorMessage: 'Failed to toggle all permissions',\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.SetModuleInfo)\r\n setModuleInfo(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.SetModuleInfo,\r\n ) {\r\n let parentPath = '';\r\n if (action.parentModuleType && action.parentModuleId) {\r\n parentPath = `/${action.parentModuleType}/${action.parentModuleId}`;\r\n } else if (action.parentPath) {\r\n parentPath = action.parentPath;\r\n }\r\n ctx.patchState({\r\n moduleType: action.moduleType,\r\n moduleId: action.moduleId,\r\n parentModuleType: action.parentModuleType ?? null,\r\n parentModuleId: action.parentModuleId ?? null,\r\n parentPath: parentPath ?? '',\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.Reset)\r\n reset(ctx: StateContext<PermissionsStateModel>) {\r\n ctx.patchState({\r\n moduleType: '',\r\n moduleId: '',\r\n parentModuleType: null,\r\n parentModuleId: null,\r\n parentPath: '',\r\n roles: [],\r\n selectedRoleValue: null,\r\n selectedGroupValue: null,\r\n permissions: [],\r\n groupPermissions: [],\r\n });\r\n }\r\n}\r\n","import { inject, Injectable, computed } from '@angular/core';\r\nimport { Store, select } from '@ngxs/store';\r\nimport { PermissionsState } from './permissions.state';\r\nimport * as PermissionsActions from './permissions.actions';\r\nimport { Observable } from 'rxjs';\r\nimport { PermissionsActionKey } from './permissions.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PermissionsFacade {\r\n private store = inject(Store);\r\n\r\n // ============================================================================\r\n // Data Selectors - Memoized by NGXS (fine-grained reactivity)\r\n // ============================================================================\r\n readonly roles = select(PermissionsState.getRoles);\r\n readonly selectedRoleValue = select(PermissionsState.getSelectedRoleValue);\r\n readonly selectedGroupValue = select(PermissionsState.getSelectedGroupValue);\r\n readonly permissions = select(PermissionsState.getPermissions);\r\n readonly groupPermissions = select(PermissionsState.getGroupPermissions);\r\n readonly moduleType = select(PermissionsState.getModuleType);\r\n readonly moduleId = select(PermissionsState.getModuleId);\r\n readonly levelId = select(PermissionsState.getLevelId);\r\n\r\n // ============================================================================\r\n // Loading/Error Slices - Memoized by NGXS\r\n // ============================================================================\r\n private readonly loadingActive = select(PermissionsState.getLoadingActive);\r\n private readonly errors = select(PermissionsState.getErrors);\r\n\r\n // ============================================================================\r\n // Loading Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly isLoadingRoles = computed(() =>\r\n this.loadingActive().includes(PermissionsActionKey.LoadRoles),\r\n );\r\n readonly isLoadingPermissions = computed(() =>\r\n this.loadingActive().includes(PermissionsActionKey.LoadPermissions),\r\n );\r\n readonly isLoadingGroupPermissions = computed(() =>\r\n this.loadingActive().includes(PermissionsActionKey.LoadGroupPermissions),\r\n );\r\n readonly isUpdatingPermission = computed(() =>\r\n this.loadingActive().includes(PermissionsActionKey.UpdatePermission),\r\n );\r\n readonly isUpdatingGroupPermission = computed(() =>\r\n this.loadingActive().includes(PermissionsActionKey.UpdateGroupPermission),\r\n );\r\n readonly isTogglingLevelPermissions = computed(() =>\r\n this.loadingActive().includes(\r\n PermissionsActionKey.ToggleAllLevelPermissions,\r\n ),\r\n );\r\n readonly isTogglingGroupPermissions = computed(() =>\r\n this.loadingActive().includes(\r\n PermissionsActionKey.ToggleAllGroupPermissions,\r\n ),\r\n );\r\n\r\n // ============================================================================\r\n // Error Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly rolesError = computed(\r\n () => this.errors()[PermissionsActionKey.LoadRoles] ?? null,\r\n );\r\n readonly permissionsError = computed(\r\n () => this.errors()[PermissionsActionKey.LoadPermissions] ?? null,\r\n );\r\n readonly groupPermissionsError = computed(\r\n () => this.errors()[PermissionsActionKey.LoadGroupPermissions] ?? null,\r\n );\r\n readonly updatePermissionError = computed(\r\n () => this.errors()[PermissionsActionKey.UpdatePermission] ?? null,\r\n );\r\n readonly updateGroupPermissionError = computed(\r\n () => this.errors()[PermissionsActionKey.UpdateGroupPermission] ?? null,\r\n );\r\n\r\n // ============================================================================\r\n // Action Dispatchers\r\n // ============================================================================\r\n\r\n loadRoles() {\r\n return this.store.dispatch(new PermissionsActions.LoadRoles());\r\n }\r\n\r\n selectRole(roleValue: string) {\r\n if (roleValue) {\r\n return this.store.dispatch(new PermissionsActions.SelectRole(roleValue));\r\n }\r\n return;\r\n }\r\n\r\n selectGroup(groupId: number) {\r\n if (groupId) {\r\n return this.store.dispatch(new PermissionsActions.SelectGroup(groupId));\r\n }\r\n return;\r\n }\r\n\r\n loadPermissions(roleValue: string, levelId: string) {\r\n return this.store.dispatch(\r\n new PermissionsActions.LoadPermissions(roleValue, levelId),\r\n );\r\n }\r\n\r\n loadGroupPermissions(groupId: number, levelId: string) {\r\n return this.store.dispatch(\r\n new PermissionsActions.LoadGroupPermissions(groupId, levelId),\r\n );\r\n }\r\n\r\n updatePermissionLocally(\r\n roleValue: string,\r\n levelId: string,\r\n actionId: number,\r\n isSelected: boolean,\r\n ) {\r\n return this.store.dispatch(\r\n new PermissionsActions.UpdatePermissionLocally(\r\n roleValue,\r\n levelId,\r\n actionId,\r\n isSelected,\r\n ),\r\n );\r\n }\r\n\r\n updatePermission(roleValue: string, levelId: string) {\r\n return this.store.dispatch(\r\n new PermissionsActions.UpdatePermission(roleValue, levelId),\r\n );\r\n }\r\n updateGroupPermission(groupId: string, levelId: string) {\r\n return this.store.dispatch(\r\n new PermissionsActions.UpdateGroupPermission(groupId, levelId),\r\n );\r\n }\r\n\r\n toggleAllLevelPermissions(\r\n roleValue: string,\r\n levelId: string,\r\n levelName: string,\r\n enabled: boolean,\r\n ) {\r\n return this.store.dispatch(\r\n new PermissionsActions.ToggleAllLevelPermissions(\r\n roleValue,\r\n levelId,\r\n levelName,\r\n enabled,\r\n ),\r\n );\r\n }\r\n toggleAllGroupPermissions(\r\n levelId: string,\r\n groupId: string,\r\n enabled: boolean,\r\n ) {\r\n return this.store.dispatch(\r\n new PermissionsActions.ToggleAllGroupPermissions(\r\n levelId,\r\n groupId,\r\n enabled,\r\n ),\r\n );\r\n }\r\n setModuleInfo(\r\n moduleType: string,\r\n moduleId: string | number,\r\n parentModuleType?: string,\r\n parentModuleId?: string | number,\r\n parentPath?: string,\r\n ): Observable<unknown> {\r\n return this.store.dispatch(\r\n new PermissionsActions.SetModuleInfo(\r\n moduleType,\r\n moduleId,\r\n parentModuleType,\r\n parentModuleId,\r\n parentPath,\r\n ),\r\n );\r\n }\r\n\r\n reset() {\r\n return this.store.dispatch(new PermissionsActions.Reset());\r\n }\r\n}\r\n","import {\r\n Component,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ToggleField } from '@masterteam/components/toggle-field';\r\nimport { TranslocoModule } from '@jsverse/transloco';\r\nimport { PermissionsFacade } from '../../../store/permissions/permissions.facade';\r\nimport {\r\n PermissionLog,\r\n PermissionAction,\r\n} from '../../../store/permissions/permissions.model';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { ModalRef } from '@masterteam/components/dialog';\r\nimport { Button } from '@masterteam/components/button';\r\n\r\n@Component({\r\n selector: 'mt-permissions-edit-dialog',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n ToggleField,\r\n TranslocoModule,\r\n FormsModule,\r\n Button,\r\n ],\r\n templateUrl: './permissions-edit-dialog.html',\r\n styleUrl: './permissions-edit-dialog.scss',\r\n})\r\nexport class PermissionsEditDialog {\r\n private permissionsFacade = inject(PermissionsFacade);\r\n modal = inject(ModalService);\r\n ref: ModalRef = inject(ModalRef);\r\n // permissionGroup = input.required<PermissionLog | null>();\r\n permissionGroup = input<PermissionLog | null>(null);\r\n\r\n // Use new facade pattern\r\n addPermissionsLoading = this.permissionsFacade.isUpdatingPermission;\r\n addPermissionsError = this.permissionsFacade.updatePermissionError;\r\n\r\n levelId = input.required<string>();\r\n roleValue = input.required<string>();\r\n isGroup = input.required<boolean>();\r\n\r\n closeDialog = output<void>();\r\n\r\n actionControls = signal<Map<number, FormControl>>(new Map());\r\n toggleAll = signal<boolean>(false);\r\n\r\n constructor() {\r\n effect(() => {\r\n const group = this.permissionGroup();\r\n if (group) {\r\n const controls = new Map<number, FormControl>();\r\n group.actions.forEach((action) => {\r\n const control = new FormControl(action.isSelected);\r\n control.valueChanges.subscribe((value) => {\r\n if (value !== null) {\r\n this.onPermissionToggle(action.id, value);\r\n }\r\n });\r\n controls.set(action.id, control);\r\n });\r\n this.actionControls.set(controls);\r\n this.toggleAll.set(group.actions.every((action) => action.isSelected));\r\n }\r\n });\r\n }\r\n\r\n onPermissionToggle(actionId: number, isSelected: boolean) {\r\n const levelId = this.levelId();\r\n const roleValue = this.roleValue();\r\n if (levelId && roleValue) {\r\n this.permissionsFacade.updatePermissionLocally(\r\n roleValue,\r\n levelId,\r\n actionId,\r\n isSelected,\r\n );\r\n }\r\n }\r\n\r\n onClose() {\r\n // this.closeDialog.emit();\r\n this.ref.close();\r\n }\r\n\r\n trackByActionId(_index: number, action: PermissionAction) {\r\n return action.id;\r\n }\r\n\r\n getControl(actionId: number): FormControl {\r\n return this.actionControls().get(actionId) || new FormControl(false);\r\n }\r\n\r\n onSave(): void {\r\n const levelId = this.levelId();\r\n const roleValue = this.roleValue();\r\n const isGroup = this.isGroup();\r\n if (levelId && roleValue) {\r\n let subscription;\r\n if (isGroup) {\r\n subscription = this.permissionsFacade.updateGroupPermission(\r\n roleValue,\r\n levelId,\r\n );\r\n } else {\r\n subscription = this.permissionsFacade.updatePermission(\r\n roleValue,\r\n levelId,\r\n );\r\n }\r\n subscription.subscribe({\r\n next: () => {\r\n this.onClose();\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\r\n selectAll() {\r\n const group = this.permissionGroup();\r\n const actions = group?.actions || [];\r\n for (let i = 0; i < actions?.length; i++) {\r\n const control = this.actionControls().get(actions[i].id);\r\n control?.setValue(this.toggleAll());\r\n }\r\n }\r\n}\r\n","<div [class]=\"'flex flex-col gap-3 p-4 ' + modal.contentClass\">\r\n @if (permissionGroup(); as group) {\r\n <div\r\n class=\"flex items-center justify-between border rounded-lg p-3 border-surface mb-4\"\r\n >\r\n <span class=\"text-sm font-medium\">{{\r\n \"permissions.selectAll\" | transloco\r\n }}</span>\r\n <mt-toggle-field\r\n [(ngModel)]=\"toggleAll\"\r\n (onChange)=\"selectAll()\"\r\n ></mt-toggle-field>\r\n </div>\r\n @for (action of group.actions; track trackByActionId($index, action)) {\r\n <div\r\n class=\"flex items-center justify-between border rounded-lg p-3 border-surface\"\r\n >\r\n <span class=\"text-sm font-medium\">{{ action.name?.display }}</span>\r\n <mt-toggle-field\r\n [formControl]=\"getControl(action.id)\"\r\n ></mt-toggle-field>\r\n </div>\r\n }\r\n }\r\n</div>\r\n<div [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"'save'\"\r\n (click)=\"onSave()\"\r\n [loading]=\"addPermissionsLoading()\"\r\n />\r\n</div>\r\n","import {\r\n Component,\r\n computed,\r\n DestroyRef,\r\n effect,\r\n inject,\r\n linkedSignal,\r\n OnDestroy,\r\n OnInit,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\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 { ToggleField } from '@masterteam/components/toggle-field';\r\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { PermissionsFacade } from '../../store/permissions/permissions.facade';\r\nimport { PermissionLog } from '../../store/permissions/permissions.model';\r\nimport { PermissionsEditDialog } from './permissions-edit-dialog/permissions-edit-dialog';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { AccessibilitiesFacade } from '@masterteam/accessibilities';\r\n\r\n@Component({\r\n selector: 'mt-permissions-page',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n Card,\r\n Button,\r\n ToggleField,\r\n TranslocoModule,\r\n Avatar,\r\n SkeletonModule,\r\n Tabs,\r\n ],\r\n templateUrl: './permissions-page.html',\r\n styleUrl: './permissions-page.scss',\r\n})\r\nexport default class PermissionsPage implements OnInit, OnDestroy {\r\n private readonly permissionsFacade = inject(PermissionsFacade);\r\n private readonly accessibilitiesFacade: any = 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 private readonly modal = inject(ModalService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n private readonly defaultLevelName = 'Project';\r\n\r\n // Use new facade pattern\r\n levelRoles = this.permissionsFacade.roles;\r\n selectedRoleValue = this.permissionsFacade.selectedRoleValue;\r\n selectedRole = linkedSignal(this.selectedRoleValue);\r\n selectedGroupValue = this.permissionsFacade.selectedGroupValue;\r\n selectedGroup = linkedSignal(this.selectedGroupValue);\r\n permissions = this.permissionsFacade.permissions;\r\n loading = this.permissionsFacade.isLoadingRoles;\r\n permissionsLoading = this.permissionsFacade.isLoadingPermissions;\r\n levelId = this.permissionsFacade.levelId;\r\n groups = this.accessibilitiesFacade.groups;\r\n\r\n allPermissionsToggle = new FormControl<boolean>(false);\r\n\r\n readonly groupOrRoleId = computed(() => {\r\n const idParam = this.route.snapshot.firstChild?.paramMap.get('id');\r\n return idParam ? idParam : '';\r\n });\r\n\r\n readonly selectedTabFromParams = computed(() => {\r\n const idParam = this.route.snapshot.firstChild?.data['selectedTab'];\r\n return idParam ? idParam : 'roles';\r\n });\r\n\r\n selectedTab = linkedSignal<string>(this.selectedTabFromParams);\r\n tabsList = signal<any[]>([\r\n {\r\n label: this.translocoService.translate('permissions.roles'),\r\n value: 'roles',\r\n },\r\n {\r\n label: this.translocoService.translate('permissions.groups'),\r\n value: 'groups',\r\n },\r\n ]);\r\n firstLoad = signal(true);\r\n\r\n constructor() {\r\n effect(() => {\r\n const allEnabled = this.isAllPermissionsEnabled();\r\n this.allPermissionsToggle.setValue(allEnabled, { emitEvent: false });\r\n });\r\n effect(() => {\r\n if (this.selectedTab() == 'roles') {\r\n if (this.levelRoles().length == 0) {\r\n if (this.firstLoad() && !this.loading()) {\r\n this.permissionsFacade.loadRoles();\r\n this.firstLoad.set(false);\r\n }\r\n return;\r\n }\r\n }\r\n if (this.permissions().length == 0 && this.selectedTab() == 'roles') {\r\n if (this.groupOrRoleId() && this.levelRoles().length > 0) {\r\n const role = this.levelRoles()\r\n .map((levelRoles) => levelRoles.roles)\r\n .flat()\r\n .find((r) => r?.value === this.groupOrRoleId()?.toString());\r\n if (role) {\r\n this.selectedRole.set(this.groupOrRoleId().toString());\r\n this.permissionsFacade.selectRole(role.value);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.permissionsFacade.selectRole('');\r\n this.route.parent?.paramMap\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((params) => {\r\n const levelIdFromRoute = params.get('levelId');\r\n\r\n if (levelIdFromRoute) {\r\n this.permissionsFacade.reset();\r\n this.permissionsFacade.setModuleInfo('level', levelIdFromRoute);\r\n this.permissionsFacade.loadRoles();\r\n }\r\n });\r\n this.permissionsFacade.loadRoles();\r\n this.accessibilitiesFacade.getGroups();\r\n\r\n this.allPermissionsToggle.valueChanges\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((value) => {\r\n if (value !== null) {\r\n this.onToggleAllLevel(this.defaultLevelName, value);\r\n }\r\n });\r\n }\r\n\r\n selectRole(roleValue: string): void {\r\n this.router.navigate(['roles', roleValue], { relativeTo: this.route });\r\n this.permissionsFacade.selectRole(roleValue);\r\n }\r\n\r\n selectGroup(groupId: number): void {\r\n this.router.navigate(['groups', groupId], { relativeTo: this.route });\r\n this.permissionsFacade.selectGroup(groupId);\r\n }\r\n\r\n openPermissionDialog(group: PermissionLog): void {\r\n if (this.levelId() && (this.selectedRoleValue() || this.selectedGroup())) {\r\n this.modal.openModal(PermissionsEditDialog, 'drawer', {\r\n header: this.translocoService.translate('permissions.setPermissions'),\r\n position: 'end',\r\n styleClass: '!w-[24%] !absolute !shadow-none',\r\n appendTo: 'page-content',\r\n inputValues: {\r\n permissionGroup: group,\r\n levelId: this.levelId(),\r\n roleValue:\r\n this.selectedTab() == 'roles'\r\n ? this.selectedRoleValue()\r\n : this.selectedGroup(),\r\n isGroup: this.selectedTab() != 'roles',\r\n },\r\n dismissible: true,\r\n });\r\n }\r\n }\r\n\r\n onToggleAllLevel(levelName: string, enabled: boolean): void {\r\n const levelId = this.levelId();\r\n const roleValue = this.selectedRoleValue();\r\n\r\n if (levelId) {\r\n if (this.selectedTab() != 'roles') {\r\n this.permissionsFacade.toggleAllGroupPermissions(\r\n levelId,\r\n this.selectedGroup()!.toString(),\r\n enabled,\r\n );\r\n return;\r\n } else {\r\n if (!!roleValue) {\r\n this.permissionsFacade.toggleAllLevelPermissions(\r\n roleValue,\r\n levelId,\r\n levelName,\r\n enabled,\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n isAllPermissionsEnabled(): boolean {\r\n if (this.permissions().length === 0) return false;\r\n\r\n return this.permissions().every((log) =>\r\n log?.actions.every((action) => action?.isSelected),\r\n );\r\n }\r\n\r\n trackByRoleValue(_index: number, role: any) {\r\n return role.value;\r\n }\r\n\r\n onTabChange($event: any) {\r\n if ($event == 'roles') {\r\n // Navigate to first role if available\r\n const firstRole = this.levelRoles()\r\n .map((levelRoles) => levelRoles.roles)\r\n .flat()[0];\r\n\r\n if (firstRole?.value) {\r\n this.router.navigate(['roles', firstRole.value], {\r\n relativeTo: this.route,\r\n });\r\n this.permissionsFacade.selectRole(firstRole.value);\r\n } else {\r\n this.router.navigate(['roles'], { relativeTo: this.route });\r\n }\r\n } else if ($event == 'groups') {\r\n // Navigate to first group if available\r\n const firstGroup = this.groups()[0];\r\n\r\n if (firstGroup?.id) {\r\n this.router.navigate(['groups', firstGroup.id], {\r\n relativeTo: this.route,\r\n });\r\n this.permissionsFacade.selectGroup(firstGroup.id);\r\n } else {\r\n this.router.navigate(['groups'], { relativeTo: this.route });\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.permissionsFacade.reset();\r\n }\r\n}\r\n","<div id=\"permissions-page-card\" class=\"flex gap-4 p-1\">\r\n <div class=\"w-1/5 flex-shrink-0\">\r\n <mt-card class=\"h-full flex flex-col\">\r\n <ng-template #headless>\r\n <div class=\"flex flex-col h-full\">\r\n <div\r\n class=\"p-4 pb-0 bg-surface-50 rounded-t-2xl border-b border-surface\"\r\n >\r\n <h2 class=\"text-lg font-semibold mb-3\">\r\n {{ \"permissions.rolesAndGroups\" | transloco }}\r\n </h2>\r\n\r\n <mt-tabs\r\n [(active)]=\"selectedTab\"\r\n [options]=\"tabsList()\"\r\n size=\"large\"\r\n (onChange)=\"onTabChange($event)\"\r\n />\r\n </div>\r\n\r\n <div class=\"flex-1 overflow-y-auto p-4\">\r\n @if (loading()) {\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n } @else {\r\n @if (selectedTab() === \"roles\") {\r\n @for (level of levelRoles(); track level) {\r\n <div class=\"flex flex-col gap-2 mb-4\">\r\n <h2 class=\"font-semibold\">{{ level?.level?.display }}</h2>\r\n @for (role of level.roles; track role.value) {\r\n <div\r\n class=\"p-3 border-2 border-dashed border-gray-300 rounded-lg cursor-pointer transition-colors flex items-center gap-3\"\r\n [class.bg-primary-50]=\"selectedRole() === role.value\"\r\n [class.hover:bg-surface]=\"selectedRole() !== role.value\"\r\n [class.border-primary-400]=\"\r\n selectedRole() === role.value\r\n \"\r\n [style.--p-avatar-background]=\"\r\n selectedRole() === role.value\r\n ? 'var(--p-primary-color)'\r\n : 'var(--p-surface-100)'\r\n \"\r\n [style.--p-avatar-color]=\"\r\n selectedRole() === role.value ? '#ffffff' : ''\r\n \"\r\n (click)=\"selectRole(role.value)\"\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 {{ role.name?.display }}\r\n </div>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-full text-muted-color\"\r\n >\r\n {{ \"permissions.noRolesFound\" | transloco }}\r\n </div>\r\n }\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-full text-muted-color\"\r\n >\r\n {{ \"permissions.noLevelRolesFound\" | transloco }}\r\n </div>\r\n }\r\n } @else {\r\n <div class=\"flex flex-col gap-2 mb-4\">\r\n @for (group of groups(); track group.name) {\r\n <div\r\n class=\"p-3 border-2 border-dashed border-gray-300 rounded-lg cursor-pointer transition-colors flex items-center gap-3\"\r\n [class.bg-primary-50]=\"selectedGroup() === group.id\"\r\n [class.hover:bg-surface]=\"selectedGroup() !== group.id\"\r\n [class.border-primary-400]=\"selectedGroup() === group.id\"\r\n [style.--p-avatar-background]=\"\r\n selectedGroup() === group.id\r\n ? 'var(--p-primary-color)'\r\n : 'var(--p-surface-100)'\r\n \"\r\n [style.--p-avatar-color]=\"\r\n selectedGroup() === group.id ? '#ffffff' : ''\r\n \"\r\n (click)=\"selectGroup(group.id)\"\r\n >\r\n <mt-avatar [icon]=\"'user.users-check'\" shape=\"square\">\r\n </mt-avatar>\r\n <div class=\"flex-1 min-w-0\">\r\n <div class=\"font-medium truncate\">\r\n {{ group.name?.display }}\r\n </div>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-full text-muted-color\"\r\n >\r\n {{ \"permissions.noGroupsFound\" | transloco }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n </mt-card>\r\n </div>\r\n\r\n <div class=\"min-w-0 w-1/2\">\r\n @if (!selectedRole() && !selectedGroup()) {\r\n <mt-card class=\"h-full\">\r\n <ng-template #headless>\r\n <div class=\"flex items-center justify-center h-full text-muted-color\">\r\n {{ \"permissions.selectRoleOrGroupToViewPermissions\" | transloco }}\r\n </div>\r\n </ng-template>\r\n </mt-card>\r\n } @else {\r\n <mt-card class=\"h-full\">\r\n <div class=\"flex flex-col h-full\">\r\n <ng-template #headless>\r\n <div class=\"p-4 pb-2 mb-5 border-b border-surface\">\r\n <h2 class=\"text-lg font-semibold mb-3\">\r\n {{ \"permissions.permissions\" | transloco }}\r\n </h2>\r\n </div>\r\n @if (permissionsLoading()) {\r\n <div class=\"mx-4\">\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"mb-5 p-3 mx-4 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=\"large\"\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=\"text-sm font-semibold\">\r\n {{ \"permissions.setAllPermissions\" | transloco }}\r\n </div>\r\n <div class=\"text-xs text-muted-color\">\r\n {{ \"permissions.recommendedForSimpleForms\" | transloco }}\r\n </div>\r\n </div>\r\n </div>\r\n <mt-toggle-field\r\n [formControl]=\"allPermissionsToggle\"\r\n ></mt-toggle-field>\r\n </div>\r\n\r\n <div class=\"flex-1 px-4 overflow-y-auto border-t border-surface\">\r\n <div class=\"space-y-3 my-5\">\r\n @for (group of permissions(); track group.name) {\r\n <div\r\n class=\"p-2 border-1 border-surface rounded-lg flex items-center justify-between hover:bg-surface-100 transition-colors\"\r\n >\r\n <div class=\"flex items-center gap-3\">\r\n <mt-avatar\r\n [icon]=\"'editor.dotpoints-02'\"\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]=\"\r\n 'var(--p-' + 'primary' + '-600)'\r\n \"\r\n >\r\n </mt-avatar>\r\n <span class=\"text-sm\">{{ group.name?.display }}</span>\r\n </div>\r\n <mt-button\r\n [text]=\"true\"\r\n icon=\"custom.pencil\"\r\n severity=\"primary\"\r\n (click)=\"openPermissionDialog(group)\"\r\n >\r\n </mt-button>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-full text-muted-color\"\r\n >\r\n {{ \"permissions.noPermissionsFound\" | transloco }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </ng-template>\r\n </div>\r\n </mt-card>\r\n }\r\n </div>\r\n</div>\r\n","// store/index.ts\r\nexport * from './permissions';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PermissionsActions.LoadPermissions","PermissionsActions.LoadGroupPermissions","PermissionsActions.LoadRoles","PermissionsActions.SelectRole","PermissionsActions.SelectGroup","PermissionsActions.UpdatePermissionLocally","PermissionsActions.UpdatePermission","PermissionsActions.UpdateGroupPermission","PermissionsActions.ToggleAllLevelPermissions","PermissionsActions.ToggleAllGroupPermissions","PermissionsActions.SetModuleInfo","PermissionsActions.Reset","i3"],"mappings":"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"}
1
+ {"version":3,"file":"masterteam-permissions.mjs","sources":["../../../../packages/masterteam/permissions/src/store/permissions/permissions.model.ts","../../../../packages/masterteam/permissions/src/store/permissions/permissions.actions.ts","../../../../packages/masterteam/permissions/src/store/permissions/permissions.state.ts","../../../../packages/masterteam/permissions/src/store/permissions/permissions.facade.ts","../../../../packages/masterteam/permissions/src/lib/permissions-page/permissions-edit-dialog/permissions-edit-dialog.ts","../../../../packages/masterteam/permissions/src/lib/permissions-page/permissions-edit-dialog/permissions-edit-dialog.html","../../../../packages/masterteam/permissions/src/lib/permissions-page/permissions-page.ts","../../../../packages/masterteam/permissions/src/lib/permissions-page/permissions-page.html","../../../../packages/masterteam/permissions/src/store/index.ts","../../../../packages/masterteam/permissions/src/masterteam-permissions.ts"],"sourcesContent":["import { LoadingStateShape } from '../utils/state-helpers';\r\n\r\nexport interface Role {\r\n name: string;\r\n value: string;\r\n}\r\nexport interface LevelRoles {\r\n level?: string;\r\n levelKey?: string;\r\n scopeType?: string;\r\n scopeId?: string;\r\n roles?: Role[];\r\n}\r\n\r\nexport interface PermissionAction {\r\n id: number;\r\n name: string;\r\n isSelected: boolean;\r\n}\r\n\r\nexport interface PermissionLog {\r\n name: string;\r\n actions: PermissionAction[];\r\n}\r\n\r\nexport interface LevelPermission {\r\n levelName: string;\r\n modules: PermissionLog[];\r\n}\r\n\r\nexport interface RolesResponse {\r\n endpoint: string;\r\n status: number;\r\n code: number;\r\n locale: string;\r\n message: string;\r\n errors: null | string[];\r\n data: LevelRoles[];\r\n cacheSession: string;\r\n}\r\n\r\nexport interface PermissionsResponseData {\r\n modules: PermissionLog[];\r\n}\r\n\r\nexport interface PermissionsResponse {\r\n endpoint: string;\r\n status: number;\r\n code: number;\r\n locale: string;\r\n message: string;\r\n errors: null | string[];\r\n data: PermissionsResponseData;\r\n cacheSession: string;\r\n}\r\n\r\nexport interface GroupPermissionsResponse {\r\n endpoint: string;\r\n status: number;\r\n code: number;\r\n locale: string;\r\n message: string;\r\n errors: null | string[];\r\n data: LevelPermission[];\r\n cacheSession: string;\r\n}\r\n\r\nexport interface UpdatePermissionPayload {\r\n roleValue: string;\r\n levelId: string;\r\n permissions: LevelPermission[];\r\n}\r\n\r\nexport enum PermissionsActionKey {\r\n LoadRoles = 'loadRoles',\r\n SelectRole = 'selectRole',\r\n SelectGroup = 'selectGroup',\r\n LoadPermissions = 'loadPermissions',\r\n LoadGroupPermissions = 'loadGroupPermissions',\r\n UpdatePermission = 'updatePermission',\r\n UpdateGroupPermission = 'updateGroupPermission',\r\n ToggleAllLevelPermissions = 'toggleAllLevelPermissions',\r\n ToggleAllGroupPermissions = 'toggleAllGroupPermissions',\r\n}\r\n\r\nexport interface PermissionsStateModel extends LoadingStateShape<PermissionsActionKey> {\r\n roles: LevelRoles[];\r\n selectedRoleValue: string | null;\r\n selectedGroupValue: string | number | null;\r\n permissions: PermissionLog[];\r\n groupPermissions: LevelPermission[];\r\n currentLevelId: string | null;\r\n moduleType: string;\r\n moduleId: string | number;\r\n parentModuleType?: string | null;\r\n parentModuleId?: string | number | null;\r\n parentPath?: string;\r\n}\r\n\r\nexport enum ModuleType {\r\n LEVEL = 'level',\r\n LOG = 'log',\r\n LEVELLOG = 'levelLog',\r\n}\r\n","export class LoadRoles {\r\n static readonly type = '[Permissions] Load Roles';\r\n constructor() {}\r\n}\r\n\r\nexport class SelectRole {\r\n static readonly type = '[Permissions] Select Role';\r\n constructor(public roleValue: string) {}\r\n}\r\n\r\nexport class SelectGroup {\r\n static readonly type = '[Permissions] Select Group';\r\n constructor(public groupId: number) {}\r\n}\r\n\r\nexport class LoadPermissions {\r\n static readonly type = '[Permissions] Load Permissions';\r\n constructor(\r\n public roleValue: string,\r\n public levelId: string,\r\n ) {}\r\n}\r\n\r\nexport class LoadGroupPermissions {\r\n static readonly type = '[Permissions] Load Group Permissions';\r\n constructor(\r\n public groupId: number,\r\n public levelId: string,\r\n ) {}\r\n}\r\n\r\nexport class UpdatePermissionLocally {\r\n static readonly type = '[Permissions] Update Permission Locally';\r\n constructor(\r\n public roleValue: string,\r\n public levelId: string,\r\n public actionId: number,\r\n public isSelected: boolean,\r\n ) {}\r\n}\r\n\r\nexport class UpdatePermission {\r\n static readonly type = '[Permissions] Update Permission';\r\n constructor(\r\n public roleValue: string,\r\n public levelId: string,\r\n ) {}\r\n}\r\n\r\nexport class UpdateGroupPermission {\r\n static readonly type = '[Permissions] Update Group Permission';\r\n constructor(\r\n public groupId: string,\r\n public levelId: string,\r\n ) {}\r\n}\r\n\r\nexport class ToggleAllLevelPermissions {\r\n static readonly type = '[Permissions] Toggle All Level Permissions';\r\n constructor(\r\n public roleValue: string,\r\n public levelId: string,\r\n public levelName: string,\r\n public enabled: boolean,\r\n ) {}\r\n}\r\n\r\nexport class ToggleAllGroupPermissions {\r\n static readonly type = '[Permissions] Toggle All Group Permissions';\r\n constructor(\r\n public levelId: string,\r\n public groupId: string,\r\n public enabled: boolean,\r\n ) {}\r\n}\r\n\r\nexport class SetModuleInfo {\r\n static readonly type = '[Permissions] Set Module Info';\r\n\r\n constructor(\r\n public readonly moduleType: string,\r\n public readonly moduleId: string | number,\r\n public readonly parentModuleType?: string,\r\n public readonly parentModuleId?: string | number,\r\n public readonly parentPath?: string,\r\n ) {}\r\n}\r\n\r\nexport class Reset {\r\n static readonly type = '[Permissions] Reset Module Info';\r\n\r\n constructor() {}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Action, Selector, State, StateContext } from '@ngxs/store';\r\nimport { map } from 'rxjs';\r\nimport { CrudStateBase, handleApiRequest } from '@masterteam/components';\r\nimport {\r\n GroupPermissionsResponse,\r\n LevelPermission,\r\n LevelRoles,\r\n ModuleType,\r\n PermissionLog,\r\n PermissionsResponse,\r\n PermissionsActionKey,\r\n PermissionsStateModel,\r\n RolesResponse,\r\n} from './permissions.model';\r\nimport * as PermissionsActions from './permissions.actions';\r\n\r\n@State<PermissionsStateModel>({\r\n name: 'permissions',\r\n defaults: {\r\n roles: [],\r\n selectedRoleValue: null,\r\n selectedGroupValue: null,\r\n permissions: [],\r\n groupPermissions: [],\r\n currentLevelId: null,\r\n moduleType: '',\r\n moduleId: '',\r\n parentModuleType: null,\r\n parentModuleId: null,\r\n parentPath: '',\r\n loadingActive: [], // Required by LoadingStateShape\r\n errors: {}, // Required by LoadingStateShape\r\n },\r\n})\r\n@Injectable()\r\nexport class PermissionsState extends CrudStateBase<\r\n LevelRoles,\r\n PermissionsStateModel,\r\n PermissionsActionKey\r\n> {\r\n private http = inject(HttpClient);\r\n\r\n // ============================================================================\r\n // Data Selectors - Individual for fine-grained reactivity\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getRoles(state: PermissionsStateModel): LevelRoles[] {\r\n return state.roles;\r\n }\r\n\r\n @Selector()\r\n static getSelectedRoleValue(state: PermissionsStateModel): string | null {\r\n return state.selectedRoleValue;\r\n }\r\n\r\n @Selector()\r\n static getSelectedGroupValue(\r\n state: PermissionsStateModel,\r\n ): string | number | null {\r\n return state.selectedGroupValue;\r\n }\r\n\r\n @Selector()\r\n static getPermissions(state: PermissionsStateModel): PermissionLog[] {\r\n return state.permissions;\r\n }\r\n\r\n @Selector()\r\n static getGroupPermissions(state: PermissionsStateModel): LevelPermission[] {\r\n return state.groupPermissions;\r\n }\r\n\r\n @Selector()\r\n static getModuleType(state: PermissionsStateModel): string {\r\n return state.moduleType;\r\n }\r\n\r\n @Selector()\r\n static getModuleId(state: PermissionsStateModel): string | number {\r\n return state.moduleId;\r\n }\r\n\r\n @Selector()\r\n static getLevelId(state: PermissionsStateModel): string {\r\n return state.moduleType === 'module'\r\n ? state.parentModuleId!.toString()\r\n : state.moduleId.toString();\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: PermissionsStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(\r\n state: PermissionsStateModel,\r\n ): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n // ============================================================================\r\n // CRUD Actions\r\n // ============================================================================\r\n\r\n // ============================================================================\r\n // CRUD Actions\r\n // ============================================================================\r\n\r\n @Action(PermissionsActions.LoadRoles)\r\n loadRoles(ctx: StateContext<PermissionsStateModel>) {\r\n const { moduleType, moduleId, parentPath } = ctx.getState();\r\n const state = ctx.getState();\r\n const req$ = this.http\r\n .get<RolesResponse>(\r\n `identity/roles${parentPath ? '' : '/scopes'}${parentPath}/${moduleType}/${moduleId}${parentPath ? '' : '?inherited=true'}`,\r\n )\r\n .pipe(map((response) => response.data));\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: PermissionsActionKey.LoadRoles,\r\n request$: req$,\r\n onSuccess: (roles: any) => ({\r\n roles: state.moduleType === 'module' ? [{ roles: roles }] : roles,\r\n currentLevelId: moduleId.toString() || '',\r\n }),\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // Simple State Updates (No HTTP)\r\n // ============================================================================\r\n\r\n @Action(PermissionsActions.SelectRole)\r\n selectRole(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.SelectRole,\r\n ) {\r\n const state = ctx.getState();\r\n ctx.patchState({ selectedRoleValue: action.roleValue });\r\n\r\n if (state.currentLevelId && action.roleValue) {\r\n ctx.dispatch(\r\n new PermissionsActions.LoadPermissions(\r\n action.roleValue,\r\n state.currentLevelId,\r\n ),\r\n );\r\n }\r\n }\r\n\r\n @Action(PermissionsActions.SelectGroup)\r\n selectGroup(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.SelectGroup,\r\n ) {\r\n const state = ctx.getState();\r\n ctx.patchState({ selectedGroupValue: action.groupId });\r\n\r\n if (state.currentLevelId) {\r\n ctx.dispatch(\r\n new PermissionsActions.LoadGroupPermissions(\r\n action.groupId,\r\n state.currentLevelId,\r\n ),\r\n );\r\n }\r\n }\r\n\r\n @Action(PermissionsActions.LoadPermissions)\r\n loadPermissions(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.LoadPermissions,\r\n ) {\r\n const state = ctx.getState();\r\n const modulePath =\r\n state.moduleType === 'module' ? `module/${state.moduleId}/` : '';\r\n const levelId =\r\n state.moduleType === 'module' ? state.parentModuleId! : state.moduleId;\r\n\r\n const req$ = this.http\r\n .get<PermissionsResponse>(\r\n `identity/roles/level/${levelId}/${modulePath}${action.roleValue}/permissions`,\r\n )\r\n .pipe(map((response) => response.data.modules));\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: PermissionsActionKey.LoadPermissions,\r\n request$: req$,\r\n onSuccess: (permissions) => ({\r\n permissions,\r\n }),\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.LoadGroupPermissions)\r\n loadGroupPermissions(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.LoadGroupPermissions,\r\n ) {\r\n const state = ctx.getState();\r\n const modulePath =\r\n state.moduleType === 'module' ? `module/${state.moduleId}/` : '';\r\n const levelId =\r\n state.moduleType === 'module' ? state.parentModuleId! : state.moduleId;\r\n\r\n const req$ = this.http\r\n .get<GroupPermissionsResponse>(\r\n `identity/groups/level/${levelId}/${modulePath}${action.groupId}/permissions`,\r\n )\r\n .pipe(map((response: any) => response.data.modules));\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: PermissionsActionKey.LoadPermissions,\r\n request$: req$,\r\n onSuccess: (permissions) => ({\r\n permissions,\r\n }),\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.UpdatePermissionLocally)\r\n updatePermissionLocally(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.UpdatePermissionLocally,\r\n ) {\r\n const state = ctx.getState();\r\n\r\n const updatedPermissions = state.permissions.map((log) => ({\r\n ...log,\r\n actions: log.actions.map((act) =>\r\n act.id === action.actionId\r\n ? { ...act, isSelected: action.isSelected }\r\n : act,\r\n ),\r\n }));\r\n\r\n ctx.patchState({ permissions: updatedPermissions });\r\n }\r\n\r\n // ============================================================================\r\n // Complex Operations - use handleApiRequest for transformations\r\n // ============================================================================\r\n\r\n @Action(PermissionsActions.UpdatePermission)\r\n updatePermission(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.UpdatePermission,\r\n ) {\r\n const state = ctx.getState();\r\n const updatedPermissions: any[] = [];\r\n state.permissions?.forEach((p) => {\r\n p?.actions.forEach((a: any) => {\r\n updatedPermissions.push({ id: a?.id, isSelected: a?.isSelected });\r\n });\r\n });\r\n const scopeId =\r\n state.moduleType === 'module' ? state.parentModuleId! : state.moduleId;\r\n\r\n const req$ = this.http.put<PermissionsResponse>(\r\n `identity/roles/${action.roleValue}/setAllPermissions`,\r\n { permissions: updatedPermissions },\r\n {\r\n params: {\r\n scopeId,\r\n scopeType: ModuleType.LEVEL,\r\n },\r\n },\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: PermissionsActionKey.UpdatePermission,\r\n request$: req$,\r\n onSuccess: () => ({}),\r\n onError: (error, currentState) => {\r\n // Rollback on error\r\n return { permissions: currentState.permissions };\r\n },\r\n errorMessage: 'Failed to update permission',\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.UpdateGroupPermission)\r\n updateGroupPermission(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.UpdateGroupPermission,\r\n ) {\r\n const state = ctx.getState();\r\n const updatedPermissions: any[] = [];\r\n state.permissions?.forEach((p) => {\r\n p?.actions.forEach((a: any) => {\r\n updatedPermissions.push({ id: a?.id, isSelected: a?.isSelected });\r\n });\r\n });\r\n\r\n const req$ = this.http.put<PermissionsResponse>(\r\n `identity/groups/${action.groupId}/setAllPermissions`,\r\n { permissions: updatedPermissions },\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: PermissionsActionKey.UpdateGroupPermission,\r\n request$: req$,\r\n onSuccess: () => ({}),\r\n onError: (error, currentState) => {\r\n // Rollback on error\r\n return { permissions: currentState.permissions };\r\n },\r\n errorMessage: 'Failed to update permission',\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.ToggleAllLevelPermissions)\r\n toggleAllLevelPermissions(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.ToggleAllLevelPermissions,\r\n ) {\r\n const state = ctx.getState();\r\n\r\n const updatedPermissions: any[] = [];\r\n state.permissions?.forEach((p) => {\r\n p?.actions.forEach((a: any) => {\r\n updatedPermissions.push({ id: a?.id, isSelected: action.enabled });\r\n });\r\n });\r\n\r\n const scopeId =\r\n state.moduleType === 'module' ? state.parentModuleId! : state.moduleId;\r\n\r\n const req$ = this.http.put<PermissionsResponse>(\r\n `identity/roles/${action.roleValue}/setAllPermissions`,\r\n { permissions: updatedPermissions },\r\n {\r\n params: {\r\n scopeId,\r\n scopeType: ModuleType.LEVEL,\r\n },\r\n },\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: PermissionsActionKey.ToggleAllLevelPermissions,\r\n request$: req$,\r\n onSuccess: () => ({}),\r\n onError: () => ({\r\n permissions: state.permissions,\r\n }),\r\n errorMessage: 'Failed to toggle all permissions',\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.ToggleAllGroupPermissions)\r\n toggleAllGroupPermissions(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.ToggleAllGroupPermissions,\r\n ) {\r\n const state = ctx.getState();\r\n\r\n const updatedPermissions: any[] = [];\r\n state.permissions?.forEach((p) => {\r\n p?.actions.forEach((a: any) => {\r\n updatedPermissions.push({ id: a?.id, isSelected: action.enabled });\r\n });\r\n });\r\n\r\n const req$ = this.http.put<PermissionsResponse>(\r\n `identity/groups/${action.groupId}/setAllPermissions`,\r\n { permissions: updatedPermissions },\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: PermissionsActionKey.ToggleAllGroupPermissions,\r\n request$: req$,\r\n onSuccess: () => ({\r\n groupPermissions: updatedPermissions,\r\n }),\r\n onError: () => ({\r\n groupPermissions: state.groupPermissions,\r\n }),\r\n errorMessage: 'Failed to toggle all permissions',\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.SetModuleInfo)\r\n setModuleInfo(\r\n ctx: StateContext<PermissionsStateModel>,\r\n action: PermissionsActions.SetModuleInfo,\r\n ) {\r\n let parentPath = '';\r\n if (action.parentModuleType && action.parentModuleId) {\r\n parentPath = `/${action.parentModuleType}/${action.parentModuleId}`;\r\n } else if (action.parentPath) {\r\n parentPath = action.parentPath;\r\n }\r\n ctx.patchState({\r\n moduleType: action.moduleType,\r\n moduleId: action.moduleId,\r\n parentModuleType: action.parentModuleType ?? null,\r\n parentModuleId: action.parentModuleId ?? null,\r\n parentPath: parentPath ?? '',\r\n });\r\n }\r\n\r\n @Action(PermissionsActions.Reset)\r\n reset(ctx: StateContext<PermissionsStateModel>) {\r\n ctx.patchState({\r\n moduleType: '',\r\n moduleId: '',\r\n parentModuleType: null,\r\n parentModuleId: null,\r\n parentPath: '',\r\n roles: [],\r\n selectedRoleValue: null,\r\n selectedGroupValue: null,\r\n permissions: [],\r\n groupPermissions: [],\r\n });\r\n }\r\n}\r\n","import { inject, Injectable, computed } from '@angular/core';\r\nimport { Store, select } from '@ngxs/store';\r\nimport { PermissionsState } from './permissions.state';\r\nimport * as PermissionsActions from './permissions.actions';\r\nimport { Observable } from 'rxjs';\r\nimport { PermissionsActionKey } from './permissions.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PermissionsFacade {\r\n private store = inject(Store);\r\n\r\n // ============================================================================\r\n // Data Selectors - Memoized by NGXS (fine-grained reactivity)\r\n // ============================================================================\r\n readonly roles = select(PermissionsState.getRoles);\r\n readonly selectedRoleValue = select(PermissionsState.getSelectedRoleValue);\r\n readonly selectedGroupValue = select(PermissionsState.getSelectedGroupValue);\r\n readonly permissions = select(PermissionsState.getPermissions);\r\n readonly groupPermissions = select(PermissionsState.getGroupPermissions);\r\n readonly moduleType = select(PermissionsState.getModuleType);\r\n readonly moduleId = select(PermissionsState.getModuleId);\r\n readonly levelId = select(PermissionsState.getLevelId);\r\n\r\n // ============================================================================\r\n // Loading/Error Slices - Memoized by NGXS\r\n // ============================================================================\r\n private readonly loadingActive = select(PermissionsState.getLoadingActive);\r\n private readonly errors = select(PermissionsState.getErrors);\r\n\r\n // ============================================================================\r\n // Loading Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly isLoadingRoles = computed(() =>\r\n this.loadingActive().includes(PermissionsActionKey.LoadRoles),\r\n );\r\n readonly isLoadingPermissions = computed(() =>\r\n this.loadingActive().includes(PermissionsActionKey.LoadPermissions),\r\n );\r\n readonly isLoadingGroupPermissions = computed(() =>\r\n this.loadingActive().includes(PermissionsActionKey.LoadGroupPermissions),\r\n );\r\n readonly isUpdatingPermission = computed(() =>\r\n this.loadingActive().includes(PermissionsActionKey.UpdatePermission),\r\n );\r\n readonly isUpdatingGroupPermission = computed(() =>\r\n this.loadingActive().includes(PermissionsActionKey.UpdateGroupPermission),\r\n );\r\n readonly isTogglingLevelPermissions = computed(() =>\r\n this.loadingActive().includes(\r\n PermissionsActionKey.ToggleAllLevelPermissions,\r\n ),\r\n );\r\n readonly isTogglingGroupPermissions = computed(() =>\r\n this.loadingActive().includes(\r\n PermissionsActionKey.ToggleAllGroupPermissions,\r\n ),\r\n );\r\n\r\n // ============================================================================\r\n // Error Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly rolesError = computed(\r\n () => this.errors()[PermissionsActionKey.LoadRoles] ?? null,\r\n );\r\n readonly permissionsError = computed(\r\n () => this.errors()[PermissionsActionKey.LoadPermissions] ?? null,\r\n );\r\n readonly groupPermissionsError = computed(\r\n () => this.errors()[PermissionsActionKey.LoadGroupPermissions] ?? null,\r\n );\r\n readonly updatePermissionError = computed(\r\n () => this.errors()[PermissionsActionKey.UpdatePermission] ?? null,\r\n );\r\n readonly updateGroupPermissionError = computed(\r\n () => this.errors()[PermissionsActionKey.UpdateGroupPermission] ?? null,\r\n );\r\n\r\n // ============================================================================\r\n // Action Dispatchers\r\n // ============================================================================\r\n\r\n loadRoles() {\r\n return this.store.dispatch(new PermissionsActions.LoadRoles());\r\n }\r\n\r\n selectRole(roleValue: string) {\r\n if (roleValue) {\r\n return this.store.dispatch(new PermissionsActions.SelectRole(roleValue));\r\n }\r\n return;\r\n }\r\n\r\n selectGroup(groupId: number) {\r\n if (groupId) {\r\n return this.store.dispatch(new PermissionsActions.SelectGroup(groupId));\r\n }\r\n return;\r\n }\r\n\r\n loadPermissions(roleValue: string, levelId: string) {\r\n return this.store.dispatch(\r\n new PermissionsActions.LoadPermissions(roleValue, levelId),\r\n );\r\n }\r\n\r\n loadGroupPermissions(groupId: number, levelId: string) {\r\n return this.store.dispatch(\r\n new PermissionsActions.LoadGroupPermissions(groupId, levelId),\r\n );\r\n }\r\n\r\n updatePermissionLocally(\r\n roleValue: string,\r\n levelId: string,\r\n actionId: number,\r\n isSelected: boolean,\r\n ) {\r\n return this.store.dispatch(\r\n new PermissionsActions.UpdatePermissionLocally(\r\n roleValue,\r\n levelId,\r\n actionId,\r\n isSelected,\r\n ),\r\n );\r\n }\r\n\r\n updatePermission(roleValue: string, levelId: string) {\r\n return this.store.dispatch(\r\n new PermissionsActions.UpdatePermission(roleValue, levelId),\r\n );\r\n }\r\n updateGroupPermission(groupId: string, levelId: string) {\r\n return this.store.dispatch(\r\n new PermissionsActions.UpdateGroupPermission(groupId, levelId),\r\n );\r\n }\r\n\r\n toggleAllLevelPermissions(\r\n roleValue: string,\r\n levelId: string,\r\n levelName: string,\r\n enabled: boolean,\r\n ) {\r\n return this.store.dispatch(\r\n new PermissionsActions.ToggleAllLevelPermissions(\r\n roleValue,\r\n levelId,\r\n levelName,\r\n enabled,\r\n ),\r\n );\r\n }\r\n toggleAllGroupPermissions(\r\n levelId: string,\r\n groupId: string,\r\n enabled: boolean,\r\n ) {\r\n return this.store.dispatch(\r\n new PermissionsActions.ToggleAllGroupPermissions(\r\n levelId,\r\n groupId,\r\n enabled,\r\n ),\r\n );\r\n }\r\n setModuleInfo(\r\n moduleType: string,\r\n moduleId: string | number,\r\n parentModuleType?: string,\r\n parentModuleId?: string | number,\r\n parentPath?: string,\r\n ): Observable<unknown> {\r\n return this.store.dispatch(\r\n new PermissionsActions.SetModuleInfo(\r\n moduleType,\r\n moduleId,\r\n parentModuleType,\r\n parentModuleId,\r\n parentPath,\r\n ),\r\n );\r\n }\r\n\r\n reset() {\r\n return this.store.dispatch(new PermissionsActions.Reset());\r\n }\r\n}\r\n","import {\r\n Component,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ToggleField } from '@masterteam/components/toggle-field';\r\nimport { TranslocoModule } from '@jsverse/transloco';\r\nimport { PermissionsFacade } from '../../../store/permissions/permissions.facade';\r\nimport {\r\n PermissionLog,\r\n PermissionAction,\r\n} from '../../../store/permissions/permissions.model';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { ModalRef } from '@masterteam/components/dialog';\r\nimport { Button } from '@masterteam/components/button';\r\n\r\n@Component({\r\n selector: 'mt-permissions-edit-dialog',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n ToggleField,\r\n TranslocoModule,\r\n FormsModule,\r\n Button,\r\n ],\r\n templateUrl: './permissions-edit-dialog.html',\r\n styleUrl: './permissions-edit-dialog.scss',\r\n})\r\nexport class PermissionsEditDialog {\r\n private permissionsFacade = inject(PermissionsFacade);\r\n modal = inject(ModalService);\r\n ref: ModalRef = inject(ModalRef);\r\n // permissionGroup = input.required<PermissionLog | null>();\r\n permissionGroup = input<PermissionLog | null>(null);\r\n\r\n // Use new facade pattern\r\n addPermissionsLoading = this.permissionsFacade.isUpdatingPermission;\r\n addPermissionsError = this.permissionsFacade.updatePermissionError;\r\n\r\n levelId = input.required<string>();\r\n roleValue = input.required<string>();\r\n isGroup = input.required<boolean>();\r\n\r\n closeDialog = output<void>();\r\n\r\n actionControls = signal<Map<number, FormControl>>(new Map());\r\n toggleAll = signal<boolean>(false);\r\n\r\n constructor() {\r\n effect(() => {\r\n const group = this.permissionGroup();\r\n if (group) {\r\n const controls = new Map<number, FormControl>();\r\n group.actions.forEach((action) => {\r\n const control = new FormControl(action.isSelected);\r\n control.valueChanges.subscribe((value) => {\r\n if (value !== null) {\r\n this.onPermissionToggle(action.id, value);\r\n }\r\n });\r\n controls.set(action.id, control);\r\n });\r\n this.actionControls.set(controls);\r\n this.toggleAll.set(group.actions.every((action) => action.isSelected));\r\n }\r\n });\r\n }\r\n\r\n onPermissionToggle(actionId: number, isSelected: boolean) {\r\n const levelId = this.levelId();\r\n const roleValue = this.roleValue();\r\n if (levelId && roleValue) {\r\n this.permissionsFacade.updatePermissionLocally(\r\n roleValue,\r\n levelId,\r\n actionId,\r\n isSelected,\r\n );\r\n }\r\n }\r\n\r\n onClose() {\r\n // this.closeDialog.emit();\r\n this.ref.close();\r\n }\r\n\r\n trackByActionId(_index: number, action: PermissionAction) {\r\n return action.id;\r\n }\r\n\r\n getControl(actionId: number): FormControl {\r\n return this.actionControls().get(actionId) || new FormControl(false);\r\n }\r\n\r\n onSave(): void {\r\n const levelId = this.levelId();\r\n const roleValue = this.roleValue();\r\n const isGroup = this.isGroup();\r\n if (levelId && roleValue) {\r\n let subscription;\r\n if (isGroup) {\r\n subscription = this.permissionsFacade.updateGroupPermission(\r\n roleValue,\r\n levelId,\r\n );\r\n } else {\r\n subscription = this.permissionsFacade.updatePermission(\r\n roleValue,\r\n levelId,\r\n );\r\n }\r\n subscription.subscribe({\r\n next: () => {\r\n this.onClose();\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\r\n selectAll() {\r\n const group = this.permissionGroup();\r\n const actions = group?.actions || [];\r\n for (let i = 0; i < actions?.length; i++) {\r\n const control = this.actionControls().get(actions[i].id);\r\n control?.setValue(this.toggleAll());\r\n }\r\n }\r\n}\r\n","<div [class]=\"'flex flex-col gap-3 p-4 ' + modal.contentClass\">\r\n @if (permissionGroup(); as group) {\r\n <div\r\n class=\"flex items-center justify-between border rounded-lg p-3 border-surface mb-4\"\r\n >\r\n <span class=\"text-sm font-medium\">{{\r\n \"permissions.selectAll\" | transloco\r\n }}</span>\r\n <mt-toggle-field\r\n [(ngModel)]=\"toggleAll\"\r\n (onChange)=\"selectAll()\"\r\n ></mt-toggle-field>\r\n </div>\r\n @for (action of group.actions; track trackByActionId($index, action)) {\r\n <div\r\n class=\"flex items-center justify-between border rounded-lg p-3 border-surface\"\r\n >\r\n <span class=\"text-sm font-medium\">{{ action.name?.display }}</span>\r\n <mt-toggle-field\r\n [formControl]=\"getControl(action.id)\"\r\n ></mt-toggle-field>\r\n </div>\r\n }\r\n }\r\n</div>\r\n<div [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"'save'\"\r\n (click)=\"onSave()\"\r\n [loading]=\"addPermissionsLoading()\"\r\n />\r\n</div>\r\n","import {\r\n Component,\r\n computed,\r\n DestroyRef,\r\n effect,\r\n inject,\r\n linkedSignal,\r\n OnDestroy,\r\n OnInit,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\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 { ToggleField } from '@masterteam/components/toggle-field';\r\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { PermissionsFacade } from '../../store/permissions/permissions.facade';\r\nimport { PermissionLog } from '../../store/permissions/permissions.model';\r\nimport { PermissionsEditDialog } from './permissions-edit-dialog/permissions-edit-dialog';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport { AccessibilitiesFacade } from '@masterteam/accessibilities';\r\n\r\n@Component({\r\n selector: 'mt-permissions-page',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n Card,\r\n Button,\r\n ToggleField,\r\n TranslocoModule,\r\n Avatar,\r\n SkeletonModule,\r\n Tabs,\r\n ],\r\n templateUrl: './permissions-page.html',\r\n styleUrl: './permissions-page.scss',\r\n})\r\nexport default class PermissionsPage implements OnInit, OnDestroy {\r\n private readonly permissionsFacade = inject(PermissionsFacade);\r\n private readonly accessibilitiesFacade: any = 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 private readonly modal = inject(ModalService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n private readonly defaultLevelName = 'Project';\r\n\r\n // Use new facade pattern\r\n levelRoles = this.permissionsFacade.roles;\r\n selectedRoleValue = this.permissionsFacade.selectedRoleValue;\r\n selectedRole = linkedSignal(this.selectedRoleValue);\r\n selectedGroupValue = this.permissionsFacade.selectedGroupValue;\r\n selectedGroup = linkedSignal(this.selectedGroupValue);\r\n permissions = this.permissionsFacade.permissions;\r\n loading = this.permissionsFacade.isLoadingRoles;\r\n permissionsLoading = this.permissionsFacade.isLoadingPermissions;\r\n levelId = this.permissionsFacade.levelId;\r\n groups = this.accessibilitiesFacade.groups;\r\n\r\n allPermissionsToggle = new FormControl<boolean>(false);\r\n\r\n readonly groupOrRoleId = computed(() => {\r\n const idParam = this.route.snapshot.firstChild?.paramMap.get('id');\r\n return idParam ? idParam : '';\r\n });\r\n\r\n readonly selectedTabFromParams = computed(() => {\r\n const idParam = this.route.snapshot.firstChild?.data['selectedTab'];\r\n return idParam ? idParam : 'roles';\r\n });\r\n\r\n selectedTab = linkedSignal<string>(this.selectedTabFromParams);\r\n tabsList = signal<any[]>([\r\n {\r\n label: this.translocoService.translate('permissions.roles'),\r\n value: 'roles',\r\n },\r\n {\r\n label: this.translocoService.translate('permissions.groups'),\r\n value: 'groups',\r\n },\r\n ]);\r\n firstLoad = signal(true);\r\n\r\n constructor() {\r\n effect(() => {\r\n const allEnabled = this.isAllPermissionsEnabled();\r\n this.allPermissionsToggle.setValue(allEnabled, { emitEvent: false });\r\n });\r\n effect(() => {\r\n if (this.selectedTab() == 'roles') {\r\n if (this.levelRoles().length == 0) {\r\n if (this.firstLoad() && !this.loading()) {\r\n this.permissionsFacade.loadRoles();\r\n this.firstLoad.set(false);\r\n }\r\n return;\r\n }\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (this.selectedTab() !== 'roles' || this.loading()) {\r\n return;\r\n }\r\n\r\n const roles = this.getRoles();\r\n if (!roles.length) {\r\n return;\r\n }\r\n\r\n const routeRoleValue = this.groupOrRoleId()?.toString();\r\n const selectedRoleValue = this.selectedRoleValue();\r\n const routeRole = routeRoleValue\r\n ? roles.find((role) => role?.value === routeRoleValue)\r\n : null;\r\n\r\n if (routeRole) {\r\n if (selectedRoleValue !== routeRole.value) {\r\n this.selectedRole.set(routeRole.value);\r\n this.permissionsFacade.selectRole(routeRole.value);\r\n }\r\n return;\r\n }\r\n\r\n if (\r\n selectedRoleValue &&\r\n roles.some((role) => role?.value === selectedRoleValue)\r\n ) {\r\n return;\r\n }\r\n\r\n this.selectFirstRole(true);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.permissionsFacade.selectRole('');\r\n this.route.parent?.paramMap\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((params) => {\r\n const levelIdFromRoute = params.get('levelId');\r\n\r\n if (levelIdFromRoute) {\r\n this.permissionsFacade.reset();\r\n this.permissionsFacade.setModuleInfo('level', levelIdFromRoute);\r\n this.permissionsFacade.loadRoles();\r\n }\r\n });\r\n this.permissionsFacade.loadRoles();\r\n this.accessibilitiesFacade.getGroups();\r\n\r\n this.allPermissionsToggle.valueChanges\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((value) => {\r\n if (value !== null) {\r\n this.onToggleAllLevel(this.defaultLevelName, value);\r\n }\r\n });\r\n }\r\n\r\n selectRole(roleValue: string): void {\r\n this.router.navigate(['roles', roleValue], { relativeTo: this.route });\r\n this.permissionsFacade.selectRole(roleValue);\r\n }\r\n\r\n private getRoles() {\r\n return this.levelRoles()\r\n .map((levelRoles) => levelRoles.roles ?? [])\r\n .flat();\r\n }\r\n\r\n private selectFirstRole(replaceUrl = false): void {\r\n const firstRoleValue = this.getRoles()[0]?.value;\r\n\r\n if (!firstRoleValue) {\r\n return;\r\n }\r\n\r\n this.selectedRole.set(firstRoleValue);\r\n this.router.navigate(['roles', firstRoleValue], {\r\n relativeTo: this.route,\r\n replaceUrl,\r\n });\r\n this.permissionsFacade.selectRole(firstRoleValue);\r\n }\r\n\r\n selectGroup(groupId: number): void {\r\n this.router.navigate(['groups', groupId], { relativeTo: this.route });\r\n this.permissionsFacade.selectGroup(groupId);\r\n }\r\n\r\n openPermissionDialog(group: PermissionLog): void {\r\n if (this.levelId() && (this.selectedRoleValue() || this.selectedGroup())) {\r\n this.modal.openModal(PermissionsEditDialog, 'drawer', {\r\n header: this.translocoService.translate('permissions.setPermissions'),\r\n position: 'end',\r\n styleClass: '!w-[24%] !absolute !shadow-none',\r\n appendTo: 'page-content',\r\n inputValues: {\r\n permissionGroup: group,\r\n levelId: this.levelId(),\r\n roleValue:\r\n this.selectedTab() == 'roles'\r\n ? this.selectedRoleValue()\r\n : this.selectedGroup(),\r\n isGroup: this.selectedTab() != 'roles',\r\n },\r\n dismissible: true,\r\n });\r\n }\r\n }\r\n\r\n onToggleAllLevel(levelName: string, enabled: boolean): void {\r\n const levelId = this.levelId();\r\n const roleValue = this.selectedRoleValue();\r\n\r\n if (levelId) {\r\n if (this.selectedTab() != 'roles') {\r\n this.permissionsFacade.toggleAllGroupPermissions(\r\n levelId,\r\n this.selectedGroup()!.toString(),\r\n enabled,\r\n );\r\n return;\r\n } else {\r\n if (!!roleValue) {\r\n this.permissionsFacade.toggleAllLevelPermissions(\r\n roleValue,\r\n levelId,\r\n levelName,\r\n enabled,\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n isAllPermissionsEnabled(): boolean {\r\n if (this.permissions().length === 0) return false;\r\n\r\n return this.permissions().every((log) =>\r\n log?.actions.every((action) => action?.isSelected),\r\n );\r\n }\r\n\r\n trackByRoleValue(_index: number, role: any) {\r\n return role.value;\r\n }\r\n\r\n onTabChange($event: any) {\r\n if ($event == 'roles') {\r\n if (this.levelRoles().length) {\r\n this.selectFirstRole();\r\n } else {\r\n this.router.navigate(['roles'], { relativeTo: this.route });\r\n }\r\n } else if ($event == 'groups') {\r\n // Navigate to first group if available\r\n const firstGroup = this.groups()[0];\r\n\r\n if (firstGroup?.id) {\r\n this.router.navigate(['groups', firstGroup.id], {\r\n relativeTo: this.route,\r\n });\r\n this.permissionsFacade.selectGroup(firstGroup.id);\r\n } else {\r\n this.router.navigate(['groups'], { relativeTo: this.route });\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.permissionsFacade.reset();\r\n }\r\n}\r\n","<div id=\"permissions-page-card\" class=\"flex gap-4 p-1\">\r\n <div class=\"w-1/5 flex-shrink-0\">\r\n <mt-card class=\"h-full flex flex-col\">\r\n <ng-template #headless>\r\n <div class=\"flex flex-col h-full\">\r\n <div\r\n class=\"p-4 pb-0 bg-surface-50 rounded-t-2xl border-b border-surface\"\r\n >\r\n <h2 class=\"text-lg font-semibold mb-3\">\r\n {{ \"permissions.rolesAndGroups\" | transloco }}\r\n </h2>\r\n\r\n <mt-tabs\r\n [(active)]=\"selectedTab\"\r\n [options]=\"tabsList()\"\r\n size=\"large\"\r\n (onChange)=\"onTabChange($event)\"\r\n />\r\n </div>\r\n\r\n <div class=\"flex-1 overflow-y-auto p-4\">\r\n @if (loading()) {\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n } @else {\r\n @if (selectedTab() === \"roles\") {\r\n @for (level of levelRoles(); track level) {\r\n <div class=\"flex flex-col gap-2 mb-4\">\r\n <h2 class=\"font-semibold\">{{ level?.level?.display }}</h2>\r\n @for (role of level.roles; track role.value) {\r\n <div\r\n class=\"p-3 border-2 border-dashed border-gray-300 rounded-lg cursor-pointer transition-colors flex items-center gap-3\"\r\n [class.bg-primary-50]=\"selectedRole() === role.value\"\r\n [class.hover:bg-surface]=\"selectedRole() !== role.value\"\r\n [class.border-primary-400]=\"\r\n selectedRole() === role.value\r\n \"\r\n [style.--p-avatar-background]=\"\r\n selectedRole() === role.value\r\n ? 'var(--p-primary-color)'\r\n : 'var(--p-surface-100)'\r\n \"\r\n [style.--p-avatar-color]=\"\r\n selectedRole() === role.value ? '#ffffff' : ''\r\n \"\r\n (click)=\"selectRole(role.value)\"\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 {{ role.name?.display }}\r\n </div>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-full text-muted-color\"\r\n >\r\n {{ \"permissions.noRolesFound\" | transloco }}\r\n </div>\r\n }\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-full text-muted-color\"\r\n >\r\n {{ \"permissions.noLevelRolesFound\" | transloco }}\r\n </div>\r\n }\r\n } @else {\r\n <div class=\"flex flex-col gap-2 mb-4\">\r\n @for (group of groups(); track group.name) {\r\n <div\r\n class=\"p-3 border-2 border-dashed border-gray-300 rounded-lg cursor-pointer transition-colors flex items-center gap-3\"\r\n [class.bg-primary-50]=\"selectedGroup() === group.id\"\r\n [class.hover:bg-surface]=\"selectedGroup() !== group.id\"\r\n [class.border-primary-400]=\"selectedGroup() === group.id\"\r\n [style.--p-avatar-background]=\"\r\n selectedGroup() === group.id\r\n ? 'var(--p-primary-color)'\r\n : 'var(--p-surface-100)'\r\n \"\r\n [style.--p-avatar-color]=\"\r\n selectedGroup() === group.id ? '#ffffff' : ''\r\n \"\r\n (click)=\"selectGroup(group.id)\"\r\n >\r\n <mt-avatar [icon]=\"'user.users-check'\" shape=\"square\">\r\n </mt-avatar>\r\n <div class=\"flex-1 min-w-0\">\r\n <div class=\"font-medium truncate\">\r\n {{ group.name?.display }}\r\n </div>\r\n </div>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-full text-muted-color\"\r\n >\r\n {{ \"permissions.noGroupsFound\" | transloco }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n </mt-card>\r\n </div>\r\n\r\n <div class=\"min-w-0 w-1/2\">\r\n @if (!selectedRole() && !selectedGroup()) {\r\n <mt-card class=\"h-full\">\r\n <ng-template #headless>\r\n <div class=\"flex items-center justify-center h-full text-muted-color\">\r\n {{ \"permissions.selectRoleOrGroupToViewPermissions\" | transloco }}\r\n </div>\r\n </ng-template>\r\n </mt-card>\r\n } @else {\r\n <mt-card class=\"h-full\">\r\n <div class=\"flex flex-col h-full\">\r\n <ng-template #headless>\r\n <div class=\"p-4 pb-2 mb-5 border-b border-surface\">\r\n <h2 class=\"text-lg font-semibold mb-3\">\r\n {{ \"permissions.permissions\" | transloco }}\r\n </h2>\r\n </div>\r\n @if (permissionsLoading()) {\r\n <div class=\"mx-4\">\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n <p-skeleton class=\"my-4\" height=\"4rem\" />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"mb-5 p-3 mx-4 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=\"large\"\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=\"text-sm font-semibold\">\r\n {{ \"permissions.setAllPermissions\" | transloco }}\r\n </div>\r\n <div class=\"text-xs text-muted-color\">\r\n {{ \"permissions.recommendedForSimpleForms\" | transloco }}\r\n </div>\r\n </div>\r\n </div>\r\n <mt-toggle-field\r\n [formControl]=\"allPermissionsToggle\"\r\n ></mt-toggle-field>\r\n </div>\r\n\r\n <div class=\"flex-1 px-4 overflow-y-auto border-t border-surface\">\r\n <div class=\"space-y-3 my-5\">\r\n @for (group of permissions(); track group.name) {\r\n <div\r\n class=\"p-2 border-1 border-surface rounded-lg flex items-center justify-between hover:bg-surface-100 transition-colors\"\r\n >\r\n <div class=\"flex items-center gap-3\">\r\n <mt-avatar\r\n [icon]=\"'editor.dotpoints-02'\"\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]=\"\r\n 'var(--p-' + 'primary' + '-600)'\r\n \"\r\n >\r\n </mt-avatar>\r\n <span class=\"text-sm\">{{ group.name?.display }}</span>\r\n </div>\r\n <mt-button\r\n [text]=\"true\"\r\n icon=\"custom.pencil\"\r\n severity=\"primary\"\r\n (click)=\"openPermissionDialog(group)\"\r\n >\r\n </mt-button>\r\n </div>\r\n } @empty {\r\n <div\r\n class=\"flex items-center justify-center h-full text-muted-color\"\r\n >\r\n {{ \"permissions.noPermissionsFound\" | transloco }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </ng-template>\r\n </div>\r\n </mt-card>\r\n }\r\n </div>\r\n</div>\r\n","// store/index.ts\r\nexport * from './permissions';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PermissionsActions.LoadPermissions","PermissionsActions.LoadGroupPermissions","PermissionsActions.LoadRoles","PermissionsActions.SelectRole","PermissionsActions.SelectGroup","PermissionsActions.UpdatePermissionLocally","PermissionsActions.UpdatePermission","PermissionsActions.UpdateGroupPermission","PermissionsActions.ToggleAllLevelPermissions","PermissionsActions.ToggleAllGroupPermissions","PermissionsActions.SetModuleInfo","PermissionsActions.Reset","i3"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@masterteam/permissions",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "publishConfig": {
5
5
  "directory": "../../../dist/masterteam/permissions",
6
6
  "linkDirectory": false,
@@ -21,7 +21,7 @@
21
21
  "tailwindcss-primeui": "^0.6.1",
22
22
  "@ngxs/store": "^20.1.0",
23
23
  "@masterteam/accessibilities": "^0.0.2",
24
- "@masterteam/components": "^0.0.87"
24
+ "@masterteam/components": "^0.0.101"
25
25
  },
26
26
  "sideEffects": false,
27
27
  "exports": {
@@ -134,6 +134,8 @@ declare class PermissionsPage implements OnInit, OnDestroy {
134
134
  constructor();
135
135
  ngOnInit(): void;
136
136
  selectRole(roleValue: string): void;
137
+ private getRoles;
138
+ private selectFirstRole;
137
139
  selectGroup(groupId: number): void;
138
140
  openPermissionDialog(group: PermissionLog): void;
139
141
  onToggleAllLevel(levelName: string, enabled: boolean): void;