@arsedizioni/ars-utils 22.5.49 → 22.5.51
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/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +15 -15
- package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +42 -42
- package/fesm2022/arsedizioni-ars-utils-core.date.mjs +178 -8
- package/fesm2022/arsedizioni-ars-utils-core.date.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-core.markdown.mjs +3 -3
- package/fesm2022/arsedizioni-ars-utils-core.mjs +48 -48
- package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-core.validators.mjs +42 -42
- package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs +15 -15
- package/fesm2022/arsedizioni-ars-utils-support.common.mjs +9 -9
- package/fesm2022/arsedizioni-ars-utils-ui.controls.date.mjs +6 -6
- package/fesm2022/arsedizioni-ars-utils-ui.controls.mjs +9 -9
- package/fesm2022/arsedizioni-ars-utils-ui.controls.tree.mjs +3 -3
- package/fesm2022/arsedizioni-ars-utils-ui.dialogs.auth.mjs +18 -18
- package/fesm2022/arsedizioni-ars-utils-ui.dialogs.mjs +12 -12
- package/fesm2022/arsedizioni-ars-utils-ui.dialogs.prompt.mjs +9 -9
- package/fesm2022/arsedizioni-ars-utils-ui.dialogs.select.mjs +15 -15
- package/fesm2022/arsedizioni-ars-utils-ui.files.mjs +12 -12
- package/fesm2022/arsedizioni-ars-utils-ui.filters.mjs +3 -3
- package/fesm2022/arsedizioni-ars-utils-ui.help.mjs +9 -9
- package/fesm2022/arsedizioni-ars-utils-ui.mjs +61 -61
- package/fesm2022/arsedizioni-ars-utils-ui.navigation.mjs +3 -3
- package/fesm2022/arsedizioni-ars-utils-ui.notifications.mjs +6 -6
- package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs +6 -6
- package/fesm2022/arsedizioni-ars-utils-ui.paginator.mjs +3 -3
- package/fesm2022/arsedizioni-ars-utils-ui.shell.mjs +9 -9
- package/fesm2022/arsedizioni-ars-utils-ui.tinymce.mjs +9 -9
- package/package.json +1 -1
- package/types/arsedizioni-ars-utils-clipper.common.d.ts +12 -12
- package/types/arsedizioni-ars-utils-core.d.ts +1 -1
- package/types/arsedizioni-ars-utils-core.date.d.ts +58 -1
|
@@ -116,10 +116,10 @@ class ShellBusyComponent {
|
|
|
116
116
|
this.progress.set(progress);
|
|
117
117
|
this.progressMode.set(progress > 0 ? 'determinate' : progressMode);
|
|
118
118
|
}
|
|
119
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
120
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
119
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ShellBusyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
120
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: ShellBusyComponent, isStandalone: true, selector: "ars-shell-busy", host: { properties: { "class.ars-hidden": "!visible()", "class.ars-dark": "dark()" } }, ngImport: i0, template: "<div class=\"scrim\"></div>\n\n@if (type() === 'hourglass' || type() === 'wait') {\n<div class=\"bare\">\n <svg class=\"hourglass\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path d=\"M6 2h12v6l-4 4 4 4v6H6v-6l4-4-4-4zm2 2v3.2l4 4 4-4V4zm0 16h8v-3.2l-4-4-4 4z\" />\n </svg>\n @if (type() === 'hourglass' && message()) {\n <div class=\"message\" [innerHTML]=\"message() | safeHtml\"></div>\n }\n</div>\n} @else {\n<div class=\"panel\" role=\"status\" aria-live=\"polite\">\n @if (message()) {\n <div class=\"message\" [innerHTML]=\"message() | safeHtml\"></div>\n }\n\n @if (type() === 'bar') {\n <div class=\"bar\" [class.indeterminate]=\"progressMode() === 'indeterminate'\">\n <div class=\"bar-fill\" [style.width.%]=\"progressMode() === 'determinate' ? progress() : null\"></div>\n </div>\n } @else if (type() === 'spinner') {\n <svg class=\"spinner\" [class.indeterminate]=\"progressMode() === 'indeterminate'\" viewBox=\"0 0 70 70\"\n aria-hidden=\"true\">\n <circle class=\"track\" cx=\"35\" cy=\"35\" r=\"31.5\"></circle>\n <circle class=\"arc\" cx=\"35\" cy=\"35\" r=\"31.5\" [style.stroke-dasharray]=\"circumference\"\n [style.stroke-dashoffset]=\"progressMode() === 'determinate' ? dashOffset() : null\"></circle>\n </svg>\n }\n\n @if (progress() > 0) {\n <div class=\"percent\"><b>{{ progress() }}%</b></div>\n }\n</div>\n}\n", styles: [":host{--_surface: var(--ars-shell-dialog-background-color, var(--mat-sys-surface-container-high, #e6eae8));--_on-surface: var(--ars-color-text, var(--mat-sys-on-surface, #191c1b));--_scrim: var(--ars-shell-busy-scrim-color, rgba(0, 0, 0, .28));--_primary: var(--ars-color-primary, var(--mat-sys-primary, #006a60));--_track: var(--ars-shell-busy-track-color, var(--mat-sys-surface-container-highest, #d5dbd8));--_bare: var(--ars-shell-busy-bare-color, #ffffff);color-scheme:light;margin:0;border:0;padding:0;background:none;color:inherit;overflow:visible;width:100%;height:100%;position:fixed;inset:0;z-index:var(--ars-shell-busy-z-index, 1090);display:flex;align-items:center;justify-content:center;font-family:var(--mat-sys-body-medium-font, Roboto, sans-serif);color:var(--_on-surface)}:host(.ars-dark){--_surface: var(--ars-shell-dialog-background-color, var(--mat-sys-surface-container-high, #282a29));--_on-surface: var(--ars-color-text, var(--mat-sys-on-surface, #e0e2e5));--_scrim: var(--ars-shell-busy-scrim-color, rgba(0, 0, 0, .45));--_primary: var(--ars-color-primary, var(--mat-sys-primary, #67d9c9));--_track: var(--ars-shell-busy-track-color, var(--mat-sys-surface-container-highest, #3a3d3c));color-scheme:dark}:host::backdrop{display:none}:host(.ars-hidden){display:none}.scrim{position:absolute;inset:0;background:var(--_scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:ars-busy-fade .2s cubic-bezier(0,0,.2,1)}@keyframes ars-busy-fade{0%{opacity:0}to{opacity:1}}.panel{position:relative;min-width:250px;max-width:calc(100% - 24px);margin:12px;padding:24px;border-radius:var(--ars-shell-dialog-radius, 24px);background:var(--_surface);box-shadow:var(--ars-shell-dialog-elevation, 0 4px 8px 0 rgba(0, 0, 0, .2), 0 6px 20px 0 rgba(0, 0, 0, .19));text-align:center}.bare{position:relative;display:flex;flex-direction:column;align-items:center;color:var(--_bare)}.message{font-size:larger;font-weight:600;padding-bottom:15px;text-align:center}.bare .message{padding-top:15px;padding-bottom:0}.percent{padding-top:8px;font-size:smaller}.bar{position:relative;max-width:350px;height:4px;margin:15px auto 0;overflow:hidden;border-radius:2px;background:var(--_track)}.bar-fill{position:absolute;inset:0 auto 0 0;width:0;border-radius:inherit;background:var(--_primary);transition:width .12s linear}.bar.indeterminate .bar-fill{width:40%;transition:none;animation:ars-busy-bar 1.6s cubic-bezier(.65,.02,.35,1) infinite}@keyframes ars-busy-bar{0%{left:-40%}to{left:100%}}.spinner{display:block;width:70px;height:70px;margin:15px auto 0;transform:rotate(-90deg)}.spinner circle{fill:none;stroke-width:7;stroke-linecap:round}.spinner .track{stroke:var(--_track)}.spinner .arc{stroke:var(--_primary);transition:stroke-dashoffset .12s linear}.spinner.indeterminate{animation:ars-busy-rotate 1.4s linear infinite}.spinner.indeterminate .arc{transition:none;stroke-dashoffset:0;animation:ars-busy-dash 1.4s ease-in-out infinite}@keyframes ars-busy-rotate{0%{transform:rotate(-90deg)}to{transform:rotate(270deg)}}@keyframes ars-busy-dash{0%{stroke-dasharray:15 183}50%{stroke-dasharray:145 53}to{stroke-dasharray:15 183}}.hourglass{width:80px;height:80px;fill:currentColor;animation:ars-busy-hourglass 3s linear infinite}@keyframes ars-busy-hourglass{0%{transform:rotate(360deg)}to{transform:rotate(0)}}@media(prefers-reduced-motion:reduce){.scrim{animation:none}.bar.indeterminate .bar-fill,.spinner.indeterminate,.spinner.indeterminate .arc,.hourglass{animation-duration:4s}}\n"], dependencies: [{ kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
121
121
|
}
|
|
122
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ShellBusyComponent, decorators: [{
|
|
123
123
|
type: Component,
|
|
124
124
|
args: [{ selector: 'ars-shell-busy', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [SafeHtmlPipe], host: { '[class.ars-hidden]': '!visible()', '[class.ars-dark]': 'dark()' }, template: "<div class=\"scrim\"></div>\n\n@if (type() === 'hourglass' || type() === 'wait') {\n<div class=\"bare\">\n <svg class=\"hourglass\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path d=\"M6 2h12v6l-4 4 4 4v6H6v-6l4-4-4-4zm2 2v3.2l4 4 4-4V4zm0 16h8v-3.2l-4-4-4 4z\" />\n </svg>\n @if (type() === 'hourglass' && message()) {\n <div class=\"message\" [innerHTML]=\"message() | safeHtml\"></div>\n }\n</div>\n} @else {\n<div class=\"panel\" role=\"status\" aria-live=\"polite\">\n @if (message()) {\n <div class=\"message\" [innerHTML]=\"message() | safeHtml\"></div>\n }\n\n @if (type() === 'bar') {\n <div class=\"bar\" [class.indeterminate]=\"progressMode() === 'indeterminate'\">\n <div class=\"bar-fill\" [style.width.%]=\"progressMode() === 'determinate' ? progress() : null\"></div>\n </div>\n } @else if (type() === 'spinner') {\n <svg class=\"spinner\" [class.indeterminate]=\"progressMode() === 'indeterminate'\" viewBox=\"0 0 70 70\"\n aria-hidden=\"true\">\n <circle class=\"track\" cx=\"35\" cy=\"35\" r=\"31.5\"></circle>\n <circle class=\"arc\" cx=\"35\" cy=\"35\" r=\"31.5\" [style.stroke-dasharray]=\"circumference\"\n [style.stroke-dashoffset]=\"progressMode() === 'determinate' ? dashOffset() : null\"></circle>\n </svg>\n }\n\n @if (progress() > 0) {\n <div class=\"percent\"><b>{{ progress() }}%</b></div>\n }\n</div>\n}\n", styles: [":host{--_surface: var(--ars-shell-dialog-background-color, var(--mat-sys-surface-container-high, #e6eae8));--_on-surface: var(--ars-color-text, var(--mat-sys-on-surface, #191c1b));--_scrim: var(--ars-shell-busy-scrim-color, rgba(0, 0, 0, .28));--_primary: var(--ars-color-primary, var(--mat-sys-primary, #006a60));--_track: var(--ars-shell-busy-track-color, var(--mat-sys-surface-container-highest, #d5dbd8));--_bare: var(--ars-shell-busy-bare-color, #ffffff);color-scheme:light;margin:0;border:0;padding:0;background:none;color:inherit;overflow:visible;width:100%;height:100%;position:fixed;inset:0;z-index:var(--ars-shell-busy-z-index, 1090);display:flex;align-items:center;justify-content:center;font-family:var(--mat-sys-body-medium-font, Roboto, sans-serif);color:var(--_on-surface)}:host(.ars-dark){--_surface: var(--ars-shell-dialog-background-color, var(--mat-sys-surface-container-high, #282a29));--_on-surface: var(--ars-color-text, var(--mat-sys-on-surface, #e0e2e5));--_scrim: var(--ars-shell-busy-scrim-color, rgba(0, 0, 0, .45));--_primary: var(--ars-color-primary, var(--mat-sys-primary, #67d9c9));--_track: var(--ars-shell-busy-track-color, var(--mat-sys-surface-container-highest, #3a3d3c));color-scheme:dark}:host::backdrop{display:none}:host(.ars-hidden){display:none}.scrim{position:absolute;inset:0;background:var(--_scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:ars-busy-fade .2s cubic-bezier(0,0,.2,1)}@keyframes ars-busy-fade{0%{opacity:0}to{opacity:1}}.panel{position:relative;min-width:250px;max-width:calc(100% - 24px);margin:12px;padding:24px;border-radius:var(--ars-shell-dialog-radius, 24px);background:var(--_surface);box-shadow:var(--ars-shell-dialog-elevation, 0 4px 8px 0 rgba(0, 0, 0, .2), 0 6px 20px 0 rgba(0, 0, 0, .19));text-align:center}.bare{position:relative;display:flex;flex-direction:column;align-items:center;color:var(--_bare)}.message{font-size:larger;font-weight:600;padding-bottom:15px;text-align:center}.bare .message{padding-top:15px;padding-bottom:0}.percent{padding-top:8px;font-size:smaller}.bar{position:relative;max-width:350px;height:4px;margin:15px auto 0;overflow:hidden;border-radius:2px;background:var(--_track)}.bar-fill{position:absolute;inset:0 auto 0 0;width:0;border-radius:inherit;background:var(--_primary);transition:width .12s linear}.bar.indeterminate .bar-fill{width:40%;transition:none;animation:ars-busy-bar 1.6s cubic-bezier(.65,.02,.35,1) infinite}@keyframes ars-busy-bar{0%{left:-40%}to{left:100%}}.spinner{display:block;width:70px;height:70px;margin:15px auto 0;transform:rotate(-90deg)}.spinner circle{fill:none;stroke-width:7;stroke-linecap:round}.spinner .track{stroke:var(--_track)}.spinner .arc{stroke:var(--_primary);transition:stroke-dashoffset .12s linear}.spinner.indeterminate{animation:ars-busy-rotate 1.4s linear infinite}.spinner.indeterminate .arc{transition:none;stroke-dashoffset:0;animation:ars-busy-dash 1.4s ease-in-out infinite}@keyframes ars-busy-rotate{0%{transform:rotate(-90deg)}to{transform:rotate(270deg)}}@keyframes ars-busy-dash{0%{stroke-dasharray:15 183}50%{stroke-dasharray:145 53}to{stroke-dasharray:15 183}}.hourglass{width:80px;height:80px;fill:currentColor;animation:ars-busy-hourglass 3s linear infinite}@keyframes ars-busy-hourglass{0%{transform:rotate(360deg)}to{transform:rotate(0)}}@media(prefers-reduced-motion:reduce){.scrim{animation:none}.bar.indeterminate .bar-fill,.spinner.indeterminate,.spinner.indeterminate .arc,.hourglass{animation-duration:4s}}\n"] }]
|
|
125
125
|
}], ctorParameters: () => [] });
|
|
@@ -305,10 +305,10 @@ class ShellMessageComponent {
|
|
|
305
305
|
// the user for, and the text is on screen anyway.
|
|
306
306
|
}
|
|
307
307
|
}
|
|
308
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
309
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
308
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ShellMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
309
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: ShellMessageComponent, isStandalone: true, selector: "ars-shell-message", outputs: { closed: "closed" }, host: { listeners: { "document:keydown": "onKeydown($event)" }, properties: { "class.ars-dark": "dark()" } }, viewQueries: [{ propertyName: "panel", first: true, predicate: ["panel"], descendants: true, isSignal: true }, { propertyName: "okButton", first: true, predicate: ["ok"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"scrim\" (click)=\"close()\"></div>\n\n<div #panel class=\"panel\" role=\"alertdialog\" aria-modal=\"true\" [attr.aria-labelledby]=\"titleId\"\n [style.max-width.px]=\"data().width\">\n\n <h2 class=\"title\" [id]=\"titleId\" [innerHTML]=\"data().title | safeHtml\"></h2>\n\n <div class=\"content\">\n @if (data().message) {\n <div class=\"message\" [innerHTML]=\"data().message | safeHtml\"></div>\n }\n @if (data().details) {\n <div class=\"details-box\" [class.open]=\"detailsOpen()\">\n <button type=\"button\" class=\"details-header\" (click)=\"toggleDetails()\"\n [attr.aria-expanded]=\"detailsOpen()\" [attr.aria-controls]=\"detailsId\">\n <span class=\"details-label\">Dettaglio</span>\n <svg class=\"chevron\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path d=\"M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6z\" />\n </svg>\n </button>\n <div class=\"details-body\">\n <div class=\"details\" [id]=\"detailsId\" [attr.aria-hidden]=\"!detailsOpen()\">\n <div class=\"details-text\" [innerHTML]=\"data().details | safeHtml\"></div>\n </div>\n </div>\n </div>\n }\n </div>\n\n <div class=\"actions\">\n <button type=\"button\" class=\"icon-button\" (click)=\"copy()\"\n [title]=\"copied() ? 'Copiato negli appunti' : 'Copia negli appunti'\" aria-label=\"Copia negli appunti\">\n @if (copied()) {\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z\" /></svg>\n } @else {\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path\n d=\"M16 1H4a2 2 0 0 0-2 2v14h2V3h12zm3 4H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m0 16H8V7h11z\" /></svg>\n }\n </button>\n <button #ok type=\"button\" class=\"flat-button\" (click)=\"close()\">{{ data().okCaption }}</button>\n </div>\n</div>\n", styles: [":host{--_surface: var(--ars-shell-dialog-background-color, var(--mat-sys-surface-container-high, #e6eae8));--_on-surface: var(--ars-color-text, var(--mat-sys-on-surface, #191c1b));--_secondary: var(--ars-color-secondary, var(--mat-sys-on-surface-variant, #4a635f));--_divider: var(--ars-color-divider, #757d87);--_scrim: var(--ars-shell-dialog-scrim-color, rgba(0, 0, 0, .24));--_primary: var(--ars-button-background-color, var(--mat-sys-primary, #006a60));--_on-primary: var(--ars-color-on-primary, var(--mat-sys-on-primary, #ffffff));--_hover: var(--ars-item-hover-background-color, rgba(0, 0, 0, .08));--_sunken: var(--ars-shell-dialog-sunken-background-color, rgba(0, 0, 0, .05));color-scheme:light;margin:0;border:0;padding:0;background:none;color:inherit;overflow:visible;width:100%;height:100%;position:fixed;inset:0;z-index:var(--ars-shell-dialog-z-index, 1100);display:flex;align-items:center;justify-content:center;box-sizing:border-box}:host(.ars-dark){--_surface: var(--ars-shell-dialog-background-color, var(--mat-sys-surface-container-high, #282a29));--_on-surface: var(--ars-color-text, var(--mat-sys-on-surface, #e0e2e5));--_secondary: var(--ars-color-secondary, var(--mat-sys-on-surface-variant, #b1ccc6));--_scrim: var(--ars-shell-dialog-scrim-color, rgba(0, 0, 0, .45));--_primary: var(---ars-button-background-color, var(--mat-sys-primary, #67d9c9));--_on-primary: var(--ars-color-on-primary, var(--mat-sys-on-primary, #00382f));--_hover: var(--ars-item-hover-background-color, rgba(255, 255, 255, .08));--_sunken: var(--ars-shell-dialog-sunken-background-color, rgba(0, 0, 0, .22));color-scheme:dark}:host::backdrop{display:none}.scrim{position:absolute;inset:0;background:var(--_scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:ars-shell-fade .2s cubic-bezier(0,0,.2,1)}.panel{position:relative;display:flex;flex-direction:column;width:100%;min-width:0;margin:12px;max-height:calc(100% - 24px);box-sizing:border-box;border-radius:var(--ars-shell-dialog-radius, 28px);background:var(--_surface);color:var(--_on-surface);box-shadow:var(--ars-shell-dialog-elevation, 0 4px 8px 3px rgba(0, 0, 0, .15), 0 1px 3px 0 rgba(0, 0, 0, .3));font-family:var(--mat-sys-body-medium-font, Roboto, sans-serif);text-align:left;animation:ars-shell-enter .15s cubic-bezier(0,0,.2,1)}.title{margin:0;padding:24px 24px 16px;font:var(--mat-sys-headline-small, 400 24px/32px Roboto, sans-serif);color:inherit}.content{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;padding:0;font:var(--mat-sys-body-medium, 400 14px/20px Roboto, sans-serif)}.message{flex:0 1 auto;min-height:0;padding:0 24px 24px;overflow-y:auto;overscroll-behavior:contain}.details-box{flex:0 1000 auto;min-height:0;display:flex;flex-direction:column;margin:0 16px 4px;border-radius:12px;background:transparent;transition:background-color .2s cubic-bezier(0,0,.2,1)}.details-box.open{background:var(--_sunken)}.details-header{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:44px;padding:0 8px;border-radius:12px;background:transparent;color:var(--_secondary);text-align:left}.details-header:hover{background:var(--_hover)}.details-label{font-size:.75em;letter-spacing:.06em;text-transform:uppercase}.chevron{width:20px;height:20px;fill:currentColor;transition:transform .2s cubic-bezier(0,0,.2,1)}.details-box.open .chevron{transform:rotate(180deg)}.details-body{display:grid;grid-template-rows:0fr;min-height:0;max-height:320px;transition:grid-template-rows .2s cubic-bezier(0,0,.2,1)}.details-box.open .details-body{grid-template-rows:1fr}.details{min-height:0;overflow:hidden}.details-box.open .details{overflow-y:auto;overscroll-behavior:contain}.details-text{padding:0 8px 12px;font-size:.85em}.actions{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:16px 24px 24px}button{font-family:inherit;cursor:pointer;border:none}button:focus-visible{outline:none!important;box-shadow:none!important}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border-radius:50%;background:transparent;color:inherit}.icon-button svg{width:24px;height:24px;fill:currentColor}.icon-button:hover,.icon-button:focus-visible{background:var(--_hover)!important}.flat-button{height:40px;padding:0 24px;border-radius:20px;background:var(--_primary);color:var(--_on-primary);font:var(--mat-sys-label-large, 500 14px/20px Roboto, sans-serif)}.flat-button:hover,.flat-button:focus-visible{filter:brightness(1.08)!important}@keyframes ars-shell-fade{0%{opacity:0}to{opacity:1}}@keyframes ars-shell-enter{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.scrim,.panel{animation:none}.details-box,.details-body,.chevron{transition:none}}\n"], dependencies: [{ kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
310
310
|
}
|
|
311
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
311
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ShellMessageComponent, decorators: [{
|
|
312
312
|
type: Component,
|
|
313
313
|
args: [{ selector: 'ars-shell-message', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [SafeHtmlPipe], host: { '[class.ars-dark]': 'dark()' }, template: "<div class=\"scrim\" (click)=\"close()\"></div>\n\n<div #panel class=\"panel\" role=\"alertdialog\" aria-modal=\"true\" [attr.aria-labelledby]=\"titleId\"\n [style.max-width.px]=\"data().width\">\n\n <h2 class=\"title\" [id]=\"titleId\" [innerHTML]=\"data().title | safeHtml\"></h2>\n\n <div class=\"content\">\n @if (data().message) {\n <div class=\"message\" [innerHTML]=\"data().message | safeHtml\"></div>\n }\n @if (data().details) {\n <div class=\"details-box\" [class.open]=\"detailsOpen()\">\n <button type=\"button\" class=\"details-header\" (click)=\"toggleDetails()\"\n [attr.aria-expanded]=\"detailsOpen()\" [attr.aria-controls]=\"detailsId\">\n <span class=\"details-label\">Dettaglio</span>\n <svg class=\"chevron\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path d=\"M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6z\" />\n </svg>\n </button>\n <div class=\"details-body\">\n <div class=\"details\" [id]=\"detailsId\" [attr.aria-hidden]=\"!detailsOpen()\">\n <div class=\"details-text\" [innerHTML]=\"data().details | safeHtml\"></div>\n </div>\n </div>\n </div>\n }\n </div>\n\n <div class=\"actions\">\n <button type=\"button\" class=\"icon-button\" (click)=\"copy()\"\n [title]=\"copied() ? 'Copiato negli appunti' : 'Copia negli appunti'\" aria-label=\"Copia negli appunti\">\n @if (copied()) {\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z\" /></svg>\n } @else {\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path\n d=\"M16 1H4a2 2 0 0 0-2 2v14h2V3h12zm3 4H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m0 16H8V7h11z\" /></svg>\n }\n </button>\n <button #ok type=\"button\" class=\"flat-button\" (click)=\"close()\">{{ data().okCaption }}</button>\n </div>\n</div>\n", styles: [":host{--_surface: var(--ars-shell-dialog-background-color, var(--mat-sys-surface-container-high, #e6eae8));--_on-surface: var(--ars-color-text, var(--mat-sys-on-surface, #191c1b));--_secondary: var(--ars-color-secondary, var(--mat-sys-on-surface-variant, #4a635f));--_divider: var(--ars-color-divider, #757d87);--_scrim: var(--ars-shell-dialog-scrim-color, rgba(0, 0, 0, .24));--_primary: var(--ars-button-background-color, var(--mat-sys-primary, #006a60));--_on-primary: var(--ars-color-on-primary, var(--mat-sys-on-primary, #ffffff));--_hover: var(--ars-item-hover-background-color, rgba(0, 0, 0, .08));--_sunken: var(--ars-shell-dialog-sunken-background-color, rgba(0, 0, 0, .05));color-scheme:light;margin:0;border:0;padding:0;background:none;color:inherit;overflow:visible;width:100%;height:100%;position:fixed;inset:0;z-index:var(--ars-shell-dialog-z-index, 1100);display:flex;align-items:center;justify-content:center;box-sizing:border-box}:host(.ars-dark){--_surface: var(--ars-shell-dialog-background-color, var(--mat-sys-surface-container-high, #282a29));--_on-surface: var(--ars-color-text, var(--mat-sys-on-surface, #e0e2e5));--_secondary: var(--ars-color-secondary, var(--mat-sys-on-surface-variant, #b1ccc6));--_scrim: var(--ars-shell-dialog-scrim-color, rgba(0, 0, 0, .45));--_primary: var(---ars-button-background-color, var(--mat-sys-primary, #67d9c9));--_on-primary: var(--ars-color-on-primary, var(--mat-sys-on-primary, #00382f));--_hover: var(--ars-item-hover-background-color, rgba(255, 255, 255, .08));--_sunken: var(--ars-shell-dialog-sunken-background-color, rgba(0, 0, 0, .22));color-scheme:dark}:host::backdrop{display:none}.scrim{position:absolute;inset:0;background:var(--_scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:ars-shell-fade .2s cubic-bezier(0,0,.2,1)}.panel{position:relative;display:flex;flex-direction:column;width:100%;min-width:0;margin:12px;max-height:calc(100% - 24px);box-sizing:border-box;border-radius:var(--ars-shell-dialog-radius, 28px);background:var(--_surface);color:var(--_on-surface);box-shadow:var(--ars-shell-dialog-elevation, 0 4px 8px 3px rgba(0, 0, 0, .15), 0 1px 3px 0 rgba(0, 0, 0, .3));font-family:var(--mat-sys-body-medium-font, Roboto, sans-serif);text-align:left;animation:ars-shell-enter .15s cubic-bezier(0,0,.2,1)}.title{margin:0;padding:24px 24px 16px;font:var(--mat-sys-headline-small, 400 24px/32px Roboto, sans-serif);color:inherit}.content{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;padding:0;font:var(--mat-sys-body-medium, 400 14px/20px Roboto, sans-serif)}.message{flex:0 1 auto;min-height:0;padding:0 24px 24px;overflow-y:auto;overscroll-behavior:contain}.details-box{flex:0 1000 auto;min-height:0;display:flex;flex-direction:column;margin:0 16px 4px;border-radius:12px;background:transparent;transition:background-color .2s cubic-bezier(0,0,.2,1)}.details-box.open{background:var(--_sunken)}.details-header{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:44px;padding:0 8px;border-radius:12px;background:transparent;color:var(--_secondary);text-align:left}.details-header:hover{background:var(--_hover)}.details-label{font-size:.75em;letter-spacing:.06em;text-transform:uppercase}.chevron{width:20px;height:20px;fill:currentColor;transition:transform .2s cubic-bezier(0,0,.2,1)}.details-box.open .chevron{transform:rotate(180deg)}.details-body{display:grid;grid-template-rows:0fr;min-height:0;max-height:320px;transition:grid-template-rows .2s cubic-bezier(0,0,.2,1)}.details-box.open .details-body{grid-template-rows:1fr}.details{min-height:0;overflow:hidden}.details-box.open .details{overflow-y:auto;overscroll-behavior:contain}.details-text{padding:0 8px 12px;font-size:.85em}.actions{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:16px 24px 24px}button{font-family:inherit;cursor:pointer;border:none}button:focus-visible{outline:none!important;box-shadow:none!important}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border-radius:50%;background:transparent;color:inherit}.icon-button svg{width:24px;height:24px;fill:currentColor}.icon-button:hover,.icon-button:focus-visible{background:var(--_hover)!important}.flat-button{height:40px;padding:0 24px;border-radius:20px;background:var(--_primary);color:var(--_on-primary);font:var(--mat-sys-label-large, 500 14px/20px Roboto, sans-serif)}.flat-button:hover,.flat-button:focus-visible{filter:brightness(1.08)!important}@keyframes ars-shell-fade{0%{opacity:0}to{opacity:1}}@keyframes ars-shell-enter{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.scrim,.panel{animation:none}.details-box,.details-body,.chevron{transition:none}}\n"] }]
|
|
314
314
|
}], ctorParameters: () => [], propDecorators: { closed: [{ type: i0.Output, args: ["closed"] }], panel: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], okButton: [{ type: i0.ViewChild, args: ['ok', { isSignal: true }] }], onKeydown: [{
|
|
@@ -688,10 +688,10 @@ class ShellService {
|
|
|
688
688
|
}
|
|
689
689
|
catch { /* the element is on its way out */ }
|
|
690
690
|
}
|
|
691
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
692
|
-
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.
|
|
691
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ShellService, deps: [], target: i0.ɵɵFactoryTarget.Service }); }
|
|
692
|
+
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: ShellService }); }
|
|
693
693
|
}
|
|
694
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
694
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ShellService, decorators: [{
|
|
695
695
|
type: Service
|
|
696
696
|
}] });
|
|
697
697
|
|
|
@@ -218,10 +218,10 @@ class TinymceLoaderService {
|
|
|
218
218
|
});
|
|
219
219
|
return this.pending;
|
|
220
220
|
}
|
|
221
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
222
|
-
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.
|
|
221
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: TinymceLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Service }); }
|
|
222
|
+
static { this.ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: TinymceLoaderService }); }
|
|
223
223
|
}
|
|
224
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
224
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: TinymceLoaderService, decorators: [{
|
|
225
225
|
type: Service
|
|
226
226
|
}] });
|
|
227
227
|
|
|
@@ -542,14 +542,14 @@ class TinymceEditorDirective {
|
|
|
542
542
|
applyDisabled(isDisabled) {
|
|
543
543
|
this.editor?.mode.set(isDisabled ? 'readonly' : 'design');
|
|
544
544
|
}
|
|
545
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
546
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.
|
|
545
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: TinymceEditorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
546
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.5", type: TinymceEditorDirective, isStandalone: true, selector: "textarea[tinymceEditor], div[tinymceEditor]", inputs: { tinymceConfig: { classPropertyName: "tinymceConfig", publicName: "tinymceConfig", isSignal: true, isRequired: false, transformFunction: null }, tinymceToolbarMode: { classPropertyName: "tinymceToolbarMode", publicName: "tinymceToolbarMode", isSignal: true, isRequired: false, transformFunction: null }, tinymceImageUploader: { classPropertyName: "tinymceImageUploader", publicName: "tinymceImageUploader", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { ready: "ready", failed: "failed" }, providers: [{
|
|
547
547
|
provide: NG_VALUE_ACCESSOR,
|
|
548
548
|
useExisting: forwardRef(() => TinymceEditorDirective),
|
|
549
549
|
multi: true
|
|
550
550
|
}], ngImport: i0 }); }
|
|
551
551
|
}
|
|
552
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
552
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: TinymceEditorDirective, decorators: [{
|
|
553
553
|
type: Directive,
|
|
554
554
|
args: [{
|
|
555
555
|
// Both hosts are accepted because the two modes need different ones: the classic editor
|
|
@@ -637,10 +637,10 @@ class TinyMceEditorComponent {
|
|
|
637
637
|
this.dialogRef.close();
|
|
638
638
|
}, 500);
|
|
639
639
|
}
|
|
640
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
641
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
640
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: TinyMceEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
641
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: TinyMceEditorComponent, isStandalone: true, selector: "ng-component", outputs: { saving: "saving" }, ngImport: i0, template: "<mat-dialog-content style=\"padding: 10px 10px 0 10px\">\n @if (error()) {\n <!-- The textarea is gone with the editor that could not replace it: left in place it would be a\n plain box the form does not write into, which is the empty editor this message exists to\n explain. -->\n <div class=\"editor-error\">\n <div class=\"editor-error-title\">Non \u00E8 stato possibile aprire l'editor.</div>\n <div class=\"editor-error-detail\">{{ error() }}</div>\n <div class=\"editor-error-detail\">Il testo non \u00E8 stato modificato: chiudi e riprova.</div>\n </div>\n } @else {\n <textarea tinymceEditor class=\"full-screen-editor\" [tinymceConfig]=\"tinymceConfig\"\n [formField]=\"textForm\" (failed)=\"failed($event)\"></textarea>\n }\n</mat-dialog-content>\n<mat-dialog-actions>\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" fxFill>\n <div fxFlex=\"50\">\n @if(dialogData().onShowInfo) {\n <button mat-stroked-button (click)=\"dialogData().onShowInfo()\">{{dialogData().infoButtonLabel ?? 'Informazioni'}}\n </button>\n }\n </div>\n <div fxFlex=\"50\" fxLayoutAlign=\"end\">\n <!-- Nothing to save when there was no editor: the only way out is the one that changes\n nothing. -->\n @if (disabled() || error()) {\n <button mat-stroked-button [mat-dialog-close]=\"true\">Chiudi</button>\n } @else {\n <button mat-flat-button (click)=\"ok()\">Salva</button>\n <button mat-stroked-button [mat-dialog-close]=\"true\">Annulla</button>\n }\n </div>\n </div>\n</mat-dialog-actions>\n", styles: [".mat-mdc-dialog-content{height:calc(100% - 52px)!important;max-height:calc(100% - 52px)!important}::ng-deep .full-screen-editor+.tox-tinymce{height:100%!important}.editor-error{display:flex;flex-direction:column;gap:6px;justify-content:center;align-items:center;height:100%;min-height:120px;padding:24px;text-align:center}.editor-error .editor-error-title{font-weight:500}.editor-error .editor-error-detail{font-size:small;opacity:.8}\n"], dependencies: [{ kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: TinymceEditorDirective, selector: "textarea[tinymceEditor], div[tinymceEditor]", inputs: ["tinymceConfig", "tinymceToolbarMode", "tinymceImageUploader"], outputs: ["ready", "failed"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1.FxLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg] ", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.FxFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg] ", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i1.FxLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg] ", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.FxLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg] ", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.FxFlexFillDirective, selector: " [fxFlexFill], [fxFill], [fxFlexFill.xs], [fxFlexFill.sm], [fxFlexFill.md], [fxFlexFill.lg], [fxFlexFill.xl], [fxFlexFill.lt-sm], [fxFlexFill.lt-md], [fxFlexFill.lt-lg], [fxFlexFill.lt-xl], [fxFlexFill.gt-xs], [fxFlexFill.gt-sm], [fxFlexFill.gt-md], [fxFlexFill.gt-lg] ", inputs: ["fxFlexFill", "fxFill", "fxFlexFill.xs", "fxFlexFill.sm", "fxFlexFill.md", "fxFlexFill.lg", "fxFlexFill.xl", "fxFlexFill.lt-sm", "fxFlexFill.lt-md", "fxFlexFill.lt-lg", "fxFlexFill.lt-xl", "fxFlexFill.gt-xs", "fxFlexFill.gt-sm", "fxFlexFill.gt-md", "fxFlexFill.gt-lg"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
642
642
|
}
|
|
643
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
643
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: TinyMceEditorComponent, decorators: [{
|
|
644
644
|
type: Component,
|
|
645
645
|
args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatDialogContent, TinymceEditorDirective, FormField, MatDialogActions, FlexLayoutModule,
|
|
646
646
|
MatButtonModule, MatDialogClose], template: "<mat-dialog-content style=\"padding: 10px 10px 0 10px\">\n @if (error()) {\n <!-- The textarea is gone with the editor that could not replace it: left in place it would be a\n plain box the form does not write into, which is the empty editor this message exists to\n explain. -->\n <div class=\"editor-error\">\n <div class=\"editor-error-title\">Non \u00E8 stato possibile aprire l'editor.</div>\n <div class=\"editor-error-detail\">{{ error() }}</div>\n <div class=\"editor-error-detail\">Il testo non \u00E8 stato modificato: chiudi e riprova.</div>\n </div>\n } @else {\n <textarea tinymceEditor class=\"full-screen-editor\" [tinymceConfig]=\"tinymceConfig\"\n [formField]=\"textForm\" (failed)=\"failed($event)\"></textarea>\n }\n</mat-dialog-content>\n<mat-dialog-actions>\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" fxFill>\n <div fxFlex=\"50\">\n @if(dialogData().onShowInfo) {\n <button mat-stroked-button (click)=\"dialogData().onShowInfo()\">{{dialogData().infoButtonLabel ?? 'Informazioni'}}\n </button>\n }\n </div>\n <div fxFlex=\"50\" fxLayoutAlign=\"end\">\n <!-- Nothing to save when there was no editor: the only way out is the one that changes\n nothing. -->\n @if (disabled() || error()) {\n <button mat-stroked-button [mat-dialog-close]=\"true\">Chiudi</button>\n } @else {\n <button mat-flat-button (click)=\"ok()\">Salva</button>\n <button mat-stroked-button [mat-dialog-close]=\"true\">Annulla</button>\n }\n </div>\n </div>\n</mat-dialog-actions>\n", styles: [".mat-mdc-dialog-content{height:calc(100% - 52px)!important;max-height:calc(100% - 52px)!important}::ng-deep .full-screen-editor+.tox-tinymce{height:100%!important}.editor-error{display:flex;flex-direction:column;gap:6px;justify-content:center;align-items:center;height:100%;min-height:120px;padding:24px;text-align:center}.editor-error .editor-error-title{font-weight:500}.editor-error .editor-error-detail{font-size:small;opacity:.8}\n"] }]
|
package/package.json
CHANGED
|
@@ -167,7 +167,7 @@ declare class ClipperChannelSettings {
|
|
|
167
167
|
interface ClipperUserChannelInfo {
|
|
168
168
|
channel: ClipperChannel;
|
|
169
169
|
channelName?: string;
|
|
170
|
-
expiringDate:
|
|
170
|
+
expiringDate: Date;
|
|
171
171
|
isTrial?: boolean;
|
|
172
172
|
isDisabled: boolean;
|
|
173
173
|
isSuspended: boolean;
|
|
@@ -180,9 +180,9 @@ interface ClipperUserChannelInfo {
|
|
|
180
180
|
interface ClipperUserInfo {
|
|
181
181
|
userId: number;
|
|
182
182
|
customerId?: number;
|
|
183
|
-
companyName
|
|
184
|
-
displayName
|
|
185
|
-
firstName
|
|
183
|
+
companyName?: string;
|
|
184
|
+
displayName?: string;
|
|
185
|
+
firstName?: string;
|
|
186
186
|
email: string;
|
|
187
187
|
oauth?: boolean;
|
|
188
188
|
sessionId?: string;
|
|
@@ -194,8 +194,8 @@ interface ClipperUserInfo {
|
|
|
194
194
|
hasAI: boolean;
|
|
195
195
|
hasAIAssistant: boolean;
|
|
196
196
|
hasAIEditor: boolean;
|
|
197
|
-
channels
|
|
198
|
-
firstChannelTrial
|
|
197
|
+
channels?: ClipperUserChannelInfo[];
|
|
198
|
+
firstChannelTrial?: ClipperUserChannelInfo;
|
|
199
199
|
trialInfo?: ClipperUserTrialInfo;
|
|
200
200
|
}
|
|
201
201
|
interface ClipperLoginResult extends LoginResult<ClipperUserInfo> {
|
|
@@ -485,8 +485,8 @@ declare class ClipperSearchFacetsSnapshot {
|
|
|
485
485
|
}
|
|
486
486
|
interface ClipperSearchCalendarSnapshotMonth {
|
|
487
487
|
days: number[];
|
|
488
|
-
monthShortName
|
|
489
|
-
monthName
|
|
488
|
+
monthShortName?: string;
|
|
489
|
+
monthName?: string;
|
|
490
490
|
month: number;
|
|
491
491
|
year: number;
|
|
492
492
|
total: number;
|
|
@@ -522,7 +522,7 @@ declare enum ClipperFacet {
|
|
|
522
522
|
Reason = 95
|
|
523
523
|
}
|
|
524
524
|
interface ClipperOTPInfo {
|
|
525
|
-
code
|
|
525
|
+
code?: string;
|
|
526
526
|
canPreview?: boolean;
|
|
527
527
|
canEmbed?: boolean;
|
|
528
528
|
}
|
|
@@ -580,7 +580,7 @@ interface ClipperDeleteWorkingDocumentsParams {
|
|
|
580
580
|
deleteAll: boolean;
|
|
581
581
|
}
|
|
582
582
|
interface ClipperUserTrialInfo {
|
|
583
|
-
channelName
|
|
583
|
+
channelName?: string;
|
|
584
584
|
expiringDate: Date;
|
|
585
585
|
remainingDocuments: number;
|
|
586
586
|
}
|
|
@@ -589,7 +589,7 @@ interface ClipperDocumentUpdateStateParams {
|
|
|
589
589
|
isRead: boolean;
|
|
590
590
|
}
|
|
591
591
|
interface ClipperDashboardModelItem {
|
|
592
|
-
id
|
|
592
|
+
id?: ClipperModel;
|
|
593
593
|
newItems: number;
|
|
594
594
|
unreadItems: number;
|
|
595
595
|
}
|
|
@@ -598,7 +598,7 @@ interface ClipperDashboardItem {
|
|
|
598
598
|
models: ClipperDashboardModelItem[];
|
|
599
599
|
newItems: number;
|
|
600
600
|
unreadItems: number;
|
|
601
|
-
lastUpdated?:
|
|
601
|
+
lastUpdated?: Date;
|
|
602
602
|
}
|
|
603
603
|
declare class ClipperDashboard {
|
|
604
604
|
items: i0.WritableSignal<ClipperDashboardItem[]>;
|
|
@@ -280,6 +280,63 @@ declare class ArsLocalDateInterceptor implements HttpInterceptor {
|
|
|
280
280
|
* ]
|
|
281
281
|
*/
|
|
282
282
|
declare function provideArsLocalDates(timeZone?: string): EnvironmentProviders;
|
|
283
|
+
/**
|
|
284
|
+
* Functional interceptor that reads every ISO date string in a response body back into a `Date`.
|
|
285
|
+
*
|
|
286
|
+
* WHY: models declare `Date`, but `HttpClient` only runs `JSON.parse`, which has no notion of
|
|
287
|
+
* dates, so without this every one of those properties holds a `string` at runtime and the declared
|
|
288
|
+
* type is a promise nobody keeps. It goes unnoticed for a long time — Angular's `date` pipe accepts
|
|
289
|
+
* strings and {@link DateFnsAdapter.deserialize} parses them for the datepickers — until somebody
|
|
290
|
+
* calls a method of `Date` on one and gets a `TypeError`, or writes
|
|
291
|
+
* `x.someDate = new Date(x.someDate)` to work around it one call site at a time.
|
|
292
|
+
*
|
|
293
|
+
* Together with {@link arsLocalDateInterceptor} it closes the serialisation boundary: no call site
|
|
294
|
+
* has to convert anything, in either direction.
|
|
295
|
+
*
|
|
296
|
+
* NOT registered by {@link provideArsLocalDates}, on purpose: turning strings into Dates changes
|
|
297
|
+
* what an application already reading those fields receives, so it stays opt-in and each
|
|
298
|
+
* application decides when to take it. Register it explicitly, or use
|
|
299
|
+
* {@link provideArsLocalDateResponses}.
|
|
300
|
+
*
|
|
301
|
+
* @example
|
|
302
|
+
* provideHttpClient(withInterceptors([
|
|
303
|
+
* arsLocalDateInterceptor,
|
|
304
|
+
* arsLocalDateResponseInterceptor,
|
|
305
|
+
* ]));
|
|
306
|
+
*/
|
|
307
|
+
declare const arsLocalDateResponseInterceptor: HttpInterceptorFn;
|
|
308
|
+
/**
|
|
309
|
+
* Class-based twin of {@link arsLocalDateResponseInterceptor}, for the same reason
|
|
310
|
+
* {@link ArsLocalDateInterceptor} exists: only a class can be contributed through
|
|
311
|
+
* `HTTP_INTERCEPTORS` by an `EnvironmentProviders`.
|
|
312
|
+
*
|
|
313
|
+
* REQUIRES `withInterceptorsFromDi()` in the application's `provideHttpClient()`.
|
|
314
|
+
*/
|
|
315
|
+
declare class ArsLocalDateResponseInterceptor implements HttpInterceptor {
|
|
316
|
+
private readonly timeZone;
|
|
317
|
+
/**
|
|
318
|
+
* Revives the dates of the response before handing it to the caller.
|
|
319
|
+
* @param req - The outgoing request.
|
|
320
|
+
* @param next - The next handler in the chain.
|
|
321
|
+
*/
|
|
322
|
+
intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
|
|
323
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ArsLocalDateResponseInterceptor, never>;
|
|
324
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ArsLocalDateResponseInterceptor>;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Standalone providers for date deserialisation coming back from the backend.
|
|
328
|
+
*
|
|
329
|
+
* Registers {@link ArsLocalDateResponseInterceptor}, the counterpart of
|
|
330
|
+
* {@link provideArsLocalDates}. Kept separate because it is the half that changes what existing
|
|
331
|
+
* code receives: an application whose models declare those fields as `string` has to be looked at
|
|
332
|
+
* before switching it on.
|
|
333
|
+
*
|
|
334
|
+
* IMPORTANT: the application MUST call `withInterceptorsFromDi()`, otherwise these providers have
|
|
335
|
+
* no effect at all (no error is raised).
|
|
336
|
+
*
|
|
337
|
+
* @param timeZone - IANA timezone name (default: `Europe/Rome`).
|
|
338
|
+
*/
|
|
339
|
+
declare function provideArsLocalDateResponses(timeZone?: string): EnvironmentProviders;
|
|
283
340
|
/**
|
|
284
341
|
* Formats a date as a date-only ISO string (`yyyy-MM-dd`) using its wall-clock
|
|
285
342
|
* calendar day in the given timezone. Use it for query-string parameters and for
|
|
@@ -301,4 +358,4 @@ declare function toLocalDateOnlyString(value?: Date | null, timeZone?: string):
|
|
|
301
358
|
*/
|
|
302
359
|
declare function toLocalDateTimeString(value?: Date | null, timeZone?: string): string | undefined;
|
|
303
360
|
|
|
304
|
-
export { ARS_TIME_ZONE, ArsLocalDateInterceptor, DEFAULT_TIME_ZONE, DateFnsAdapter, MAT_DATE_FNS_FORMATS, arsLocalDateInterceptor, provideArsDateFns, provideArsLocalDates, toLocalDateOnlyString, toLocalDateTimeString };
|
|
361
|
+
export { ARS_TIME_ZONE, ArsLocalDateInterceptor, ArsLocalDateResponseInterceptor, DEFAULT_TIME_ZONE, DateFnsAdapter, MAT_DATE_FNS_FORMATS, arsLocalDateInterceptor, arsLocalDateResponseInterceptor, provideArsDateFns, provideArsLocalDateResponses, provideArsLocalDates, toLocalDateOnlyString, toLocalDateTimeString };
|