@masterteam/work-center 0.0.61 → 0.0.62
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/work-center.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.3 | 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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--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;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@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-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-700:oklch(55.5% .163 48.998);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-700:oklch(50.8% .118 165.612);--spacing:.25rem;--container-md:28rem;--container-xl:36rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--radius-lg:.5rem;--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{.visible{visibility:visible}.\!absolute{position:absolute!important}.static{position:static}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.me-auto{margin-inline-end:auto}.mt-2{margin-top:calc(var(--spacing) * 2)}.block{display:block}.flex{display:flex}.grid{display:grid}.table{display:table}.\!h-\[90vh\]{height:90vh!important}.h-\[32rem\]{height:32rem}.h-\[70vh\]{height:70vh}.h-full{height:100%}.max-h-\[70vh\]{max-height:70vh}.min-h-0{min-height:0}.min-h-\[22rem\]{min-height:22rem}.\!w-\[70vw\]{width:70vw!important}.\!w-\[90vw\]{width:90vw!important}.\!w-\[96vw\]{width:96vw!important}.w-full{width:100%}.max-w-md{max-width:var(--container-md)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-8{gap:calc(var(--spacing) * 8)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-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-amber-200{border-color:var(--color-amber-200)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-surface{border-color:var(--p-content-border-color)}.border-surface-200{border-color:var(--p-surface-200)}@supports (color:color-mix(in lab, red, red)){.border-surface-200{border-color:color-mix(in srgb, var(--p-surface-200) calc(100% * 1), transparent)}}.border-surface-300{border-color:var(--p-surface-300)}@supports (color:color-mix(in lab, red, red)){.border-surface-300{border-color:color-mix(in srgb, var(--p-surface-300) calc(100% * 1), transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-red-50{background-color:var(--color-red-50)}.bg-surface-0{background-color:var(--p-surface-0)}@supports (color:color-mix(in lab, red, red)){.bg-surface-0{background-color:color-mix(in srgb, var(--p-surface-0) 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-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-7{padding-inline:calc(var(--spacing) * 7)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-amber-700{color:var(--color-amber-700)}.text-emerald-700{color:var(--color-emerald-700)}.text-muted-color{color:var(--p-text-muted-color)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-surface-500{color:var(--p-surface-500)}@supports (color:color-mix(in lab, red, red)){.text-surface-500{color:color-mix(in srgb, var(--p-surface-500) calc(100% * 1), transparent)}}.\!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}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}@media (min-width:48rem){.md\:\!w-\[84vw\]{width:84vw!important}.md\:\!w-\[90vw\]{width:90vw!important}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:64rem){.lg\:grid{display:grid}.lg\:h-full{height:100%}.lg\:min-h-0{min-height:0}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-\[13rem_minmax\(0\,1fr\)\]{grid-template-columns:13rem minmax(0,1fr)}.lg\:gap-6{gap:calc(var(--spacing) * 6)}.lg\:overflow-hidden{overflow:hidden}.lg\:overflow-y-auto{overflow-y:auto}.lg\:overscroll-contain{overscroll-behavior:contain}.lg\:pr-2{padding-right:calc(var(--spacing) * 2)}}@media (min-width:80rem){.xl\:\!w-\[70vw\]{width:70vw!important}.xl\:\!w-\[82vw\]{width:82vw!important}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}}@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-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@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}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
|
|
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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--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;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@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-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-700:oklch(55.5% .163 48.998);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-700:oklch(50.8% .118 165.612);--spacing:.25rem;--container-md:28rem;--container-xl:36rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--radius-lg:.5rem;--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{.collapse{visibility:collapse}.visible{visibility:visible}.\!absolute{position:absolute!important}.static{position:static}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.me-auto{margin-inline-end:auto}.mt-2{margin-top:calc(var(--spacing) * 2)}.block{display:block}.flex{display:flex}.grid{display:grid}.table{display:table}.\!h-\[90vh\]{height:90vh!important}.h-\[32rem\]{height:32rem}.h-\[70vh\]{height:70vh}.h-full{height:100%}.max-h-\[70vh\]{max-height:70vh}.min-h-0{min-height:0}.min-h-\[22rem\]{min-height:22rem}.\!w-\[70vw\]{width:70vw!important}.\!w-\[90vw\]{width:90vw!important}.\!w-\[96vw\]{width:96vw!important}.w-full{width:100%}.max-w-md{max-width:var(--container-md)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-8{gap:calc(var(--spacing) * 8)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-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-amber-200{border-color:var(--color-amber-200)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-surface{border-color:var(--p-content-border-color)}.border-surface-200{border-color:var(--p-surface-200)}@supports (color:color-mix(in lab, red, red)){.border-surface-200{border-color:color-mix(in srgb, var(--p-surface-200) calc(100% * 1), transparent)}}.border-surface-300{border-color:var(--p-surface-300)}@supports (color:color-mix(in lab, red, red)){.border-surface-300{border-color:color-mix(in srgb, var(--p-surface-300) calc(100% * 1), transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-red-50{background-color:var(--color-red-50)}.bg-surface-0{background-color:var(--p-surface-0)}@supports (color:color-mix(in lab, red, red)){.bg-surface-0{background-color:color-mix(in srgb, var(--p-surface-0) 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-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-7{padding-inline:calc(var(--spacing) * 7)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-amber-700{color:var(--color-amber-700)}.text-emerald-700{color:var(--color-emerald-700)}.text-muted-color{color:var(--p-text-muted-color)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-surface-500{color:var(--p-surface-500)}@supports (color:color-mix(in lab, red, red)){.text-surface-500{color:color-mix(in srgb, var(--p-surface-500) calc(100% * 1), transparent)}}.\!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}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}@media (min-width:48rem){.md\:\!w-\[84vw\]{width:84vw!important}.md\:\!w-\[90vw\]{width:90vw!important}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:64rem){.lg\:grid{display:grid}.lg\:h-full{height:100%}.lg\:min-h-0{min-height:0}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-\[13rem_minmax\(0\,1fr\)\]{grid-template-columns:13rem minmax(0,1fr)}.lg\:gap-6{gap:calc(var(--spacing) * 6)}.lg\:overflow-hidden{overflow:hidden}.lg\:overflow-y-auto{overflow-y:auto}.lg\:overscroll-contain{overscroll-behavior:contain}.lg\:pr-2{padding-right:calc(var(--spacing) * 2)}}@media (min-width:80rem){.xl\:\!w-\[70vw\]{width:70vw!important}.xl\:\!w-\[82vw\]{width:82vw!important}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}}@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-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@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}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
|
|
@@ -168,6 +168,22 @@ class ApplyColumnFilters {
|
|
|
168
168
|
this.filters = filters;
|
|
169
169
|
}
|
|
170
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Sets the grouped column. Grouping is expressed to the backend as a single
|
|
173
|
+
* sort on the same field, so this also rewrites `context.sort` and resets
|
|
174
|
+
* `page` to 1 before reloading. `groupBy: null` clears both.
|
|
175
|
+
*/
|
|
176
|
+
class SetGroupBy {
|
|
177
|
+
area;
|
|
178
|
+
groupBy;
|
|
179
|
+
dir;
|
|
180
|
+
static type = '[WorkCenter] Set Group By';
|
|
181
|
+
constructor(area, groupBy, dir = 'asc') {
|
|
182
|
+
this.area = area;
|
|
183
|
+
this.groupBy = groupBy;
|
|
184
|
+
this.dir = dir;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
171
187
|
/**
|
|
172
188
|
* Clears both the header filter slice and the column filter slice in one
|
|
173
189
|
* state update, triggering a single BE reload.
|
|
@@ -188,6 +204,22 @@ const WORK_CENTER_QUERY_VERSION = 1;
|
|
|
188
204
|
const WORK_CENTER_MAX_PAGE_SIZE = 100;
|
|
189
205
|
const WORK_CENTER_MAX_FILTERS = 20;
|
|
190
206
|
const WORK_CENTER_MAX_SORT = 5;
|
|
207
|
+
/**
|
|
208
|
+
* Backend column key carrying the row's LevelData display label
|
|
209
|
+
* (`extra.levelDataName`). Grouping by it maps to a single backend sort on the
|
|
210
|
+
* same key — see `WORK_CENTER_LEVEL_GROUP_FIELD` for the grouping identity.
|
|
211
|
+
*/
|
|
212
|
+
const WORK_CENTER_LEVEL_NAME_KEY = 'levelDataName';
|
|
213
|
+
/**
|
|
214
|
+
* Synthetic per-row field holding the *identity* behind the Level Name column.
|
|
215
|
+
* The visible label is ambiguous (two LevelData records may share a name), so
|
|
216
|
+
* rows are bucketed by `context.levelDataId` instead — except rows with no
|
|
217
|
+
* visible label, which get an empty identity so they all collapse into the one
|
|
218
|
+
* shared "—" group the backend contract requires.
|
|
219
|
+
*/
|
|
220
|
+
const WORK_CENTER_LEVEL_GROUP_FIELD = '__mtLevelGroup';
|
|
221
|
+
/** Rendered in place of a missing / restricted LevelData label. */
|
|
222
|
+
const WORK_CENTER_EMPTY_LABEL = '—';
|
|
191
223
|
|
|
192
224
|
const AREA_COLORS = ['violet', 'blue', 'emerald', 'amber', 'teal'];
|
|
193
225
|
/** Fallback accent rotation used only when the backend sends no stat color. */
|
|
@@ -273,6 +305,17 @@ function parseSortInput(value) {
|
|
|
273
305
|
? sanitizeSort(parsed)
|
|
274
306
|
: [];
|
|
275
307
|
}
|
|
308
|
+
/**
|
|
309
|
+
* Resolves the grouped column key from bootstrap inputs. Mirrors the `sort`
|
|
310
|
+
* rules: a present value wins, an explicit `null` clears, `undefined` keeps
|
|
311
|
+
* whatever is already in state.
|
|
312
|
+
*/
|
|
313
|
+
function resolveGroupByFromInputs(current, group) {
|
|
314
|
+
if (hasParamValue(group)) {
|
|
315
|
+
return typeof group === 'string' ? group.trim() || null : null;
|
|
316
|
+
}
|
|
317
|
+
return group === null ? null : current;
|
|
318
|
+
}
|
|
276
319
|
function parseFiltersInput(value) {
|
|
277
320
|
const parsed = parseJson(value);
|
|
278
321
|
return Array.isArray(parsed)
|
|
@@ -392,8 +435,21 @@ function buildColumnsFromProperties(properties) {
|
|
|
392
435
|
toLabel$1(property.key),
|
|
393
436
|
type: 'entity',
|
|
394
437
|
viewType: toViewType(property.viewType, property.key),
|
|
438
|
+
...withLevelNameGrouping(property.key),
|
|
395
439
|
}));
|
|
396
440
|
}
|
|
441
|
+
/**
|
|
442
|
+
* Level Name is a free-text column, so the table's cardinality heuristic would
|
|
443
|
+
* never offer it in the group picker. The backend orders the whole result set
|
|
444
|
+
* by that label before paging, which makes its groups contiguous and therefore
|
|
445
|
+
* groupable — so opt it in explicitly and point the table at the identity
|
|
446
|
+
* field instead of the ambiguous label.
|
|
447
|
+
*/
|
|
448
|
+
function withLevelNameGrouping(key) {
|
|
449
|
+
return key === WORK_CENTER_LEVEL_NAME_KEY
|
|
450
|
+
? { groupable: true, groupKey: WORK_CENTER_LEVEL_GROUP_FIELD }
|
|
451
|
+
: {};
|
|
452
|
+
}
|
|
397
453
|
function buildColumns(columnsConfig) {
|
|
398
454
|
const propertyColumns = buildColumnsFromProperties(columnsConfig?.properties ?? []);
|
|
399
455
|
if (propertyColumns.length) {
|
|
@@ -405,9 +461,11 @@ function buildColumns(columnsConfig) {
|
|
|
405
461
|
label: toLabel$1(key),
|
|
406
462
|
type: 'entity',
|
|
407
463
|
viewType: toViewType(undefined, key),
|
|
464
|
+
...withLevelNameGrouping(key),
|
|
408
465
|
})));
|
|
409
466
|
}
|
|
410
467
|
function toDisplayRows(rows, columns) {
|
|
468
|
+
const hasLevelName = columns.some((column) => column.key === WORK_CENTER_LEVEL_NAME_KEY);
|
|
411
469
|
return rows.map((row) => {
|
|
412
470
|
const sourceRow = flattenRuntimeRow(row);
|
|
413
471
|
const displayRow = { ...sourceRow };
|
|
@@ -418,9 +476,38 @@ function toDisplayRows(rows, columns) {
|
|
|
418
476
|
value: toDisplayValue(value, column),
|
|
419
477
|
};
|
|
420
478
|
}
|
|
479
|
+
if (hasLevelName) {
|
|
480
|
+
applyLevelNameGrouping(displayRow, sourceRow);
|
|
481
|
+
}
|
|
421
482
|
return displayRow;
|
|
422
483
|
});
|
|
423
484
|
}
|
|
485
|
+
/**
|
|
486
|
+
* Adds the Level Name grouping identity to a display row and normalizes a
|
|
487
|
+
* missing / restricted label to `—`.
|
|
488
|
+
*
|
|
489
|
+
* The backend omits `extra.levelDataName` when the record is missing, deleted,
|
|
490
|
+
* or the user can't see it — those rows must share one group and must never
|
|
491
|
+
* expose the numeric id as a label. Rows that do have a label are keyed by
|
|
492
|
+
* `context.levelDataId` so two records with the same name stay separate.
|
|
493
|
+
*/
|
|
494
|
+
function applyLevelNameGrouping(displayRow, sourceRow) {
|
|
495
|
+
const cell = displayRow[WORK_CENTER_LEVEL_NAME_KEY];
|
|
496
|
+
const label = typeof cell?.value === 'string' ? cell.value.trim() : '';
|
|
497
|
+
if (!label) {
|
|
498
|
+
displayRow[WORK_CENTER_LEVEL_NAME_KEY] = {
|
|
499
|
+
...cell,
|
|
500
|
+
value: WORK_CENTER_EMPTY_LABEL,
|
|
501
|
+
};
|
|
502
|
+
displayRow[WORK_CENTER_LEVEL_GROUP_FIELD] = '';
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
const levelDataId = getValue(sourceRow, 'context.levelDataId');
|
|
506
|
+
const hasId = levelDataId !== null && levelDataId !== undefined && levelDataId !== '';
|
|
507
|
+
displayRow[WORK_CENTER_LEVEL_GROUP_FIELD] = hasId
|
|
508
|
+
? `id:${String(levelDataId)}`
|
|
509
|
+
: `name:${label}`;
|
|
510
|
+
}
|
|
424
511
|
function buildMenuItems(cards) {
|
|
425
512
|
const mapped = cards.map((card, index) => ({
|
|
426
513
|
key: card.key,
|
|
@@ -474,6 +561,7 @@ function createDefaultAreaState(area) {
|
|
|
474
561
|
context: createDefaultContext(area),
|
|
475
562
|
headerFilters: [],
|
|
476
563
|
columnFilters: [],
|
|
564
|
+
groupBy: null,
|
|
477
565
|
menuItems: [],
|
|
478
566
|
rows: [],
|
|
479
567
|
columns: [],
|
|
@@ -638,6 +726,9 @@ let WorkCenterState = class WorkCenterState {
|
|
|
638
726
|
static columnFilters(snapshot) {
|
|
639
727
|
return snapshot.columnFilters;
|
|
640
728
|
}
|
|
729
|
+
static groupBy(snapshot) {
|
|
730
|
+
return snapshot.groupBy;
|
|
731
|
+
}
|
|
641
732
|
static totalCount(snapshot) {
|
|
642
733
|
return snapshot.totalCount;
|
|
643
734
|
}
|
|
@@ -694,11 +785,13 @@ let WorkCenterState = class WorkCenterState {
|
|
|
694
785
|
const state = ctx.getState();
|
|
695
786
|
const current = state.byArea[action.area];
|
|
696
787
|
const nextContext = buildContextFromInputs(current.context, action.area, action.inputs);
|
|
788
|
+
const nextGroupBy = resolveGroupByFromInputs(current.groupBy, action.inputs?.group);
|
|
697
789
|
const areaChanged = state.activeArea !== action.area;
|
|
698
790
|
const contextChanged = !isSameContext(current.context, nextContext);
|
|
791
|
+
const groupChanged = nextGroupBy !== current.groupBy;
|
|
699
792
|
const runtimeLoading = state.loadingActive.includes(WorkCenterActionKey.LoadRuntime);
|
|
700
793
|
const shouldLoad = areaChanged || contextChanged || !runtimeLoading;
|
|
701
|
-
if (areaChanged || contextChanged) {
|
|
794
|
+
if (areaChanged || contextChanged || groupChanged) {
|
|
702
795
|
// URL-derived filters land on the header slice. Anything previously
|
|
703
796
|
// applied via the in-table column filters is dropped so the BE payload
|
|
704
797
|
// matches what the user sees on the page header.
|
|
@@ -715,6 +808,7 @@ let WorkCenterState = class WorkCenterState {
|
|
|
715
808
|
...current,
|
|
716
809
|
headerFilters: nextHeaderFilters,
|
|
717
810
|
columnFilters: nextColumnFilters,
|
|
811
|
+
groupBy: nextGroupBy,
|
|
718
812
|
context: nextContext,
|
|
719
813
|
},
|
|
720
814
|
},
|
|
@@ -742,6 +836,41 @@ let WorkCenterState = class WorkCenterState {
|
|
|
742
836
|
columnFilters: action.filters,
|
|
743
837
|
});
|
|
744
838
|
}
|
|
839
|
+
/**
|
|
840
|
+
* Grouping is a backend concern: the table only renders contiguous rows, so
|
|
841
|
+
* the grouped column is pushed down as the single `context.sort` entry and
|
|
842
|
+
* pagination restarts at page 1. Clearing the group sends `sort: []`.
|
|
843
|
+
*/
|
|
844
|
+
setGroupBy(ctx, action) {
|
|
845
|
+
const state = ctx.getState();
|
|
846
|
+
const current = state.byArea[action.area];
|
|
847
|
+
const nextGroupBy = action.groupBy?.trim() ? action.groupBy : null;
|
|
848
|
+
const nextSort = nextGroupBy
|
|
849
|
+
? [{ field: nextGroupBy, dir: action.dir }]
|
|
850
|
+
: [];
|
|
851
|
+
const sameGroup = current.groupBy === nextGroupBy;
|
|
852
|
+
const sameSort = JSON.stringify(current.context.sort) === JSON.stringify(nextSort);
|
|
853
|
+
if (sameGroup && sameSort)
|
|
854
|
+
return;
|
|
855
|
+
ctx.patchState({
|
|
856
|
+
activeArea: action.area,
|
|
857
|
+
byArea: {
|
|
858
|
+
...state.byArea,
|
|
859
|
+
[action.area]: {
|
|
860
|
+
...current,
|
|
861
|
+
groupBy: nextGroupBy,
|
|
862
|
+
context: sameSort
|
|
863
|
+
? current.context
|
|
864
|
+
: { ...current.context, sort: nextSort, page: 1 },
|
|
865
|
+
},
|
|
866
|
+
},
|
|
867
|
+
});
|
|
868
|
+
// A group change that doesn't move the backend order (already sorted by
|
|
869
|
+
// that field) is a pure render concern — no refetch.
|
|
870
|
+
if (sameSort)
|
|
871
|
+
return;
|
|
872
|
+
return ctx.dispatch(new LoadRuntime(action.area, 'group-change'));
|
|
873
|
+
}
|
|
745
874
|
clearAllFilters(ctx, action) {
|
|
746
875
|
return this.applyFilterSlice(ctx, action.area, {
|
|
747
876
|
headerFilters: [],
|
|
@@ -845,6 +974,9 @@ __decorate([
|
|
|
845
974
|
__decorate([
|
|
846
975
|
Action(ApplyColumnFilters)
|
|
847
976
|
], WorkCenterState.prototype, "applyColumnFilters", null);
|
|
977
|
+
__decorate([
|
|
978
|
+
Action(SetGroupBy)
|
|
979
|
+
], WorkCenterState.prototype, "setGroupBy", null);
|
|
848
980
|
__decorate([
|
|
849
981
|
Action(ClearAllFilters)
|
|
850
982
|
], WorkCenterState.prototype, "clearAllFilters", null);
|
|
@@ -884,6 +1016,9 @@ __decorate([
|
|
|
884
1016
|
__decorate([
|
|
885
1017
|
Selector([WorkCenterState.activeSnapshot])
|
|
886
1018
|
], WorkCenterState, "columnFilters", null);
|
|
1019
|
+
__decorate([
|
|
1020
|
+
Selector([WorkCenterState.activeSnapshot])
|
|
1021
|
+
], WorkCenterState, "groupBy", null);
|
|
887
1022
|
__decorate([
|
|
888
1023
|
Selector([WorkCenterState.activeSnapshot])
|
|
889
1024
|
], WorkCenterState, "totalCount", null);
|
|
@@ -907,7 +1042,7 @@ WorkCenterState = __decorate([
|
|
|
907
1042
|
], WorkCenterState);
|
|
908
1043
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: WorkCenterState, decorators: [{
|
|
909
1044
|
type: Injectable
|
|
910
|
-
}], propDecorators: { enterArea: [], hydrateFromContext: [], setParams: [], setLookups: [], applyHeaderFilters: [], applyColumnFilters: [], clearAllFilters: [], loadRuntime: [] } });
|
|
1045
|
+
}], propDecorators: { enterArea: [], hydrateFromContext: [], setParams: [], setLookups: [], applyHeaderFilters: [], applyColumnFilters: [], setGroupBy: [], clearAllFilters: [], loadRuntime: [] } });
|
|
911
1046
|
|
|
912
1047
|
class WorkCenterFacade {
|
|
913
1048
|
store = inject(Store);
|
|
@@ -921,12 +1056,24 @@ class WorkCenterFacade {
|
|
|
921
1056
|
runtimeFilterSchema = select(WorkCenterState.runtimeFilterSchema);
|
|
922
1057
|
headerFilters = select(WorkCenterState.headerFilters);
|
|
923
1058
|
columnFilters = select(WorkCenterState.columnFilters);
|
|
1059
|
+
groupBy = select(WorkCenterState.groupBy);
|
|
924
1060
|
totalCount = select(WorkCenterState.totalCount);
|
|
925
1061
|
warnings = select(WorkCenterState.warnings);
|
|
926
1062
|
loadingActive = select(WorkCenterState.getLoadingActive);
|
|
927
1063
|
errors = select(WorkCenterState.getErrors);
|
|
928
1064
|
loading = computed(() => this.loadingActive().includes(WorkCenterActionKey.LoadRuntime), ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
|
|
929
1065
|
error = computed(() => this.errors()[WorkCenterActionKey.LoadRuntime] ?? null, ...(ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []));
|
|
1066
|
+
/**
|
|
1067
|
+
* Snapshot reads for callers that must observe state *immediately* after a
|
|
1068
|
+
* dispatch — e.g. an output handler mirroring the runtime query into the URL.
|
|
1069
|
+
* The `select()` signals above are the right choice everywhere else.
|
|
1070
|
+
*/
|
|
1071
|
+
snapshotContext() {
|
|
1072
|
+
return this.store.selectSnapshot(WorkCenterState.context);
|
|
1073
|
+
}
|
|
1074
|
+
snapshotGroupBy() {
|
|
1075
|
+
return this.store.selectSnapshot(WorkCenterState.groupBy);
|
|
1076
|
+
}
|
|
930
1077
|
enterArea(area) {
|
|
931
1078
|
return this.store.dispatch(new EnterArea(area));
|
|
932
1079
|
}
|
|
@@ -995,6 +1142,15 @@ class WorkCenterFacade {
|
|
|
995
1142
|
applyColumnFiltersAndLoad(area, runtimeFilters) {
|
|
996
1143
|
return this.store.dispatch(new ApplyColumnFilters(area, runtimeFilters));
|
|
997
1144
|
}
|
|
1145
|
+
/**
|
|
1146
|
+
* Groups the table by `groupBy` (or clears grouping with `null`). Pushes the
|
|
1147
|
+
* grouped column down as the single backend sort, resets to page 1 and
|
|
1148
|
+
* reloads. Safe to call from the table's `groupByChange` — the lazy event
|
|
1149
|
+
* that follows carries the same sort and is absorbed as a no-op.
|
|
1150
|
+
*/
|
|
1151
|
+
setGroupByAndLoad(area, groupBy, dir = 'asc') {
|
|
1152
|
+
return this.store.dispatch(new SetGroupBy(area, groupBy, dir));
|
|
1153
|
+
}
|
|
998
1154
|
/**
|
|
999
1155
|
* Clears both header and column filter slices in one state update,
|
|
1000
1156
|
* triggering a single BE reload.
|
|
@@ -1012,15 +1168,24 @@ class WorkCenterFacade {
|
|
|
1012
1168
|
}
|
|
1013
1169
|
return Math.max(1, Math.floor(parsed));
|
|
1014
1170
|
}
|
|
1171
|
+
/**
|
|
1172
|
+
* `mt-table` always reports its sort on a lazy event, so a `null` field is an
|
|
1173
|
+
* explicit "no sort" and must clear `context.sort` (the BE contract asks for
|
|
1174
|
+
* `sort: []`). Only an event with no `sortField` key at all — nothing the
|
|
1175
|
+
* current table emits — leaves the existing sort alone.
|
|
1176
|
+
*/
|
|
1015
1177
|
toSortFromLazyEvent(event) {
|
|
1016
|
-
|
|
1017
|
-
if (typeof sortField !== 'string' || !sortField.length) {
|
|
1178
|
+
if (!event || !('sortField' in event)) {
|
|
1018
1179
|
return null;
|
|
1019
1180
|
}
|
|
1181
|
+
const sortField = event.sortField;
|
|
1182
|
+
if (typeof sortField !== 'string' || !sortField.length) {
|
|
1183
|
+
return [];
|
|
1184
|
+
}
|
|
1020
1185
|
return [
|
|
1021
1186
|
{
|
|
1022
1187
|
field: sortField,
|
|
1023
|
-
dir: event
|
|
1188
|
+
dir: event.sortOrder === -1 ? 'desc' : 'asc',
|
|
1024
1189
|
},
|
|
1025
1190
|
];
|
|
1026
1191
|
}
|
|
@@ -1685,7 +1850,7 @@ class WorkCenterProcessPreview {
|
|
|
1685
1850
|
});
|
|
1686
1851
|
}
|
|
1687
1852
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: WorkCenterProcessPreview, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1688
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: WorkCenterProcessPreview, isStandalone: true, selector: "mt-work-center-process-preview", inputs: { requestId: { classPropertyName: "requestId", publicName: "requestId", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (!canRenderPreview()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process preview is not available for this item yet.\r\n </p>\r\n </div>\r\n} @else if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"text-sm text-surface-500\">Loading process preview...</p>\r\n </div>\r\n} @else if (error()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">{{ error() }}</p>\r\n </div>\r\n} @else {\r\n @if (view() === \"schema\") {\r\n @if (hasSchema()) {\r\n <div class=\"wc-process-preview-schema h-[70vh] overflow-hidden\">\r\n <mt-structure-builder\r\n class=\"h-full\"\r\n [layoutDirection]=\"'LR'\"\r\n [readonly]=\"true\"\r\n [structureMode]=\"'workflow'\"\r\n [nodeFields]=\"previewNodeFields\"\r\n [nodes]=\"schemaNodes()\"\r\n [connections]=\"schemaConnections()\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process steps are not available for this item yet.\r\n </p>\r\n </div>\r\n }\r\n } @else if (hasApprovals()) {\r\n <div class=\"max-h-[70vh] overflow-y-auto\">\r\n <mt-table\r\n noCard\r\n [data]=\"approvalRows()\"\r\n [columns]=\"approvalColumns()\"\r\n storageKey=\"work-center-process-preview-table\"\r\n [showFilters]=\"false\"\r\n [generalSearch]=\"false\"\r\n [clickableRows]=\"false\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process approvals data is not available for this item yet.\r\n </p>\r\n </div>\r\n }\r\n}\r\n", styles: [":host ::ng-deep .wc-process-preview-schema .wf-detail-row{align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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", "persistStateExclude", "exportable", "printable", "groupable", "groupCountMap", "cellClickFilter", "freezeActions", "virtualScroll", "virtualScrollItemSize", "scrollHeight", "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: StructureBuilder, selector: "mt-structure-builder", inputs: ["availableNodes", "availableNodesLabel", "nodeForm", "nodeDialogFooterConfig", "connectionForm", "connectionFormulaSchemaId", "connectionFormulaConfig", "connectionGuard", "nodeActions", "nodeFields", "isAutoLayout", "readonly", "structureMode", "nodeStyle", "addModalType", "updateModalType", "addModalStyleClass", "updateModalStyleClass", "addModalHeader", "updateModalHeader", "appendTo", "availableTabsClass", "layoutDirection", "nodes", "connections", "nodeTemplate"], outputs: ["nodeActionsEvent", "action", "nodesChange", "connectionsChange"] }] });
|
|
1853
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: WorkCenterProcessPreview, isStandalone: true, selector: "mt-work-center-process-preview", inputs: { requestId: { classPropertyName: "requestId", publicName: "requestId", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (!canRenderPreview()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process preview is not available for this item yet.\r\n </p>\r\n </div>\r\n} @else if (loading()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"text-sm text-surface-500\">Loading process preview...</p>\r\n </div>\r\n} @else if (error()) {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-red-300 bg-red-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-red-600\">{{ error() }}</p>\r\n </div>\r\n} @else {\r\n @if (view() === \"schema\") {\r\n @if (hasSchema()) {\r\n <div class=\"wc-process-preview-schema h-[70vh] overflow-hidden\">\r\n <mt-structure-builder\r\n class=\"h-full\"\r\n [layoutDirection]=\"'LR'\"\r\n [readonly]=\"true\"\r\n [structureMode]=\"'workflow'\"\r\n [nodeFields]=\"previewNodeFields\"\r\n [nodes]=\"schemaNodes()\"\r\n [connections]=\"schemaConnections()\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process steps are not available for this item yet.\r\n </p>\r\n </div>\r\n }\r\n } @else if (hasApprovals()) {\r\n <div class=\"max-h-[70vh] overflow-y-auto\">\r\n <mt-table\r\n noCard\r\n [data]=\"approvalRows()\"\r\n [columns]=\"approvalColumns()\"\r\n storageKey=\"work-center-process-preview-table\"\r\n [showFilters]=\"false\"\r\n [generalSearch]=\"false\"\r\n [clickableRows]=\"false\"\r\n />\r\n </div>\r\n } @else {\r\n <div\r\n class=\"flex min-h-[22rem] items-center justify-center rounded-lg border border-dashed border-surface-300 bg-surface-50 p-6\"\r\n >\r\n <p class=\"max-w-md text-center text-sm text-surface-500\">\r\n Process approvals data is not available for this item yet.\r\n </p>\r\n </div>\r\n }\r\n}\r\n", styles: [":host ::ng-deep .wc-process-preview-schema .wf-detail-row{align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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", "persistStateExclude", "exportable", "printable", "groupable", "groupCountMap", "cellClickFilter", "freezeActions", "virtualScroll", "virtualScrollItemSize", "scrollHeight", "printTitle", "exportFilename", "actionShape", "rowActionsLoadingFn", "tableLayout", "noCard", "tabs", "tabsOptionLabel", "tabsOptionValue", "activeTab", "actions", "paginatorPosition", "alwaysShowPaginator", "rowsPerPageOptions", "pageSize", "currentPage", "first", "filterTerm", "groupBy", "sortField", "sortDirection"], outputs: ["selectionChange", "cellChange", "lazyLoad", "columnReorder", "rowReorder", "rowClick", "rowActionsRequested", "filtersChange", "activeTabChange", "onTabChange", "pageSizeChange", "currentPageChange", "firstChange", "filterTermChange", "groupByChange", "sortFieldChange", "sortDirectionChange"] }, { kind: "component", type: StructureBuilder, selector: "mt-structure-builder", inputs: ["availableNodes", "availableNodesLabel", "nodeForm", "nodeDialogFooterConfig", "connectionForm", "connectionFormulaSchemaId", "connectionFormulaConfig", "connectionGuard", "nodeActions", "nodeFields", "isAutoLayout", "readonly", "structureMode", "nodeStyle", "addModalType", "updateModalType", "addModalStyleClass", "updateModalStyleClass", "addModalHeader", "updateModalHeader", "appendTo", "availableTabsClass", "layoutDirection", "nodes", "connections", "nodeTemplate"], outputs: ["nodeActionsEvent", "action", "nodesChange", "connectionsChange"] }] });
|
|
1689
1854
|
}
|
|
1690
1855
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: WorkCenterProcessPreview, decorators: [{
|
|
1691
1856
|
type: Component,
|
|
@@ -2506,6 +2671,13 @@ const GENERAL_TASK_CARD_KEYS = new Set([
|
|
|
2506
2671
|
'generaltask',
|
|
2507
2672
|
'generaltasks',
|
|
2508
2673
|
]);
|
|
2674
|
+
/**
|
|
2675
|
+
* Grouped columns the backend has no aggregate for. Their group headers must
|
|
2676
|
+
* count only the rows on the current page, so the KPI totals map is withheld —
|
|
2677
|
+
* otherwise a group whose label happens to match a stat ("Total", "Overdue")
|
|
2678
|
+
* would show an unrelated number.
|
|
2679
|
+
*/
|
|
2680
|
+
const PAGE_LOCAL_GROUP_KEYS = new Set([WORK_CENTER_LEVEL_NAME_KEY]);
|
|
2509
2681
|
function toLabel(value) {
|
|
2510
2682
|
const normalized = value.split('.').pop() ?? value;
|
|
2511
2683
|
return normalized
|
|
@@ -2706,6 +2878,15 @@ class WorkCenterPage {
|
|
|
2706
2878
|
runtimeFiltersChanged = output();
|
|
2707
2879
|
itemClicked = output();
|
|
2708
2880
|
cardSelected = output();
|
|
2881
|
+
/**
|
|
2882
|
+
* Emitted whenever the backend sort changes (including grouping, which is
|
|
2883
|
+
* sent as a sort). Hosts should persist it — the runtime query is rebuilt
|
|
2884
|
+
* from `bootstrapInputs`, so a sort that isn't round-tripped is dropped on
|
|
2885
|
+
* the next navigation.
|
|
2886
|
+
*/
|
|
2887
|
+
sortChanged = output();
|
|
2888
|
+
/** Emitted when the grouped column changes; `null` when grouping is cleared. */
|
|
2889
|
+
groupChanged = output();
|
|
2709
2890
|
context = this.facade.context;
|
|
2710
2891
|
headerFilters = this.facade.headerFilters;
|
|
2711
2892
|
tableFilters = signal({}, ...(ngDevMode ? [{ debugName: "tableFilters" }] : /* istanbul ignore next */ []));
|
|
@@ -2725,16 +2906,40 @@ class WorkCenterPage {
|
|
|
2725
2906
|
totalCount = this.facade.totalCount;
|
|
2726
2907
|
columnFilters = this.facade.columnFilters;
|
|
2727
2908
|
loading = this.facade.loading;
|
|
2909
|
+
groupBy = this.facade.groupBy;
|
|
2910
|
+
/**
|
|
2911
|
+
* Sort and grouping live in the runtime query (and the host's URL), not in
|
|
2912
|
+
* table storage — persisting them locally would let a restored table claim a
|
|
2913
|
+
* grouping the backend query no longer has. Stable reference: a fresh array
|
|
2914
|
+
* per change detection would re-run the table's persistence effect.
|
|
2915
|
+
*/
|
|
2916
|
+
persistStateExclude = [
|
|
2917
|
+
'pagePosition',
|
|
2918
|
+
'sort',
|
|
2919
|
+
'groupBy',
|
|
2920
|
+
];
|
|
2728
2921
|
tableColumns = computed(() => this.columns().map((column) => ({
|
|
2729
2922
|
...column,
|
|
2730
2923
|
sortable: true,
|
|
2731
2924
|
})), ...(ngDevMode ? [{ debugName: "tableColumns" }] : /* istanbul ignore next */ []));
|
|
2925
|
+
/**
|
|
2926
|
+
* Grouping is executed by the backend as a single sort, so the table's own
|
|
2927
|
+
* sort state is driven from the query we actually sent instead of the
|
|
2928
|
+
* table's internal memory of it.
|
|
2929
|
+
*/
|
|
2930
|
+
sortField = computed(() => this.context().sort[0]?.field ?? null, ...(ngDevMode ? [{ debugName: "sortField" }] : /* istanbul ignore next */ []));
|
|
2931
|
+
sortDirection = computed(() => this.context().sort[0]?.dir ?? null, ...(ngDevMode ? [{ debugName: "sortDirection" }] : /* istanbul ignore next */ []));
|
|
2732
2932
|
/**
|
|
2733
2933
|
* Maps each status/group display label to its total count from the KPI
|
|
2734
2934
|
* summary cards so the group header shows the real backend total rather than
|
|
2735
|
-
* the current-page row count.
|
|
2935
|
+
* the current-page row count. Withheld for groups the backend doesn't
|
|
2936
|
+
* aggregate — see `PAGE_LOCAL_GROUP_KEYS`.
|
|
2736
2937
|
*/
|
|
2737
|
-
|
|
2938
|
+
groupCountMap = computed(() => {
|
|
2939
|
+
const activeGroup = this.groupBy();
|
|
2940
|
+
if (!activeGroup || PAGE_LOCAL_GROUP_KEYS.has(activeGroup)) {
|
|
2941
|
+
return null;
|
|
2942
|
+
}
|
|
2738
2943
|
const map = new Map();
|
|
2739
2944
|
for (const kpi of this.kpis()) {
|
|
2740
2945
|
const label = kpi.subTitle;
|
|
@@ -2744,7 +2949,7 @@ class WorkCenterPage {
|
|
|
2744
2949
|
}
|
|
2745
2950
|
}
|
|
2746
2951
|
return map;
|
|
2747
|
-
}, ...(ngDevMode ? [{ debugName: "
|
|
2952
|
+
}, ...(ngDevMode ? [{ debugName: "groupCountMap" }] : /* istanbul ignore next */ []));
|
|
2748
2953
|
propertyFilterSchema = computed(() => {
|
|
2749
2954
|
this.activeLang();
|
|
2750
2955
|
const schema = this.runtimeFilterSchema();
|
|
@@ -2833,6 +3038,25 @@ class WorkCenterPage {
|
|
|
2833
3038
|
* (handled by `applyColumnFiltersAndLoad`); when only paging/sort changed
|
|
2834
3039
|
* we fall through to `applyTableLazyLoadAndLoad`.
|
|
2835
3040
|
*/
|
|
3041
|
+
/**
|
|
3042
|
+
* The table asks to group; the backend does the ordering. `setGroupByAndLoad`
|
|
3043
|
+
* rewrites `context.sort` and resets paging, so the lazy event the table
|
|
3044
|
+
* fires straight after carries the same sort and lands as a no-op.
|
|
3045
|
+
*/
|
|
3046
|
+
onTableGroupByChange(key) {
|
|
3047
|
+
const nextGroup = key?.trim() ? key : null;
|
|
3048
|
+
if (nextGroup === this.groupBy()) {
|
|
3049
|
+
return;
|
|
3050
|
+
}
|
|
3051
|
+
const previousSort = this.facade.snapshotContext().sort;
|
|
3052
|
+
// Re-grouping the column we're already sorted by keeps its direction.
|
|
3053
|
+
const dir = nextGroup && this.sortField() === nextGroup
|
|
3054
|
+
? (this.sortDirection() ?? 'asc')
|
|
3055
|
+
: 'asc';
|
|
3056
|
+
this.facade.setGroupByAndLoad(this.area(), nextGroup, dir);
|
|
3057
|
+
this.groupChanged.emit(nextGroup);
|
|
3058
|
+
this.emitSortIfChanged(previousSort);
|
|
3059
|
+
}
|
|
2836
3060
|
onTableLazyLoad(event) {
|
|
2837
3061
|
const schema = this.runtimeFilterSchema();
|
|
2838
3062
|
const propertyKeys = (schema?.properties ?? [])
|
|
@@ -2845,7 +3069,21 @@ class WorkCenterPage {
|
|
|
2845
3069
|
this.facade.applyColumnFiltersAndLoad(this.area(), nextColumnFilters);
|
|
2846
3070
|
return;
|
|
2847
3071
|
}
|
|
3072
|
+
const previousSort = this.facade.snapshotContext().sort;
|
|
2848
3073
|
this.facade.applyTableLazyLoadAndLoad(this.area(), event);
|
|
3074
|
+
this.emitSortIfChanged(previousSort);
|
|
3075
|
+
}
|
|
3076
|
+
/**
|
|
3077
|
+
* Announces the backend sort to the host only when it actually moved, so a
|
|
3078
|
+
* host that mirrors it into the URL doesn't churn history on every page hit.
|
|
3079
|
+
* Reads the snapshot, not the signal — this runs in the same tick as the
|
|
3080
|
+
* dispatch that changed it.
|
|
3081
|
+
*/
|
|
3082
|
+
emitSortIfChanged(previousSort) {
|
|
3083
|
+
const nextSort = this.facade.snapshotContext().sort;
|
|
3084
|
+
if (JSON.stringify(previousSort) !== JSON.stringify(nextSort)) {
|
|
3085
|
+
this.sortChanged.emit(nextSort);
|
|
3086
|
+
}
|
|
2849
3087
|
}
|
|
2850
3088
|
onGeneralTaskCreateClick() {
|
|
2851
3089
|
const modalOptions = this.generalTaskModal();
|
|
@@ -2929,7 +3167,7 @@ class WorkCenterPage {
|
|
|
2929
3167
|
return normalized.length ? normalized : null;
|
|
2930
3168
|
}
|
|
2931
3169
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: WorkCenterPage, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2932
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: WorkCenterPage, isStandalone: true, selector: "mt-work-center-page", inputs: { area: { classPropertyName: "area", publicName: "area", isSignal: true, isRequired: false, transformFunction: null }, pageTitle: { classPropertyName: "pageTitle", publicName: "pageTitle", isSignal: true, isRequired: false, transformFunction: null }, menuIcon: { classPropertyName: "menuIcon", publicName: "menuIcon", isSignal: true, isRequired: false, transformFunction: null }, lookups: { classPropertyName: "lookups", publicName: "lookups", isSignal: true, isRequired: false, transformFunction: null }, showSidebar: { classPropertyName: "showSidebar", publicName: "showSidebar", isSignal: true, isRequired: false, transformFunction: null }, bootstrapInputs: { classPropertyName: "bootstrapInputs", publicName: "bootstrapInputs", isSignal: true, isRequired: false, transformFunction: null }, openItemDrawer: { classPropertyName: "openItemDrawer", publicName: "openItemDrawer", isSignal: true, isRequired: false, transformFunction: null }, itemReadOnly: { classPropertyName: "itemReadOnly", publicName: "itemReadOnly", isSignal: true, isRequired: false, transformFunction: null }, openItemsInModal: { classPropertyName: "openItemsInModal", publicName: "openItemsInModal", isSignal: true, isRequired: false, transformFunction: null }, itemModal: { classPropertyName: "itemModal", publicName: "itemModal", isSignal: true, isRequired: false, transformFunction: null }, generalTaskModal: { classPropertyName: "generalTaskModal", publicName: "generalTaskModal", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { runtimeFiltersChanged: "runtimeFiltersChanged", itemClicked: "itemClicked", cardSelected: "cardSelected" }, ngImport: i0, template: "<ng-template #headerActions>\r\n <div class=\"flex flex-wrap items-center justify-end gap-2\">\r\n <mt-property-filter-builder\r\n [schema]=\"propertyFilterSchema()\"\r\n [filters]=\"headerFilters()\"\r\n (applied)=\"onRuntimeFiltersApplied($event)\"\r\n (cleared)=\"onRuntimeFiltersCleared()\"\r\n />\r\n\r\n @if (showGeneralTaskCreateButton()) {\r\n <mt-button\r\n [label]=\"generalTaskButtonLabel()\"\r\n [icon]=\"generalTaskButtonIcon()\"\r\n size=\"small\"\r\n (onClick)=\"onGeneralTaskCreateClick()\"\r\n />\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #pageContent>\r\n <div class=\"flex flex-col gap-8\">\r\n @if (loading()) {\r\n <div\r\n class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 xl:grid-cols-5 gap-3\"\r\n >\r\n @for (_ of [1, 2, 3, 4, 5]; track $index) {\r\n <p-skeleton height=\"6.5rem\" class=\"rounded-lg\" />\r\n }\r\n </div>\r\n } @else if (kpis().length) {\r\n <div class=\"gap-3 flex flex-wrap\">\r\n @for (kpi of kpis(); track $index) {\r\n <mt-statistic-card [data]=\"kpi\" class=\"min-w-[200px]\" />\r\n }\r\n </div>\r\n }\r\n\r\n <mt-table\r\n noCard\r\n [data]=\"rows()\"\r\n [columns]=\"tableColumns()\"\r\n tableLayout=\"auto\"\r\n [clickableRows]=\"rowsClickable()\"\r\n [loading]=\"loading()\"\r\n [showFilters]=\"true\"\r\n filterMode=\"column\"\r\n [cellClickFilter]=\"true\"\r\n [generalSearch]=\"true\"\r\n [exportable]=\"true\"\r\n [printable]=\"true\"\r\n [groupable]=\"true\"\r\n [freezeActions]=\"true\"\r\n [lazy]=\"true\"\r\n [lazyLocalSearch]=\"true\"\r\n [lazyTotalRecords]=\"totalCount()\"\r\n [pageSize]=\"context().pageSize\"\r\n [currentPage]=\"context().page - 1\"\r\n [first]=\"(context().page - 1) * context().pageSize\"\r\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n [groupCountMap]=\"
|
|
3170
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: WorkCenterPage, isStandalone: true, selector: "mt-work-center-page", inputs: { area: { classPropertyName: "area", publicName: "area", isSignal: true, isRequired: false, transformFunction: null }, pageTitle: { classPropertyName: "pageTitle", publicName: "pageTitle", isSignal: true, isRequired: false, transformFunction: null }, menuIcon: { classPropertyName: "menuIcon", publicName: "menuIcon", isSignal: true, isRequired: false, transformFunction: null }, lookups: { classPropertyName: "lookups", publicName: "lookups", isSignal: true, isRequired: false, transformFunction: null }, showSidebar: { classPropertyName: "showSidebar", publicName: "showSidebar", isSignal: true, isRequired: false, transformFunction: null }, bootstrapInputs: { classPropertyName: "bootstrapInputs", publicName: "bootstrapInputs", isSignal: true, isRequired: false, transformFunction: null }, openItemDrawer: { classPropertyName: "openItemDrawer", publicName: "openItemDrawer", isSignal: true, isRequired: false, transformFunction: null }, itemReadOnly: { classPropertyName: "itemReadOnly", publicName: "itemReadOnly", isSignal: true, isRequired: false, transformFunction: null }, openItemsInModal: { classPropertyName: "openItemsInModal", publicName: "openItemsInModal", isSignal: true, isRequired: false, transformFunction: null }, itemModal: { classPropertyName: "itemModal", publicName: "itemModal", isSignal: true, isRequired: false, transformFunction: null }, generalTaskModal: { classPropertyName: "generalTaskModal", publicName: "generalTaskModal", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { runtimeFiltersChanged: "runtimeFiltersChanged", itemClicked: "itemClicked", cardSelected: "cardSelected", sortChanged: "sortChanged", groupChanged: "groupChanged" }, ngImport: i0, template: "<ng-template #headerActions>\r\n <div class=\"flex flex-wrap items-center justify-end gap-2\">\r\n <mt-property-filter-builder\r\n [schema]=\"propertyFilterSchema()\"\r\n [filters]=\"headerFilters()\"\r\n (applied)=\"onRuntimeFiltersApplied($event)\"\r\n (cleared)=\"onRuntimeFiltersCleared()\"\r\n />\r\n\r\n @if (showGeneralTaskCreateButton()) {\r\n <mt-button\r\n [label]=\"generalTaskButtonLabel()\"\r\n [icon]=\"generalTaskButtonIcon()\"\r\n size=\"small\"\r\n (onClick)=\"onGeneralTaskCreateClick()\"\r\n />\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #pageContent>\r\n <div class=\"flex flex-col gap-8\">\r\n @if (loading()) {\r\n <div\r\n class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 xl:grid-cols-5 gap-3\"\r\n >\r\n @for (_ of [1, 2, 3, 4, 5]; track $index) {\r\n <p-skeleton height=\"6.5rem\" class=\"rounded-lg\" />\r\n }\r\n </div>\r\n } @else if (kpis().length) {\r\n <div class=\"gap-3 flex flex-wrap\">\r\n @for (kpi of kpis(); track $index) {\r\n <mt-statistic-card [data]=\"kpi\" class=\"min-w-[200px]\" />\r\n }\r\n </div>\r\n }\r\n\r\n <mt-table\r\n noCard\r\n [data]=\"rows()\"\r\n [columns]=\"tableColumns()\"\r\n tableLayout=\"auto\"\r\n [clickableRows]=\"rowsClickable()\"\r\n [loading]=\"loading()\"\r\n [showFilters]=\"true\"\r\n filterMode=\"column\"\r\n [cellClickFilter]=\"true\"\r\n [generalSearch]=\"true\"\r\n [exportable]=\"true\"\r\n [printable]=\"true\"\r\n [groupable]=\"true\"\r\n [freezeActions]=\"true\"\r\n [lazy]=\"true\"\r\n [lazyLocalSearch]=\"true\"\r\n [lazyTotalRecords]=\"totalCount()\"\r\n [pageSize]=\"context().pageSize\"\r\n [currentPage]=\"context().page - 1\"\r\n [first]=\"(context().page - 1) * context().pageSize\"\r\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n [groupCountMap]=\"groupCountMap()\"\r\n [groupBy]=\"groupBy()\"\r\n [sortField]=\"sortField()\"\r\n [sortDirection]=\"sortDirection()\"\r\n storageKey=\"work-center-page-table\"\r\n [persistStateExclude]=\"persistStateExclude\"\r\n [filters]=\"tableFilters()\"\r\n (filtersChange)=\"tableFilters.set($event)\"\r\n (groupByChange)=\"onTableGroupByChange($event)\"\r\n (lazyLoad)=\"onTableLazyLoad($event)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n />\r\n </div>\r\n</ng-template>\r\n\r\n@if (showSidebar()) {\r\n <mt-client-page\r\n [menuIcon]=\"menuIcon()\"\r\n [menuTitle]=\"resolvedPageTitle()\"\r\n [menuItems]=\"menuItems()\"\r\n [menuItemsLoading]=\"loading() && !menuItems().length\"\r\n [activeItem]=\"context().selectedCardKey ?? undefined\"\r\n storageKey=\"work-center-client-page\"\r\n (menuItemClick)=\"onMenuItemClick($event)\"\r\n >\r\n <ng-template #headerClientPageEnd>\r\n <ng-container [ngTemplateOutlet]=\"headerActions\" />\r\n </ng-template>\r\n\r\n <ng-container [ngTemplateOutlet]=\"pageContent\" />\r\n </mt-client-page>\r\n} @else {\r\n <div class=\"flex h-full min-h-0 flex-col bg-surface-0\">\r\n <div\r\n class=\"flex shrink-0 items-center justify-end border-b border-surface px-7 py-4\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"headerActions\" />\r\n </div>\r\n <div class=\"min-h-0 flex-1 overflow-y-auto px-7 py-5\">\r\n <ng-container [ngTemplateOutlet]=\"pageContent\" />\r\n </div>\r\n </div>\r\n}\r\n\r\n@if (selectedItemContextKey(); as contextKey) {\r\n <mt-work-center-item-modal-route\r\n [contextKey]=\"contextKey\"\r\n [manageRouteOutlet]=\"false\"\r\n [showPreviewLevelAction]=\"false\"\r\n [readOnly]=\"itemReadOnly()\"\r\n appendTo=\"body\"\r\n drawerStyleClass=\"mt-work-center-item-drawer !w-[90vw]\"\r\n (closed)=\"selectedItemContextKey.set(null)\"\r\n />\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: ClientPage, selector: "mt-client-page", inputs: ["menuIcon", "menuTitle", "menuItems", "menuItemsLoading", "activeItem", "collapsed", "resizable", "storageKey", "storageMode", "minSidebarWidth", "maxSidebarWidth", "defaultSidebarWidth"], outputs: ["collapsedChange", "menuItemClick", "loadChildren"] }, { kind: "component", type: PropertyFilterBuilder, selector: "mt-property-filter-builder", inputs: ["schema", "filters", "title", "buttonLabel", "disabled"], outputs: ["filtersChange", "applied", "cleared"] }, { kind: "component", type: StatisticCard, selector: "mt-statistic-card", inputs: ["data", "cardClass"] }, { 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", "persistStateExclude", "exportable", "printable", "groupable", "groupCountMap", "cellClickFilter", "freezeActions", "virtualScroll", "virtualScrollItemSize", "scrollHeight", "printTitle", "exportFilename", "actionShape", "rowActionsLoadingFn", "tableLayout", "noCard", "tabs", "tabsOptionLabel", "tabsOptionValue", "activeTab", "actions", "paginatorPosition", "alwaysShowPaginator", "rowsPerPageOptions", "pageSize", "currentPage", "first", "filterTerm", "groupBy", "sortField", "sortDirection"], outputs: ["selectionChange", "cellChange", "lazyLoad", "columnReorder", "rowReorder", "rowClick", "rowActionsRequested", "filtersChange", "activeTabChange", "onTabChange", "pageSizeChange", "currentPageChange", "firstChange", "filterTermChange", "groupByChange", "sortFieldChange", "sortDirectionChange"] }, { kind: "component", type: WorkCenterItemModalRoute, selector: "mt-work-center-item-modal-route", inputs: ["contextKey", "manageRouteOutlet", "showPreviewLevelAction", "readOnly", "appendTo", "drawerStyleClass"], outputs: ["previewLevel", "closed"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i1.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }] });
|
|
2933
3171
|
}
|
|
2934
3172
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: WorkCenterPage, decorators: [{
|
|
2935
3173
|
type: Component,
|
|
@@ -2942,8 +3180,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
2942
3180
|
Table,
|
|
2943
3181
|
WorkCenterItemModalRoute,
|
|
2944
3182
|
SkeletonModule,
|
|
2945
|
-
], template: "<ng-template #headerActions>\r\n <div class=\"flex flex-wrap items-center justify-end gap-2\">\r\n <mt-property-filter-builder\r\n [schema]=\"propertyFilterSchema()\"\r\n [filters]=\"headerFilters()\"\r\n (applied)=\"onRuntimeFiltersApplied($event)\"\r\n (cleared)=\"onRuntimeFiltersCleared()\"\r\n />\r\n\r\n @if (showGeneralTaskCreateButton()) {\r\n <mt-button\r\n [label]=\"generalTaskButtonLabel()\"\r\n [icon]=\"generalTaskButtonIcon()\"\r\n size=\"small\"\r\n (onClick)=\"onGeneralTaskCreateClick()\"\r\n />\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #pageContent>\r\n <div class=\"flex flex-col gap-8\">\r\n @if (loading()) {\r\n <div\r\n class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 xl:grid-cols-5 gap-3\"\r\n >\r\n @for (_ of [1, 2, 3, 4, 5]; track $index) {\r\n <p-skeleton height=\"6.5rem\" class=\"rounded-lg\" />\r\n }\r\n </div>\r\n } @else if (kpis().length) {\r\n <div class=\"gap-3 flex flex-wrap\">\r\n @for (kpi of kpis(); track $index) {\r\n <mt-statistic-card [data]=\"kpi\" class=\"min-w-[200px]\" />\r\n }\r\n </div>\r\n }\r\n\r\n <mt-table\r\n noCard\r\n [data]=\"rows()\"\r\n [columns]=\"tableColumns()\"\r\n tableLayout=\"auto\"\r\n [clickableRows]=\"rowsClickable()\"\r\n [loading]=\"loading()\"\r\n [showFilters]=\"true\"\r\n filterMode=\"column\"\r\n [cellClickFilter]=\"true\"\r\n [generalSearch]=\"true\"\r\n [exportable]=\"true\"\r\n [printable]=\"true\"\r\n [groupable]=\"true\"\r\n [freezeActions]=\"true\"\r\n [lazy]=\"true\"\r\n [lazyLocalSearch]=\"true\"\r\n [lazyTotalRecords]=\"totalCount()\"\r\n [pageSize]=\"context().pageSize\"\r\n [currentPage]=\"context().page - 1\"\r\n [first]=\"(context().page - 1) * context().pageSize\"\r\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n [groupCountMap]=\"
|
|
2946
|
-
}], ctorParameters: () => [], propDecorators: { area: [{ type: i0.Input, args: [{ isSignal: true, alias: "area", required: false }] }], pageTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageTitle", required: false }] }], menuIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuIcon", required: false }] }], lookups: [{ type: i0.Input, args: [{ isSignal: true, alias: "lookups", required: false }] }], showSidebar: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSidebar", required: false }] }], bootstrapInputs: [{ type: i0.Input, args: [{ isSignal: true, alias: "bootstrapInputs", required: false }] }], openItemDrawer: [{ type: i0.Input, args: [{ isSignal: true, alias: "openItemDrawer", required: false }] }], itemReadOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemReadOnly", required: false }] }], openItemsInModal: [{ type: i0.Input, args: [{ isSignal: true, alias: "openItemsInModal", required: false }] }], itemModal: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemModal", required: false }] }], generalTaskModal: [{ type: i0.Input, args: [{ isSignal: true, alias: "generalTaskModal", required: false }] }], runtimeFiltersChanged: [{ type: i0.Output, args: ["runtimeFiltersChanged"] }], itemClicked: [{ type: i0.Output, args: ["itemClicked"] }], cardSelected: [{ type: i0.Output, args: ["cardSelected"] }] } });
|
|
3183
|
+
], template: "<ng-template #headerActions>\r\n <div class=\"flex flex-wrap items-center justify-end gap-2\">\r\n <mt-property-filter-builder\r\n [schema]=\"propertyFilterSchema()\"\r\n [filters]=\"headerFilters()\"\r\n (applied)=\"onRuntimeFiltersApplied($event)\"\r\n (cleared)=\"onRuntimeFiltersCleared()\"\r\n />\r\n\r\n @if (showGeneralTaskCreateButton()) {\r\n <mt-button\r\n [label]=\"generalTaskButtonLabel()\"\r\n [icon]=\"generalTaskButtonIcon()\"\r\n size=\"small\"\r\n (onClick)=\"onGeneralTaskCreateClick()\"\r\n />\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #pageContent>\r\n <div class=\"flex flex-col gap-8\">\r\n @if (loading()) {\r\n <div\r\n class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 xl:grid-cols-5 gap-3\"\r\n >\r\n @for (_ of [1, 2, 3, 4, 5]; track $index) {\r\n <p-skeleton height=\"6.5rem\" class=\"rounded-lg\" />\r\n }\r\n </div>\r\n } @else if (kpis().length) {\r\n <div class=\"gap-3 flex flex-wrap\">\r\n @for (kpi of kpis(); track $index) {\r\n <mt-statistic-card [data]=\"kpi\" class=\"min-w-[200px]\" />\r\n }\r\n </div>\r\n }\r\n\r\n <mt-table\r\n noCard\r\n [data]=\"rows()\"\r\n [columns]=\"tableColumns()\"\r\n tableLayout=\"auto\"\r\n [clickableRows]=\"rowsClickable()\"\r\n [loading]=\"loading()\"\r\n [showFilters]=\"true\"\r\n filterMode=\"column\"\r\n [cellClickFilter]=\"true\"\r\n [generalSearch]=\"true\"\r\n [exportable]=\"true\"\r\n [printable]=\"true\"\r\n [groupable]=\"true\"\r\n [freezeActions]=\"true\"\r\n [lazy]=\"true\"\r\n [lazyLocalSearch]=\"true\"\r\n [lazyTotalRecords]=\"totalCount()\"\r\n [pageSize]=\"context().pageSize\"\r\n [currentPage]=\"context().page - 1\"\r\n [first]=\"(context().page - 1) * context().pageSize\"\r\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n [groupCountMap]=\"groupCountMap()\"\r\n [groupBy]=\"groupBy()\"\r\n [sortField]=\"sortField()\"\r\n [sortDirection]=\"sortDirection()\"\r\n storageKey=\"work-center-page-table\"\r\n [persistStateExclude]=\"persistStateExclude\"\r\n [filters]=\"tableFilters()\"\r\n (filtersChange)=\"tableFilters.set($event)\"\r\n (groupByChange)=\"onTableGroupByChange($event)\"\r\n (lazyLoad)=\"onTableLazyLoad($event)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n />\r\n </div>\r\n</ng-template>\r\n\r\n@if (showSidebar()) {\r\n <mt-client-page\r\n [menuIcon]=\"menuIcon()\"\r\n [menuTitle]=\"resolvedPageTitle()\"\r\n [menuItems]=\"menuItems()\"\r\n [menuItemsLoading]=\"loading() && !menuItems().length\"\r\n [activeItem]=\"context().selectedCardKey ?? undefined\"\r\n storageKey=\"work-center-client-page\"\r\n (menuItemClick)=\"onMenuItemClick($event)\"\r\n >\r\n <ng-template #headerClientPageEnd>\r\n <ng-container [ngTemplateOutlet]=\"headerActions\" />\r\n </ng-template>\r\n\r\n <ng-container [ngTemplateOutlet]=\"pageContent\" />\r\n </mt-client-page>\r\n} @else {\r\n <div class=\"flex h-full min-h-0 flex-col bg-surface-0\">\r\n <div\r\n class=\"flex shrink-0 items-center justify-end border-b border-surface px-7 py-4\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"headerActions\" />\r\n </div>\r\n <div class=\"min-h-0 flex-1 overflow-y-auto px-7 py-5\">\r\n <ng-container [ngTemplateOutlet]=\"pageContent\" />\r\n </div>\r\n </div>\r\n}\r\n\r\n@if (selectedItemContextKey(); as contextKey) {\r\n <mt-work-center-item-modal-route\r\n [contextKey]=\"contextKey\"\r\n [manageRouteOutlet]=\"false\"\r\n [showPreviewLevelAction]=\"false\"\r\n [readOnly]=\"itemReadOnly()\"\r\n appendTo=\"body\"\r\n drawerStyleClass=\"mt-work-center-item-drawer !w-[90vw]\"\r\n (closed)=\"selectedItemContextKey.set(null)\"\r\n />\r\n}\r\n" }]
|
|
3184
|
+
}], ctorParameters: () => [], propDecorators: { area: [{ type: i0.Input, args: [{ isSignal: true, alias: "area", required: false }] }], pageTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageTitle", required: false }] }], menuIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuIcon", required: false }] }], lookups: [{ type: i0.Input, args: [{ isSignal: true, alias: "lookups", required: false }] }], showSidebar: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSidebar", required: false }] }], bootstrapInputs: [{ type: i0.Input, args: [{ isSignal: true, alias: "bootstrapInputs", required: false }] }], openItemDrawer: [{ type: i0.Input, args: [{ isSignal: true, alias: "openItemDrawer", required: false }] }], itemReadOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemReadOnly", required: false }] }], openItemsInModal: [{ type: i0.Input, args: [{ isSignal: true, alias: "openItemsInModal", required: false }] }], itemModal: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemModal", required: false }] }], generalTaskModal: [{ type: i0.Input, args: [{ isSignal: true, alias: "generalTaskModal", required: false }] }], runtimeFiltersChanged: [{ type: i0.Output, args: ["runtimeFiltersChanged"] }], itemClicked: [{ type: i0.Output, args: ["itemClicked"] }], cardSelected: [{ type: i0.Output, args: ["cardSelected"] }], sortChanged: [{ type: i0.Output, args: ["sortChanged"] }], groupChanged: [{ type: i0.Output, args: ["groupChanged"] }] } });
|
|
2947
3185
|
|
|
2948
3186
|
const APP_STATES = [WorkCenterState];
|
|
2949
3187
|
|
|
@@ -2951,5 +3189,5 @@ const APP_STATES = [WorkCenterState];
|
|
|
2951
3189
|
* Generated bundle index. Do not edit.
|
|
2952
3190
|
*/
|
|
2953
3191
|
|
|
2954
|
-
export { APP_STATES, ApplyColumnFilters, ApplyHeaderFilters, ClearAllFilters, EnterArea, HydrateFromContext, LoadRuntime, SetLookups, SetParams, WORK_CENTER_MAX_FILTERS, WORK_CENTER_MAX_PAGE_SIZE, WORK_CENTER_MAX_SORT, WORK_CENTER_QUERY_VERSION, WorkCenterActionKey, WorkCenterClientFormModal, WorkCenterFacade, WorkCenterItemModal, WorkCenterItemModalRoute, WorkCenterPage, WorkCenterState, decodeWorkCenterRouteContextKey, encodeWorkCenterRouteContextKey };
|
|
3192
|
+
export { APP_STATES, ApplyColumnFilters, ApplyHeaderFilters, ClearAllFilters, EnterArea, HydrateFromContext, LoadRuntime, SetGroupBy, SetLookups, SetParams, WORK_CENTER_EMPTY_LABEL, WORK_CENTER_LEVEL_GROUP_FIELD, WORK_CENTER_LEVEL_NAME_KEY, WORK_CENTER_MAX_FILTERS, WORK_CENTER_MAX_PAGE_SIZE, WORK_CENTER_MAX_SORT, WORK_CENTER_QUERY_VERSION, WorkCenterActionKey, WorkCenterClientFormModal, WorkCenterFacade, WorkCenterItemModal, WorkCenterItemModalRoute, WorkCenterPage, WorkCenterState, decodeWorkCenterRouteContextKey, encodeWorkCenterRouteContextKey };
|
|
2955
3193
|
//# sourceMappingURL=masterteam-work-center.mjs.map
|