@masterteam/users-groups 0.0.15 → 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/assets/i18n/ar.json
CHANGED
|
@@ -8,6 +8,15 @@
|
|
|
8
8
|
"all": "الكل",
|
|
9
9
|
"external": "خارجي",
|
|
10
10
|
"internal": "داخلي",
|
|
11
|
+
"linked": "\u0645\u0631\u062a\u0628\u0637",
|
|
12
|
+
"not-linked": "\u063a\u064a\u0631 \u0645\u0631\u062a\u0628\u0637",
|
|
13
|
+
"application-link": "\u0627\u0631\u062a\u0628\u0627\u0637 \u0627\u0644\u062a\u0637\u0628\u064a\u0642",
|
|
14
|
+
"link-to-application": "\u0625\u0636\u0627\u0641\u0629 \u0625\u0644\u0649 \u0627\u0644\u062a\u0637\u0628\u064a\u0642",
|
|
15
|
+
"unlink-from-application": "\u0625\u0632\u0627\u0644\u0629 \u0645\u0646 \u0627\u0644\u062a\u0637\u0628\u064a\u0642",
|
|
16
|
+
"link-confirm-header": "\u0625\u0636\u0627\u0641\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0625\u0644\u0649 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u061f",
|
|
17
|
+
"link-confirm-message": "\u0633\u064a\u062a\u0645 \u0625\u0636\u0627\u0641\u0629 \u0645\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0647\u0648\u064a\u0629 \u0627\u0644\u0645\u0633\u062c\u0644 \u0625\u0644\u0649 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u062d\u0627\u0644\u064a.",
|
|
18
|
+
"unlink-confirm-header": "\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0645\u0646 \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u061f",
|
|
19
|
+
"unlink-confirm-message": "\u0647\u0630\u0627 \u064a\u0632\u064a\u0644 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0645\u0646 \u0627\u0644\u062a\u0637\u0628\u064a\u0642 \u0627\u0644\u062d\u0627\u0644\u064a \u0641\u0642\u0637. \u0633\u064a\u0628\u0642\u0649 \u0645\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0647\u0648\u064a\u0629 \u0645\u0633\u062c\u0644\u0627\u064b.",
|
|
11
20
|
"create": "إنشاء",
|
|
12
21
|
"users-groups": "المستخدمين والمجموعات",
|
|
13
22
|
"user": "المستخدم",
|
package/assets/i18n/en.json
CHANGED
|
@@ -7,6 +7,15 @@
|
|
|
7
7
|
"all": "All",
|
|
8
8
|
"external": "External",
|
|
9
9
|
"internal": "Internal",
|
|
10
|
+
"linked": "Linked",
|
|
11
|
+
"not-linked": "Not linked",
|
|
12
|
+
"application-link": "Application access",
|
|
13
|
+
"link-to-application": "Add to application",
|
|
14
|
+
"unlink-from-application": "Remove from application",
|
|
15
|
+
"link-confirm-header": "Add user to application?",
|
|
16
|
+
"link-confirm-message": "This registered identity user will be added to the current application.",
|
|
17
|
+
"unlink-confirm-header": "Remove user from application?",
|
|
18
|
+
"unlink-confirm-message": "This only removes the user from the current application. The identity user will remain registered.",
|
|
10
19
|
"cancel": "Cancel",
|
|
11
20
|
"create": "Create",
|
|
12
21
|
"users-groups": "Users & Groups",
|
package/assets/users-groups.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! tailwindcss v4.
|
|
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-divide-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-amber-50:oklch(98.7% .022 95.277);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-900:oklch(41.4% .112 45.904);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-900:oklch(37.8% .077 168.94);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-600:oklch(58.8% .158 241.966);--color-sky-900:oklch(39.1% .09 240.876);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-900:oklch(35.9% .144 278.697);--color-violet-50:oklch(96.9% .016 293.756);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-600:oklch(54.1% .281 293.009);--color-violet-900:oklch(38% .189 293.745);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-gray-600:oklch(44.6% .03 256.802);--color-white:#fff;--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);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-bold:700;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\!absolute{position:absolute!important}.static{position:static}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.col-span-1{grid-column:span 1/span 1}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.my-4{margin-block:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-7{margin-top:calc(var(--spacing) * 7)}.mb-0{margin-bottom:calc(var(--spacing) * 0)}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-8\!{height:calc(var(--spacing) * 8)!important}.max-h-\[75vh\]{max-height:75vh}.\!w-\[30rem\]{width:30rem!important}.\!w-\[35rem\]{width:35rem!important}.\!w-\[50rem\]{width:50rem!important}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-8\!{width:calc(var(--spacing) * 8)!important}.w-60{width:calc(var(--spacing) * 60)}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-slate-100>:not(:last-child)){border-color:var(--color-slate-100)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t-1{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-slate-200{border-color:var(--color-slate-200)}.border-surface{border-color:var(--p-content-border-color)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-400{background-color:var(--color-slate-400)}.bg-surface-300\!{background-color:var(--p-surface-300)!important}@supports (color:color-mix(in lab, red, red)){.bg-surface-300\!{background-color:color-mix(in srgb, var(--p-surface-300) calc(100% * 1), transparent)!important}}.bg-violet-50{background-color:var(--color-violet-50)}.bg-white{background-color:var(--color-white)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.px-2{padding-inline:calc(var(--spacing) * 2)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-10{padding-block:calc(var(--spacing) * 10)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-lg\!{font-size:var(--text-lg)!important;line-height:var(--tw-leading,var(--text-lg--line-height))!important}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-amber-600{color:var(--color-amber-600)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-gray-600\!{color:var(--color-gray-600)!important}.text-indigo-600{color:var(--color-indigo-600)}.text-sky-600{color:var(--color-sky-600)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-violet-600{color:var(--color-violet-600)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.\!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-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}@media (min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}:where(.dark\:divide-slate-700:where(.dark,.dark *)>:not(:last-child)),.dark\:border-slate-700:where(.dark,.dark *){border-color:var(--color-slate-700)}.dark\:bg-amber-900\/30:where(.dark,.dark *){background-color:#7b33064d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-amber-900) 30%, transparent)}}.dark\:bg-emerald-900\/30:where(.dark,.dark *){background-color:#004e3b4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-emerald-900) 30%, transparent)}}.dark\:bg-indigo-900\/30:where(.dark,.dark *){background-color:#312c854d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-indigo-900) 30%, transparent)}}.dark\:bg-sky-900\/30:where(.dark,.dark *){background-color:#024a704d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-sky-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-sky-900) 30%, transparent)}}.dark\:bg-slate-700:where(.dark,.dark *){background-color:var(--color-slate-700)}.dark\:bg-slate-800:where(.dark,.dark *){background-color:var(--color-slate-800)}.dark\:bg-slate-900\/30:where(.dark,.dark *){background-color:#0f172b4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-900) 30%, transparent)}}.dark\:bg-violet-900\/30:where(.dark,.dark *){background-color:#4d179a4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-violet-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-violet-900) 30%, transparent)}}.dark\:text-amber-300:where(.dark,.dark *){color:var(--color-amber-300)}.dark\:text-emerald-200:where(.dark,.dark *){color:var(--color-emerald-200)}.dark\:text-emerald-300:where(.dark,.dark *){color:var(--color-emerald-300)}.dark\:text-indigo-300:where(.dark,.dark *){color:var(--color-indigo-300)}.dark\:text-sky-300:where(.dark,.dark *){color:var(--color-sky-300)}.dark\:text-slate-100:where(.dark,.dark *){color:var(--color-slate-100)}.dark\:text-slate-200:where(.dark,.dark *){color:var(--color-slate-200)}.dark\:text-slate-300:where(.dark,.dark *){color:var(--color-slate-300)}.dark\:text-slate-400:where(.dark,.dark *){color:var(--color-slate-400)}.dark\:text-violet-300:where(.dark,.dark *){color:var(--color-violet-300)}}@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-divide-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.3.0 | 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-divide-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-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-900:oklch(41.4% .112 45.904);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-900:oklch(37.8% .077 168.94);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-600:oklch(58.8% .158 241.966);--color-sky-900:oklch(39.1% .09 240.876);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-900:oklch(35.9% .144 278.697);--color-violet-50:oklch(96.9% .016 293.756);--color-violet-300:oklch(81.1% .111 293.571);--color-violet-600:oklch(54.1% .281 293.009);--color-violet-900:oklch(38% .189 293.745);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-gray-600:oklch(44.6% .03 256.802);--color-white:#fff;--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);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-bold:700;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\!absolute{position:absolute!important}.static{position:static}.col-span-1{grid-column:span 1/span 1}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.my-4{margin-block:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-7{margin-top:calc(var(--spacing) * 7)}.mb-0{margin-bottom:calc(var(--spacing) * 0)}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-8\!{height:calc(var(--spacing) * 8)!important}.max-h-\[75vh\]{max-height:75vh}.\!w-\[30rem\]{width:30rem!important}.\!w-\[35rem\]{width:35rem!important}.\!w-\[50rem\]{width:50rem!important}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-8\!{width:calc(var(--spacing) * 8)!important}.w-60{width:calc(var(--spacing) * 60)}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-slate-100>:not(:last-child)){border-color:var(--color-slate-100)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t-1{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-slate-200{border-color:var(--color-slate-200)}.border-surface{border-color:var(--p-content-border-color)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-400{background-color:var(--color-slate-400)}.bg-surface-300\!{background-color:var(--p-surface-300)!important}@supports (color:color-mix(in lab, red, red)){.bg-surface-300\!{background-color:color-mix(in srgb, var(--p-surface-300) calc(100% * 1), transparent)!important}}.bg-violet-50{background-color:var(--color-violet-50)}.bg-white{background-color:var(--color-white)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.px-2{padding-inline:calc(var(--spacing) * 2)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-10{padding-block:calc(var(--spacing) * 10)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-lg\!{font-size:var(--text-lg)!important;line-height:var(--tw-leading,var(--text-lg--line-height))!important}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-gray-600\!{color:var(--color-gray-600)!important}.text-indigo-600{color:var(--color-indigo-600)}.text-sky-600{color:var(--color-sky-600)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-violet-600{color:var(--color-violet-600)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.\!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-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}@media (min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}:where(.dark\:divide-slate-700:where(.dark,.dark *)>:not(:last-child)),.dark\:border-slate-700:where(.dark,.dark *){border-color:var(--color-slate-700)}.dark\:bg-amber-900\/30:where(.dark,.dark *){background-color:#7b33064d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-amber-900) 30%, transparent)}}.dark\:bg-emerald-900\/30:where(.dark,.dark *){background-color:#004e3b4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-emerald-900) 30%, transparent)}}.dark\:bg-indigo-900\/30:where(.dark,.dark *){background-color:#312c854d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-indigo-900) 30%, transparent)}}.dark\:bg-sky-900\/30:where(.dark,.dark *){background-color:#024a704d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-sky-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-sky-900) 30%, transparent)}}.dark\:bg-slate-700:where(.dark,.dark *){background-color:var(--color-slate-700)}.dark\:bg-slate-800:where(.dark,.dark *){background-color:var(--color-slate-800)}.dark\:bg-slate-900\/30:where(.dark,.dark *){background-color:#0f172b4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-slate-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-slate-900) 30%, transparent)}}.dark\:bg-violet-900\/30:where(.dark,.dark *){background-color:#4d179a4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-violet-900\/30:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-violet-900) 30%, transparent)}}.dark\:text-amber-200:where(.dark,.dark *){color:var(--color-amber-200)}.dark\:text-amber-300:where(.dark,.dark *){color:var(--color-amber-300)}.dark\:text-emerald-200:where(.dark,.dark *){color:var(--color-emerald-200)}.dark\:text-emerald-300:where(.dark,.dark *){color:var(--color-emerald-300)}.dark\:text-indigo-300:where(.dark,.dark *){color:var(--color-indigo-300)}.dark\:text-sky-300:where(.dark,.dark *){color:var(--color-sky-300)}.dark\:text-slate-100:where(.dark,.dark *){color:var(--color-slate-100)}.dark\:text-slate-200:where(.dark,.dark *){color:var(--color-slate-200)}.dark\:text-slate-300:where(.dark,.dark *){color:var(--color-slate-300)}.dark\:text-slate-400:where(.dark,.dark *){color:var(--color-slate-400)}.dark\:text-violet-300:where(.dark,.dark *){color:var(--color-violet-300)}}@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-divide-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}
|
|
@@ -64,6 +64,13 @@ class DeleteUser {
|
|
|
64
64
|
this.userName = userName;
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
+
class LinkUserToApplication {
|
|
68
|
+
userName;
|
|
69
|
+
static type = '[UsersGroups] Link User To Application';
|
|
70
|
+
constructor(userName) {
|
|
71
|
+
this.userName = userName;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
67
74
|
class GetUserSummary {
|
|
68
75
|
userName;
|
|
69
76
|
static type = '[UsersGroups] Get User Summary';
|
|
@@ -131,6 +138,7 @@ var UsersGroupsActionKey;
|
|
|
131
138
|
UsersGroupsActionKey["CreateUser"] = "createUser";
|
|
132
139
|
UsersGroupsActionKey["UpdateUser"] = "updateUser";
|
|
133
140
|
UsersGroupsActionKey["DeleteUser"] = "deleteUser";
|
|
141
|
+
UsersGroupsActionKey["LinkUserToApplication"] = "linkUserToApplication";
|
|
134
142
|
UsersGroupsActionKey["GetUserSummary"] = "getUserSummary";
|
|
135
143
|
UsersGroupsActionKey["AddUserToGroup"] = "addUserToGroup";
|
|
136
144
|
UsersGroupsActionKey["DeleteUserFromGroup"] = "deleteUserFromGroup";
|
|
@@ -153,6 +161,9 @@ let UsersGroupsState = class UsersGroupsState extends CrudStateBase {
|
|
|
153
161
|
context = new HttpContext().set(REQUEST_CONTEXT, {
|
|
154
162
|
useBaseUrl: false,
|
|
155
163
|
});
|
|
164
|
+
encodeUserName(userName) {
|
|
165
|
+
return encodeURIComponent(String(userName));
|
|
166
|
+
}
|
|
156
167
|
// ============================================================================
|
|
157
168
|
// Data Selectors - Individual selectors for fine-grained reactivity
|
|
158
169
|
// ============================================================================
|
|
@@ -197,7 +208,8 @@ let UsersGroupsState = class UsersGroupsState extends CrudStateBase {
|
|
|
197
208
|
});
|
|
198
209
|
}
|
|
199
210
|
getUser(ctx, { userName }) {
|
|
200
|
-
const
|
|
211
|
+
const encodedUserName = this.encodeUserName(userName ?? '');
|
|
212
|
+
const req$ = this.http.get(`Identity/users/${encodedUserName}?editMode=true`, { context: this.context });
|
|
201
213
|
return handleApiRequest({
|
|
202
214
|
ctx,
|
|
203
215
|
key: UsersGroupsActionKey.GetUser,
|
|
@@ -250,7 +262,8 @@ let UsersGroupsState = class UsersGroupsState extends CrudStateBase {
|
|
|
250
262
|
});
|
|
251
263
|
}
|
|
252
264
|
updateUser(ctx, { changes, id }) {
|
|
253
|
-
const
|
|
265
|
+
const encodedUserName = this.encodeUserName(id ?? '');
|
|
266
|
+
const req$ = this.http.put(`Identity/users/${encodedUserName}`, changes, {
|
|
254
267
|
context: this.context,
|
|
255
268
|
});
|
|
256
269
|
return handleApiRequest({
|
|
@@ -272,19 +285,46 @@ let UsersGroupsState = class UsersGroupsState extends CrudStateBase {
|
|
|
272
285
|
});
|
|
273
286
|
}
|
|
274
287
|
deleteUser(ctx, { userName }) {
|
|
275
|
-
const
|
|
288
|
+
const encodedUserName = this.encodeUserName(userName);
|
|
289
|
+
const userNameKey = String(userName);
|
|
290
|
+
const req$ = this.http.delete(`Identity/users/${encodedUserName}`, {
|
|
276
291
|
context: this.context,
|
|
277
292
|
});
|
|
278
|
-
return
|
|
293
|
+
return handleApiRequest({
|
|
294
|
+
ctx,
|
|
279
295
|
key: UsersGroupsActionKey.DeleteUser,
|
|
280
296
|
request$: req$,
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
297
|
+
onSuccess: (_response, state) => ({
|
|
298
|
+
users: this.adapter.updateOne(state.users, userNameKey, { isLinkedToCurrentApplication: false }, 'userName'),
|
|
299
|
+
}),
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
linkUserToApplication(ctx, { userName }) {
|
|
303
|
+
const encodedUserName = this.encodeUserName(userName);
|
|
304
|
+
const userNameKey = String(userName);
|
|
305
|
+
const req$ = this.http.put(`Identity/users/${encodedUserName}/application/link`, {}, {
|
|
306
|
+
context: this.context,
|
|
307
|
+
});
|
|
308
|
+
return handleApiRequest({
|
|
309
|
+
ctx,
|
|
310
|
+
key: UsersGroupsActionKey.LinkUserToApplication,
|
|
311
|
+
request$: req$,
|
|
312
|
+
onSuccess: (response, state) => {
|
|
313
|
+
const linkedUser = {
|
|
314
|
+
...(state.users.find((user) => user.userName === userNameKey) ?? {}),
|
|
315
|
+
...(response.data ?? {}),
|
|
316
|
+
userName: userNameKey,
|
|
317
|
+
isLinkedToCurrentApplication: true,
|
|
318
|
+
};
|
|
319
|
+
return {
|
|
320
|
+
users: this.adapter.upsertOne(state.users, linkedUser, 'userName'),
|
|
321
|
+
};
|
|
322
|
+
},
|
|
284
323
|
});
|
|
285
324
|
}
|
|
286
325
|
getUserSummary(ctx, { userName }) {
|
|
287
|
-
const
|
|
326
|
+
const encodedUserName = this.encodeUserName(userName);
|
|
327
|
+
const req$ = this.http.get(`identity/users/${encodedUserName}/summary`, { context: this.context });
|
|
288
328
|
return handleApiRequest({
|
|
289
329
|
ctx,
|
|
290
330
|
key: UsersGroupsActionKey.GetUserSummary,
|
|
@@ -295,7 +335,8 @@ let UsersGroupsState = class UsersGroupsState extends CrudStateBase {
|
|
|
295
335
|
});
|
|
296
336
|
}
|
|
297
337
|
resetUserPassword(ctx, { id, payload }) {
|
|
298
|
-
const
|
|
338
|
+
const encodedUserName = this.encodeUserName(id);
|
|
339
|
+
const req$ = this.http.put(`Identity/users/${encodedUserName}/password/reset`, payload, {
|
|
299
340
|
context: this.context,
|
|
300
341
|
});
|
|
301
342
|
return handleApiRequest({
|
|
@@ -417,6 +458,9 @@ __decorate([
|
|
|
417
458
|
__decorate([
|
|
418
459
|
Action(DeleteUser)
|
|
419
460
|
], UsersGroupsState.prototype, "deleteUser", null);
|
|
461
|
+
__decorate([
|
|
462
|
+
Action(LinkUserToApplication)
|
|
463
|
+
], UsersGroupsState.prototype, "linkUserToApplication", null);
|
|
420
464
|
__decorate([
|
|
421
465
|
Action(GetUserSummary)
|
|
422
466
|
], UsersGroupsState.prototype, "getUserSummary", null);
|
|
@@ -481,7 +525,7 @@ UsersGroupsState = __decorate([
|
|
|
481
525
|
], UsersGroupsState);
|
|
482
526
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: UsersGroupsState, decorators: [{
|
|
483
527
|
type: Injectable
|
|
484
|
-
}], propDecorators: { getUsers: [], getUser: [], createUser: [], addUserToGroup: [], updateUser: [], deleteUser: [], getUserSummary: [], resetUserPassword: [], deleteUserFromGroup: [], getGroups: [], getGroup: [], createGroup: [], updateGroup: [], deleteGroup: [], clearSelectedGroup: [] } });
|
|
528
|
+
}], propDecorators: { getUsers: [], getUser: [], createUser: [], addUserToGroup: [], updateUser: [], deleteUser: [], linkUserToApplication: [], getUserSummary: [], resetUserPassword: [], deleteUserFromGroup: [], getGroups: [], getGroup: [], createGroup: [], updateGroup: [], deleteGroup: [], clearSelectedGroup: [] } });
|
|
485
529
|
|
|
486
530
|
class UsersGroupsFacade {
|
|
487
531
|
store = inject(Store);
|
|
@@ -505,6 +549,7 @@ class UsersGroupsFacade {
|
|
|
505
549
|
isSavingUser = computed(() => this.loadingActive().includes(UsersGroupsActionKey.CreateUser) ||
|
|
506
550
|
this.loadingActive().includes(UsersGroupsActionKey.UpdateUser), ...(ngDevMode ? [{ debugName: "isSavingUser" }] : /* istanbul ignore next */ []));
|
|
507
551
|
isDeletingUser = computed(() => this.loadingActive().includes(UsersGroupsActionKey.DeleteUser), ...(ngDevMode ? [{ debugName: "isDeletingUser" }] : /* istanbul ignore next */ []));
|
|
552
|
+
isLinkingUserToApplication = computed(() => this.loadingActive().includes(UsersGroupsActionKey.LinkUserToApplication), ...(ngDevMode ? [{ debugName: "isLinkingUserToApplication" }] : /* istanbul ignore next */ []));
|
|
508
553
|
isLoadingUserSummary = computed(() => this.loadingActive().includes(UsersGroupsActionKey.GetUserSummary), ...(ngDevMode ? [{ debugName: "isLoadingUserSummary" }] : /* istanbul ignore next */ []));
|
|
509
554
|
isLoadingGroups = computed(() => this.loadingActive().includes(UsersGroupsActionKey.GetGroups), ...(ngDevMode ? [{ debugName: "isLoadingGroups" }] : /* istanbul ignore next */ []));
|
|
510
555
|
isLoadingGroup = computed(() => this.loadingActive().includes(UsersGroupsActionKey.GetGroup), ...(ngDevMode ? [{ debugName: "isLoadingGroup" }] : /* istanbul ignore next */ []));
|
|
@@ -538,6 +583,9 @@ class UsersGroupsFacade {
|
|
|
538
583
|
deleteUser(userName) {
|
|
539
584
|
return this.store.dispatch(new DeleteUser(userName));
|
|
540
585
|
}
|
|
586
|
+
linkUserToApplication(userName) {
|
|
587
|
+
return this.store.dispatch(new LinkUserToApplication(userName));
|
|
588
|
+
}
|
|
541
589
|
getUserSummary(userName) {
|
|
542
590
|
return this.store.dispatch(new GetUserSummary(userName));
|
|
543
591
|
}
|
|
@@ -913,6 +961,21 @@ class ResetPasswordForm {
|
|
|
913
961
|
ValidatorConfig.pattern(this.passwordPattern, this.translocoService.translate('users-groups.password-rules')),
|
|
914
962
|
],
|
|
915
963
|
},
|
|
964
|
+
{
|
|
965
|
+
key: 'confirmPassword',
|
|
966
|
+
inputType: 'password',
|
|
967
|
+
label: this.translocoService.translate('users-groups.confirm-password'),
|
|
968
|
+
placeholder: this.translocoService.translate('users-groups.confirm-password'),
|
|
969
|
+
hint: this.translocoService.translate('users-groups.password-rules'),
|
|
970
|
+
validators: [
|
|
971
|
+
ValidatorConfig.required(),
|
|
972
|
+
ValidatorConfig.pattern(this.passwordPattern, this.translocoService.translate('users-groups.password-rules')),
|
|
973
|
+
ValidatorConfig.custom((value, control) => {
|
|
974
|
+
const newPassword = control?.parent?.get('newPassword')?.value;
|
|
975
|
+
return !value || !newPassword || value === newPassword;
|
|
976
|
+
}, this.translocoService.translate('users-groups.passwords-must-match')),
|
|
977
|
+
],
|
|
978
|
+
},
|
|
916
979
|
],
|
|
917
980
|
},
|
|
918
981
|
],
|
|
@@ -921,6 +984,7 @@ class ResetPasswordForm {
|
|
|
921
984
|
this.resetPasswordFormControl.setValue({
|
|
922
985
|
displayName: this.user()?.displayName || '',
|
|
923
986
|
newPassword: '',
|
|
987
|
+
confirmPassword: '',
|
|
924
988
|
});
|
|
925
989
|
}
|
|
926
990
|
onSubmit() {
|
|
@@ -1079,7 +1143,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
1079
1143
|
|
|
1080
1144
|
class Users {
|
|
1081
1145
|
typeCol = viewChild.required('typeCol');
|
|
1082
|
-
|
|
1146
|
+
applicationLinkCol = viewChild.required('applicationLinkCol');
|
|
1083
1147
|
facade = inject(UsersGroupsFacade);
|
|
1084
1148
|
modal = inject(ModalService);
|
|
1085
1149
|
translocoService = inject(TranslocoService);
|
|
@@ -1091,6 +1155,8 @@ class Users {
|
|
|
1091
1155
|
return all.filter((user) => !user.isExternal);
|
|
1092
1156
|
case 'external':
|
|
1093
1157
|
return all.filter((user) => user.isExternal);
|
|
1158
|
+
case 'notLinked':
|
|
1159
|
+
return all.filter((user) => !this.isLinkedToCurrentApplication(user));
|
|
1094
1160
|
case 'all':
|
|
1095
1161
|
default:
|
|
1096
1162
|
return all;
|
|
@@ -1109,6 +1175,10 @@ class Users {
|
|
|
1109
1175
|
label: this.translocoService.translate('users-groups.external'),
|
|
1110
1176
|
value: 'external',
|
|
1111
1177
|
},
|
|
1178
|
+
{
|
|
1179
|
+
label: this.translocoService.translate('users-groups.not-linked'),
|
|
1180
|
+
value: 'notLinked',
|
|
1181
|
+
},
|
|
1112
1182
|
], ...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
|
|
1113
1183
|
activeTab = signal('all', ...(ngDevMode ? [{ debugName: "activeTab" }] : /* istanbul ignore next */ []));
|
|
1114
1184
|
tableActions = signal([
|
|
@@ -1122,6 +1192,7 @@ class Users {
|
|
|
1122
1192
|
},
|
|
1123
1193
|
], ...(ngDevMode ? [{ debugName: "tableActions" }] : /* istanbul ignore next */ []));
|
|
1124
1194
|
deletingRowIds = signal([], ...(ngDevMode ? [{ debugName: "deletingRowIds" }] : /* istanbul ignore next */ []));
|
|
1195
|
+
linkingRowIds = signal([], ...(ngDevMode ? [{ debugName: "linkingRowIds" }] : /* istanbul ignore next */ []));
|
|
1125
1196
|
rowActions = signal([
|
|
1126
1197
|
{
|
|
1127
1198
|
icon: 'general.link-01',
|
|
@@ -1130,6 +1201,7 @@ class Users {
|
|
|
1130
1201
|
action: (row) => {
|
|
1131
1202
|
this.openLinkedGroupsDialog(row);
|
|
1132
1203
|
},
|
|
1204
|
+
hidden: (row) => !this.isLinkedToCurrentApplication(row),
|
|
1133
1205
|
},
|
|
1134
1206
|
{
|
|
1135
1207
|
icon: 'security.key-01',
|
|
@@ -1138,7 +1210,7 @@ class Users {
|
|
|
1138
1210
|
action: (row) => {
|
|
1139
1211
|
this.addResetPasswordDialog(row);
|
|
1140
1212
|
},
|
|
1141
|
-
hidden: (row) => !row.isExternal,
|
|
1213
|
+
hidden: (row) => !row.isExternal || !this.isLinkedToCurrentApplication(row),
|
|
1142
1214
|
},
|
|
1143
1215
|
{
|
|
1144
1216
|
icon: 'custom.pencil',
|
|
@@ -1147,37 +1219,60 @@ class Users {
|
|
|
1147
1219
|
action: (row) => {
|
|
1148
1220
|
this.addUserDialog(row);
|
|
1149
1221
|
},
|
|
1150
|
-
hidden: (row) => !row.isExternal,
|
|
1222
|
+
hidden: (row) => !row.isExternal || !this.isLinkedToCurrentApplication(row),
|
|
1223
|
+
},
|
|
1224
|
+
{
|
|
1225
|
+
icon: 'user.user-plus-01',
|
|
1226
|
+
tooltip: this.translocoService.translate('users-groups.link-to-application'),
|
|
1227
|
+
color: 'success',
|
|
1228
|
+
variant: 'outlined',
|
|
1229
|
+
action: (row) => {
|
|
1230
|
+
this.linkUserToApplication(row);
|
|
1231
|
+
},
|
|
1232
|
+
hidden: (row) => this.isLinkedToCurrentApplication(row),
|
|
1233
|
+
confirmation: {
|
|
1234
|
+
type: 'popup',
|
|
1235
|
+
header: this.translocoService.translate('users-groups.link-confirm-header'),
|
|
1236
|
+
message: this.translocoService.translate('users-groups.link-confirm-message'),
|
|
1237
|
+
icon: 'user.user-plus-01',
|
|
1238
|
+
acceptLabel: this.translocoService.translate('users-groups.link-to-application'),
|
|
1239
|
+
rejectLabel: this.translocoService.translate('users-groups.cancel'),
|
|
1240
|
+
acceptButton: {
|
|
1241
|
+
severity: 'success',
|
|
1242
|
+
},
|
|
1243
|
+
},
|
|
1244
|
+
loading: (row) => this.linkingRowIds().includes(row.userName),
|
|
1151
1245
|
},
|
|
1152
1246
|
{
|
|
1153
1247
|
icon: 'general.trash-01',
|
|
1154
|
-
tooltip: this.translocoService.translate('
|
|
1248
|
+
tooltip: this.translocoService.translate('users-groups.unlink-from-application'),
|
|
1155
1249
|
color: 'danger',
|
|
1156
1250
|
variant: 'outlined',
|
|
1157
1251
|
action: (row) => {
|
|
1158
|
-
this.
|
|
1159
|
-
this.facade
|
|
1160
|
-
.deleteUser(row.userName)
|
|
1161
|
-
.pipe(finalize(() => {
|
|
1162
|
-
this.deletingRowIds.update((ids) => ids.filter((id) => id !== row.userName));
|
|
1163
|
-
}))
|
|
1164
|
-
.subscribe();
|
|
1252
|
+
this.unlinkUserFromApplication(row);
|
|
1165
1253
|
},
|
|
1254
|
+
hidden: (row) => !this.isLinkedToCurrentApplication(row),
|
|
1166
1255
|
confirmation: {
|
|
1167
1256
|
type: 'popup',
|
|
1168
|
-
|
|
1257
|
+
header: this.translocoService.translate('users-groups.unlink-confirm-header'),
|
|
1258
|
+
message: this.translocoService.translate('users-groups.unlink-confirm-message'),
|
|
1259
|
+
icon: 'general.link-broken-01',
|
|
1260
|
+
acceptLabel: this.translocoService.translate('users-groups.unlink-from-application'),
|
|
1261
|
+
rejectLabel: this.translocoService.translate('users-groups.cancel'),
|
|
1262
|
+
acceptButton: {
|
|
1263
|
+
severity: 'danger',
|
|
1264
|
+
},
|
|
1169
1265
|
},
|
|
1170
1266
|
loading: (row) => this.deletingRowIds().includes(row.userName),
|
|
1171
1267
|
},
|
|
1172
1268
|
], ...(ngDevMode ? [{ debugName: "rowActions" }] : /* istanbul ignore next */ []));
|
|
1173
1269
|
tableColumns = linkedSignal(() => [
|
|
1174
1270
|
{
|
|
1175
|
-
key: '
|
|
1271
|
+
key: '{{record}}',
|
|
1176
1272
|
label: this.translocoService.translate('users-groups.user'),
|
|
1177
|
-
type: '
|
|
1178
|
-
customCellTpl: this.userCol(),
|
|
1273
|
+
type: 'user',
|
|
1179
1274
|
filterConfig: {
|
|
1180
|
-
type: '
|
|
1275
|
+
type: 'select',
|
|
1181
1276
|
label: this.translocoService.translate('users-groups.user'),
|
|
1182
1277
|
},
|
|
1183
1278
|
},
|
|
@@ -1187,6 +1282,26 @@ class Users {
|
|
|
1187
1282
|
type: 'custom',
|
|
1188
1283
|
customCellTpl: this.typeCol(),
|
|
1189
1284
|
},
|
|
1285
|
+
{
|
|
1286
|
+
key: 'isLinkedToCurrentApplication',
|
|
1287
|
+
label: this.translocoService.translate('users-groups.application-link'),
|
|
1288
|
+
type: 'custom',
|
|
1289
|
+
customCellTpl: this.applicationLinkCol(),
|
|
1290
|
+
filterConfig: {
|
|
1291
|
+
type: 'select',
|
|
1292
|
+
label: this.translocoService.translate('users-groups.application-link'),
|
|
1293
|
+
options: [
|
|
1294
|
+
{
|
|
1295
|
+
label: this.translocoService.translate('users-groups.linked'),
|
|
1296
|
+
value: true,
|
|
1297
|
+
},
|
|
1298
|
+
{
|
|
1299
|
+
label: this.translocoService.translate('users-groups.not-linked'),
|
|
1300
|
+
value: false,
|
|
1301
|
+
},
|
|
1302
|
+
],
|
|
1303
|
+
},
|
|
1304
|
+
},
|
|
1190
1305
|
{
|
|
1191
1306
|
key: 'email',
|
|
1192
1307
|
label: this.translocoService.translate('users-groups.email'),
|
|
@@ -1206,6 +1321,35 @@ class Users {
|
|
|
1206
1321
|
ngOnInit() {
|
|
1207
1322
|
this.facade.getUsers();
|
|
1208
1323
|
}
|
|
1324
|
+
isLinkedToCurrentApplication(user) {
|
|
1325
|
+
return user?.isLinkedToCurrentApplication !== false;
|
|
1326
|
+
}
|
|
1327
|
+
linkUserToApplication(user) {
|
|
1328
|
+
const userName = user?.userName;
|
|
1329
|
+
if (!userName) {
|
|
1330
|
+
return;
|
|
1331
|
+
}
|
|
1332
|
+
this.linkingRowIds.update((ids) => [...ids, userName]);
|
|
1333
|
+
this.facade
|
|
1334
|
+
.linkUserToApplication(userName)
|
|
1335
|
+
.pipe(finalize(() => {
|
|
1336
|
+
this.linkingRowIds.update((ids) => ids.filter((id) => id !== userName));
|
|
1337
|
+
}))
|
|
1338
|
+
.subscribe();
|
|
1339
|
+
}
|
|
1340
|
+
unlinkUserFromApplication(user) {
|
|
1341
|
+
const userName = user?.userName;
|
|
1342
|
+
if (!userName || !this.isLinkedToCurrentApplication(user)) {
|
|
1343
|
+
return;
|
|
1344
|
+
}
|
|
1345
|
+
this.deletingRowIds.update((ids) => [...ids, userName]);
|
|
1346
|
+
this.facade
|
|
1347
|
+
.deleteUser(userName)
|
|
1348
|
+
.pipe(finalize(() => {
|
|
1349
|
+
this.deletingRowIds.update((ids) => ids.filter((id) => id !== userName));
|
|
1350
|
+
}))
|
|
1351
|
+
.subscribe();
|
|
1352
|
+
}
|
|
1209
1353
|
addUserDialog(user = null) {
|
|
1210
1354
|
const modalType = user ? 'drawer' : 'dialog';
|
|
1211
1355
|
this.modal.openModal(UserForm, modalType, {
|
|
@@ -1248,7 +1392,7 @@ class Users {
|
|
|
1248
1392
|
});
|
|
1249
1393
|
}
|
|
1250
1394
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Users, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1251
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: Users, isStandalone: true, selector: "mt-users", viewQueries: [{ propertyName: "typeCol", first: true, predicate: ["typeCol"], descendants: true, isSignal: true }, { propertyName: "
|
|
1395
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: Users, isStandalone: true, selector: "mt-users", viewQueries: [{ propertyName: "typeCol", first: true, predicate: ["typeCol"], descendants: true, isSignal: true }, { propertyName: "applicationLinkCol", first: true, predicate: ["applicationLinkCol"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'users-groups'\">\r\n <div class=\"mt-5\">\r\n <ng-template #typeCol let-row>\r\n @if (row.isExternal) {\r\n <span\r\n class=\"inline-flex items-center gap-1 rounded-md bg-slate-50 dark:bg-slate-900/30 p-2\"\r\n >\r\n <mt-icon\r\n icon=\"general.link-external-02\"\r\n class=\"text-slate-600 dark:text-slate-300 text-sm\"\r\n />\r\n <span class=\"text-slate-700 dark:text-slate-200 text-xs font-medium\">\r\n {{ t(\"external\") }}\r\n </span>\r\n </span>\r\n } @else {\r\n <span\r\n class=\"inline-flex items-center gap-1 rounded-md bg-emerald-50 dark:bg-emerald-900/30 p-2\"\r\n >\r\n <mt-icon\r\n icon=\"user.users-01\"\r\n class=\"text-emerald-600 dark:text-emerald-300 text-sm\"\r\n />\r\n <span\r\n class=\"text-emerald-700 dark:text-emerald-200 text-xs font-medium\"\r\n >\r\n {{ t(\"internal\") }}\r\n </span>\r\n </span>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #applicationLinkCol let-row>\r\n @if (isLinkedToCurrentApplication(row)) {\r\n <span\r\n class=\"inline-flex items-center gap-1 rounded-md bg-emerald-50 dark:bg-emerald-900/30 p-2\"\r\n >\r\n <mt-icon\r\n icon=\"user.user-check-01\"\r\n class=\"text-emerald-600 dark:text-emerald-300 text-sm\"\r\n />\r\n <span\r\n class=\"text-emerald-700 dark:text-emerald-200 text-xs font-medium\"\r\n >\r\n {{ t(\"linked\") }}\r\n </span>\r\n </span>\r\n } @else {\r\n <span\r\n class=\"inline-flex items-center gap-1 rounded-md bg-amber-50 dark:bg-amber-900/30 p-2\"\r\n >\r\n <mt-icon\r\n icon=\"general.link-broken-01\"\r\n class=\"text-amber-600 dark:text-amber-300 text-sm\"\r\n />\r\n <span class=\"text-amber-700 dark:text-amber-200 text-xs font-medium\">\r\n {{ t(\"not-linked\") }}\r\n </span>\r\n </span>\r\n }\r\n </ng-template>\r\n\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"users()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n storageKey=\"users-groups-users-table\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: Table, selector: "mt-table", inputs: ["filters", "data", "columns", "rowActions", "size", "showGridlines", "stripedRows", "selectableRows", "clickableRows", "generalSearch", "lazyLocalSearch", "showFilters", "filterMode", "loading", "updating", "lazy", "lazyLocalSort", "lazyTotalRecords", "reorderableColumns", "reorderableRows", "dataKey", "storageKey", "storageMode", "exportable", "printable", "groupable", "cellClickFilter", "freezeActions", "printTitle", "exportFilename", "actionShape", "rowActionsLoadingFn", "tableLayout", "noCard", "tabs", "tabsOptionLabel", "tabsOptionValue", "activeTab", "actions", "paginatorPosition", "alwaysShowPaginator", "rowsPerPageOptions", "pageSize", "currentPage", "first", "filterTerm", "groupBy"], outputs: ["selectionChange", "cellChange", "lazyLoad", "columnReorder", "rowReorder", "rowClick", "rowActionsRequested", "filtersChange", "activeTabChange", "onTabChange", "pageSizeChange", "currentPageChange", "firstChange", "filterTermChange", "groupByChange"] }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] });
|
|
1252
1396
|
}
|
|
1253
1397
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Users, decorators: [{
|
|
1254
1398
|
type: Component,
|
|
@@ -1259,8 +1403,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
1259
1403
|
Avatar,
|
|
1260
1404
|
Icon,
|
|
1261
1405
|
TranslocoDirective,
|
|
1262
|
-
], template: "<ng-container *transloco=\"let t; prefix: 'users-groups'\">\r\n <div class=\"mt-5\">\r\n <ng-template #typeCol let-row>\r\n @if (row.isExternal) {\r\n <span\r\n class=\"inline-flex items-center gap-1 rounded-md bg-slate-50 dark:bg-slate-900/30 p-2\"\r\n >\r\n <mt-icon\r\n icon=\"general.link-external-02\"\r\n class=\"text-slate-600 dark:text-slate-300 text-sm\"\r\n />\r\n <span class=\"text-slate-700 dark:text-slate-200 text-xs font-medium\">\r\n {{ t(\"external\") }}\r\n </span>\r\n </span>\r\n } @else {\r\n <span\r\n class=\"inline-flex items-center gap-1 rounded-md bg-emerald-50 dark:bg-emerald-900/30 p-2\"\r\n >\r\n <mt-icon\r\n icon=\"user.users-01\"\r\n class=\"text-emerald-600 dark:text-emerald-300 text-sm\"\r\n />\r\n <span\r\n class=\"text-emerald-700 dark:text-emerald-200 text-xs font-medium\"\r\n >\r\n {{ t(\"internal\") }}\r\n </span>\r\n </span>\r\n }\r\n </ng-template>\r\n <ng-template #
|
|
1263
|
-
}], propDecorators: { typeCol: [{ type: i0.ViewChild, args: ['typeCol', { isSignal: true }] }],
|
|
1406
|
+
], template: "<ng-container *transloco=\"let t; prefix: 'users-groups'\">\r\n <div class=\"mt-5\">\r\n <ng-template #typeCol let-row>\r\n @if (row.isExternal) {\r\n <span\r\n class=\"inline-flex items-center gap-1 rounded-md bg-slate-50 dark:bg-slate-900/30 p-2\"\r\n >\r\n <mt-icon\r\n icon=\"general.link-external-02\"\r\n class=\"text-slate-600 dark:text-slate-300 text-sm\"\r\n />\r\n <span class=\"text-slate-700 dark:text-slate-200 text-xs font-medium\">\r\n {{ t(\"external\") }}\r\n </span>\r\n </span>\r\n } @else {\r\n <span\r\n class=\"inline-flex items-center gap-1 rounded-md bg-emerald-50 dark:bg-emerald-900/30 p-2\"\r\n >\r\n <mt-icon\r\n icon=\"user.users-01\"\r\n class=\"text-emerald-600 dark:text-emerald-300 text-sm\"\r\n />\r\n <span\r\n class=\"text-emerald-700 dark:text-emerald-200 text-xs font-medium\"\r\n >\r\n {{ t(\"internal\") }}\r\n </span>\r\n </span>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #applicationLinkCol let-row>\r\n @if (isLinkedToCurrentApplication(row)) {\r\n <span\r\n class=\"inline-flex items-center gap-1 rounded-md bg-emerald-50 dark:bg-emerald-900/30 p-2\"\r\n >\r\n <mt-icon\r\n icon=\"user.user-check-01\"\r\n class=\"text-emerald-600 dark:text-emerald-300 text-sm\"\r\n />\r\n <span\r\n class=\"text-emerald-700 dark:text-emerald-200 text-xs font-medium\"\r\n >\r\n {{ t(\"linked\") }}\r\n </span>\r\n </span>\r\n } @else {\r\n <span\r\n class=\"inline-flex items-center gap-1 rounded-md bg-amber-50 dark:bg-amber-900/30 p-2\"\r\n >\r\n <mt-icon\r\n icon=\"general.link-broken-01\"\r\n class=\"text-amber-600 dark:text-amber-300 text-sm\"\r\n />\r\n <span class=\"text-amber-700 dark:text-amber-200 text-xs font-medium\">\r\n {{ t(\"not-linked\") }}\r\n </span>\r\n </span>\r\n }\r\n </ng-template>\r\n\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"users()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n storageKey=\"users-groups-users-table\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n" }]
|
|
1407
|
+
}], propDecorators: { typeCol: [{ type: i0.ViewChild, args: ['typeCol', { isSignal: true }] }], applicationLinkCol: [{ type: i0.ViewChild, args: ['applicationLinkCol', { isSignal: true }] }] } });
|
|
1264
1408
|
|
|
1265
1409
|
class GroupForm {
|
|
1266
1410
|
modal = inject(ModalService);
|
|
@@ -1442,8 +1586,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
1442
1586
|
}], ctorParameters: () => [], propDecorators: { groupForEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupForEdit", required: false }] }], userCol: [{ type: i0.ViewChild, args: ['userCol', { isSignal: true }] }] } });
|
|
1443
1587
|
|
|
1444
1588
|
class Groups {
|
|
1445
|
-
workspaceCol = viewChild.required('workspaceCol');
|
|
1446
|
-
groupCol = viewChild.required('groupCol');
|
|
1447
1589
|
facade = inject(UsersGroupsFacade);
|
|
1448
1590
|
modal = inject(ModalService);
|
|
1449
1591
|
translocoService = inject(TranslocoService);
|
|
@@ -1492,10 +1634,9 @@ class Groups {
|
|
|
1492
1634
|
], ...(ngDevMode ? [{ debugName: "rowActions" }] : /* istanbul ignore next */ []));
|
|
1493
1635
|
tableColumns = linkedSignal(() => [
|
|
1494
1636
|
{
|
|
1495
|
-
key: 'name',
|
|
1637
|
+
key: 'name.display',
|
|
1496
1638
|
label: this.translocoService.translate('users-groups.group'),
|
|
1497
|
-
type: '
|
|
1498
|
-
customCellTpl: this.groupCol(),
|
|
1639
|
+
type: 'text',
|
|
1499
1640
|
filterConfig: {
|
|
1500
1641
|
type: 'text',
|
|
1501
1642
|
label: this.translocoService.translate('users-groups.group'),
|
|
@@ -1528,12 +1669,12 @@ class Groups {
|
|
|
1528
1669
|
});
|
|
1529
1670
|
}
|
|
1530
1671
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Groups, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1531
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
1672
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.8", type: Groups, isStandalone: true, selector: "mt-groups", ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'users-groups'\">\r\n <div class=\"mt-5\">\r\n <mt-table\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"allGroups()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n storageKey=\"users-groups-groups-table\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n", styles: [".groups{padding:2rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: Table, selector: "mt-table", inputs: ["filters", "data", "columns", "rowActions", "size", "showGridlines", "stripedRows", "selectableRows", "clickableRows", "generalSearch", "lazyLocalSearch", "showFilters", "filterMode", "loading", "updating", "lazy", "lazyLocalSort", "lazyTotalRecords", "reorderableColumns", "reorderableRows", "dataKey", "storageKey", "storageMode", "exportable", "printable", "groupable", "cellClickFilter", "freezeActions", "printTitle", "exportFilename", "actionShape", "rowActionsLoadingFn", "tableLayout", "noCard", "tabs", "tabsOptionLabel", "tabsOptionValue", "activeTab", "actions", "paginatorPosition", "alwaysShowPaginator", "rowsPerPageOptions", "pageSize", "currentPage", "first", "filterTerm", "groupBy"], outputs: ["selectionChange", "cellChange", "lazyLoad", "columnReorder", "rowReorder", "rowClick", "rowActionsRequested", "filtersChange", "activeTabChange", "onTabChange", "pageSizeChange", "currentPageChange", "firstChange", "filterTermChange", "groupByChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] });
|
|
1532
1673
|
}
|
|
1533
1674
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: Groups, decorators: [{
|
|
1534
1675
|
type: Component,
|
|
1535
|
-
args: [{ selector: 'mt-groups', standalone: true, imports: [CommonModule, SkeletonModule, Table, TranslocoDirective], template: "<ng-container *transloco=\"let t; prefix: 'users-groups'\">\r\n <div class=\"mt-5\">\r\n <
|
|
1536
|
-
}]
|
|
1676
|
+
args: [{ selector: 'mt-groups', standalone: true, imports: [CommonModule, SkeletonModule, Table, TranslocoDirective], template: "<ng-container *transloco=\"let t; prefix: 'users-groups'\">\r\n <div class=\"mt-5\">\r\n <mt-table\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"allGroups()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n storageKey=\"users-groups-groups-table\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n", styles: [".groups{padding:2rem}\n"] }]
|
|
1677
|
+
}] });
|
|
1537
1678
|
|
|
1538
1679
|
// store/index.ts
|
|
1539
1680
|
|
|
@@ -1541,5 +1682,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
1541
1682
|
* Generated bundle index. Do not edit.
|
|
1542
1683
|
*/
|
|
1543
1684
|
|
|
1544
|
-
export { AddUserToGroup, ClearSelectedGroup, CreateGroup, CreateUser, DeleteGroup, DeleteUser, DeleteUserFromGroup, GetGroup, GetGroups, GetUser, GetUserSummary, GetUsers, GroupForm, Groups, ResetUserPassword, UpdateGroup, UpdateUser, UserForm, Users, UsersGroups, UsersGroupsActionKey, UsersGroupsFacade, UsersGroupsState };
|
|
1685
|
+
export { AddUserToGroup, ClearSelectedGroup, CreateGroup, CreateUser, DeleteGroup, DeleteUser, DeleteUserFromGroup, GetGroup, GetGroups, GetUser, GetUserSummary, GetUsers, GroupForm, Groups, LinkUserToApplication, ResetUserPassword, UpdateGroup, UpdateUser, UserForm, Users, UsersGroups, UsersGroupsActionKey, UsersGroupsFacade, UsersGroupsState };
|
|
1545
1686
|
//# sourceMappingURL=masterteam-users-groups.mjs.map
|