@yuuvis/client-framework 0.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -0
- package/actions/README.md +3 -0
- package/actions/index.d.ts +6 -0
- package/actions/lib/actions/copy-action/copy-action.d.ts +17 -0
- package/actions/lib/actions/cut-action/cut-action.d.ts +17 -0
- package/actions/lib/actions/delete-action/delete/delete.component.d.ts +22 -0
- package/actions/lib/actions/delete-action/delete-action.d.ts +17 -0
- package/actions/lib/actions/download-action/download-action.d.ts +17 -0
- package/actions/lib/actions.icon.d.ts +7 -0
- package/actions/lib/actions.interface.d.ts +86 -0
- package/actions/lib/actions.module.d.ts +8 -0
- package/actions/lib/actions.service.d.ts +38 -0
- package/actions/lib/components/contextmenu/contextmenu.component.d.ts +11 -0
- package/app-bar/README.md +3 -0
- package/app-bar/index.d.ts +1 -0
- package/app-bar/lib/app-bar.component.d.ts +47 -0
- package/clipboard/README.md +3 -0
- package/clipboard/index.d.ts +1 -0
- package/clipboard/lib/clipboard.component.d.ts +16 -0
- package/common/README.md +3 -0
- package/common/index.d.ts +5 -0
- package/common/lib/components/focus-indicator/focus-indicator.component.d.ts +7 -0
- package/common/lib/components/token-input/token-input.component.d.ts +55 -0
- package/common/lib/components/token-input/token-input.interface.d.ts +8 -0
- package/common/lib/directives/busy-overlay.directive.d.ts +25 -0
- package/common/lib/directives/click-double.directive.d.ts +17 -0
- package/common/lib/directives/container-size.directive.d.ts +30 -0
- package/common/lib/directives/drag-select.directive.d.ts +21 -0
- package/common/lib/directives/file-drop-zone/file-drop-zone.directive.d.ts +18 -0
- package/common/lib/directives/file-drop-zone/file-drop-zone.interface.d.ts +5 -0
- package/common/lib/directives/focus-within.directive.d.ts +36 -0
- package/common/lib/directives/index.d.ts +8 -0
- package/common/lib/directives/light-dismiss.directive.d.ts +19 -0
- package/common/lib/directives/longpress.directive.d.ts +13 -0
- package/common/lib/directives/noop-value-accessor.directive.d.ts +10 -0
- package/esm2022/actions/index.mjs +7 -0
- package/esm2022/actions/lib/actions/copy-action/copy-action.mjs +31 -0
- package/esm2022/actions/lib/actions/cut-action/cut-action.mjs +30 -0
- package/esm2022/actions/lib/actions/delete-action/delete/delete.component.mjs +67 -0
- package/esm2022/actions/lib/actions/delete-action/delete-action.mjs +44 -0
- package/esm2022/actions/lib/actions/download-action/download-action.mjs +33 -0
- package/esm2022/actions/lib/actions.icon.mjs +8 -0
- package/esm2022/actions/lib/actions.interface.mjs +19 -0
- package/esm2022/actions/lib/actions.module.mjs +16 -0
- package/esm2022/actions/lib/actions.service.mjs +89 -0
- package/esm2022/actions/lib/components/contextmenu/contextmenu.component.mjs +27 -0
- package/esm2022/actions/yuuvis-client-framework-actions.mjs +5 -0
- package/esm2022/app-bar/index.mjs +2 -0
- package/esm2022/app-bar/lib/app-bar.component.mjs +89 -0
- package/esm2022/app-bar/yuuvis-client-framework-app-bar.mjs +5 -0
- package/esm2022/clipboard/index.mjs +2 -0
- package/esm2022/clipboard/lib/clipboard.component.mjs +48 -0
- package/esm2022/clipboard/yuuvis-client-framework-clipboard.mjs +5 -0
- package/esm2022/common/index.mjs +6 -0
- package/esm2022/common/lib/components/focus-indicator/focus-indicator.component.mjs +41 -0
- package/esm2022/common/lib/components/token-input/token-input.component.mjs +324 -0
- package/esm2022/common/lib/components/token-input/token-input.interface.mjs +2 -0
- package/esm2022/common/lib/directives/busy-overlay.directive.mjs +88 -0
- package/esm2022/common/lib/directives/click-double.directive.mjs +61 -0
- package/esm2022/common/lib/directives/container-size.directive.mjs +56 -0
- package/esm2022/common/lib/directives/drag-select.directive.mjs +114 -0
- package/esm2022/common/lib/directives/file-drop-zone/file-drop-zone.directive.mjs +153 -0
- package/esm2022/common/lib/directives/file-drop-zone/file-drop-zone.interface.mjs +2 -0
- package/esm2022/common/lib/directives/focus-within.directive.mjs +81 -0
- package/esm2022/common/lib/directives/index.mjs +9 -0
- package/esm2022/common/lib/directives/light-dismiss.directive.mjs +44 -0
- package/esm2022/common/lib/directives/longpress.directive.mjs +36 -0
- package/esm2022/common/lib/directives/noop-value-accessor.directive.mjs +42 -0
- package/esm2022/common/yuuvis-client-framework-common.mjs +5 -0
- package/esm2022/forms/index.mjs +19 -0
- package/esm2022/forms/lib/elements/catalog/catalog.component.mjs +118 -0
- package/esm2022/forms/lib/elements/datetime/datetime.component.mjs +82 -0
- package/esm2022/forms/lib/elements/datetime-range/datetime-range.component.mjs +166 -0
- package/esm2022/forms/lib/elements/number/number.component.mjs +195 -0
- package/esm2022/forms/lib/elements/number-range/number-range.component.mjs +176 -0
- package/esm2022/forms/lib/elements/organization/organization.component.mjs +268 -0
- package/esm2022/forms/lib/elements/string/string.component.mjs +254 -0
- package/esm2022/forms/lib/form-input/form-input.component.mjs +88 -0
- package/esm2022/forms/lib/forms.module.mjs +58 -0
- package/esm2022/forms/yuuvis-client-framework-forms.mjs +5 -0
- package/esm2022/icons/index.mjs +4 -0
- package/esm2022/icons/lib/icon.service.mjs +59 -0
- package/esm2022/icons/lib/icons.mjs +31 -0
- package/esm2022/icons/lib/object-type-icon/object-type-icon.component.mjs +29 -0
- package/esm2022/icons/yuuvis-client-framework-icons.mjs +5 -0
- package/esm2022/index.mjs +2 -0
- package/esm2022/lib/yuuvis-client-framework.module.mjs +15 -0
- package/esm2022/list/index.mjs +3 -0
- package/esm2022/list/lib/list-item.directive.mjs +72 -0
- package/esm2022/list/lib/list.component.mjs +133 -0
- package/esm2022/list/yuuvis-client-framework-list.mjs +5 -0
- package/esm2022/metadata-form/index.mjs +4 -0
- package/esm2022/metadata-form/lib/metadata-default-templates/metadata-default-templates.component.mjs +31 -0
- package/esm2022/metadata-form/lib/metadata-form-element-registry.service.mjs +99 -0
- package/esm2022/metadata-form/lib/metadata-form-field/metadata-form-field.component.mjs +126 -0
- package/esm2022/metadata-form/lib/object-metadata-element-template.directive.mjs +52 -0
- package/esm2022/metadata-form/yuuvis-client-framework-metadata-form.mjs +5 -0
- package/esm2022/object-details/index.mjs +7 -0
- package/esm2022/object-details/lib/object-audit/object-audit.component.mjs +195 -0
- package/esm2022/object-details/lib/object-details-shell/object-details-shell.component.mjs +127 -0
- package/esm2022/object-details/lib/object-details.component.mjs +61 -0
- package/esm2022/object-details/lib/object-metadata/form-section-group.pipe.mjs +17 -0
- package/esm2022/object-details/lib/object-metadata/object-metadata.component.mjs +201 -0
- package/esm2022/object-details/lib/object-metadata/object-metadata.interface.mjs +2 -0
- package/esm2022/object-details/yuuvis-client-framework-object-details.mjs +5 -0
- package/esm2022/object-flavor/index.mjs +6 -0
- package/esm2022/object-flavor/lib/abstract-apply-create-flavor/abstract-apply-create-flavor.component.mjs +25 -0
- package/esm2022/object-flavor/lib/abstract-apply-object-flavor/abstract-apply-object-flavor.component.mjs +21 -0
- package/esm2022/object-flavor/lib/flavor-chip/flavor-chip.component.mjs +35 -0
- package/esm2022/object-flavor/lib/object-flavor/object-flavor.component.mjs +93 -0
- package/esm2022/object-flavor/lib/object-flavor-picker/object-flavor-picker.component.mjs +43 -0
- package/esm2022/object-flavor/yuuvis-client-framework-object-flavor.mjs +5 -0
- package/esm2022/object-form/index.mjs +5 -0
- package/esm2022/object-form/lib/form-scripting.api.interface.mjs +2 -0
- package/esm2022/object-form/lib/form-scripting.service.mjs +160 -0
- package/esm2022/object-form/lib/object-form-element/object-form-element.component.mjs +87 -0
- package/esm2022/object-form/lib/object-form-extension.interface.mjs +36 -0
- package/esm2022/object-form/lib/object-form-group/object-form-group.component.mjs +85 -0
- package/esm2022/object-form/lib/object-form-script/form-scripting-element-extension/form-scripting-element-extension.component.mjs +23 -0
- package/esm2022/object-form/lib/object-form-script/object-form-script.service.mjs +115 -0
- package/esm2022/object-form/lib/object-form-script/object-form-scripting-scope.mjs +251 -0
- package/esm2022/object-form/lib/object-form-translate.service.mjs +73 -0
- package/esm2022/object-form/lib/object-form.component.mjs +627 -0
- package/esm2022/object-form/lib/object-form.interface.mjs +9 -0
- package/esm2022/object-form/lib/object-form.model.mjs +20 -0
- package/esm2022/object-form/lib/object-form.service.mjs +127 -0
- package/esm2022/object-form/lib/object-form.utils.mjs +55 -0
- package/esm2022/object-form/lib/object-form.validation.mjs +48 -0
- package/esm2022/object-form/yuuvis-client-framework-object-form.mjs +5 -0
- package/esm2022/object-preview/index.mjs +3 -0
- package/esm2022/object-preview/lib/components/index.mjs +3 -0
- package/esm2022/object-preview/lib/components/object-email-preview/object-email-preview.component.mjs +45 -0
- package/esm2022/object-preview/lib/components/object-preview/object-preview.component.mjs +78 -0
- package/esm2022/object-preview/lib/services/object-preview.service.mjs +92 -0
- package/esm2022/object-preview/yuuvis-client-framework-object-preview.mjs +5 -0
- package/esm2022/object-summary/index.mjs +5 -0
- package/esm2022/object-summary/lib/multi-object-summary/multi-object-summary.component.mjs +33 -0
- package/esm2022/object-summary/lib/object-summary/object-summary.component.mjs +273 -0
- package/esm2022/object-summary/lib/object-summary-data/object-summary-data.component.mjs +80 -0
- package/esm2022/object-summary/lib/object-summary.module.mjs +15 -0
- package/esm2022/object-summary/yuuvis-client-framework-object-summary.mjs +5 -0
- package/esm2022/pagination/index.mjs +3 -0
- package/esm2022/pagination/lib/pagination.component.mjs +48 -0
- package/esm2022/pagination/lib/pagination.interface.mjs +2 -0
- package/esm2022/pagination/yuuvis-client-framework-pagination.mjs +5 -0
- package/esm2022/panel/index.mjs +2 -0
- package/esm2022/panel/lib/panel.component.mjs +20 -0
- package/esm2022/panel/yuuvis-client-framework-panel.mjs +5 -0
- package/esm2022/renderer/index.mjs +11 -0
- package/esm2022/renderer/lib/property-renderer/abstract.renderer.mjs +29 -0
- package/esm2022/renderer/lib/property-renderer/datetime.renderer.mjs +13 -0
- package/esm2022/renderer/lib/property-renderer/decimal.renderer.component.mjs +12 -0
- package/esm2022/renderer/lib/property-renderer/filesize.renderer.component.mjs +28 -0
- package/esm2022/renderer/lib/property-renderer/icon.renderer.component.mjs +23 -0
- package/esm2022/renderer/lib/property-renderer/integer.renderer.component.mjs +12 -0
- package/esm2022/renderer/lib/property-renderer/organization.renderer.mjs +19 -0
- package/esm2022/renderer/lib/property-renderer/string.renderer.component.mjs +12 -0
- package/esm2022/renderer/lib/property-renderer/unknown.renderer.mjs +12 -0
- package/esm2022/renderer/lib/renderer.directive.mjs +51 -0
- package/esm2022/renderer/lib/services/renderer/renderer.interface.mjs +2 -0
- package/esm2022/renderer/lib/services/renderer/renderer.service.mjs +84 -0
- package/esm2022/renderer/yuuvis-client-framework-renderer.mjs +5 -0
- package/esm2022/sequence-list/index.mjs +6 -0
- package/esm2022/sequence-list/lib/due-date-picker/due-date-picker.component.mjs +99 -0
- package/esm2022/sequence-list/lib/sequence-list-template-manage/sequence-list-template-manage.component.mjs +183 -0
- package/esm2022/sequence-list/lib/sequence-list-templates/sequence-list-templates.component.mjs +114 -0
- package/esm2022/sequence-list/lib/sequence-list.component.mjs +146 -0
- package/esm2022/sequence-list/lib/sequence-list.interface.mjs +2 -0
- package/esm2022/sequence-list/yuuvis-client-framework-sequence-list.mjs +5 -0
- package/esm2022/simple-search/index.mjs +3 -0
- package/esm2022/simple-search/lib/simple-search/simple-search.component.mjs +111 -0
- package/esm2022/simple-search/lib/simple-search/simple-search.interface.mjs +2 -0
- package/esm2022/simple-search/yuuvis-client-framework-simple-search.mjs +5 -0
- package/esm2022/tile-list/index.mjs +11 -0
- package/esm2022/tile-list/lib/tile/tile.component.mjs +53 -0
- package/esm2022/tile-list/lib/tile-config/action-select/action-select.component.mjs +22 -0
- package/esm2022/tile-list/lib/tile-config/icon-select/icon-select.component.mjs +33 -0
- package/esm2022/tile-list/lib/tile-config/property-select/property-select.component.mjs +91 -0
- package/esm2022/tile-list/lib/tile-config/tile-config-tile/tile-config-tile.component.mjs +66 -0
- package/esm2022/tile-list/lib/tile-config/tile-config-trigger/tile-config-trigger.component.mjs +46 -0
- package/esm2022/tile-list/lib/tile-config/tile-config.component.mjs +156 -0
- package/esm2022/tile-list/lib/tile-extension/directive/tile-extension.directive.mjs +37 -0
- package/esm2022/tile-list/lib/tile-extension/extensions/email.extension.mjs +42 -0
- package/esm2022/tile-list/lib/tile-extension/tile-extension.service.mjs +35 -0
- package/esm2022/tile-list/lib/tile-list/tile-list.component.mjs +510 -0
- package/esm2022/tile-list/lib/tile-list/tile-list.interface.mjs +2 -0
- package/esm2022/tile-list/yuuvis-client-framework-tile-list.mjs +5 -0
- package/esm2022/token-search/index.mjs +3 -0
- package/esm2022/token-search/token-search.component.mjs +78 -0
- package/esm2022/token-search/token-search.interface.mjs +2 -0
- package/esm2022/token-search/yuuvis-client-framework-token-search.mjs +5 -0
- package/esm2022/tree/index.mjs +3 -0
- package/esm2022/tree/lib/tree-node/tree-node.component.mjs +65 -0
- package/esm2022/tree/lib/tree.component.mjs +148 -0
- package/esm2022/tree/lib/tree.interface.mjs +2 -0
- package/esm2022/tree/lib/tree.service.mjs +95 -0
- package/esm2022/tree/yuuvis-client-framework-tree.mjs +5 -0
- package/esm2022/upload-progress/index.mjs +2 -0
- package/esm2022/upload-progress/lib/upload-progress/upload-progress-overlay/upload-progress-overlay.component.mjs +49 -0
- package/esm2022/upload-progress/lib/upload-progress/upload-progress.component.mjs +37 -0
- package/esm2022/upload-progress/yuuvis-client-framework-upload-progress.mjs +5 -0
- package/esm2022/user-avatar/index.mjs +3 -0
- package/esm2022/user-avatar/lib/user-avatar.component.mjs +69 -0
- package/esm2022/user-avatar/lib/user-avatar.module.mjs +24 -0
- package/esm2022/user-avatar/yuuvis-client-framework-user-avatar.mjs +5 -0
- package/esm2022/yuuvis-client-framework.mjs +5 -0
- package/fesm2022/yuuvis-client-framework-actions.mjs +333 -0
- package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-app-bar.mjs +96 -0
- package/fesm2022/yuuvis-client-framework-app-bar.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-clipboard.mjs +55 -0
- package/fesm2022/yuuvis-client-framework-clipboard.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-common.mjs +1020 -0
- package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-forms.mjs +1355 -0
- package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-icons.mjs +123 -0
- package/fesm2022/yuuvis-client-framework-icons.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-list.mjs +209 -0
- package/fesm2022/yuuvis-client-framework-list.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs +302 -0
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-object-details.mjs +583 -0
- package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs +200 -0
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-object-form.mjs +1664 -0
- package/fesm2022/yuuvis-client-framework-object-form.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-object-preview.mjs +213 -0
- package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-object-summary.mjs +397 -0
- package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-pagination.mjs +55 -0
- package/fesm2022/yuuvis-client-framework-pagination.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-panel.mjs +27 -0
- package/fesm2022/yuuvis-client-framework-panel.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-renderer.mjs +262 -0
- package/fesm2022/yuuvis-client-framework-renderer.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-sequence-list.mjs +519 -0
- package/fesm2022/yuuvis-client-framework-sequence-list.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-simple-search.mjs +118 -0
- package/fesm2022/yuuvis-client-framework-simple-search.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-tile-list.mjs +1036 -0
- package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-token-search.mjs +85 -0
- package/fesm2022/yuuvis-client-framework-token-search.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-tree.mjs +307 -0
- package/fesm2022/yuuvis-client-framework-tree.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-upload-progress.mjs +84 -0
- package/fesm2022/yuuvis-client-framework-upload-progress.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-user-avatar.mjs +96 -0
- package/fesm2022/yuuvis-client-framework-user-avatar.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework.mjs +22 -0
- package/fesm2022/yuuvis-client-framework.mjs.map +1 -0
- package/forms/README.md +3 -0
- package/forms/index.d.ts +9 -0
- package/forms/lib/elements/catalog/catalog.component.d.ts +68 -0
- package/forms/lib/elements/datetime/datetime.component.d.ts +32 -0
- package/forms/lib/elements/datetime-range/datetime-range.component.d.ts +51 -0
- package/forms/lib/elements/number/number.component.d.ts +77 -0
- package/forms/lib/elements/number-range/number-range.component.d.ts +66 -0
- package/forms/lib/elements/organization/organization.component.d.ts +93 -0
- package/forms/lib/elements/string/string.component.d.ts +104 -0
- package/forms/lib/form-input/form-input.component.d.ts +48 -0
- package/forms/lib/forms.module.d.ts +16 -0
- package/icons/README.md +5 -0
- package/icons/index.d.ts +3 -0
- package/icons/lib/icon.service.d.ts +38 -0
- package/icons/lib/icons.d.ts +1 -0
- package/icons/lib/object-type-icon/object-type-icon.component.d.ts +11 -0
- package/index.d.ts +1 -0
- package/lib/yuuvis-client-framework.module.d.ts +7 -0
- package/list/README.md +3 -0
- package/list/index.d.ts +2 -0
- package/list/lib/list-item.directive.d.ts +15 -0
- package/list/lib/list.component.d.ts +36 -0
- package/metadata-form/README.md +21 -0
- package/metadata-form/index.d.ts +3 -0
- package/metadata-form/lib/metadata-default-templates/metadata-default-templates.component.d.ts +5 -0
- package/metadata-form/lib/metadata-form-element-registry.service.d.ts +47 -0
- package/metadata-form/lib/metadata-form-field/metadata-form-field.component.d.ts +31 -0
- package/metadata-form/lib/object-metadata-element-template.directive.d.ts +27 -0
- package/object-details/README.md +28 -0
- package/object-details/index.d.ts +6 -0
- package/object-details/lib/object-audit/object-audit.component.d.ts +59 -0
- package/object-details/lib/object-details-shell/object-details-shell.component.d.ts +51 -0
- package/object-details/lib/object-details.component.d.ts +36 -0
- package/object-details/lib/object-metadata/form-section-group.pipe.d.ts +8 -0
- package/object-details/lib/object-metadata/object-metadata.component.d.ts +48 -0
- package/object-details/lib/object-metadata/object-metadata.interface.d.ts +26 -0
- package/object-flavor/README.md +3 -0
- package/object-flavor/index.d.ts +5 -0
- package/object-flavor/lib/abstract-apply-create-flavor/abstract-apply-create-flavor.component.d.ts +12 -0
- package/object-flavor/lib/abstract-apply-object-flavor/abstract-apply-object-flavor.component.d.ts +12 -0
- package/object-flavor/lib/flavor-chip/flavor-chip.component.d.ts +17 -0
- package/object-flavor/lib/object-flavor/object-flavor.component.d.ts +26 -0
- package/object-flavor/lib/object-flavor-picker/object-flavor-picker.component.d.ts +10 -0
- package/object-form/README.md +3 -0
- package/object-form/index.d.ts +4 -0
- package/object-form/lib/form-scripting.api.interface.d.ts +131 -0
- package/object-form/lib/form-scripting.service.d.ts +30 -0
- package/object-form/lib/object-form-element/object-form-element.component.d.ts +22 -0
- package/object-form/lib/object-form-extension.interface.d.ts +22 -0
- package/object-form/lib/object-form-group/object-form-group.component.d.ts +22 -0
- package/object-form/lib/object-form-script/form-scripting-element-extension/form-scripting-element-extension.component.d.ts +10 -0
- package/object-form/lib/object-form-script/object-form-script.service.d.ts +45 -0
- package/object-form/lib/object-form-script/object-form-scripting-scope.d.ts +50 -0
- package/object-form/lib/object-form-translate.service.d.ts +15 -0
- package/object-form/lib/object-form.component.d.ts +60 -0
- package/object-form/lib/object-form.interface.d.ts +113 -0
- package/object-form/lib/object-form.model.d.ts +18 -0
- package/object-form/lib/object-form.service.d.ts +39 -0
- package/object-form/lib/object-form.utils.d.ts +20 -0
- package/object-form/lib/object-form.validation.d.ts +21 -0
- package/object-preview/README.md +3 -0
- package/object-preview/index.d.ts +2 -0
- package/object-preview/lib/components/index.d.ts +2 -0
- package/object-preview/lib/components/object-email-preview/object-email-preview.component.d.ts +16 -0
- package/object-preview/lib/components/object-preview/object-preview.component.d.ts +13 -0
- package/object-preview/lib/services/object-preview.service.d.ts +37 -0
- package/object-summary/README.md +3 -0
- package/object-summary/index.d.ts +4 -0
- package/object-summary/lib/multi-object-summary/multi-object-summary.component.d.ts +7 -0
- package/object-summary/lib/object-summary/object-summary.component.d.ts +73 -0
- package/object-summary/lib/object-summary-data/object-summary-data.component.d.ts +11 -0
- package/object-summary/lib/object-summary.module.d.ts +7 -0
- package/package.json +173 -0
- package/pagination/README.md +3 -0
- package/pagination/index.d.ts +2 -0
- package/pagination/lib/pagination.component.d.ts +18 -0
- package/pagination/lib/pagination.interface.d.ts +5 -0
- package/panel/README.md +3 -0
- package/panel/index.d.ts +1 -0
- package/panel/lib/panel.component.d.ts +12 -0
- package/renderer/README.md +5 -0
- package/renderer/index.d.ts +10 -0
- package/renderer/lib/property-renderer/abstract.renderer.d.ts +14 -0
- package/renderer/lib/property-renderer/datetime.renderer.d.ts +6 -0
- package/renderer/lib/property-renderer/decimal.renderer.component.d.ts +6 -0
- package/renderer/lib/property-renderer/filesize.renderer.component.d.ts +7 -0
- package/renderer/lib/property-renderer/icon.renderer.component.d.ts +6 -0
- package/renderer/lib/property-renderer/integer.renderer.component.d.ts +6 -0
- package/renderer/lib/property-renderer/organization.renderer.d.ts +7 -0
- package/renderer/lib/property-renderer/string.renderer.component.d.ts +6 -0
- package/renderer/lib/property-renderer/unknown.renderer.d.ts +6 -0
- package/renderer/lib/renderer.directive.d.ts +17 -0
- package/renderer/lib/services/renderer/renderer.interface.d.ts +8 -0
- package/renderer/lib/services/renderer/renderer.service.d.ts +35 -0
- package/sequence-list/README.md +3 -0
- package/sequence-list/index.d.ts +5 -0
- package/sequence-list/lib/due-date-picker/due-date-picker.component.d.ts +28 -0
- package/sequence-list/lib/sequence-list-template-manage/sequence-list-template-manage.component.d.ts +52 -0
- package/sequence-list/lib/sequence-list-templates/sequence-list-templates.component.d.ts +36 -0
- package/sequence-list/lib/sequence-list.component.d.ts +43 -0
- package/sequence-list/lib/sequence-list.interface.d.ts +16 -0
- package/simple-search/README.md +3 -0
- package/simple-search/index.d.ts +2 -0
- package/simple-search/lib/simple-search/simple-search.component.d.ts +55 -0
- package/simple-search/lib/simple-search/simple-search.interface.d.ts +4 -0
- package/styles/client-framework.scss +27 -0
- package/tile-list/README.md +3 -0
- package/tile-list/index.d.ts +10 -0
- package/tile-list/lib/tile/tile.component.d.ts +22 -0
- package/tile-list/lib/tile-config/action-select/action-select.component.d.ts +13 -0
- package/tile-list/lib/tile-config/icon-select/icon-select.component.d.ts +11 -0
- package/tile-list/lib/tile-config/property-select/property-select.component.d.ts +25 -0
- package/tile-list/lib/tile-config/tile-config-tile/tile-config-tile.component.d.ts +20 -0
- package/tile-list/lib/tile-config/tile-config-trigger/tile-config-trigger.component.d.ts +17 -0
- package/tile-list/lib/tile-config/tile-config.component.d.ts +47 -0
- package/tile-list/lib/tile-extension/directive/tile-extension.directive.d.ts +11 -0
- package/tile-list/lib/tile-extension/extensions/email.extension.d.ts +10 -0
- package/tile-list/lib/tile-extension/tile-extension.service.d.ts +16 -0
- package/tile-list/lib/tile-list/tile-list.component.d.ts +116 -0
- package/tile-list/lib/tile-list/tile-list.interface.d.ts +18 -0
- package/token-search/README.md +3 -0
- package/token-search/index.d.ts +2 -0
- package/token-search/token-search.component.d.ts +22 -0
- package/token-search/token-search.interface.d.ts +4 -0
- package/tree/README.md +3 -0
- package/tree/index.d.ts +2 -0
- package/tree/lib/tree-node/tree-node.component.d.ts +21 -0
- package/tree/lib/tree.component.d.ts +53 -0
- package/tree/lib/tree.interface.d.ts +11 -0
- package/tree/lib/tree.service.d.ts +35 -0
- package/upload-progress/README.md +3 -0
- package/upload-progress/index.d.ts +1 -0
- package/upload-progress/lib/upload-progress/upload-progress-overlay/upload-progress-overlay.component.d.ts +17 -0
- package/upload-progress/lib/upload-progress/upload-progress.component.d.ts +16 -0
- package/user-avatar/README.md +3 -0
- package/user-avatar/index.d.ts +2 -0
- package/user-avatar/lib/user-avatar.component.d.ts +44 -0
- package/user-avatar/lib/user-avatar.module.d.ts +8 -0
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, viewChild, input, signal, forwardRef, Component, ViewChild, output } from '@angular/core';
|
|
3
|
+
import * as i1$1 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import * as i1 from '@yuuvis/components/datepicker';
|
|
6
|
+
import { YvcDatepickerModule } from '@yuuvis/components/datepicker';
|
|
7
|
+
import * as i2 from '@yuuvis/components/icon';
|
|
8
|
+
import { ICONS, YvcIconModule } from '@yuuvis/components/icon';
|
|
9
|
+
import { YvcOverlayService, YvcOverlayModule } from '@yuuvis/components/overlay';
|
|
10
|
+
import * as i2$2 from '@angular/forms';
|
|
11
|
+
import { NG_VALUE_ACCESSOR, NonNullableFormBuilder, Validators, NG_VALIDATORS, ReactiveFormsModule, FormBuilder, FormsModule } from '@angular/forms';
|
|
12
|
+
import * as i2$1 from '@yuuvis/client-core';
|
|
13
|
+
import { TranslateService, LocaleDatePipe, TranslateModule, BackendService, PendingChangesService, Utils, Sort } from '@yuuvis/client-core';
|
|
14
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
15
|
+
import { OrganizationComponent, FormInputComponent, StringComponent, YuvFormsModule } from '@yuuvis/client-framework/forms';
|
|
16
|
+
import { YUV_ICONS } from '@yuuvis/client-framework/icons';
|
|
17
|
+
import * as i4 from '@yuuvis/components/common';
|
|
18
|
+
import { YvcCommonModule } from '@yuuvis/components/common';
|
|
19
|
+
|
|
20
|
+
class DueDatePickerComponent {
|
|
21
|
+
constructor() {
|
|
22
|
+
this.#overlay = inject(YvcOverlayService);
|
|
23
|
+
this.translate = inject(TranslateService);
|
|
24
|
+
this.tplCalendar = viewChild.required('tplCalendar');
|
|
25
|
+
this.disabled = input(false);
|
|
26
|
+
this.calendarValue = null;
|
|
27
|
+
this.icons = {
|
|
28
|
+
calendar: ICONS.calendar,
|
|
29
|
+
clear: ICONS.clear
|
|
30
|
+
};
|
|
31
|
+
this.#locale = this.translate.currentLang;
|
|
32
|
+
this.options = signal({
|
|
33
|
+
withTime: true,
|
|
34
|
+
// onlyFutureDates: true
|
|
35
|
+
});
|
|
36
|
+
this.propagateChange = (_) => { };
|
|
37
|
+
}
|
|
38
|
+
#overlay;
|
|
39
|
+
#oRef;
|
|
40
|
+
#labels;
|
|
41
|
+
#locale;
|
|
42
|
+
#setOptions() {
|
|
43
|
+
this.options.update((v) => {
|
|
44
|
+
return {
|
|
45
|
+
...v,
|
|
46
|
+
labels: {
|
|
47
|
+
calendarApply: this.translate.instant('yuv.form.element.datetime.calendar.select'),
|
|
48
|
+
calendarCancel: this.translate.instant('yuv.form.element.datetime.calendar.cancel'),
|
|
49
|
+
shortcut: { today: this.translate.instant('yuv.form.element.datetime.calendar.today') }
|
|
50
|
+
},
|
|
51
|
+
locale: this.translate.currentLang
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
openCalendar() {
|
|
56
|
+
if (!this.calendarValue)
|
|
57
|
+
this.calendarValue = new Date();
|
|
58
|
+
this.#oRef = this.#overlay.open(this.tplCalendar(), null, {
|
|
59
|
+
focusHandled: true
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
closeCalendar() {
|
|
63
|
+
this.#oRef?.close();
|
|
64
|
+
}
|
|
65
|
+
onCalendarDateApply(date) {
|
|
66
|
+
this.calendarValue = date;
|
|
67
|
+
this.value = this.calendarValue;
|
|
68
|
+
this.propagateChange(this.value);
|
|
69
|
+
this.closeCalendar();
|
|
70
|
+
}
|
|
71
|
+
clear() {
|
|
72
|
+
this.value = undefined;
|
|
73
|
+
this.propagateChange(this.value);
|
|
74
|
+
}
|
|
75
|
+
registerOnTouched() { }
|
|
76
|
+
writeValue(value) {
|
|
77
|
+
this.value = value;
|
|
78
|
+
this.calendarValue = value || null;
|
|
79
|
+
}
|
|
80
|
+
registerOnChange(fn) {
|
|
81
|
+
this.propagateChange = fn;
|
|
82
|
+
}
|
|
83
|
+
ngOnInit() {
|
|
84
|
+
this.#setOptions();
|
|
85
|
+
this.translate.onLangChange.subscribe((e) => {
|
|
86
|
+
this.#setOptions();
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DueDatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
90
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DueDatePickerComponent, isStandalone: true, selector: "yuv-due-date-picker", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
91
|
+
{
|
|
92
|
+
provide: NG_VALUE_ACCESSOR,
|
|
93
|
+
useExisting: forwardRef(() => DueDatePickerComponent),
|
|
94
|
+
multi: true
|
|
95
|
+
}
|
|
96
|
+
], viewQueries: [{ propertyName: "tplCalendar", first: true, predicate: ["tplCalendar"], descendants: true, isSignal: true }], ngImport: i0, template: "<button type=\"button\" class=\"calender secondary\" [disabled]=\"disabled()\" (click)=\"openCalendar()\">\n <yvc-icon [svg]=\"icons.calendar\"></yvc-icon>\n @if (value) {\n <span>{{ value | localeDate }}</span>\n }\n</button>\n@if (value) {\n <button type=\"button\" class=\"clear\" (click)=\"this.clear()\"><yvc-icon [svg]=\"icons.clear\"></yvc-icon></button>\n}\n<ng-template #tplCalendar>\n <yvc-datepicker-calendar\n [date]=\"calendarValue\"\n [options]=\"options()\"\n (cancel)=\"closeCalendar()\"\n (apply)=\"onCalendarDateApply($event)\"\n ></yvc-datepicker-calendar>\n</ng-template>\n", styles: [":host{display:flex;align-items:center;gap:calc(var(--app-pane-padding) / 4)}:host button{padding:0}:host button:not(.clear){padding:calc(var(--app-pane-padding) / 8)}:host button:not(.clear) span{padding:0 calc(var(--app-pane-padding) / 4)}:host button:not(.clear) yvc-icon{color:var(--text-color-caption)}:host button yvc-icon{--icon-size: 16px;color:var(--text-color-hint)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: YvcDatepickerModule }, { kind: "component", type: i1.DatepickerCalendarComponent, selector: "yvc-datepicker-calendar", inputs: ["date", "options"], outputs: ["apply", "cancel"] }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i2.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }] }); }
|
|
97
|
+
}
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DueDatePickerComponent, decorators: [{
|
|
99
|
+
type: Component,
|
|
100
|
+
args: [{ selector: 'yuv-due-date-picker', standalone: true, imports: [CommonModule, YvcDatepickerModule, YvcIconModule, LocaleDatePipe], providers: [
|
|
101
|
+
{
|
|
102
|
+
provide: NG_VALUE_ACCESSOR,
|
|
103
|
+
useExisting: forwardRef(() => DueDatePickerComponent),
|
|
104
|
+
multi: true
|
|
105
|
+
}
|
|
106
|
+
], template: "<button type=\"button\" class=\"calender secondary\" [disabled]=\"disabled()\" (click)=\"openCalendar()\">\n <yvc-icon [svg]=\"icons.calendar\"></yvc-icon>\n @if (value) {\n <span>{{ value | localeDate }}</span>\n }\n</button>\n@if (value) {\n <button type=\"button\" class=\"clear\" (click)=\"this.clear()\"><yvc-icon [svg]=\"icons.clear\"></yvc-icon></button>\n}\n<ng-template #tplCalendar>\n <yvc-datepicker-calendar\n [date]=\"calendarValue\"\n [options]=\"options()\"\n (cancel)=\"closeCalendar()\"\n (apply)=\"onCalendarDateApply($event)\"\n ></yvc-datepicker-calendar>\n</ng-template>\n", styles: [":host{display:flex;align-items:center;gap:calc(var(--app-pane-padding) / 4)}:host button{padding:0}:host button:not(.clear){padding:calc(var(--app-pane-padding) / 8)}:host button:not(.clear) span{padding:0 calc(var(--app-pane-padding) / 4)}:host button:not(.clear) yvc-icon{color:var(--text-color-caption)}:host button yvc-icon{--icon-size: 16px;color:var(--text-color-hint)}\n"] }]
|
|
107
|
+
}] });
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Task sequence list.
|
|
111
|
+
*/
|
|
112
|
+
class SequenceListComponent {
|
|
113
|
+
#fb;
|
|
114
|
+
get formItemArray() {
|
|
115
|
+
return this.sequenceForm.controls.items;
|
|
116
|
+
}
|
|
117
|
+
constructor() {
|
|
118
|
+
this.#fb = inject(NonNullableFormBuilder);
|
|
119
|
+
/**
|
|
120
|
+
* Maximum number of sequence items (defaults to 100).
|
|
121
|
+
*/
|
|
122
|
+
this.maxLength = input(100);
|
|
123
|
+
this.maxLengthExceeded = false;
|
|
124
|
+
this.icons = {
|
|
125
|
+
delete: ICONS.clear,
|
|
126
|
+
add: YUV_ICONS.add
|
|
127
|
+
};
|
|
128
|
+
// dynamic form for sequence items
|
|
129
|
+
this.sequenceForm = this.#fb.group({
|
|
130
|
+
items: this.#fb.array([this.#generateSequenceItem()])
|
|
131
|
+
});
|
|
132
|
+
this.entries = [];
|
|
133
|
+
this.propagateChange = (_) => { };
|
|
134
|
+
this.sequenceForm.valueChanges.pipe(takeUntilDestroyed()).subscribe(() => {
|
|
135
|
+
this.#propagate();
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
#generateSequenceItem(sequenceItem) {
|
|
139
|
+
return this.#fb.group({
|
|
140
|
+
title: [sequenceItem?.title || '', Validators.required],
|
|
141
|
+
nextAssignee: [sequenceItem?.nextAssignee.id || '', Validators.required],
|
|
142
|
+
expiryDatetime: [sequenceItem?.expiryDatetime || undefined]
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
addItem() {
|
|
146
|
+
this.sequenceForm.controls.items.push(this.#generateSequenceItem());
|
|
147
|
+
this.#updateState();
|
|
148
|
+
}
|
|
149
|
+
addItemAt(idx) {
|
|
150
|
+
this.sequenceForm.controls.items.insert(idx, this.#generateSequenceItem());
|
|
151
|
+
this.#updateState();
|
|
152
|
+
}
|
|
153
|
+
removeItem(idx) {
|
|
154
|
+
this.sequenceForm.controls.items.removeAt(idx);
|
|
155
|
+
this.#updateState();
|
|
156
|
+
}
|
|
157
|
+
#updateState() {
|
|
158
|
+
const ml = this.maxLength();
|
|
159
|
+
this.maxLengthExceeded = ml !== undefined && this.formItemArray.length >= ml;
|
|
160
|
+
}
|
|
161
|
+
registerOnTouched() { }
|
|
162
|
+
#propagate() {
|
|
163
|
+
const res = [];
|
|
164
|
+
(this.sequenceForm.value.items || []).forEach((item) => {
|
|
165
|
+
const i = {
|
|
166
|
+
title: item.title,
|
|
167
|
+
nextAssignee: item.nextAssignee
|
|
168
|
+
};
|
|
169
|
+
if (item.expiryDatetime) {
|
|
170
|
+
i.expiryDatetime = item.expiryDatetime;
|
|
171
|
+
}
|
|
172
|
+
res.push(i);
|
|
173
|
+
});
|
|
174
|
+
this.propagateChange(res);
|
|
175
|
+
}
|
|
176
|
+
writeValue(value) {
|
|
177
|
+
this.entries = value || [];
|
|
178
|
+
this.entries.forEach((entry) => {
|
|
179
|
+
this.formItemArray.push(this.#generateSequenceItem(entry));
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
registerOnChange(fn) {
|
|
183
|
+
this.propagateChange = fn;
|
|
184
|
+
}
|
|
185
|
+
validate() {
|
|
186
|
+
const ml = this.maxLength();
|
|
187
|
+
const mlExceeded = ml !== undefined && this.formItemArray.length > ml;
|
|
188
|
+
const valid = this.sequenceForm.valid && !mlExceeded;
|
|
189
|
+
return !valid
|
|
190
|
+
? {
|
|
191
|
+
sequencelist: {
|
|
192
|
+
invalid: this.sequenceForm.invalid,
|
|
193
|
+
maxLengthExceeded: mlExceeded
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
: null;
|
|
197
|
+
}
|
|
198
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SequenceListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
199
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SequenceListComponent, isStandalone: true, selector: "yuv-sequence-list", inputs: { maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "tabindex": "0" } }, providers: [
|
|
200
|
+
{
|
|
201
|
+
provide: NG_VALUE_ACCESSOR,
|
|
202
|
+
useExisting: forwardRef(() => SequenceListComponent),
|
|
203
|
+
multi: true
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
provide: NG_VALIDATORS,
|
|
207
|
+
useExisting: forwardRef(() => SequenceListComponent),
|
|
208
|
+
multi: true
|
|
209
|
+
}
|
|
210
|
+
], viewQueries: [{ propertyName: "orgComponent", first: true, predicate: OrganizationComponent, descendants: true }], ngImport: i0, template: "<form [formGroup]=\"sequenceForm\">\n <section formArrayName=\"items\">\n @for (item of sequenceForm.controls.items.controls; track itemIndex; let itemIndex = $index) {\n <div class=\"item\" [formGroup]=\"item\">\n <button class=\"add before\" type=\"button\" [disabled]=\"maxLengthExceeded\" (click)=\"addItemAt($index)\"><yvc-icon [svg]=\"icons.add\"></yvc-icon></button>\n <span class=\"index\" [attr.data-index]=\"itemIndex + 1\"></span>\n\n <div class=\"item-form\">\n <button class=\"remove\" type=\"button\" (click)=\"removeItem($index)\"\n [disabled]=\"sequenceForm.controls.items.controls.length === 1\"><yvc-icon [svg]=\"icons.delete\"></yvc-icon></button>\n <input [placeholder]=\"'yuv.sequence-list.form.task' | translate\" [maxLength]=\"128\" formControlName=\"title\" />\n <yuv-organization\n [title]=\"'yuv.sequence-list.form.nextAssignee' | translate\"\n [withMetadata]=\"true\"\n formControlName=\"nextAssignee\"> </yuv-organization>\n \n <!-- <yuv-due-date-picker \n [title]=\"'yuv.sequence-list.form.expiryDatetime' | translate\"\n formControlName=\"expiryDatetime\"></yuv-due-date-picker> -->\n </div>\n @if ($last) {\n <button class=\"add after\" type=\"button\" \n [disabled]=\"maxLengthExceeded\"\n (click)=\"addItem()\"><yvc-icon [svg]=\"icons.add\"></yvc-icon></button>\n }\n </div>\n }\n </section>\n</form>\n", styles: [":host{--yvc-form-element-border-color: var(--form-element-border-color, var(--text-color-hint));--yvc-form-element-focus-border-color: var(--form-element-focus-border-color, var(--color-accent));--yvc-form-element-focus-outline-color: var(--form-element-focus-outline-color, rgba(var(--color-accent-rgb), .3));--yvc-form-element-focus-outline-with: var(--form-element-focus-outline-with, 2px);--yvc-form-element-disabled-background-color: var(--form-element-disabled-background-color, rgba(from var(--text-color-body) r g b / .1));--yvc-form-element-disabled-opacity: var(--form-element-disabled-opacity, .8);--_sequence-list-item-background: var(--sequence-list-item-background, var(--panel-background));--_sequence-list-item-border-color: var(--sequence-list-item-border-color, var(--panel-divider-color));--_sequence-list-item-border-radius: var(--sequence-list-item-border-radius, calc(var(--app-pane-padding) / 2));--_sequence-list-line-color: var(--sequence-list-line-color, var(--text-color-hint));--_sequence-list-line-width: var(--sequence-list-line-width, 2px);--_sequence-list-line-item-background: var(--sequence-list-line-item-background, var(--panel-background-lightgrey));--_sequence-list-line-item-border-radius: var(--sequence-list-line-item-border-radius, .25em)}:host form section{margin-inline-end:4px}:host form section button.add{--icon-size: 18px;border-radius:var(--_sequence-list-line-item-border-radius);padding:0;display:flex;align-items:center;justify-content:center;background-color:var(--_sequence-list-line-item-background);border:var(--_sequence-list-line-width) solid var(--_sequence-list-line-color)}:host form section button.add:focus{outline:2px solid rgb(from var(--color-accent) r g b/.5);outline-offset:-2px;border-color:var(--color-accent)}:host form section .item{display:grid;grid-template-columns:6ch 1fr;grid-template-rows:auto auto;column-gap:1em;grid-template-areas:\"addBefore .\" \"index form\" \"addAfter .\"}:host form section .item.ng-invalid.ng-dirty .item-form{border-color:var(--color-error);outline:3px solid rgb(from var(--color-error) r g b/.5)}:host form section .item .add.before{grid-area:addBefore;justify-self:center}:host form section .item .add.after{grid-area:addAfter;justify-self:center}:host form section .item .index{grid-area:index;display:grid;align-items:center;justify-content:center}:host form section .item .index:after{content:attr(data-index);grid-row:1;grid-column:1;background-color:var(--_sequence-list-line-item-background);font-size:var(--font-hint);color:var(--text-color-caption);font-weight:700;border:var(--_sequence-list-line-width) solid var(--_sequence-list-line-color);border-radius:var(--_sequence-list-line-item-border-radius);line-height:1em;padding:1px .25em;outline:3px solid rgb(from var(--_sequence-list-line-color) r g b/.1)}:host form section .item .index:before{content:\"\";grid-row:1;grid-column:1;height:100%;width:calc(50% - var(--_sequence-list-line-width) / 2);border-inline-end:var(--_sequence-list-line-width) solid var(--_sequence-list-line-color)}:host form section .item .item-form{grid-area:form;background-color:var(--_sequence-list-item-background);border:1px solid var(--_sequence-list-item-border-color);border-radius:var(--_sequence-list-item-border-radius);padding:calc(var(--app-pane-padding) / 2);display:grid;column-gap:var(--app-pane-padding);row-gap:4px;grid-template-columns:1fr auto;grid-template-rows:repeat(3,auto);grid-template-areas:\"task remove\" \"user user\" \"date date\"}:host form section .item .item-form input{border:1px solid transparent;border-radius:calc(var(--_sequence-list-item-border-radius) / 2);grid-area:task;outline-offset:0;line-height:1em;padding:calc(var(--app-pane-padding) / 4);background-color:transparent;color:var(--text-color-body)}:host form section .item .item-form input:focus{border-color:var(--yvc-form-element-focus-border-color);outline:var(--yvc-form-element-focus-outline-with) solid var(--yvc-form-element-focus-outline-color)}:host form section .item .item-form yvc-datepicker{--form-element-border-color: transparent;grid-area:date;padding:0;flex-flow:row-reverse}:host form section .item .item-form yuv-organization{--form-element-border-color: transparent;border-radius:calc(var(--_sequence-list-item-border-radius) / 2);border:1px solid var(--form-element-border-color);grid-area:user;flex-flow:row-reverse}:host form section .item .item-form yuv-organization:focus-within{border-color:var(--yvc-form-element-focus-border-color);outline:var(--yvc-form-element-focus-outline-with) solid var(--yvc-form-element-focus-outline-color)}:host form section .item .item-form .remove{--icon-size: 18px;padding:calc(var(--app-pane-padding) / 4);grid-area:remove;padding:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }, { kind: "component", type: OrganizationComponent, selector: "yuv-organization", inputs: ["placeholder", "situation", "multiselect", "classifications", "readonly", "autofocus", "appendTo", "excludeMe", "withMetadata"], outputs: ["userSelect"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2$2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i2.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }] }); }
|
|
211
|
+
}
|
|
212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SequenceListComponent, decorators: [{
|
|
213
|
+
type: Component,
|
|
214
|
+
args: [{ selector: 'yuv-sequence-list', standalone: true, imports: [
|
|
215
|
+
CommonModule,
|
|
216
|
+
TranslateModule,
|
|
217
|
+
FormInputComponent,
|
|
218
|
+
StringComponent,
|
|
219
|
+
OrganizationComponent,
|
|
220
|
+
DueDatePickerComponent,
|
|
221
|
+
ReactiveFormsModule,
|
|
222
|
+
YvcIconModule
|
|
223
|
+
], providers: [
|
|
224
|
+
{
|
|
225
|
+
provide: NG_VALUE_ACCESSOR,
|
|
226
|
+
useExisting: forwardRef(() => SequenceListComponent),
|
|
227
|
+
multi: true
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
provide: NG_VALIDATORS,
|
|
231
|
+
useExisting: forwardRef(() => SequenceListComponent),
|
|
232
|
+
multi: true
|
|
233
|
+
}
|
|
234
|
+
], host: {
|
|
235
|
+
tabindex: '0'
|
|
236
|
+
}, template: "<form [formGroup]=\"sequenceForm\">\n <section formArrayName=\"items\">\n @for (item of sequenceForm.controls.items.controls; track itemIndex; let itemIndex = $index) {\n <div class=\"item\" [formGroup]=\"item\">\n <button class=\"add before\" type=\"button\" [disabled]=\"maxLengthExceeded\" (click)=\"addItemAt($index)\"><yvc-icon [svg]=\"icons.add\"></yvc-icon></button>\n <span class=\"index\" [attr.data-index]=\"itemIndex + 1\"></span>\n\n <div class=\"item-form\">\n <button class=\"remove\" type=\"button\" (click)=\"removeItem($index)\"\n [disabled]=\"sequenceForm.controls.items.controls.length === 1\"><yvc-icon [svg]=\"icons.delete\"></yvc-icon></button>\n <input [placeholder]=\"'yuv.sequence-list.form.task' | translate\" [maxLength]=\"128\" formControlName=\"title\" />\n <yuv-organization\n [title]=\"'yuv.sequence-list.form.nextAssignee' | translate\"\n [withMetadata]=\"true\"\n formControlName=\"nextAssignee\"> </yuv-organization>\n \n <!-- <yuv-due-date-picker \n [title]=\"'yuv.sequence-list.form.expiryDatetime' | translate\"\n formControlName=\"expiryDatetime\"></yuv-due-date-picker> -->\n </div>\n @if ($last) {\n <button class=\"add after\" type=\"button\" \n [disabled]=\"maxLengthExceeded\"\n (click)=\"addItem()\"><yvc-icon [svg]=\"icons.add\"></yvc-icon></button>\n }\n </div>\n }\n </section>\n</form>\n", styles: [":host{--yvc-form-element-border-color: var(--form-element-border-color, var(--text-color-hint));--yvc-form-element-focus-border-color: var(--form-element-focus-border-color, var(--color-accent));--yvc-form-element-focus-outline-color: var(--form-element-focus-outline-color, rgba(var(--color-accent-rgb), .3));--yvc-form-element-focus-outline-with: var(--form-element-focus-outline-with, 2px);--yvc-form-element-disabled-background-color: var(--form-element-disabled-background-color, rgba(from var(--text-color-body) r g b / .1));--yvc-form-element-disabled-opacity: var(--form-element-disabled-opacity, .8);--_sequence-list-item-background: var(--sequence-list-item-background, var(--panel-background));--_sequence-list-item-border-color: var(--sequence-list-item-border-color, var(--panel-divider-color));--_sequence-list-item-border-radius: var(--sequence-list-item-border-radius, calc(var(--app-pane-padding) / 2));--_sequence-list-line-color: var(--sequence-list-line-color, var(--text-color-hint));--_sequence-list-line-width: var(--sequence-list-line-width, 2px);--_sequence-list-line-item-background: var(--sequence-list-line-item-background, var(--panel-background-lightgrey));--_sequence-list-line-item-border-radius: var(--sequence-list-line-item-border-radius, .25em)}:host form section{margin-inline-end:4px}:host form section button.add{--icon-size: 18px;border-radius:var(--_sequence-list-line-item-border-radius);padding:0;display:flex;align-items:center;justify-content:center;background-color:var(--_sequence-list-line-item-background);border:var(--_sequence-list-line-width) solid var(--_sequence-list-line-color)}:host form section button.add:focus{outline:2px solid rgb(from var(--color-accent) r g b/.5);outline-offset:-2px;border-color:var(--color-accent)}:host form section .item{display:grid;grid-template-columns:6ch 1fr;grid-template-rows:auto auto;column-gap:1em;grid-template-areas:\"addBefore .\" \"index form\" \"addAfter .\"}:host form section .item.ng-invalid.ng-dirty .item-form{border-color:var(--color-error);outline:3px solid rgb(from var(--color-error) r g b/.5)}:host form section .item .add.before{grid-area:addBefore;justify-self:center}:host form section .item .add.after{grid-area:addAfter;justify-self:center}:host form section .item .index{grid-area:index;display:grid;align-items:center;justify-content:center}:host form section .item .index:after{content:attr(data-index);grid-row:1;grid-column:1;background-color:var(--_sequence-list-line-item-background);font-size:var(--font-hint);color:var(--text-color-caption);font-weight:700;border:var(--_sequence-list-line-width) solid var(--_sequence-list-line-color);border-radius:var(--_sequence-list-line-item-border-radius);line-height:1em;padding:1px .25em;outline:3px solid rgb(from var(--_sequence-list-line-color) r g b/.1)}:host form section .item .index:before{content:\"\";grid-row:1;grid-column:1;height:100%;width:calc(50% - var(--_sequence-list-line-width) / 2);border-inline-end:var(--_sequence-list-line-width) solid var(--_sequence-list-line-color)}:host form section .item .item-form{grid-area:form;background-color:var(--_sequence-list-item-background);border:1px solid var(--_sequence-list-item-border-color);border-radius:var(--_sequence-list-item-border-radius);padding:calc(var(--app-pane-padding) / 2);display:grid;column-gap:var(--app-pane-padding);row-gap:4px;grid-template-columns:1fr auto;grid-template-rows:repeat(3,auto);grid-template-areas:\"task remove\" \"user user\" \"date date\"}:host form section .item .item-form input{border:1px solid transparent;border-radius:calc(var(--_sequence-list-item-border-radius) / 2);grid-area:task;outline-offset:0;line-height:1em;padding:calc(var(--app-pane-padding) / 4);background-color:transparent;color:var(--text-color-body)}:host form section .item .item-form input:focus{border-color:var(--yvc-form-element-focus-border-color);outline:var(--yvc-form-element-focus-outline-with) solid var(--yvc-form-element-focus-outline-color)}:host form section .item .item-form yvc-datepicker{--form-element-border-color: transparent;grid-area:date;padding:0;flex-flow:row-reverse}:host form section .item .item-form yuv-organization{--form-element-border-color: transparent;border-radius:calc(var(--_sequence-list-item-border-radius) / 2);border:1px solid var(--form-element-border-color);grid-area:user;flex-flow:row-reverse}:host form section .item .item-form yuv-organization:focus-within{border-color:var(--yvc-form-element-focus-border-color);outline:var(--yvc-form-element-focus-outline-with) solid var(--yvc-form-element-focus-outline-color)}:host form section .item .item-form .remove{--icon-size: 18px;padding:calc(var(--app-pane-padding) / 4);grid-area:remove;padding:0}\n"] }]
|
|
237
|
+
}], ctorParameters: () => [], propDecorators: { orgComponent: [{
|
|
238
|
+
type: ViewChild,
|
|
239
|
+
args: [OrganizationComponent]
|
|
240
|
+
}] } });
|
|
241
|
+
|
|
242
|
+
class SequenceListTemplateManageComponent {
|
|
243
|
+
set selectedTemplate(s) {
|
|
244
|
+
if (!this.pendingChanges.check()) {
|
|
245
|
+
this.pendingTaskId = undefined;
|
|
246
|
+
this._selectedTemplate = s ? { ...s } : undefined;
|
|
247
|
+
if (this._selectedTemplate)
|
|
248
|
+
this.form.patchValue({
|
|
249
|
+
templateName: this._selectedTemplate.id === this.CURRENT_ENTRIES_ID ? '' : this._selectedTemplate.name,
|
|
250
|
+
sequence: [...this._selectedTemplate.sequence]
|
|
251
|
+
}, { emitEvent: false });
|
|
252
|
+
this.form.markAsPristine();
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
get selectedTemplate() {
|
|
256
|
+
return this._selectedTemplate;
|
|
257
|
+
}
|
|
258
|
+
get formErrors() {
|
|
259
|
+
const errors = this.form.get('templateName')?.errors;
|
|
260
|
+
return errors ? Object.keys(errors).map((k) => this.labels.errors[k]) : [];
|
|
261
|
+
}
|
|
262
|
+
constructor() {
|
|
263
|
+
this.backend = inject(BackendService);
|
|
264
|
+
this.overlay = inject(YvcOverlayService);
|
|
265
|
+
this.pendingChanges = inject(PendingChangesService);
|
|
266
|
+
this.fb = inject(FormBuilder);
|
|
267
|
+
this.translate = inject(TranslateService);
|
|
268
|
+
this.DEFAULT_TEMPLATE_STORAGE_SECTION = 'sequencelist';
|
|
269
|
+
this.CURRENT_ENTRIES_ID = 'current';
|
|
270
|
+
this.TEMPLATE_NAME_MAX_LENGTH = 128;
|
|
271
|
+
this.disableSubmit = false;
|
|
272
|
+
this.templates = [];
|
|
273
|
+
this.filterTerm = null;
|
|
274
|
+
this.busy = false;
|
|
275
|
+
this.form = this.fb.group({
|
|
276
|
+
templateName: ['', [Validators.required, Validators.maxLength(this.TEMPLATE_NAME_MAX_LENGTH), this.forbiddenNameValidator()]],
|
|
277
|
+
sequence: [[], Validators.required]
|
|
278
|
+
});
|
|
279
|
+
/**
|
|
280
|
+
* Name of the section to store templates in user service (usersettings)
|
|
281
|
+
*/
|
|
282
|
+
this.storageSection = input(this.DEFAULT_TEMPLATE_STORAGE_SECTION);
|
|
283
|
+
this.currentEntries = input([]);
|
|
284
|
+
// emitted once a template has been selected
|
|
285
|
+
this.templateSelect = output();
|
|
286
|
+
this.cancel = output();
|
|
287
|
+
this.labels = {
|
|
288
|
+
save: this.translate.instant('yuv.sequence-list.template.button.save'),
|
|
289
|
+
saveNew: this.translate.instant('yuv.sequence-list.template.button.saveNew'),
|
|
290
|
+
headline: this.translate.instant('yuv.sequence-list.template.headline'),
|
|
291
|
+
headlineNew: this.translate.instant('yuv.sequence-list.template.headlineNew'),
|
|
292
|
+
errors: {
|
|
293
|
+
maxlength: this.translate.instant('yuv.object-form-element.error.maxlength', { maxLength: this.TEMPLATE_NAME_MAX_LENGTH }),
|
|
294
|
+
forbiddenName: this.translate.instant('yuv.sequence-list.template.errors.forbiddenName')
|
|
295
|
+
}
|
|
296
|
+
};
|
|
297
|
+
this.form.statusChanges.pipe(takeUntilDestroyed()).subscribe((res) => {
|
|
298
|
+
if (this.form.dirty && !this.pendingChanges.hasPendingTask(this.pendingTaskId || ' ')) {
|
|
299
|
+
this.pendingTaskId = this.pendingChanges.startTask(this.translate.instant('yuv.sequence-list.template.pending-changes.alert'));
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
forbiddenNameValidator() {
|
|
304
|
+
return (control) => {
|
|
305
|
+
const forbidden = this.templates
|
|
306
|
+
.filter((t) => t.id !== this.selectedTemplate.id)
|
|
307
|
+
.map((t) => t.name)
|
|
308
|
+
.includes(control.value);
|
|
309
|
+
return forbidden ? { forbiddenName: { value: control.value } } : null;
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
selectCurrentEntries() {
|
|
313
|
+
this.selectedTemplate = {
|
|
314
|
+
id: this.CURRENT_ENTRIES_ID,
|
|
315
|
+
name: this.translate.instant('yuv.sequence-list.template.headlineNew'),
|
|
316
|
+
sequence: this.currentEntries() || []
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
applyTemplate() {
|
|
320
|
+
if (this.selectedTemplate)
|
|
321
|
+
this.templateSelect.emit(this.selectedTemplate.sequence);
|
|
322
|
+
}
|
|
323
|
+
deleteTemplate() {
|
|
324
|
+
this.overlay
|
|
325
|
+
.confirm({
|
|
326
|
+
message: this.translate.instant('yuv.sequence-list.template.remove.confirm.message', {
|
|
327
|
+
template: this.selectedTemplate.name
|
|
328
|
+
})
|
|
329
|
+
})
|
|
330
|
+
.subscribe((confirmed) => {
|
|
331
|
+
if (confirmed) {
|
|
332
|
+
this.templates = this.templates.filter((t) => t.id !== this.selectedTemplate.id);
|
|
333
|
+
this.saveTemplates();
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
submit() {
|
|
338
|
+
if (this.selectedTemplate) {
|
|
339
|
+
let selectAfterSave;
|
|
340
|
+
if (this.selectedTemplate.id === this.CURRENT_ENTRIES_ID) {
|
|
341
|
+
// save current list as new template
|
|
342
|
+
const id = Utils.uuid();
|
|
343
|
+
this.templates.push({
|
|
344
|
+
id,
|
|
345
|
+
name: this.form.value.templateName,
|
|
346
|
+
sequence: this.form.value.sequence
|
|
347
|
+
});
|
|
348
|
+
selectAfterSave = id;
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
// update existing template
|
|
352
|
+
const i = this.templates.findIndex((e) => e.id === this.selectedTemplate.id);
|
|
353
|
+
if (i !== -1) {
|
|
354
|
+
this.templates[i] = {
|
|
355
|
+
id: this.selectedTemplate.id,
|
|
356
|
+
name: this.form.value.templateName,
|
|
357
|
+
sequence: this.form.value.sequence
|
|
358
|
+
};
|
|
359
|
+
selectAfterSave = this.selectedTemplate.id;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
this.saveTemplates(selectAfterSave);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
saveTemplates(templateToBeSelectedAfterSave) {
|
|
366
|
+
this.busy = true;
|
|
367
|
+
this.templates.sort(Utils.sortValues('name', Sort.ASC));
|
|
368
|
+
return this.backend.post(`/users/settings/${this.storageSection}`, { templates: this.templates }).subscribe((res) => {
|
|
369
|
+
this.busy = false;
|
|
370
|
+
this.form.markAsPristine();
|
|
371
|
+
if (this.pendingTaskId)
|
|
372
|
+
this.pendingChanges.finishTask(this.pendingTaskId);
|
|
373
|
+
if (!templateToBeSelectedAfterSave) {
|
|
374
|
+
this.selectedTemplate = undefined;
|
|
375
|
+
}
|
|
376
|
+
else if (templateToBeSelectedAfterSave !== this.selectedTemplate.id) {
|
|
377
|
+
this.selectedTemplate = this.templates.find((t) => templateToBeSelectedAfterSave === t.id);
|
|
378
|
+
}
|
|
379
|
+
}, (err) => (this.busy = false));
|
|
380
|
+
}
|
|
381
|
+
loadTemplates() {
|
|
382
|
+
this.backend.get(`/users/settings/${this.storageSection()}`).subscribe((res) => {
|
|
383
|
+
this.templates = res ? res.templates || [] : [];
|
|
384
|
+
this.templates.sort(Utils.sortValues('name', Sort.ASC));
|
|
385
|
+
this.selectCurrentEntries();
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
ngOnInit() {
|
|
389
|
+
this.loadTemplates();
|
|
390
|
+
}
|
|
391
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SequenceListTemplateManageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
392
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SequenceListTemplateManageComponent, isStandalone: true, selector: "yuv-sequence-list-template-manage", inputs: { storageSection: { classPropertyName: "storageSection", publicName: "storageSection", isSignal: true, isRequired: false, transformFunction: null }, currentEntries: { classPropertyName: "currentEntries", publicName: "currentEntries", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { templateSelect: "templateSelect", cancel: "cancel" }, ngImport: i0, template: "<div class=\"template-list\">\n <header>{{ 'yuv.sequence-list.template-list.headline' | translate }}</header>\n\n <!-- current entries -->\n <div class=\"currententries item\" (click)=\"selectCurrentEntries()\" [ngClass]=\"{ current: selectedTemplate?.id === CURRENT_ENTRIES_ID }\">\n {{ 'yuv.sequence-list.template.headlineNew' | translate }}\n </div>\n\n <div class=\"filter\">\n <yuv-form-input [label]=\"'yuv.sequence-list.form.filter' | translate\">\n <yuv-string [(ngModel)]=\"filterTerm\"> </yuv-string>\n </yuv-form-input>\n </div>\n\n <div class=\"templates\">\n @for (tpl of templates | filter: filterTerm : 'name'; track $index) {\n <div class=\"item\" (click)=\"selectedTemplate = tpl\" [ngClass]=\"{ current: selectedTemplate?.id === tpl.id }\">\n {{ tpl.name }}\n </div>\n }\n </div>\n</div>\n\n@if (selectedTemplate) {\n <form class=\"template\" [formGroup]=\"form\">\n <header>{{ selectedTemplate.id !== CURRENT_ENTRIES_ID ? labels.headline : labels.headlineNew }}</header>\n\n <yuv-form-input [label]=\"'yuv.sequence-list.form.templateName' | translate\" [required]=\"true\" [invalid]=\"!!formErrors.length\">\n <yuv-string [autofocus]=\"true\" [required]=\"true\" formControlName=\"templateName\"> </yuv-string>\n </yuv-form-input>\n @for (e of formErrors; track $index) {\n <div class=\"errors\">{{ e }}</div>\n }\n <yuv-sequence-list disable-duedate=\"true\" formControlName=\"sequence\"> </yuv-sequence-list>\n </form>\n}\n\n<div class=\"buttons\">\n <div class=\"left\">\n <button type=\"button\" class=\"secondary\" (click)=\"cancel.emit()\">{{ 'yuv.sequence-list.template.cancel' | translate }}</button>\n </div>\n\n @if (selectedTemplate) {\n <div class=\"right\">\n @if (selectedTemplate.id !== CURRENT_ENTRIES_ID) {\n <button class=\"secondary delete\" type=\"button\" (click)=\"deleteTemplate()\">\n {{ 'yuv.sequence-list.template.button.delete' | translate }}\n </button>\n\n <button class=\"primary apply\" type=\"button\" [disabled]=\"disableSubmit || form.invalid || form.dirty\" (click)=\"applyTemplate()\">\n {{ 'yuv.sequence-list.template.button.apply' | translate }}\n </button>\n }\n\n <!-- save -->\n <button\n class=\"{{ selectedTemplate.id !== CURRENT_ENTRIES_ID ? 'primary' : 'primary' }} save\"\n (click)=\"submit()\"\n type=\"button\"\n [disabled]=\"disableSubmit || form.invalid || form.pristine\"\n >\n {{ selectedTemplate.id !== CURRENT_ENTRIES_ID ? labels.save : labels.saveNew }}\n </button>\n </div>\n }\n</div>\n", styles: [":host{display:grid;height:100%;grid-template-rows:1fr auto;grid-template-columns:200px 1fr;grid-template-areas:\"list template\" \"buttons buttons\"}:host header{font-weight:700;padding:var(--app-pane-padding);border-bottom:1px solid var(--panel-divider-color)}:host .template-list{grid-area:list;display:grid;height:100%;grid-template-rows:auto auto auto 1fr;grid-template-columns:1fr;grid-template-areas:\"header\" \"current\" \"filter\" \"templates\";border-right:1px solid var(--panel-divider-color);overflow:hidden}:host .template-list header{grid-area:header}:host .template-list .filter{grid-area:filter;padding:var(--app-pane-padding);border:1px solid var(--panel-divider-color);border-width:1px 0;background-color:var(--panel-background-lightgrey)}:host .template-list .currententries{grid-area:current}:host .template-list .templates{grid-area:templates;overflow-y:auto}:host .template-list .item{padding:var(--app-pane-padding);cursor:pointer}:host .template-list .item:not(.currententries){border-bottom:1px solid var(--panel-divider-color)}:host .template-list .item:not(.current):hover{background-color:var(--item-focus-background-color)}:host .template-list .item.current{background-color:var(--item-selected-background-color)}:host .template{grid-area:template;display:grid;height:100%;overflow-y:auto;grid-template-rows:auto auto auto 1fr;grid-template-columns:1fr;grid-template-areas:\"headline\" \"name\" \"errors\" \"sequence\"}:host .template h2{grid-area:headline}:host .template yuv-form-input{grid-area:name;margin:var(--app-pane-padding);margin-bottom:calc(var(--app-pane-padding) / 2)}:host .template .errors{grid-area:errors;margin:0 var(--app-pane-padding);color:var(--color-error)}:host .template yuv-sequence-list{grid-area:sequence;margin:var(--app-pane-padding);box-shadow:0 0 1.2em #0000001a}:host .buttons{grid-area:buttons;overflow-x:auto;display:flex;padding:calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2 - 2px);border-top:1px solid var(--panel-divider-color)}:host .buttons .left{display:flex}:host .buttons .right{flex:1;display:flex;justify-content:flex-end}:host .buttons .right .save{order:2}:host .buttons .right .delete{order:1}:host .buttons .right .apply{order:3}:host .buttons button{margin:0 2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: YvcOverlayModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }, { kind: "component", type: FormInputComponent, selector: "yuv-form-input", inputs: ["label", "tag", "description", "invalid", "disabled", "required"] }, { kind: "component", type: StringComponent, selector: "yuv-string", inputs: ["multiselect", "rows", "readonly", "autofocus", "classifications", "situation", "regex", "minLength", "maxLength"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SequenceListComponent, selector: "yuv-sequence-list", inputs: ["maxLength"] }, { kind: "ngmodule", type: YuvFormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: YvcCommonModule }, { kind: "pipe", type: i4.FilterPipe, name: "filter" }] }); }
|
|
393
|
+
}
|
|
394
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SequenceListTemplateManageComponent, decorators: [{
|
|
395
|
+
type: Component,
|
|
396
|
+
args: [{ selector: 'yuv-sequence-list-template-manage', standalone: true, imports: [
|
|
397
|
+
CommonModule,
|
|
398
|
+
YvcOverlayModule,
|
|
399
|
+
TranslateModule,
|
|
400
|
+
FormInputComponent,
|
|
401
|
+
StringComponent,
|
|
402
|
+
FormsModule,
|
|
403
|
+
CommonModule,
|
|
404
|
+
SequenceListComponent,
|
|
405
|
+
YuvFormsModule,
|
|
406
|
+
ReactiveFormsModule,
|
|
407
|
+
YvcCommonModule
|
|
408
|
+
], template: "<div class=\"template-list\">\n <header>{{ 'yuv.sequence-list.template-list.headline' | translate }}</header>\n\n <!-- current entries -->\n <div class=\"currententries item\" (click)=\"selectCurrentEntries()\" [ngClass]=\"{ current: selectedTemplate?.id === CURRENT_ENTRIES_ID }\">\n {{ 'yuv.sequence-list.template.headlineNew' | translate }}\n </div>\n\n <div class=\"filter\">\n <yuv-form-input [label]=\"'yuv.sequence-list.form.filter' | translate\">\n <yuv-string [(ngModel)]=\"filterTerm\"> </yuv-string>\n </yuv-form-input>\n </div>\n\n <div class=\"templates\">\n @for (tpl of templates | filter: filterTerm : 'name'; track $index) {\n <div class=\"item\" (click)=\"selectedTemplate = tpl\" [ngClass]=\"{ current: selectedTemplate?.id === tpl.id }\">\n {{ tpl.name }}\n </div>\n }\n </div>\n</div>\n\n@if (selectedTemplate) {\n <form class=\"template\" [formGroup]=\"form\">\n <header>{{ selectedTemplate.id !== CURRENT_ENTRIES_ID ? labels.headline : labels.headlineNew }}</header>\n\n <yuv-form-input [label]=\"'yuv.sequence-list.form.templateName' | translate\" [required]=\"true\" [invalid]=\"!!formErrors.length\">\n <yuv-string [autofocus]=\"true\" [required]=\"true\" formControlName=\"templateName\"> </yuv-string>\n </yuv-form-input>\n @for (e of formErrors; track $index) {\n <div class=\"errors\">{{ e }}</div>\n }\n <yuv-sequence-list disable-duedate=\"true\" formControlName=\"sequence\"> </yuv-sequence-list>\n </form>\n}\n\n<div class=\"buttons\">\n <div class=\"left\">\n <button type=\"button\" class=\"secondary\" (click)=\"cancel.emit()\">{{ 'yuv.sequence-list.template.cancel' | translate }}</button>\n </div>\n\n @if (selectedTemplate) {\n <div class=\"right\">\n @if (selectedTemplate.id !== CURRENT_ENTRIES_ID) {\n <button class=\"secondary delete\" type=\"button\" (click)=\"deleteTemplate()\">\n {{ 'yuv.sequence-list.template.button.delete' | translate }}\n </button>\n\n <button class=\"primary apply\" type=\"button\" [disabled]=\"disableSubmit || form.invalid || form.dirty\" (click)=\"applyTemplate()\">\n {{ 'yuv.sequence-list.template.button.apply' | translate }}\n </button>\n }\n\n <!-- save -->\n <button\n class=\"{{ selectedTemplate.id !== CURRENT_ENTRIES_ID ? 'primary' : 'primary' }} save\"\n (click)=\"submit()\"\n type=\"button\"\n [disabled]=\"disableSubmit || form.invalid || form.pristine\"\n >\n {{ selectedTemplate.id !== CURRENT_ENTRIES_ID ? labels.save : labels.saveNew }}\n </button>\n </div>\n }\n</div>\n", styles: [":host{display:grid;height:100%;grid-template-rows:1fr auto;grid-template-columns:200px 1fr;grid-template-areas:\"list template\" \"buttons buttons\"}:host header{font-weight:700;padding:var(--app-pane-padding);border-bottom:1px solid var(--panel-divider-color)}:host .template-list{grid-area:list;display:grid;height:100%;grid-template-rows:auto auto auto 1fr;grid-template-columns:1fr;grid-template-areas:\"header\" \"current\" \"filter\" \"templates\";border-right:1px solid var(--panel-divider-color);overflow:hidden}:host .template-list header{grid-area:header}:host .template-list .filter{grid-area:filter;padding:var(--app-pane-padding);border:1px solid var(--panel-divider-color);border-width:1px 0;background-color:var(--panel-background-lightgrey)}:host .template-list .currententries{grid-area:current}:host .template-list .templates{grid-area:templates;overflow-y:auto}:host .template-list .item{padding:var(--app-pane-padding);cursor:pointer}:host .template-list .item:not(.currententries){border-bottom:1px solid var(--panel-divider-color)}:host .template-list .item:not(.current):hover{background-color:var(--item-focus-background-color)}:host .template-list .item.current{background-color:var(--item-selected-background-color)}:host .template{grid-area:template;display:grid;height:100%;overflow-y:auto;grid-template-rows:auto auto auto 1fr;grid-template-columns:1fr;grid-template-areas:\"headline\" \"name\" \"errors\" \"sequence\"}:host .template h2{grid-area:headline}:host .template yuv-form-input{grid-area:name;margin:var(--app-pane-padding);margin-bottom:calc(var(--app-pane-padding) / 2)}:host .template .errors{grid-area:errors;margin:0 var(--app-pane-padding);color:var(--color-error)}:host .template yuv-sequence-list{grid-area:sequence;margin:var(--app-pane-padding);box-shadow:0 0 1.2em #0000001a}:host .buttons{grid-area:buttons;overflow-x:auto;display:flex;padding:calc(var(--app-pane-padding) / 2) calc(var(--app-pane-padding) / 2 - 2px);border-top:1px solid var(--panel-divider-color)}:host .buttons .left{display:flex}:host .buttons .right{flex:1;display:flex;justify-content:flex-end}:host .buttons .right .save{order:2}:host .buttons .right .delete{order:1}:host .buttons .right .apply{order:3}:host .buttons button{margin:0 2px}\n"] }]
|
|
409
|
+
}], ctorParameters: () => [] });
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Task sequence list including templates for sequence lists.
|
|
413
|
+
* Templates are preconfigured lists of tasks and recipients.
|
|
414
|
+
*/
|
|
415
|
+
class SequenceListTemplatesComponent {
|
|
416
|
+
get entries() {
|
|
417
|
+
return this._entries;
|
|
418
|
+
}
|
|
419
|
+
constructor() {
|
|
420
|
+
this.fb = inject(FormBuilder);
|
|
421
|
+
this.pendingChanges = inject(PendingChangesService);
|
|
422
|
+
this.overlay = inject(YvcOverlayService);
|
|
423
|
+
this.tplTemplateManager = viewChild('tplTemplateManager');
|
|
424
|
+
this.form = this.fb.group({
|
|
425
|
+
sequence: [[]]
|
|
426
|
+
});
|
|
427
|
+
this._entries = [];
|
|
428
|
+
this.title = input();
|
|
429
|
+
this.maxLength = input(100);
|
|
430
|
+
this.templateStorageSection = input.required();
|
|
431
|
+
this.itemEdit = output();
|
|
432
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars
|
|
433
|
+
this.propagateChange = (_) => { };
|
|
434
|
+
this.form.valueChanges.pipe(takeUntilDestroyed()).subscribe((res) => {
|
|
435
|
+
this.setEntries(res.sequence, false);
|
|
436
|
+
this.propagate();
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
setEntries(e, patch) {
|
|
440
|
+
this._entries = e;
|
|
441
|
+
if (patch)
|
|
442
|
+
this.form.patchValue({
|
|
443
|
+
sequence: e || []
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
propagate() {
|
|
447
|
+
this.propagateChange(this.entries);
|
|
448
|
+
}
|
|
449
|
+
writeValue(value) {
|
|
450
|
+
this.setEntries(value || [], true);
|
|
451
|
+
}
|
|
452
|
+
registerOnChange(fn) {
|
|
453
|
+
this.propagateChange = fn;
|
|
454
|
+
}
|
|
455
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars
|
|
456
|
+
registerOnTouched(fn) { }
|
|
457
|
+
// TEMPLATES
|
|
458
|
+
openTemplateManager() {
|
|
459
|
+
this.oRef = this.overlay.open(this.tplTemplateManager(), {
|
|
460
|
+
width: '55%',
|
|
461
|
+
height: '70%'
|
|
462
|
+
});
|
|
463
|
+
this.oRef.preventClose = () => this.pendingChanges.check();
|
|
464
|
+
}
|
|
465
|
+
templateManagerCancel() {
|
|
466
|
+
if (this.oRef)
|
|
467
|
+
this.oRef.close();
|
|
468
|
+
}
|
|
469
|
+
templateManagerSelect(entries) {
|
|
470
|
+
this.setEntries(entries, true);
|
|
471
|
+
if (this.oRef)
|
|
472
|
+
this.oRef.close();
|
|
473
|
+
}
|
|
474
|
+
validate() {
|
|
475
|
+
return this.form.invalid
|
|
476
|
+
? {
|
|
477
|
+
sequencelist: { invalid: true }
|
|
478
|
+
}
|
|
479
|
+
: null;
|
|
480
|
+
}
|
|
481
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SequenceListTemplatesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
482
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SequenceListTemplatesComponent, isStandalone: true, selector: "yuv-sequence-list-templates", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, templateStorageSection: { classPropertyName: "templateStorageSection", publicName: "templateStorageSection", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { itemEdit: "itemEdit" }, host: { attributes: { "tabindex": "0" } }, providers: [
|
|
483
|
+
{
|
|
484
|
+
provide: NG_VALUE_ACCESSOR,
|
|
485
|
+
useExisting: forwardRef(() => SequenceListTemplatesComponent),
|
|
486
|
+
multi: true
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
provide: NG_VALIDATORS,
|
|
490
|
+
useExisting: forwardRef(() => SequenceListTemplatesComponent),
|
|
491
|
+
multi: true
|
|
492
|
+
}
|
|
493
|
+
], viewQueries: [{ propertyName: "tplTemplateManager", first: true, predicate: ["tplTemplateManager"], descendants: true, isSignal: true }], ngImport: i0, template: "<form [formGroup]=\"form\">\n <yuv-sequence-list formControlName=\"sequence\" [maxLength]=\"maxLength()\">\n \n @if (!!templateStorageSection) {\n <button class=\"btn-templates secondary\" (click)=\"openTemplateManager()\">{{ 'yuv.sequence-list.button.templates' | translate }}</button>\n }\n </yuv-sequence-list>\n</form>\n\n<!-- template manager overlay -->\n<ng-template #tplTemplateManager>\n <yuv-sequence-list-template-manage\n (cancel)=\"oRef?.close()\"\n (templateSelect)=\"templateManagerSelect($event)\"\n [storageSection]=\"templateStorageSection() \"\n [currentEntries]=\"entries\"\n >\n </yuv-sequence-list-template-manage>\n</ng-template>\n", styles: [":host{display:block;overflow-y:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: SequenceListComponent, selector: "yuv-sequence-list", inputs: ["maxLength"] }, { kind: "component", type: SequenceListTemplateManageComponent, selector: "yuv-sequence-list-template-manage", inputs: ["storageSection", "currentEntries"], outputs: ["templateSelect", "cancel"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }] }); }
|
|
494
|
+
}
|
|
495
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SequenceListTemplatesComponent, decorators: [{
|
|
496
|
+
type: Component,
|
|
497
|
+
args: [{ selector: 'yuv-sequence-list-templates', standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule,
|
|
498
|
+
SequenceListComponent, SequenceListTemplateManageComponent, TranslateModule], providers: [
|
|
499
|
+
{
|
|
500
|
+
provide: NG_VALUE_ACCESSOR,
|
|
501
|
+
useExisting: forwardRef(() => SequenceListTemplatesComponent),
|
|
502
|
+
multi: true
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
provide: NG_VALIDATORS,
|
|
506
|
+
useExisting: forwardRef(() => SequenceListTemplatesComponent),
|
|
507
|
+
multi: true
|
|
508
|
+
}
|
|
509
|
+
], host: {
|
|
510
|
+
tabindex: '0'
|
|
511
|
+
}, template: "<form [formGroup]=\"form\">\n <yuv-sequence-list formControlName=\"sequence\" [maxLength]=\"maxLength()\">\n \n @if (!!templateStorageSection) {\n <button class=\"btn-templates secondary\" (click)=\"openTemplateManager()\">{{ 'yuv.sequence-list.button.templates' | translate }}</button>\n }\n </yuv-sequence-list>\n</form>\n\n<!-- template manager overlay -->\n<ng-template #tplTemplateManager>\n <yuv-sequence-list-template-manage\n (cancel)=\"oRef?.close()\"\n (templateSelect)=\"templateManagerSelect($event)\"\n [storageSection]=\"templateStorageSection() \"\n [currentEntries]=\"entries\"\n >\n </yuv-sequence-list-template-manage>\n</ng-template>\n", styles: [":host{display:block;overflow-y:auto}\n"] }]
|
|
512
|
+
}], ctorParameters: () => [] });
|
|
513
|
+
|
|
514
|
+
/**
|
|
515
|
+
* Generated bundle index. Do not edit.
|
|
516
|
+
*/
|
|
517
|
+
|
|
518
|
+
export { DueDatePickerComponent, SequenceListComponent, SequenceListTemplateManageComponent, SequenceListTemplatesComponent };
|
|
519
|
+
//# sourceMappingURL=yuuvis-client-framework-sequence-list.mjs.map
|