@smartbit4all/ng-client 4.5.7 → 4.5.9
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 +386 -386
- package/esm2022/lib/component-factory-service/component-factory-service.module.mjs +1 -1
- package/esm2022/lib/component-factory-service/component-factory-service.service.mjs +1 -1
- package/esm2022/lib/component-factory-service/projects.mjs +1 -1
- package/esm2022/lib/session/api/api/api.mjs +1 -1
- package/esm2022/lib/session/api/api/session.service.mjs +1 -1
- package/esm2022/lib/session/api/configuration.mjs +1 -1
- package/esm2022/lib/session/api/encoder.mjs +1 -1
- package/esm2022/lib/session/api/index.mjs +1 -1
- package/esm2022/lib/session/api/model/accountInfo.mjs +1 -1
- package/esm2022/lib/session/api/model/apiError.mjs +1 -1
- package/esm2022/lib/session/api/model/authenticationProviderData.mjs +1 -1
- package/esm2022/lib/session/api/model/getAuthenticationProvidersResponse.mjs +1 -1
- package/esm2022/lib/session/api/model/models.mjs +1 -1
- package/esm2022/lib/session/api/model/refreshSessionRequest.mjs +1 -1
- package/esm2022/lib/session/api/model/session.mjs +1 -1
- package/esm2022/lib/session/api/model/sessionInfoData.mjs +1 -1
- package/esm2022/lib/session/api/model/userActivityLog.mjs +1 -1
- package/esm2022/lib/session/api/param.mjs +1 -1
- package/esm2022/lib/session/api/variables.mjs +1 -1
- package/esm2022/lib/session/cookie-service/smart-cookie.service.mjs +1 -1
- package/esm2022/lib/session/projects.mjs +1 -1
- package/esm2022/lib/session/smart-backend-bootstrap.config.mjs +1 -1
- package/esm2022/lib/session/smart-backend-bootstrap.service.mjs +43 -10
- package/esm2022/lib/session/smart-error-catching.interceptor.mjs +1 -1
- package/esm2022/lib/session/smart-header-maintainer.interceptor.mjs +1 -1
- package/esm2022/lib/session/smart-session-handler.service.mjs +1 -1
- package/esm2022/lib/session/smart-session.module.mjs +1 -1
- package/esm2022/lib/session/smart-session.service.mjs +11 -1
- package/esm2022/lib/session/smart-timer/smart-session-timer.component.mjs +3 -3
- package/esm2022/lib/session/smart-timer/smart-session-timer.service.mjs +1 -1
- package/esm2022/lib/shared/projects.mjs +1 -1
- package/esm2022/lib/shared/shared.module.mjs +1 -1
- package/esm2022/lib/shared/smart-tooltip.directive.mjs +1 -1
- package/esm2022/lib/shared/smarttable.date-pipe.mjs +1 -1
- package/esm2022/lib/smart-client/projects.mjs +1 -1
- package/esm2022/lib/smart-client/smart-component-api-client.mjs +1 -1
- package/esm2022/lib/smart-client/smart-file-uploader/smart-file-uploader.component.mjs +3 -3
- package/esm2022/lib/smart-client/smart.component.mjs +1 -1
- package/esm2022/lib/smart-client/smart.service.mjs +1 -1
- package/esm2022/lib/smart-component-layout/api/model/componentWidgetType.mjs +1 -1
- package/esm2022/lib/smart-component-layout/api/model/models.mjs +1 -1
- package/esm2022/lib/smart-component-layout/api/model/toolbarDirection.mjs +1 -1
- package/esm2022/lib/smart-component-layout/api/model/toolbarProperties.mjs +1 -1
- package/esm2022/lib/smart-component-layout/projects.mjs +1 -1
- package/esm2022/lib/smart-component-layout/smart-component-layout-utility.mjs +6 -1
- package/esm2022/lib/smart-component-layout/smart-component-layout.component.mjs +5 -4
- package/esm2022/lib/smart-component-layout/smart-component-layout.module.mjs +1 -1
- package/esm2022/lib/smart-diagram/component/default-smart-diagram-options.provider.mjs +1 -1
- package/esm2022/lib/smart-diagram/component/smart-diagram.component.mjs +22 -22
- package/esm2022/lib/smart-diagram/component/smart-diagram.module.mjs +1 -1
- package/esm2022/lib/smart-diagram/component/smart-diagram.util.mjs +1 -1
- package/esm2022/lib/smart-diagram/projects.mjs +1 -1
- package/esm2022/lib/smart-dialog/projects.mjs +1 -1
- package/esm2022/lib/smart-dialog/smartdialog.component.mjs +3 -3
- package/esm2022/lib/smart-dialog/smartdialog.model.mjs +1 -1
- package/esm2022/lib/smart-dialog/smartdialog.module.mjs +1 -1
- package/esm2022/lib/smart-dialog/smartdialog.service.mjs +1 -1
- package/esm2022/lib/smart-expandable-section/expandable-section.component.mjs +11 -6
- package/esm2022/lib/smart-expandable-section/expandable-section.model.mjs +1 -1
- package/esm2022/lib/smart-expandable-section/projects.mjs +1 -1
- package/esm2022/lib/smart-expandable-section/smart-expandable-section.module.mjs +7 -3
- package/esm2022/lib/smart-expandable-section/smart-expandable-section.service.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderField.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionData.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionDataType.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionField.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldList.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionList.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperandData.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperation.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOrderBy.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/model.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/searchIndexObjectDefinitionData.mjs +1 -1
- package/esm2022/lib/smart-filter/api/filter/model/searchIndexPropertyDefinitionData.mjs +1 -1
- package/esm2022/lib/smart-filter/api/value/model/value.mjs +1 -1
- package/esm2022/lib/smart-filter/projects.mjs +1 -1
- package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.mjs +1 -1
- package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.mjs +3 -3
- package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.mjs +3 -3
- package/esm2022/lib/smart-filter/smart-filter/smart-filter.component.mjs +3 -3
- package/esm2022/lib/smart-filter/smart-filter/smart-filter.service.mjs +1 -1
- package/esm2022/lib/smart-filter/smart-filter.model.mjs +1 -1
- package/esm2022/lib/smart-filter/smart-filter.module.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/api/filter.service.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/configuration.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/encoder.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderApiConfig.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderField.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderModel.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionData.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionDataType.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionField.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldList.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionList.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperandData.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperation.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOrderBy.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/model/smartFilterType.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/param.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/api/variables.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/filterExpressionBuilderApiActions.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/project.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.mjs +3 -3
- package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.mjs +3 -3
- package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +3 -3
- package/esm2022/lib/smart-filter-editor/smart-filter-editor.model.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/smart-filter-editor.module.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/smart-filter-editor.service.mjs +1 -1
- package/esm2022/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.mjs +3 -3
- package/esm2022/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.mjs +3 -3
- package/esm2022/lib/smart-form/highlightMacthingString-pipe.mjs +1 -1
- package/esm2022/lib/smart-form/projects.mjs +1 -1
- package/esm2022/lib/smart-form/services/smartform.layout-definition.service.mjs +1 -1
- package/esm2022/lib/smart-form/services/smartform.service.mjs +1 -1
- package/esm2022/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.mjs +3 -3
- package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +3 -3
- package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.model.mjs +1 -1
- package/esm2022/lib/smart-form/smartform.component.mjs +3 -3
- package/esm2022/lib/smart-form/smartform.form-model.mjs +1 -1
- package/esm2022/lib/smart-form/smartform.model.mjs +1 -1
- package/esm2022/lib/smart-form/widgets/components/smart-file-editor/smart-file-editor.component.mjs +3 -3
- package/esm2022/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.mjs +3 -3
- package/esm2022/lib/smart-form/widgets/components/smart-multi-file-editor/smart-multi-file-editor.component.mjs +3 -3
- package/esm2022/lib/smart-form/widgets/components/smart-voice-recorder/smart-voice-recorder.component.mjs +3 -3
- package/esm2022/lib/smart-form/widgets/directives/comparable-dropdown.directive.mjs +1 -1
- package/esm2022/lib/smart-form/widgets/directives/comparable-multiselect.directive.mjs +1 -1
- package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +3 -3
- package/esm2022/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.mjs +3 -3
- package/esm2022/lib/smart-form/widgets/smartformwidget/trackCaps.directive.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/api/api.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/api/grid.service.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/api.module.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/configuration.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/encoder.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/index.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnContentType.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/model/gridExportDescriptor.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/model/gridModel.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/model/gridPage.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/model/gridRow.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionChange.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/model/gridView.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/model/models.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/param.mjs +1 -1
- package/esm2022/lib/smart-grid/api/grid-api/variables.mjs +1 -1
- package/esm2022/lib/smart-grid/components/expandable-grid/expandable-grid.component.mjs +3 -3
- package/esm2022/lib/smart-grid/components/generic-component/expanded-row-renderer.component.mjs +3 -3
- package/esm2022/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.mjs +3 -3
- package/esm2022/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.mjs +3 -3
- package/esm2022/lib/smart-grid/models/model.mjs +1 -1
- package/esm2022/lib/smart-grid/projects.mjs +1 -1
- package/esm2022/lib/smart-grid/smart-grid-toolbar-util.mjs +1 -1
- package/esm2022/lib/smart-grid/smart-grid.component.mjs +3 -3
- package/esm2022/lib/smart-grid/smart-grid.module.mjs +1 -1
- package/esm2022/lib/smart-grid/smart-grid.service.mjs +1 -1
- package/esm2022/lib/smart-icon/projects.mjs +1 -1
- package/esm2022/lib/smart-icon/smart-icon/smart-icon.component.mjs +3 -3
- package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.component.mjs +3 -3
- package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.directive.mjs +1 -1
- package/esm2022/lib/smart-icon/smart-icon.module.mjs +1 -1
- package/esm2022/lib/smart-icon/smart-icon.service.mjs +1 -1
- package/esm2022/lib/smart-map/abstract-map.mjs +1 -1
- package/esm2022/lib/smart-map/api-default/api-default.mjs +1 -1
- package/esm2022/lib/smart-map/impl/google-map.mjs +1 -1
- package/esm2022/lib/smart-map/impl/leaflet-map.mjs +1 -1
- package/esm2022/lib/smart-map/projects.mjs +1 -1
- package/esm2022/lib/smart-map/smart-map.component.mjs +3 -3
- package/esm2022/lib/smart-map/smart-map.module.mjs +1 -1
- package/esm2022/lib/smart-map/smart-map.types.mjs +1 -1
- package/esm2022/lib/smart-navbar/projects.mjs +1 -1
- package/esm2022/lib/smart-navbar/smart-navbar.component.mjs +3 -3
- package/esm2022/lib/smart-navbar/smart-navbar.model.mjs +1 -1
- package/esm2022/lib/smart-navbar/smart-navbar.module.mjs +1 -1
- package/esm2022/lib/smart-navbar/smart-navbar.service.mjs +1 -1
- package/esm2022/lib/smart-navigation/projects.mjs +1 -1
- package/esm2022/lib/smart-navigation/smart-navigation.interface.mjs +1 -1
- package/esm2022/lib/smart-navigation/smart-navigation.module.mjs +1 -1
- package/esm2022/lib/smart-navigation/smart-navigation.service.mjs +1 -1
- package/esm2022/lib/smart-ng-client.module.mjs +1 -1
- package/esm2022/lib/smart-ng-client.service.mjs +1 -1
- package/esm2022/lib/smart-subject/projects.mjs +1 -1
- package/esm2022/lib/smart-subject/smart-subject.mjs +1 -1
- package/esm2022/lib/smart-tab-group/projects.mjs +1 -1
- package/esm2022/lib/smart-tab-group/smart-tab-group.component.mjs +3 -3
- package/esm2022/lib/smart-tab-group/smart-tab-group.module.mjs +1 -1
- package/esm2022/lib/smart-tab-group/smart-tab-group.service.mjs +1 -1
- package/esm2022/lib/smart-tab-group/tab-content/tab-content.component.mjs +3 -3
- package/esm2022/lib/smart-tab-group/tab-group-simplified/tab-group.component.mjs +3 -3
- package/esm2022/lib/smart-tab-group/tabTile.model.mjs +1 -1
- package/esm2022/lib/smart-table/components/default-actions-popup/default-actions-popup.component.mjs +3 -3
- package/esm2022/lib/smart-table/components/loading/loading.component.mjs +3 -3
- package/esm2022/lib/smart-table/directives/mat-context-menu-trigger-for.directive.mjs +1 -1
- package/esm2022/lib/smart-table/projects.mjs +1 -1
- package/esm2022/lib/smart-table/smarttable.component.mjs +3 -3
- package/esm2022/lib/smart-table/smarttable.model.mjs +1 -1
- package/esm2022/lib/smart-table/smarttable.module.mjs +1 -1
- package/esm2022/lib/smart-table/smarttable.service.mjs +1 -1
- package/esm2022/lib/smart-table/tables/material-table/material-table.component.mjs +3 -3
- package/esm2022/lib/smart-table/tables/mobile-table/mobile-table.component.mjs +3 -3
- package/esm2022/lib/smart-table/tables/table.mjs +1 -1
- package/esm2022/lib/smart-tree/projects.mjs +1 -1
- package/esm2022/lib/smart-tree/smarttree-generic.service.mjs +1 -1
- package/esm2022/lib/smart-tree/smarttree.component.mjs +3 -3
- package/esm2022/lib/smart-tree/smarttree.model.mjs +1 -1
- package/esm2022/lib/smart-tree/smarttree.module.mjs +1 -1
- package/esm2022/lib/smart-tree/smarttree.node.model.mjs +1 -1
- package/esm2022/lib/smart-tree/smarttree.service.interface.mjs +1 -1
- package/esm2022/lib/smart-tree/smarttree.service.mjs +1 -1
- package/esm2022/lib/smart-tree/tree-api/api/tree.service.mjs +1 -1
- package/esm2022/lib/smart-tree/tree-api/configuration.mjs +1 -1
- package/esm2022/lib/smart-tree/tree-api/encoder.mjs +1 -1
- package/esm2022/lib/smart-tree/tree-api/param.mjs +1 -1
- package/esm2022/lib/smart-tree/tree-api/variables.mjs +1 -1
- package/esm2022/lib/smart-validation/named-validator.service.mjs +1 -1
- package/esm2022/lib/smart-validation/projects.mjs +1 -1
- package/esm2022/lib/smart-validation/smart-validation.module.mjs +1 -1
- package/esm2022/lib/smart-validation/smart-validation.types.mjs +1 -1
- package/esm2022/lib/view-context/api/api/view.service.mjs +1 -1
- package/esm2022/lib/view-context/api/api-default/binaryData.mjs +1 -1
- package/esm2022/lib/view-context/api/api-default/invocationError.mjs +1 -1
- package/esm2022/lib/view-context/api/api-default/invocationRequest.mjs +1 -1
- package/esm2022/lib/view-context/api/api-default/invocationRun.mjs +1 -1
- package/esm2022/lib/view-context/api/model/models.mjs +1 -1
- package/esm2022/lib/view-context/api/model/smartLinkData.mjs +1 -1
- package/esm2022/lib/view-context/api/model/uiAction.mjs +1 -1
- package/esm2022/lib/view-context/api/model/uiActionDefinition.mjs +1 -1
- package/esm2022/lib/view-context/api/model/uiActionDefinitionEntry.mjs +1 -1
- package/esm2022/lib/view-context/api/model/uiActionInputType.mjs +1 -1
- package/esm2022/lib/view-context/api/model/uiActionSchedule.mjs +1 -1
- package/esm2022/lib/view-context/api/model/uiActionUploadDescriptor.mjs +1 -1
- package/esm2022/lib/view-context/api/model/view.mjs +1 -1
- package/esm2022/lib/view-context/api/model/viewData.mjs +1 -1
- package/esm2022/lib/view-context/api/model/viewEventHandler.mjs +1 -1
- package/esm2022/lib/view-context/invalid-fields-snack-bar/invalid-fields-snack-bar.component.mjs +3 -3
- package/esm2022/lib/view-context/message-dialog/message-dialog.component.mjs +3 -3
- package/esm2022/lib/view-context/projects.mjs +1 -1
- package/esm2022/lib/view-context/property-definition-data.mjs +1 -1
- package/esm2022/lib/view-context/smart-embedded-slot.directive.mjs +1 -1
- package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.component.mjs +3 -3
- package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.constants.mjs +1 -1
- package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.service.mjs +1 -1
- package/esm2022/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.mjs +3 -3
- package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/photo-capture-widget/photo-capture-widget.component.mjs +3 -3
- package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/prime-file-uploader/prime-file-uploader.component.mjs +3 -3
- package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.component.mjs +3 -3
- package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.utils.mjs +1 -1
- package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/voice-record-widget/voice-record-widget.component.mjs +3 -3
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +3 -3
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +1 -1
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-dialog-button/ui-action-dialog-button.component.mjs +3 -3
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +3 -3
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.mjs +1 -1
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +3 -3
- package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +1 -1
- package/esm2022/lib/view-context/smart-ui-action/file-editor-toolbar/file-editor-toolbar.component.mjs +3 -3
- package/esm2022/lib/view-context/smart-ui-action/ui-action-button/ui-action-button.component.mjs +3 -3
- package/esm2022/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +3 -3
- package/esm2022/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +1 -1
- package/esm2022/lib/view-context/smart-ui-action/ui-action.model.mjs +1 -1
- package/esm2022/lib/view-context/smart-ui-action/ui-action.service.mjs +1 -1
- package/esm2022/lib/view-context/smart-view-context-dialog.service.mjs +1 -1
- package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.mjs +3 -3
- package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +1 -1
- package/esm2022/lib/view-context/smart-view-context.interceptor.mjs +1 -1
- package/esm2022/lib/view-context/smart-view-context.model.mjs +1 -1
- package/esm2022/lib/view-context/smart-view-context.module.mjs +1 -1
- package/esm2022/lib/view-context/smart-view-context.service.mjs +13 -1
- package/esm2022/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +1 -1
- package/esm2022/lib/view-context/utility/componentLibrary.mjs +1 -1
- package/esm2022/lib/view-context/utility/smart-object-utility.mjs +1 -1
- package/esm2022/lib/view-context/utility/smart-style-utility.mjs +1 -1
- package/esm2022/lib/view-context/value-api/api/api.mjs +1 -1
- package/esm2022/lib/view-context/value-api/api/value.service.mjs +1 -1
- package/esm2022/lib/view-context/value-api/api.module.mjs +1 -1
- package/esm2022/lib/view-context/value-api/configuration.mjs +1 -1
- package/esm2022/lib/view-context/value-api/encoder.mjs +1 -1
- package/esm2022/lib/view-context/value-api/index.mjs +1 -1
- package/esm2022/lib/view-context/value-api/model/genericValue.mjs +1 -1
- package/esm2022/lib/view-context/value-api/model/models.mjs +1 -1
- package/esm2022/lib/view-context/value-api/model/value.mjs +1 -1
- package/esm2022/lib/view-context/value-api/model/valueSetData.mjs +1 -1
- package/esm2022/lib/view-context/value-api/model/valueSetDefinition.mjs +1 -1
- package/esm2022/lib/view-context/value-api/model/valueSetDefinitionData.mjs +1 -1
- package/esm2022/lib/view-context/value-api/model/valueSetDefinitionIdentifier.mjs +1 -1
- package/esm2022/lib/view-context/value-api/model/valueSetDefinitionKind.mjs +1 -1
- package/esm2022/lib/view-context/value-api/model/valueSetExpression.mjs +1 -1
- package/esm2022/lib/view-context/value-api/model/valueSetOperand.mjs +1 -1
- package/esm2022/lib/view-context/value-api/model/valueSetOperation.mjs +1 -1
- package/esm2022/lib/view-context/value-api/param.mjs +1 -1
- package/esm2022/lib/view-context/value-api/variables.mjs +1 -1
- package/esm2022/projects.mjs +1 -1
- package/fesm2022/smartbit4all-ng-client.mjs +211 -144
- package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/session/smart-backend-bootstrap.config.d.ts +12 -0
- package/lib/session/smart-backend-bootstrap.service.d.ts +5 -1
- package/lib/session/smart-session.service.d.ts +7 -0
- package/lib/smart-component-layout/smart-component-layout.component.d.ts +2 -1
- package/lib/smart-expandable-section/expandable-section.component.d.ts +3 -1
- package/lib/smart-expandable-section/expandable-section.model.d.ts +1 -0
- package/lib/smart-expandable-section/smart-expandable-section.module.d.ts +2 -1
- package/lib/view-context/smart-view-context.service.d.ts +8 -0
- package/package.json +1 -1
- package/smartbit4all-ng-client-4.5.9.tgz +0 -0
- package/smartbit4all-ng-client-4.5.7.tgz +0 -0
|
@@ -914,6 +914,16 @@ class SmartSessionService {
|
|
|
914
914
|
value: `Bearer ${this.token}`,
|
|
915
915
|
});
|
|
916
916
|
}
|
|
917
|
+
/**
|
|
918
|
+
* Hydrates the session with an externally obtained SID, bypassing
|
|
919
|
+
* `initialize()`'s backend round-trip. Used by the
|
|
920
|
+
* `SmartBackendBootstrapService.bootstrapWith()` flow when a host
|
|
921
|
+
* (e.g. native mobile shell) hands over an already-authenticated session.
|
|
922
|
+
*/
|
|
923
|
+
setSessionToken(token) {
|
|
924
|
+
this.token = token;
|
|
925
|
+
this.setUpTokenForSessionService();
|
|
926
|
+
}
|
|
917
927
|
setUrl(url) {
|
|
918
928
|
this.basePath = url;
|
|
919
929
|
}
|
|
@@ -2891,11 +2901,11 @@ class UiBadgeComponent {
|
|
|
2891
2901
|
}
|
|
2892
2902
|
}
|
|
2893
2903
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2894
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiBadgeComponent, selector: "ui-badge", inputs: { descriptor: "descriptor", inputValue: "inputValue" }, ngImport: i0, template: "<ng-content></ng-content>\
|
|
2904
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiBadgeComponent, selector: "ui-badge", inputs: { descriptor: "descriptor", inputValue: "inputValue" }, ngImport: i0, template: "<ng-content></ng-content>\n\n@if (effectiveValue) {\n<div class=\"ui-action-badge\" [ngClass]=\"getBadgeClass()\">\n {{ effectiveValue }}\n</div>\n}\n", styles: [".ui-action-badge{position:absolute;top:.1rem;right:0;transform:translate(50%,-50%);transform-origin:100% 0;margin:0;padding:0 .5rem;border-radius:1rem;color:#fff;font-size:.75rem;font-weight:700;line-height:1rem;display:inline-block;text-align:center;white-space:nowrap;z-index:100}:host{display:flex;width:fit-content;height:fit-content;position:relative}.badge-primary{background-color:var(--primary-color)}.badge-secondary{background-color:var(--secondary-color)}.badge-accent{background-color:var(--accent-color)}.badge-error{background-color:var(--error-color)}.badge-warn{background-color:var(--warn-color)}.badge-default{background-color:#ef4444}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
2895
2905
|
}
|
|
2896
2906
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiBadgeComponent, decorators: [{
|
|
2897
2907
|
type: Component,
|
|
2898
|
-
args: [{ selector: 'ui-badge', template: "<ng-content></ng-content>\
|
|
2908
|
+
args: [{ selector: 'ui-badge', template: "<ng-content></ng-content>\n\n@if (effectiveValue) {\n<div class=\"ui-action-badge\" [ngClass]=\"getBadgeClass()\">\n {{ effectiveValue }}\n</div>\n}\n", styles: [".ui-action-badge{position:absolute;top:.1rem;right:0;transform:translate(50%,-50%);transform-origin:100% 0;margin:0;padding:0 .5rem;border-radius:1rem;color:#fff;font-size:.75rem;font-weight:700;line-height:1rem;display:inline-block;text-align:center;white-space:nowrap;z-index:100}:host{display:flex;width:fit-content;height:fit-content;position:relative}.badge-primary{background-color:var(--primary-color)}.badge-secondary{background-color:var(--secondary-color)}.badge-accent{background-color:var(--accent-color)}.badge-error{background-color:var(--error-color)}.badge-warn{background-color:var(--warn-color)}.badge-default{background-color:#ef4444}\n"] }]
|
|
2899
2909
|
}], propDecorators: { descriptor: [{
|
|
2900
2910
|
type: Input
|
|
2901
2911
|
}], inputValue: [{
|
|
@@ -3002,11 +3012,11 @@ class SmartIconComponent {
|
|
|
3002
3012
|
return Object.assign({}, ...styles.filter(Boolean));
|
|
3003
3013
|
}
|
|
3004
3014
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartIconComponent, deps: [{ token: SmartIconService }, { token: i0.ChangeDetectorRef }, { token: i2.DomSanitizer }, { token: COMPONENT_LIBRARY }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3005
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartIconComponent, selector: "smart-icon", inputs: { iconWithoutNamespace: ["icon", "iconWithoutNamespace"], color: "color", imageResource: "imageResource" }, usesOnChanges: true, ngImport: i0, template: "@if(imageResource){\
|
|
3015
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartIconComponent, selector: "smart-icon", inputs: { iconWithoutNamespace: ["icon", "iconWithoutNamespace"], color: "color", imageResource: "imageResource" }, usesOnChanges: true, ngImport: i0, template: "@if(imageResource){\n<ng-container *ngTemplateOutlet=\"imageResourceIcon\" />\n} @else if(iconWithoutNamespace){\n<ng-container *ngTemplateOutlet=\"normalIcon\" />\n}\n\n<ng-template #imageResourceIcon>\n @if(imageResource){\n <div\n class=\"imageResourceIcon\"\n [smartTooltip]=\"imageResource.tooltip\"\n [uiBadge]=\"imageResource.badge\"\n >\n @if(imageResource.kind === imageResourceKind.URL){\n <img\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\n class=\"imageIcon\"\n [src]=\"imageResource.source\"\n [alt]=\"imageResource.identifier\"\n />\n } @else if(imageResource.identifier){\n <ng-container *ngTemplateOutlet=\"normalIcon\"></ng-container>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #normalIcon>\n @if(compLib === componentLibrary.PRIMENG){\n <ng-container *ngTemplateOutlet=\"primeIcon\" />\n }@else {\n <ng-container *ngTemplateOutlet=\"materialIcon\" />\n }\n</ng-template>\n\n<ng-template #primeIcon>\n @if (isCustom) {\n <i\n class=\"pi custom-prime-icon\"\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\n >\n @if(iconHtml){\n <span\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\n [innerHTML]=\"iconHtml\"\n ></span>\n }\n </i>\n }@else if(icon) {\n <i\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\n [ngClass]=\"getIcon(icon)\"\n ></i>\n }\n</ng-template>\n\n<ng-template #materialIcon>\n @if (isCustom) {\n <mat-icon\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\n [color]=\"color ?? 'primary'\"\n svgIcon=\"{{ icon }}\"\n ></mat-icon>\n }@else if(icon) {\n <mat-icon [ngStyle]=\"getImageResourceStyle(imageResource)\" [color]=\"color ?? 'primary'\">\n {{ icon }}\n </mat-icon>\n }\n</ng-template>\n", styles: [".custom-prime-icon{height:1rem;width:auto}:host ::ng-deep .p-badge{background-color:var(--accent-color);color:#fff;font-size:.5rem;min-width:1rem;height:1rem;line-height:1rem}:host ::ng-deep .p-overlay-badge .p-badge{transform:translate(80%,-70%)}.imageIcon{height:1rem;max-width:1rem;border-radius:.3rem}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }, { kind: "directive", type: UiBadgeDirective, selector: "[uiBadge], [uiBadgeValue]", inputs: ["uiBadge", "uiBadgeValue"] }] }); }
|
|
3006
3016
|
}
|
|
3007
3017
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartIconComponent, decorators: [{
|
|
3008
3018
|
type: Component,
|
|
3009
|
-
args: [{ selector: 'smart-icon', template: "@if(imageResource){\
|
|
3019
|
+
args: [{ selector: 'smart-icon', template: "@if(imageResource){\n<ng-container *ngTemplateOutlet=\"imageResourceIcon\" />\n} @else if(iconWithoutNamespace){\n<ng-container *ngTemplateOutlet=\"normalIcon\" />\n}\n\n<ng-template #imageResourceIcon>\n @if(imageResource){\n <div\n class=\"imageResourceIcon\"\n [smartTooltip]=\"imageResource.tooltip\"\n [uiBadge]=\"imageResource.badge\"\n >\n @if(imageResource.kind === imageResourceKind.URL){\n <img\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\n class=\"imageIcon\"\n [src]=\"imageResource.source\"\n [alt]=\"imageResource.identifier\"\n />\n } @else if(imageResource.identifier){\n <ng-container *ngTemplateOutlet=\"normalIcon\"></ng-container>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #normalIcon>\n @if(compLib === componentLibrary.PRIMENG){\n <ng-container *ngTemplateOutlet=\"primeIcon\" />\n }@else {\n <ng-container *ngTemplateOutlet=\"materialIcon\" />\n }\n</ng-template>\n\n<ng-template #primeIcon>\n @if (isCustom) {\n <i\n class=\"pi custom-prime-icon\"\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\n >\n @if(iconHtml){\n <span\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\n [innerHTML]=\"iconHtml\"\n ></span>\n }\n </i>\n }@else if(icon) {\n <i\n [ngStyle]=\"mergeStyles(getImageResourceStyle(imageResource), getStyle(color))\"\n [ngClass]=\"getIcon(icon)\"\n ></i>\n }\n</ng-template>\n\n<ng-template #materialIcon>\n @if (isCustom) {\n <mat-icon\n [ngStyle]=\"getImageResourceStyle(imageResource)\"\n [color]=\"color ?? 'primary'\"\n svgIcon=\"{{ icon }}\"\n ></mat-icon>\n }@else if(icon) {\n <mat-icon [ngStyle]=\"getImageResourceStyle(imageResource)\" [color]=\"color ?? 'primary'\">\n {{ icon }}\n </mat-icon>\n }\n</ng-template>\n", styles: [".custom-prime-icon{height:1rem;width:auto}:host ::ng-deep .p-badge{background-color:var(--accent-color);color:#fff;font-size:.5rem;min-width:1rem;height:1rem;line-height:1rem}:host ::ng-deep .p-overlay-badge .p-badge{transform:translate(80%,-70%)}.imageIcon{height:1rem;max-width:1rem;border-radius:.3rem}\n"] }]
|
|
3010
3020
|
}], ctorParameters: () => [{ type: SmartIconService }, { type: i0.ChangeDetectorRef }, { type: i2.DomSanitizer }, { type: ComponentLibrary, decorators: [{
|
|
3011
3021
|
type: Inject,
|
|
3012
3022
|
args: [COMPONENT_LIBRARY]
|
|
@@ -3183,11 +3193,11 @@ class UiActionButtonComponent {
|
|
|
3183
3193
|
return { ...typeObj, ...styleClasses };
|
|
3184
3194
|
}
|
|
3185
3195
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionButtonComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: COMPONENT_LIBRARY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3186
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionButtonComponent, selector: "ui-action-button", inputs: { disabled: "disabled", descriptor: "descriptor", code: "code", addedCssClass: "addedCssClass", addBasicClasses: "addBasicClasses" }, outputs: { actionClick: "actionClick", actionDoubleClick: "actionDoubleClick" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"buttonWithBadge\"></ng-container>\
|
|
3196
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionButtonComponent, selector: "ui-action-button", inputs: { disabled: "disabled", descriptor: "descriptor", code: "code", addedCssClass: "addedCssClass", addBasicClasses: "addBasicClasses" }, outputs: { actionClick: "actionClick", actionDoubleClick: "actionDoubleClick" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"buttonWithBadge\"></ng-container>\n\n<ng-template #buttonWithBadge>\n @if (descriptor && descriptor.badge) {\n <ui-badge [descriptor]=\"descriptor.badge\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </ui-badge>\n } @else {\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n }\n</ng-template>\n\n<ng-template #buttonTemplate>\n @if (compLib === componentLibrary.PRIMENG) {\n <button\n pButton\n pRipple\n [smartTooltip]=\"descriptor.tooltip\"\n [disabled]=\"!!disabled\"\n (click)=\"onActionClicked($event, mainActionModel)\"\n (dblclick)=\"onActionDoubleClicked($event)\"\n [autofocus]=\"false\"\n [ngStyle]=\"calcStyle(descriptor.style)\"\n [ngClass]=\"getCombinedClasses()\"\n class=\"{{ getbtnClass() }} {{ addedCssClass }}\"\n type=\"button\"\n [attr.data-testid]=\"code ?? null\"\n >\n <div *ngIf=\"isOnlyIcon(); then buttonIcon; else text\"></div>\n </button>\n } @else {\n <button\n mat-button\n [smartTooltip]=\"descriptor.tooltip\"\n [color]=\"descriptor.color\"\n [disabled]=\"!!disabled\"\n (click)=\"onActionClicked($event, mainActionModel)\"\n (dblclick)=\"onActionDoubleClicked($event)\"\n [ngStyle]=\"calcStyle(descriptor.style)\"\n [ngClass]=\"getCombinedClasses()\"\n class=\"{{ getbtnClass() }} {{ addedCssClass }}\"\n type=\"button\"\n [attr.data-testid]=\"code ?? null\"\n >\n <div *ngIf=\"isOnlyIcon(); then buttonIcon; else text\"></div>\n </button>\n }\n</ng-template>\n\n<ng-template #text>\n @if (descriptor.iconPosition === iconPosition().PRE) {\n <ng-container *ngTemplateOutlet=\"buttonIcon\" />\n }\n {{ descriptor.title }}\n @if (descriptor.iconPosition === iconPosition().POST) {\n <ng-container *ngTemplateOutlet=\"buttonIcon\" />\n }\n</ng-template>\n\n<ng-template #buttonIcon>\n @if (descriptor.iconResource) {\n <smart-icon [imageResource]=\"descriptor.iconResource\"></smart-icon>\n } @else {\n <smart-icon\n [icon]=\"descriptor.icon\"\n [color]=\"descriptor.iconColor ?? descriptor.color\"\n ></smart-icon>\n }\n</ng-template>\n", styles: [":host ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center;line-height:1;padding:.75rem 1rem}:host{height:fit-content;width:fit-content;padding:unset;margin:unset}:host ::ng-deep .mdc-button__label{display:flex;flex-direction:row;gap:1rem;align-items:center;justify-content:center}:host ::ng-deep .mdc-button{height:fit-content;min-height:var(--mdc-text-button-container-height)}:host ::ng-deep .mat-mdc-icon-button ::ng-deep img{width:unset;height:unset}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: UiBadgeComponent, selector: "ui-badge", inputs: ["descriptor", "inputValue"] }, { kind: "directive", type: SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }] }); }
|
|
3187
3197
|
}
|
|
3188
3198
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionButtonComponent, decorators: [{
|
|
3189
3199
|
type: Component,
|
|
3190
|
-
args: [{ selector: 'ui-action-button', template: "<ng-container *ngTemplateOutlet=\"buttonWithBadge\"></ng-container>\
|
|
3200
|
+
args: [{ selector: 'ui-action-button', template: "<ng-container *ngTemplateOutlet=\"buttonWithBadge\"></ng-container>\n\n<ng-template #buttonWithBadge>\n @if (descriptor && descriptor.badge) {\n <ui-badge [descriptor]=\"descriptor.badge\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </ui-badge>\n } @else {\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n }\n</ng-template>\n\n<ng-template #buttonTemplate>\n @if (compLib === componentLibrary.PRIMENG) {\n <button\n pButton\n pRipple\n [smartTooltip]=\"descriptor.tooltip\"\n [disabled]=\"!!disabled\"\n (click)=\"onActionClicked($event, mainActionModel)\"\n (dblclick)=\"onActionDoubleClicked($event)\"\n [autofocus]=\"false\"\n [ngStyle]=\"calcStyle(descriptor.style)\"\n [ngClass]=\"getCombinedClasses()\"\n class=\"{{ getbtnClass() }} {{ addedCssClass }}\"\n type=\"button\"\n [attr.data-testid]=\"code ?? null\"\n >\n <div *ngIf=\"isOnlyIcon(); then buttonIcon; else text\"></div>\n </button>\n } @else {\n <button\n mat-button\n [smartTooltip]=\"descriptor.tooltip\"\n [color]=\"descriptor.color\"\n [disabled]=\"!!disabled\"\n (click)=\"onActionClicked($event, mainActionModel)\"\n (dblclick)=\"onActionDoubleClicked($event)\"\n [ngStyle]=\"calcStyle(descriptor.style)\"\n [ngClass]=\"getCombinedClasses()\"\n class=\"{{ getbtnClass() }} {{ addedCssClass }}\"\n type=\"button\"\n [attr.data-testid]=\"code ?? null\"\n >\n <div *ngIf=\"isOnlyIcon(); then buttonIcon; else text\"></div>\n </button>\n }\n</ng-template>\n\n<ng-template #text>\n @if (descriptor.iconPosition === iconPosition().PRE) {\n <ng-container *ngTemplateOutlet=\"buttonIcon\" />\n }\n {{ descriptor.title }}\n @if (descriptor.iconPosition === iconPosition().POST) {\n <ng-container *ngTemplateOutlet=\"buttonIcon\" />\n }\n</ng-template>\n\n<ng-template #buttonIcon>\n @if (descriptor.iconResource) {\n <smart-icon [imageResource]=\"descriptor.iconResource\"></smart-icon>\n } @else {\n <smart-icon\n [icon]=\"descriptor.icon\"\n [color]=\"descriptor.iconColor ?? descriptor.color\"\n ></smart-icon>\n }\n</ng-template>\n", styles: [":host ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center;line-height:1;padding:.75rem 1rem}:host{height:fit-content;width:fit-content;padding:unset;margin:unset}:host ::ng-deep .mdc-button__label{display:flex;flex-direction:row;gap:1rem;align-items:center;justify-content:center}:host ::ng-deep .mdc-button{height:fit-content;min-height:var(--mdc-text-button-container-height)}:host ::ng-deep .mat-mdc-icon-button ::ng-deep img{width:unset;height:unset}\n"] }]
|
|
3191
3201
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: ComponentLibrary, decorators: [{
|
|
3192
3202
|
type: Inject,
|
|
3193
3203
|
args: [COMPONENT_LIBRARY]
|
|
@@ -3282,11 +3292,11 @@ class MessageDialogComponent {
|
|
|
3282
3292
|
return this.messageData.textType === MessageTextType.HTML;
|
|
3283
3293
|
}
|
|
3284
3294
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MessageDialogComponent, deps: [{ token: SmartViewContextService }, { token: COMPONENT_LIBRARY }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3285
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: MessageDialogComponent, selector: "app-message-dialog", ngImport: i0, template: "<div class=\"taskDialogContainer\" *ngIf=\"messageData\">\
|
|
3295
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: MessageDialogComponent, selector: "app-message-dialog", ngImport: i0, template: "<div class=\"taskDialogContainer\" *ngIf=\"messageData\">\n <h2 class=\"{{ messageData.type }}\">\n {{ messageData.header }}\n </h2>\n <p *ngIf=\"!isHtmlText()\" class=\"{{ messageData.type }}\">{{ messageData.text }}</p>\n <div *ngIf=\"isHtmlText()\" [innerHTML]=\"messageData.text\"></div>\n <div class=\"buttonsContainer\">\n <ui-action-button\n *ngFor=\"let button of buttons\"\n class=\"taskDialogButton\"\n [descriptor]=\"button\"\n (actionClick)=\"button.action()\"\n />\n </div>\n</div>\n", styles: [".taskDialogContainer{min-width:30vw;display:flex;flex-direction:column;gap:.5rem}.spacer{flex:1}.buttonsContainer{display:flex;flex-direction:row;gap:.5rem;justify-content:flex-end}h2,p{margin:0!important}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }] }); }
|
|
3286
3296
|
}
|
|
3287
3297
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MessageDialogComponent, decorators: [{
|
|
3288
3298
|
type: Component,
|
|
3289
|
-
args: [{ selector: 'app-message-dialog', template: "<div class=\"taskDialogContainer\" *ngIf=\"messageData\">\
|
|
3299
|
+
args: [{ selector: 'app-message-dialog', template: "<div class=\"taskDialogContainer\" *ngIf=\"messageData\">\n <h2 class=\"{{ messageData.type }}\">\n {{ messageData.header }}\n </h2>\n <p *ngIf=\"!isHtmlText()\" class=\"{{ messageData.type }}\">{{ messageData.text }}</p>\n <div *ngIf=\"isHtmlText()\" [innerHTML]=\"messageData.text\"></div>\n <div class=\"buttonsContainer\">\n <ui-action-button\n *ngFor=\"let button of buttons\"\n class=\"taskDialogButton\"\n [descriptor]=\"button\"\n (actionClick)=\"button.action()\"\n />\n </div>\n</div>\n", styles: [".taskDialogContainer{min-width:30vw;display:flex;flex-direction:column;gap:.5rem}.spacer{flex:1}.buttonsContainer{display:flex;flex-direction:row;gap:.5rem;justify-content:flex-end}h2,p{margin:0!important}\n"] }]
|
|
3290
3300
|
}], ctorParameters: () => [{ type: SmartViewContextService }, { type: ComponentLibrary, decorators: [{
|
|
3291
3301
|
type: Inject,
|
|
3292
3302
|
args: [COMPONENT_LIBRARY]
|
|
@@ -3738,6 +3748,18 @@ class SmartViewContextService {
|
|
|
3738
3748
|
await this.restoreViews(uuid);
|
|
3739
3749
|
await this.getAndSyncViewContext();
|
|
3740
3750
|
}
|
|
3751
|
+
/**
|
|
3752
|
+
* Hydrates the view-context state from an already-existing UUID provided
|
|
3753
|
+
* externally (e.g. by a native mobile shell via URL fragment). Unlike
|
|
3754
|
+
* `initialize(uuid)`, this method does NOT fall back to creating a fresh
|
|
3755
|
+
* viewContext if the backend rejects the UUID — the caller is expected to
|
|
3756
|
+
* surface the failure (typically via the bootstrap's `onStartError` hook).
|
|
3757
|
+
*/
|
|
3758
|
+
async initFromExistingViewContext(uuid) {
|
|
3759
|
+
this.setViewContextUuid(uuid);
|
|
3760
|
+
await this.getViewContext(uuid);
|
|
3761
|
+
await this.restoreViews(uuid);
|
|
3762
|
+
}
|
|
3741
3763
|
async initNewViewContext() {
|
|
3742
3764
|
if (this.initiNewContextRunning) {
|
|
3743
3765
|
return this.initiNewContextRunning.toPromise();
|
|
@@ -6348,11 +6370,11 @@ class SuccessSnackBarComponent {
|
|
|
6348
6370
|
});
|
|
6349
6371
|
}
|
|
6350
6372
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SuccessSnackBarComponent, deps: [{ token: MAT_SNACK_BAR_DATA }, { token: SmartViewContextService }, { token: UiActionDescriptorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6351
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SuccessSnackBarComponent, selector: "app-success-snack-bar", ngImport: i0, template: "<span class=\"successSnakBarContainer\" matSnackBarLabel> {{ text }} </span>\
|
|
6373
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SuccessSnackBarComponent, selector: "app-success-snack-bar", ngImport: i0, template: "<span class=\"successSnakBarContainer\" matSnackBarLabel> {{ text }} </span>\n", styles: ["::ng-deep .mat-mdc-snack-bar-container{text-align:center;border-radius:2rem}.successSnakBarContainer{color:#fff}\n"] }); }
|
|
6352
6374
|
}
|
|
6353
6375
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SuccessSnackBarComponent, decorators: [{
|
|
6354
6376
|
type: Component,
|
|
6355
|
-
args: [{ selector: "app-success-snack-bar", template: "<span class=\"successSnakBarContainer\" matSnackBarLabel> {{ text }} </span>\
|
|
6377
|
+
args: [{ selector: "app-success-snack-bar", template: "<span class=\"successSnakBarContainer\" matSnackBarLabel> {{ text }} </span>\n", styles: ["::ng-deep .mat-mdc-snack-bar-container{text-align:center;border-radius:2rem}.successSnakBarContainer{color:#fff}\n"] }]
|
|
6356
6378
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
6357
6379
|
type: Inject,
|
|
6358
6380
|
args: [MAT_SNACK_BAR_DATA]
|
|
@@ -6364,11 +6386,11 @@ class InvalidFieldsSnackBarComponent {
|
|
|
6364
6386
|
}
|
|
6365
6387
|
ngOnInit() { }
|
|
6366
6388
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: InvalidFieldsSnackBarComponent, deps: [{ token: MAT_SNACK_BAR_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6367
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: InvalidFieldsSnackBarComponent, selector: "app-invalid-fields-snack-bar", ngImport: i0, template: "<div class=\"invalidFieldsSnackBar\">\
|
|
6389
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: InvalidFieldsSnackBarComponent, selector: "app-invalid-fields-snack-bar", ngImport: i0, template: "<div class=\"invalidFieldsSnackBar\">\n <!-- <div class=\"invalidFieldsSnackBarContainer\" *ngIf=\"data.message\">\n <span class=\"successSnakBarContainer\" matSnackBarLabel>\n {{ data.message }}\n </span>\n </div> -->\n <div class=\"invalidFieldsSnackBarContainer\">\n <span class=\"invalidFieldsMessage\" matSnackBarLabel> Hi\u00E1nyos vagy hib\u00E1s adatok! </span>\n </div>\n</div>\n", styles: [".invalidFieldsSnackBar ::ng-deep .mat-mdc-snack-bar-container{text-align:center;border-radius:2rem}.invalidFieldsMessage{color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$4.MatSnackBarLabel, selector: "[matSnackBarLabel]" }] }); }
|
|
6368
6390
|
}
|
|
6369
6391
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: InvalidFieldsSnackBarComponent, decorators: [{
|
|
6370
6392
|
type: Component,
|
|
6371
|
-
args: [{ selector: 'app-invalid-fields-snack-bar', template: "<div class=\"invalidFieldsSnackBar\">\
|
|
6393
|
+
args: [{ selector: 'app-invalid-fields-snack-bar', template: "<div class=\"invalidFieldsSnackBar\">\n <!-- <div class=\"invalidFieldsSnackBarContainer\" *ngIf=\"data.message\">\n <span class=\"successSnakBarContainer\" matSnackBarLabel>\n {{ data.message }}\n </span>\n </div> -->\n <div class=\"invalidFieldsSnackBarContainer\">\n <span class=\"invalidFieldsMessage\" matSnackBarLabel> Hi\u00E1nyos vagy hib\u00E1s adatok! </span>\n </div>\n</div>\n", styles: [".invalidFieldsSnackBar ::ng-deep .mat-mdc-snack-bar-container{text-align:center;border-radius:2rem}.invalidFieldsMessage{color:#fff}\n"] }]
|
|
6372
6394
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
6373
6395
|
type: Inject,
|
|
6374
6396
|
args: [MAT_SNACK_BAR_DATA]
|
|
@@ -6845,11 +6867,11 @@ class MenuComponent {
|
|
|
6845
6867
|
});
|
|
6846
6868
|
}
|
|
6847
6869
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MenuComponent, deps: [{ token: UiMenuService }, { token: i2$2.Overlay }, { token: i0.ViewContainerRef }, { token: i2$2.OverlayPositionBuilder }, { token: COMPONENT_LIBRARY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6848
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: MenuComponent, selector: "ui-tiered-menu", inputs: { triggerAction: "triggerAction", isSubmenu: "isSubmenu" }, outputs: { actionClick: "actionClick", submenuOpened: "submenuOpened" }, host: { listeners: { "click": "onMenuClick($event)", "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "menuTemplate", first: true, predicate: ["menuTemplate"], descendants: true }, { propertyName: "submenuComponents", predicate: ["submenu"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (isSubmenu) {\
|
|
6870
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: MenuComponent, selector: "ui-tiered-menu", inputs: { triggerAction: "triggerAction", isSubmenu: "isSubmenu" }, outputs: { actionClick: "actionClick", submenuOpened: "submenuOpened" }, host: { listeners: { "click": "onMenuClick($event)", "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "menuTemplate", first: true, predicate: ["menuTemplate"], descendants: true }, { propertyName: "submenuComponents", predicate: ["submenu"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (isSubmenu) {\n <div class=\"submenu hoverEffect\" [class.activeSubmenu]=\"isOpen\" (mouseenter)=\"openMenu($event)\">\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\n <smart-icon [icon]=\"icon\" color=\"black\"></smart-icon>\n </div>\n} @else {\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\n}\n\n<ng-template #menuTemplate>\n <ul class=\"ui-tiered-menu\">\n <li *ngFor=\"let action of subActions\" class=\"hoverEffect\" [class.disabled]=\"action.disabled\">\n @if (action.subActions && action.subActions.length > 0) {\n <ui-tiered-menu\n #submenu\n [triggerAction]=\"action\"\n [isSubmenu]=\"true\"\n [subActions]=\"action.subActions!\"\n (actionClick)=\"actionClick.emit($event)\"\n (submenuOpened)=\"onSubmenuOpened(submenu)\"\n ></ui-tiered-menu>\n } @else {\n <ui-action-button\n [descriptor]=\"action.descriptor!\"\n [code]=\"action.code\"\n [disabled]=\"!!action.disabled\"\n (actionClick)=\"!action.subActions?.length && onActionClick(action)\"\n ></ui-action-button>\n }\n </li>\n </ul>\n</ng-template>\n\n<ng-template #triggerTempalte>\n <ui-action-button\n [descriptor]=\"triggerAction.descriptor!\"\n [code]=\"triggerAction.code\"\n [disabled]=\"!!triggerAction.disabled\"\n (actionClick)=\"toggleMenu($event.event)\"\n [class.submenuTrigger]=\"isSubmenu\"\n >\n </ui-action-button>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}ul,.ui-tiered-menu{top:100%;left:0;list-style:none;padding-left:0;margin:0;background:#fff;width:fit-content;box-shadow:2px 2px 8px #0003;z-index:1000;border-radius:5px;padding:.1rem}.submenuTrigger,.ui-tiered-menu ::ng-deep button{background-color:#fff;box-shadow:unset;border:unset;border-radius:unset;color:#000;width:100%;justify-content:flex-start}.hoverEffect:hover,.hoverEffect ::ng-deep button:hover{background-color:#f1f5f9}.hoverEffect.activeSubmenu,.hoverEffect.activeSubmenu ::ng-deep button{background-color:#f1f5f9}.ui-tiered-menu ::ng-deep ui-action-button,.ui-tiered-menu ::ng-deep ui-badge{width:100%}.ui-tiered-menu>li{position:relative}.submenu{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.submenu ::ng-deep ui-action-button{flex:1}.disabled{color:#aaa;cursor:not-allowed}.ui-tiered-menu ui-tiered-menu{width:100%}smart-icon{align-content:center}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "component", type: MenuComponent, selector: "ui-tiered-menu", inputs: ["triggerAction", "isSubmenu"], outputs: ["actionClick", "submenuOpened"] }] }); }
|
|
6849
6871
|
}
|
|
6850
6872
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MenuComponent, decorators: [{
|
|
6851
6873
|
type: Component,
|
|
6852
|
-
args: [{ selector: 'ui-tiered-menu', template: "@if (isSubmenu) {\
|
|
6874
|
+
args: [{ selector: 'ui-tiered-menu', template: "@if (isSubmenu) {\n <div class=\"submenu hoverEffect\" [class.activeSubmenu]=\"isOpen\" (mouseenter)=\"openMenu($event)\">\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\n <smart-icon [icon]=\"icon\" color=\"black\"></smart-icon>\n </div>\n} @else {\n <ng-container *ngTemplateOutlet=\"triggerTempalte\"></ng-container>\n}\n\n<ng-template #menuTemplate>\n <ul class=\"ui-tiered-menu\">\n <li *ngFor=\"let action of subActions\" class=\"hoverEffect\" [class.disabled]=\"action.disabled\">\n @if (action.subActions && action.subActions.length > 0) {\n <ui-tiered-menu\n #submenu\n [triggerAction]=\"action\"\n [isSubmenu]=\"true\"\n [subActions]=\"action.subActions!\"\n (actionClick)=\"actionClick.emit($event)\"\n (submenuOpened)=\"onSubmenuOpened(submenu)\"\n ></ui-tiered-menu>\n } @else {\n <ui-action-button\n [descriptor]=\"action.descriptor!\"\n [code]=\"action.code\"\n [disabled]=\"!!action.disabled\"\n (actionClick)=\"!action.subActions?.length && onActionClick(action)\"\n ></ui-action-button>\n }\n </li>\n </ul>\n</ng-template>\n\n<ng-template #triggerTempalte>\n <ui-action-button\n [descriptor]=\"triggerAction.descriptor!\"\n [code]=\"triggerAction.code\"\n [disabled]=\"!!triggerAction.disabled\"\n (actionClick)=\"toggleMenu($event.event)\"\n [class.submenuTrigger]=\"isSubmenu\"\n >\n </ui-action-button>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}ul,.ui-tiered-menu{top:100%;left:0;list-style:none;padding-left:0;margin:0;background:#fff;width:fit-content;box-shadow:2px 2px 8px #0003;z-index:1000;border-radius:5px;padding:.1rem}.submenuTrigger,.ui-tiered-menu ::ng-deep button{background-color:#fff;box-shadow:unset;border:unset;border-radius:unset;color:#000;width:100%;justify-content:flex-start}.hoverEffect:hover,.hoverEffect ::ng-deep button:hover{background-color:#f1f5f9}.hoverEffect.activeSubmenu,.hoverEffect.activeSubmenu ::ng-deep button{background-color:#f1f5f9}.ui-tiered-menu ::ng-deep ui-action-button,.ui-tiered-menu ::ng-deep ui-badge{width:100%}.ui-tiered-menu>li{position:relative}.submenu{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.submenu ::ng-deep ui-action-button{flex:1}.disabled{color:#aaa;cursor:not-allowed}.ui-tiered-menu ui-tiered-menu{width:100%}smart-icon{align-content:center}\n"] }]
|
|
6853
6875
|
}], ctorParameters: () => [{ type: UiMenuService }, { type: i2$2.Overlay }, { type: i0.ViewContainerRef }, { type: i2$2.OverlayPositionBuilder }, { type: ComponentLibrary, decorators: [{
|
|
6854
6876
|
type: Inject,
|
|
6855
6877
|
args: [COMPONENT_LIBRARY]
|
|
@@ -7157,11 +7179,11 @@ class UiActionToolbarComponent {
|
|
|
7157
7179
|
return this.toolbarPropertes?.direction === ToolbarDirection.VERTICAL;
|
|
7158
7180
|
}
|
|
7159
7181
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionToolbarComponent, deps: [{ token: UiActionService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: COMPONENT_LIBRARY }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7160
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: { uiActionModels: "uiActionModels", uiActionDescriptorService: "uiActionDescriptorService", id: "id", scrollOnWrap: "scrollOnWrap", toolbarPropertes: "toolbarPropertes" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (isScrollable && scrollOnWrap) {\
|
|
7182
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: { uiActionModels: "uiActionModels", uiActionDescriptorService: "uiActionDescriptorService", id: "id", scrollOnWrap: "scrollOnWrap", toolbarPropertes: "toolbarPropertes" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonLeft\"\n (actionClick)=\"scrollLeft()\"\n (mousedown)=\"scrollStart('left')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('left')\"\n (touchend)=\"stopScroll()\"\n />\n}\n\n<div\n #container\n class=\"uiActionButtonsContainer\"\n [ngClass]=\"{\n scrollableContent: scrollOnWrap,\n verticalToolbar: isVertical,\n }\"\n>\n <ng-container *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions; trackBy: trackByFn\">\n @if (uiActionModel.uiAction.subActions && uiActionModel.uiAction.subActions.length > 0) {\n <ui-tiered-menu\n #menu\n [triggerAction]=\"uiActionModel.uiAction\"\n [subActions]=\"uiActionModel.uiAction.subActions!\"\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\n ></ui-tiered-menu>\n } @else {\n <ui-action-button\n [descriptor]=\"uiActionModel.descriptor!\"\n [code]=\"uiActionModel.uiAction.code\"\n [disabled]=\"!!uiActionModel.uiAction.disabled\"\n [addedCssClass]=\"uiActionModel.cssClass\"\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\n (actionDoubleClick)=\"onActionDoubleClicked($event, uiActionModel)\"\n >\n </ui-action-button>\n }\n </ng-container>\n</div>\n\n@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonRight\"\n (actionClick)=\"scrollRight()\"\n (mousedown)=\"scrollStart('right')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('right')\"\n (touchend)=\"stopScroll()\"\n />\n}\n", styles: [":host:has(.uiActionButtonsContainer.scrollableContent){display:flex;flex-direction:row;justify-content:space-between;gap:.5rem;width:100%;align-items:center}.uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}.scrollableContent{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;display:flex;scrollbar-width:none;padding:.5rem 0;align-items:center}.scrollableContent::-webkit-scrollbar{display:none!important}.verticalToolbar{display:flex;flex-direction:column}.verticalToolbar ::ng-deep ui-action-button,.verticalToolbar ::ng-deep button{width:100%;justify-content:flex-start}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "component", type: MenuComponent, selector: "ui-tiered-menu", inputs: ["triggerAction", "isSubmenu"], outputs: ["actionClick", "submenuOpened"] }] }); }
|
|
7161
7183
|
}
|
|
7162
7184
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionToolbarComponent, decorators: [{
|
|
7163
7185
|
type: Component,
|
|
7164
|
-
args: [{ selector: 'smart-ui-action-toolbar', template: "@if (isScrollable && scrollOnWrap) {\
|
|
7186
|
+
args: [{ selector: 'smart-ui-action-toolbar', template: "@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonLeft\"\n (actionClick)=\"scrollLeft()\"\n (mousedown)=\"scrollStart('left')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('left')\"\n (touchend)=\"stopScroll()\"\n />\n}\n\n<div\n #container\n class=\"uiActionButtonsContainer\"\n [ngClass]=\"{\n scrollableContent: scrollOnWrap,\n verticalToolbar: isVertical,\n }\"\n>\n <ng-container *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions; trackBy: trackByFn\">\n @if (uiActionModel.uiAction.subActions && uiActionModel.uiAction.subActions.length > 0) {\n <ui-tiered-menu\n #menu\n [triggerAction]=\"uiActionModel.uiAction\"\n [subActions]=\"uiActionModel.uiAction.subActions!\"\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\n ></ui-tiered-menu>\n } @else {\n <ui-action-button\n [descriptor]=\"uiActionModel.descriptor!\"\n [code]=\"uiActionModel.uiAction.code\"\n [disabled]=\"!!uiActionModel.uiAction.disabled\"\n [addedCssClass]=\"uiActionModel.cssClass\"\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\n (actionDoubleClick)=\"onActionDoubleClicked($event, uiActionModel)\"\n >\n </ui-action-button>\n }\n </ng-container>\n</div>\n\n@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonRight\"\n (actionClick)=\"scrollRight()\"\n (mousedown)=\"scrollStart('right')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('right')\"\n (touchend)=\"stopScroll()\"\n />\n}\n", styles: [":host:has(.uiActionButtonsContainer.scrollableContent){display:flex;flex-direction:row;justify-content:space-between;gap:.5rem;width:100%;align-items:center}.uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}.scrollableContent{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;display:flex;scrollbar-width:none;padding:.5rem 0;align-items:center}.scrollableContent::-webkit-scrollbar{display:none!important}.verticalToolbar{display:flex;flex-direction:column}.verticalToolbar ::ng-deep ui-action-button,.verticalToolbar ::ng-deep button{width:100%;justify-content:flex-start}\n"] }]
|
|
7165
7187
|
}], ctorParameters: () => [{ type: UiActionService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: ComponentLibrary, decorators: [{
|
|
7166
7188
|
type: Inject,
|
|
7167
7189
|
args: [COMPONENT_LIBRARY]
|
|
@@ -7340,11 +7362,11 @@ class SmartfileuploaderComponent {
|
|
|
7340
7362
|
};
|
|
7341
7363
|
}
|
|
7342
7364
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartfileuploaderComponent, deps: [{ token: i1$4.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7343
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartfileuploaderComponent, selector: "smartfileuploader", inputs: { uploadCallback: "uploadCallback", fileFormats: "fileFormats", maxSizeMb: "maxSizeMb", i18n: "i18n", useIconButton: "useIconButton", isMultiple: "isMultiple", autoUpload: "autoUpload", isDisabled: "isDisabled" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div\
|
|
7365
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartfileuploaderComponent, selector: "smartfileuploader", inputs: { uploadCallback: "uploadCallback", fileFormats: "fileFormats", maxSizeMb: "maxSizeMb", i18n: "i18n", useIconButton: "useIconButton", isMultiple: "isMultiple", autoUpload: "autoUpload", isDisabled: "isDisabled" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div\n class=\"container\"\n [ngClass]=\"{ disabledWidget: isDisabled }\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n [class.dragover]=\"isDragOver\"\n>\n <div class=\"fileContainer\" (click)=\"fileInput.click()\">\n <input\n #fileInput\n id=\"addFile\"\n placeholder=\"fileInput\"\n type=\"file\"\n (change)=\"getFile($event)\"\n class=\"file\"\n accept=\"{{ fileFormats?.join(', ') }}\"\n [size]=\"maxSizeMb\"\n [multiple]=\"isMultiple\"\n [disabled]=\"isDisabled\"\n style=\"display: none\"\n />\n <div class=\"fileUploadContentContainer\">\n <div class=\"icon\">\n <mat-label *ngIf=\"useIconButton\" class=\"addFileButton\">\n <mat-icon color=\"primary\" class=\"addCircle\">add_circle</mat-icon>\n </mat-label>\n <button *ngIf=\"!useIconButton\" mat-raised-button color=\"primary\" class=\"addFileButton\">\n {{ i18n!.addFile }}\n </button>\n </div>\n <div class=\"labels\">\n <mat-label *ngIf=\"useIconButton\" class=\"label primary title\">\n {{ i18n!.addFile }}\n </mat-label>\n <mat-label class=\"label secondary\"> {{ i18n!.browseOrDrag }} </mat-label>\n <mat-label class=\"subLabel primary\"> {{ i18n!.maxSize }} </mat-label>\n <mat-label class=\"subLabel primary\"> {{ i18n!.formats }} </mat-label>\n </div>\n <div class=\"uploadButton\" *ngIf=\"files.length\">\n <ui-action-button (actionClick)=\"uploadFile()\" [descriptor]=\"uploadButton\">\n </ui-action-button>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"errors.length\" class=\"errorMessage\">\n <smart-icon [icon]=\"'error'\" [color]=\"'warn'\"></smart-icon>\n <div class=\"errors\">\n <span *ngFor=\"let error of errors\">{{ error }}</span>\n </div>\n </div>\n\n <div *ngIf=\"files.length\" class=\"uploadedFilesContainer\">\n <div *ngFor=\"let file of files; let i = index\" class=\"uploadedFile\">\n <ng-container *ngIf=\"filePreviewUrl(file); else fileIcon\">\n <img [src]=\"filePreviewUrl(file)\" [alt]=\"file.name\" width=\"50\" height=\"50\" />\n </ng-container>\n <ng-template #fileIcon>\n <smart-icon [icon]=\"'insert_drive_file'\"></smart-icon>\n </ng-template>\n\n <div class=\"fileData\">\n <div class=\"fileDataContainer\">\n <span class=\"fileName\">{{ file.name }}</span>\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\n </div>\n </div>\n\n <div class=\"fileActions\">\n <smart-icon class=\"downloadIcon\" icon=\"download\" (click)=\"downloadFile(file)\"></smart-icon>\n <smart-icon class=\"removeIcon\" icon=\"delete\" (click)=\"remove(i)\"></smart-icon>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}.container{display:flex;flex-direction:column;border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileContainer{cursor:pointer;padding:1rem;display:flex;flex-direction:column}.fileContainer:hover{background-color:rgb(from var(--border-color) r g b / .1)}.disabledWidget ::ng-deep .fileContainer:hover{background-color:unset;cursor:unset}.disabledWidget ::ng-deep *{opacity:.85}.dragover{background-color:rgb(from var(--border-color) r g b / .1)}.fileUploadContentContainer{display:flex;flex-direction:row;gap:1rem}.icon mat-icon{font-size:3rem;width:unset;height:unset}.icon{align-content:center}.labels{flex:1;display:flex;flex-direction:column;justify-content:center;width:fit-content}.uploadButton{align-content:center}.primary{color:var(--primary-color)}.secondary{color:var(--gray)}.label{margin:unset}.subLabel{font-size:smaller}.title{padding-bottom:.3rem}.errorMessage,.uploadedFilesContainer{border-top:2px solid var(--border-color)}.errorMessage{display:flex;flex-direction:row;align-items:center;color:var(--warninig-color);padding:.5rem 1rem;gap:1rem}.errorMessage ::ng-deep mat-icon{color:var(--warninig-color)}.errors{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;border-bottom:1px solid #e0e0e0;gap:1rem}.uploadedFile:last-child{border-bottom:none}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep .pi{width:unset!important}.removeIcon ::ng-deep i,.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep .pi,.downloadIcon ::ng-deep .pi{font-size:1.5rem!important}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon:hover,.downloadIcon:hover{cursor:pointer}smart-icon{display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "directive", type: i11.MatLabel, selector: "mat-label" }, { kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }] }); }
|
|
7344
7366
|
}
|
|
7345
7367
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartfileuploaderComponent, decorators: [{
|
|
7346
7368
|
type: Component,
|
|
7347
|
-
args: [{ selector: 'smartfileuploader', template: "<div\
|
|
7369
|
+
args: [{ selector: 'smartfileuploader', template: "<div\n class=\"container\"\n [ngClass]=\"{ disabledWidget: isDisabled }\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n [class.dragover]=\"isDragOver\"\n>\n <div class=\"fileContainer\" (click)=\"fileInput.click()\">\n <input\n #fileInput\n id=\"addFile\"\n placeholder=\"fileInput\"\n type=\"file\"\n (change)=\"getFile($event)\"\n class=\"file\"\n accept=\"{{ fileFormats?.join(', ') }}\"\n [size]=\"maxSizeMb\"\n [multiple]=\"isMultiple\"\n [disabled]=\"isDisabled\"\n style=\"display: none\"\n />\n <div class=\"fileUploadContentContainer\">\n <div class=\"icon\">\n <mat-label *ngIf=\"useIconButton\" class=\"addFileButton\">\n <mat-icon color=\"primary\" class=\"addCircle\">add_circle</mat-icon>\n </mat-label>\n <button *ngIf=\"!useIconButton\" mat-raised-button color=\"primary\" class=\"addFileButton\">\n {{ i18n!.addFile }}\n </button>\n </div>\n <div class=\"labels\">\n <mat-label *ngIf=\"useIconButton\" class=\"label primary title\">\n {{ i18n!.addFile }}\n </mat-label>\n <mat-label class=\"label secondary\"> {{ i18n!.browseOrDrag }} </mat-label>\n <mat-label class=\"subLabel primary\"> {{ i18n!.maxSize }} </mat-label>\n <mat-label class=\"subLabel primary\"> {{ i18n!.formats }} </mat-label>\n </div>\n <div class=\"uploadButton\" *ngIf=\"files.length\">\n <ui-action-button (actionClick)=\"uploadFile()\" [descriptor]=\"uploadButton\">\n </ui-action-button>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"errors.length\" class=\"errorMessage\">\n <smart-icon [icon]=\"'error'\" [color]=\"'warn'\"></smart-icon>\n <div class=\"errors\">\n <span *ngFor=\"let error of errors\">{{ error }}</span>\n </div>\n </div>\n\n <div *ngIf=\"files.length\" class=\"uploadedFilesContainer\">\n <div *ngFor=\"let file of files; let i = index\" class=\"uploadedFile\">\n <ng-container *ngIf=\"filePreviewUrl(file); else fileIcon\">\n <img [src]=\"filePreviewUrl(file)\" [alt]=\"file.name\" width=\"50\" height=\"50\" />\n </ng-container>\n <ng-template #fileIcon>\n <smart-icon [icon]=\"'insert_drive_file'\"></smart-icon>\n </ng-template>\n\n <div class=\"fileData\">\n <div class=\"fileDataContainer\">\n <span class=\"fileName\">{{ file.name }}</span>\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\n </div>\n </div>\n\n <div class=\"fileActions\">\n <smart-icon class=\"downloadIcon\" icon=\"download\" (click)=\"downloadFile(file)\"></smart-icon>\n <smart-icon class=\"removeIcon\" icon=\"delete\" (click)=\"remove(i)\"></smart-icon>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}.container{display:flex;flex-direction:column;border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileContainer{cursor:pointer;padding:1rem;display:flex;flex-direction:column}.fileContainer:hover{background-color:rgb(from var(--border-color) r g b / .1)}.disabledWidget ::ng-deep .fileContainer:hover{background-color:unset;cursor:unset}.disabledWidget ::ng-deep *{opacity:.85}.dragover{background-color:rgb(from var(--border-color) r g b / .1)}.fileUploadContentContainer{display:flex;flex-direction:row;gap:1rem}.icon mat-icon{font-size:3rem;width:unset;height:unset}.icon{align-content:center}.labels{flex:1;display:flex;flex-direction:column;justify-content:center;width:fit-content}.uploadButton{align-content:center}.primary{color:var(--primary-color)}.secondary{color:var(--gray)}.label{margin:unset}.subLabel{font-size:smaller}.title{padding-bottom:.3rem}.errorMessage,.uploadedFilesContainer{border-top:2px solid var(--border-color)}.errorMessage{display:flex;flex-direction:row;align-items:center;color:var(--warninig-color);padding:.5rem 1rem;gap:1rem}.errorMessage ::ng-deep mat-icon{color:var(--warninig-color)}.errors{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;border-bottom:1px solid #e0e0e0;gap:1rem}.uploadedFile:last-child{border-bottom:none}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep .pi{width:unset!important}.removeIcon ::ng-deep i,.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep .pi,.downloadIcon ::ng-deep .pi{font-size:1.5rem!important}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon:hover,.downloadIcon:hover{cursor:pointer}smart-icon{display:flex;align-items:center}\n"] }]
|
|
7348
7370
|
}], ctorParameters: () => [{ type: i1$4.MatSnackBar }], propDecorators: { fileInput: [{
|
|
7349
7371
|
type: ViewChild,
|
|
7350
7372
|
args: ['fileInput']
|
|
@@ -7581,11 +7603,11 @@ class VoiceRecordWidgetComponent {
|
|
|
7581
7603
|
});
|
|
7582
7604
|
}
|
|
7583
7605
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: VoiceRecordWidgetComponent, deps: [{ token: COMPONENT_LIBRARY, optional: true }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7584
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: VoiceRecordWidgetComponent, selector: "voice-record-widget", inputs: { openDirection: "openDirection" }, outputs: { recordingSaved: "recordingSaved" }, viewQueries: [{ propertyName: "waveformRef", first: true, predicate: ["waveform"], descendants: true }, { propertyName: "mainButton", first: true, predicate: ["mainButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\
|
|
7606
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: VoiceRecordWidgetComponent, selector: "voice-record-widget", inputs: { openDirection: "openDirection" }, outputs: { recordingSaved: "recordingSaved" }, viewQueries: [{ propertyName: "waveformRef", first: true, predicate: ["waveform"], descendants: true }, { propertyName: "mainButton", first: true, predicate: ["mainButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"recorderContainer\"\n [class.direction-left]=\"isLeftDirection\"\n [class.direction-right]=\"!isLeftDirection\"\n [class.active]=\"isWaveformOpen || isRecording || !!recordedBlob\"\n [class.isRecording]=\"isRecording\"\n [class.hasRecording]=\"recordedBlob\"\n>\n <div class=\"recorderMain\">\n <div class=\"recorderToolbar\">\n <!-- Start Recording -->\n <ui-action-button\n class=\"mainButton\"\n #mainButton\n *ngIf=\"!isRecording\"\n [descriptor]=\"micButton\"\n (actionClick)=\"startRecording()\"\n >\n </ui-action-button>\n\n <!-- Stop Recording -->\n <ui-action-button\n class=\"mainButton\"\n #mainButton\n *ngIf=\"isRecording\"\n [descriptor]=\"stopButton\"\n (actionClick)=\"stopRecording()\"\n >\n </ui-action-button>\n\n <!-- Save Recording -->\n <ui-action-button\n class=\"mainButton\"\n *ngIf=\"recordedBlob\"\n [descriptor]=\"saveButton\"\n (actionClick)=\"saveRecording()\"\n >\n </ui-action-button>\n\n <!-- Start Play -->\n <ui-action-button\n class=\"mainButton\"\n *ngIf=\"recordedBlob && !isPlaying\"\n [descriptor]=\"playButton\"\n (actionClick)=\"replayRecording()\"\n ></ui-action-button>\n\n <!-- Stop Play -->\n <ui-action-button\n class=\"mainButton\"\n *ngIf=\"recordedBlob && isPlaying\"\n [descriptor]=\"stopPlaybackButton\"\n (actionClick)=\"replayRecording()\"\n ></ui-action-button>\n\n @if (isRecording) {\n <div class=\"progress\">{{ time }}</div>\n }\n </div>\n\n <div class=\"waveformBand\" [class.open]=\"isWaveformOpen || isRecording || !!recordedBlob\">\n <div class=\"waveformGrid\"></div>\n <div class=\"waveform\" #waveform></div>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;width:100%;min-width:0}:host ::ng-deep .waveform{height:unset!important}.recorderContainer{display:flex;flex-direction:row;justify-content:space-between;width:100%;min-width:0;align-items:center;gap:.5rem}.active ::ng-deep .recorderToolbar{border:1px solid #e5e7eb;border-radius:.5rem}.isRecording ::ng-deep .recorderToolbar{padding-right:1rem}.recorderToolbar ::ng-deep .sb4-red,.recorderToolbar ::ng-deep .sb4-primary{border:1px solid #e5e7eb;box-shadow:unset}.active ::ng-deep .recorderToolbar ::ng-deep .sb4-red,.active ::ng-deep .recorderToolbar ::ng-deep .sb4-primary{border:unset}.mainButton ::ng-deep .sb4-red,.mainButton ::ng-deep .sb4-primary{padding:.5rem .75rem}.recorderMain{display:flex;align-items:center;min-width:0;flex:1}.direction-right .recorderMain{flex-direction:row}.direction-left .recorderMain{flex-direction:row-reverse}.waveform{width:100%;height:45px}.waveformBand{position:relative;display:grid;align-items:center;width:0;max-width:0;min-width:0;opacity:0;overflow:hidden;border-radius:5px;flex:1 1 0;transform:scaleX(.96);will-change:max-width,opacity,transform,margin;transition:max-width .22s ease,opacity .18s ease,margin .22s ease,transform .22s ease}.waveformBand.open{min-width:35px;max-width:100%;opacity:1;transform:scaleX(1)}.direction-right .waveformBand{margin-left:0}.direction-left .waveformBand{margin-right:0}.direction-right .waveformBand.open{margin-left:.45rem}.direction-left .waveformBand.open{margin-right:.45rem}.waveformGrid{position:absolute;inset:0;border:1px solid #e5e7eb;border-radius:.5rem;background:repeating-linear-gradient(to right,rgba(148,163,184,.35) 0,rgba(148,163,184,.35) 2px,transparent 2px,transparent 8px),linear-gradient(to bottom,#94a3b814,#94a3b805);pointer-events:none}.recorderToolbar{background-color:#fff;display:flex;flex-direction:row;align-items:center}.progress{align-content:center;font-size:1rem;height:100%;color:#6b7280}.hasRecording ::ng-deep .recorderToolbar ui-action-button{border-right:1px solid #e5e7eb}.hasRecording ::ng-deep .recorderToolbar ui-action-button:last-child{border-right:unset}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }] }); }
|
|
7585
7607
|
}
|
|
7586
7608
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: VoiceRecordWidgetComponent, decorators: [{
|
|
7587
7609
|
type: Component,
|
|
7588
|
-
args: [{ selector: 'voice-record-widget', template: "<div\
|
|
7610
|
+
args: [{ selector: 'voice-record-widget', template: "<div\n class=\"recorderContainer\"\n [class.direction-left]=\"isLeftDirection\"\n [class.direction-right]=\"!isLeftDirection\"\n [class.active]=\"isWaveformOpen || isRecording || !!recordedBlob\"\n [class.isRecording]=\"isRecording\"\n [class.hasRecording]=\"recordedBlob\"\n>\n <div class=\"recorderMain\">\n <div class=\"recorderToolbar\">\n <!-- Start Recording -->\n <ui-action-button\n class=\"mainButton\"\n #mainButton\n *ngIf=\"!isRecording\"\n [descriptor]=\"micButton\"\n (actionClick)=\"startRecording()\"\n >\n </ui-action-button>\n\n <!-- Stop Recording -->\n <ui-action-button\n class=\"mainButton\"\n #mainButton\n *ngIf=\"isRecording\"\n [descriptor]=\"stopButton\"\n (actionClick)=\"stopRecording()\"\n >\n </ui-action-button>\n\n <!-- Save Recording -->\n <ui-action-button\n class=\"mainButton\"\n *ngIf=\"recordedBlob\"\n [descriptor]=\"saveButton\"\n (actionClick)=\"saveRecording()\"\n >\n </ui-action-button>\n\n <!-- Start Play -->\n <ui-action-button\n class=\"mainButton\"\n *ngIf=\"recordedBlob && !isPlaying\"\n [descriptor]=\"playButton\"\n (actionClick)=\"replayRecording()\"\n ></ui-action-button>\n\n <!-- Stop Play -->\n <ui-action-button\n class=\"mainButton\"\n *ngIf=\"recordedBlob && isPlaying\"\n [descriptor]=\"stopPlaybackButton\"\n (actionClick)=\"replayRecording()\"\n ></ui-action-button>\n\n @if (isRecording) {\n <div class=\"progress\">{{ time }}</div>\n }\n </div>\n\n <div class=\"waveformBand\" [class.open]=\"isWaveformOpen || isRecording || !!recordedBlob\">\n <div class=\"waveformGrid\"></div>\n <div class=\"waveform\" #waveform></div>\n </div>\n </div>\n</div>\n", styles: [":host{display:block;width:100%;min-width:0}:host ::ng-deep .waveform{height:unset!important}.recorderContainer{display:flex;flex-direction:row;justify-content:space-between;width:100%;min-width:0;align-items:center;gap:.5rem}.active ::ng-deep .recorderToolbar{border:1px solid #e5e7eb;border-radius:.5rem}.isRecording ::ng-deep .recorderToolbar{padding-right:1rem}.recorderToolbar ::ng-deep .sb4-red,.recorderToolbar ::ng-deep .sb4-primary{border:1px solid #e5e7eb;box-shadow:unset}.active ::ng-deep .recorderToolbar ::ng-deep .sb4-red,.active ::ng-deep .recorderToolbar ::ng-deep .sb4-primary{border:unset}.mainButton ::ng-deep .sb4-red,.mainButton ::ng-deep .sb4-primary{padding:.5rem .75rem}.recorderMain{display:flex;align-items:center;min-width:0;flex:1}.direction-right .recorderMain{flex-direction:row}.direction-left .recorderMain{flex-direction:row-reverse}.waveform{width:100%;height:45px}.waveformBand{position:relative;display:grid;align-items:center;width:0;max-width:0;min-width:0;opacity:0;overflow:hidden;border-radius:5px;flex:1 1 0;transform:scaleX(.96);will-change:max-width,opacity,transform,margin;transition:max-width .22s ease,opacity .18s ease,margin .22s ease,transform .22s ease}.waveformBand.open{min-width:35px;max-width:100%;opacity:1;transform:scaleX(1)}.direction-right .waveformBand{margin-left:0}.direction-left .waveformBand{margin-right:0}.direction-right .waveformBand.open{margin-left:.45rem}.direction-left .waveformBand.open{margin-right:.45rem}.waveformGrid{position:absolute;inset:0;border:1px solid #e5e7eb;border-radius:.5rem;background:repeating-linear-gradient(to right,rgba(148,163,184,.35) 0,rgba(148,163,184,.35) 2px,transparent 2px,transparent 8px),linear-gradient(to bottom,#94a3b814,#94a3b805);pointer-events:none}.recorderToolbar{background-color:#fff;display:flex;flex-direction:row;align-items:center}.progress{align-content:center;font-size:1rem;height:100%;color:#6b7280}.hasRecording ::ng-deep .recorderToolbar ui-action-button{border-right:1px solid #e5e7eb}.hasRecording ::ng-deep .recorderToolbar ui-action-button:last-child{border-right:unset}\n"] }]
|
|
7589
7611
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
7590
7612
|
type: Inject,
|
|
7591
7613
|
args: [COMPONENT_LIBRARY]
|
|
@@ -7768,11 +7790,11 @@ class PhotoCaptureWidgetComponent {
|
|
|
7768
7790
|
}
|
|
7769
7791
|
}
|
|
7770
7792
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PhotoCaptureWidgetComponent, deps: [{ token: COMPONENT_LIBRARY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7771
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PhotoCaptureWidgetComponent, selector: "photo-capture-widget", inputs: { maxFileSize: "maxFileSize" }, outputs: { photoCaptured: "photoCaptured" }, viewQueries: [{ propertyName: "videoRef", first: true, predicate: ["video"], descendants: true }, { propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true }, { propertyName: "fileInputRef", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div class=\"photoWidgetContainer\">\
|
|
7793
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PhotoCaptureWidgetComponent, selector: "photo-capture-widget", inputs: { maxFileSize: "maxFileSize" }, outputs: { photoCaptured: "photoCaptured" }, viewQueries: [{ propertyName: "videoRef", first: true, predicate: ["video"], descendants: true }, { propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true }, { propertyName: "fileInputRef", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div class=\"photoWidgetContainer\">\n <ng-container *ngIf=\"!isMobile()\">\n <video #video autoplay [hidden]=\"isCaptured || !cameraActive\"></video>\n <canvas #canvas [hidden]=\"!isCaptured || cameraActive\"></canvas>\n\n <ng-container *ngIf=\"!cameraActive && !isCaptured\">\n <p class=\"message\">Kapcsolja be a kamer\u00E1t a k\u00E9p k\u00E9sz\u00EDt\u00E9s\u00E9hez!</p>\n </ng-container>\n\n <div class=\"controls\">\n <!-- START CAMERA -->\n <ui-action-button [descriptor]=\"toggleCameraButton\" (actionClick)=\"toggleCamera()\">\n </ui-action-button>\n\n <!-- CAPTURE CAMERA -->\n <ui-action-button\n [disabled]=\"!cameraActive\"\n [descriptor]=\"captureButton\"\n (actionClick)=\"capturePhoto()\"\n >\n </ui-action-button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isMobile()\">\n <div class=\"controls\">\n <input\n #fileInput\n type=\"file\"\n accept=\"image/*\"\n capture=\"environment\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none\"\n />\n\n <ui-action-button [descriptor]=\"captureButton\" (actionClick)=\"fileInput.click()\">\n </ui-action-button>\n </div>\n </ng-container>\n</div>\n", styles: [".photoWidgetContainer{border-radius:5px;width:100%;max-width:100%;display:flex;flex-direction:column;justify-content:center;border:1px solid #dee2e6}.message{text-align:center;color:#6b7280}video,canvas{border-top-right-radius:5px;border-top-left-radius:5px;width:100%}.controls{padding:.5rem;display:flex;gap:1rem;flex-direction:row;justify-content:center;background:#f8f9fa;border-top:1px solid #dee2e6;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.controls ::ng-deep button{border-radius:3px}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }] }); }
|
|
7772
7794
|
}
|
|
7773
7795
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PhotoCaptureWidgetComponent, decorators: [{
|
|
7774
7796
|
type: Component,
|
|
7775
|
-
args: [{ selector: 'photo-capture-widget', template: "<div class=\"photoWidgetContainer\">\
|
|
7797
|
+
args: [{ selector: 'photo-capture-widget', template: "<div class=\"photoWidgetContainer\">\n <ng-container *ngIf=\"!isMobile()\">\n <video #video autoplay [hidden]=\"isCaptured || !cameraActive\"></video>\n <canvas #canvas [hidden]=\"!isCaptured || cameraActive\"></canvas>\n\n <ng-container *ngIf=\"!cameraActive && !isCaptured\">\n <p class=\"message\">Kapcsolja be a kamer\u00E1t a k\u00E9p k\u00E9sz\u00EDt\u00E9s\u00E9hez!</p>\n </ng-container>\n\n <div class=\"controls\">\n <!-- START CAMERA -->\n <ui-action-button [descriptor]=\"toggleCameraButton\" (actionClick)=\"toggleCamera()\">\n </ui-action-button>\n\n <!-- CAPTURE CAMERA -->\n <ui-action-button\n [disabled]=\"!cameraActive\"\n [descriptor]=\"captureButton\"\n (actionClick)=\"capturePhoto()\"\n >\n </ui-action-button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isMobile()\">\n <div class=\"controls\">\n <input\n #fileInput\n type=\"file\"\n accept=\"image/*\"\n capture=\"environment\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none\"\n />\n\n <ui-action-button [descriptor]=\"captureButton\" (actionClick)=\"fileInput.click()\">\n </ui-action-button>\n </div>\n </ng-container>\n</div>\n", styles: [".photoWidgetContainer{border-radius:5px;width:100%;max-width:100%;display:flex;flex-direction:column;justify-content:center;border:1px solid #dee2e6}.message{text-align:center;color:#6b7280}video,canvas{border-top-right-radius:5px;border-top-left-radius:5px;width:100%}.controls{padding:.5rem;display:flex;gap:1rem;flex-direction:row;justify-content:center;background:#f8f9fa;border-top:1px solid #dee2e6;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.controls ::ng-deep button{border-radius:3px}\n"] }]
|
|
7776
7798
|
}], ctorParameters: () => [{ type: ComponentLibrary, decorators: [{
|
|
7777
7799
|
type: Inject,
|
|
7778
7800
|
args: [COMPONENT_LIBRARY]
|
|
@@ -7853,11 +7875,11 @@ class PrimeFileUploaderComponent {
|
|
|
7853
7875
|
};
|
|
7854
7876
|
}
|
|
7855
7877
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrimeFileUploaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7856
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: PrimeFileUploaderComponent, selector: "prime-file-uploader", inputs: { isMultiple: "isMultiple", autoUpload: "autoUpload", maxSizeMb: "maxSizeMb", fileFormats: "fileFormats", title: "title", subTitle: "subTitle", isDisabled: "isDisabled" }, outputs: { uploadFilesEvent: "uploadFilesEvent" }, viewQueries: [{ propertyName: "fileUploadPrime", first: true, predicate: ["fileUploadPrimeNg"], descendants: true }], ngImport: i0, template: "@if (isMultiple) {\
|
|
7878
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: PrimeFileUploaderComponent, selector: "prime-file-uploader", inputs: { isMultiple: "isMultiple", autoUpload: "autoUpload", maxSizeMb: "maxSizeMb", fileFormats: "fileFormats", title: "title", subTitle: "subTitle", isDisabled: "isDisabled" }, outputs: { uploadFilesEvent: "uploadFilesEvent" }, viewQueries: [{ propertyName: "fileUploadPrime", first: true, predicate: ["fileUploadPrimeNg"], descendants: true }], ngImport: i0, template: "@if (isMultiple) {\n <p-fileUpload\n #fileUploadPrimeNg\n name=\"files[]\"\n url=\"\"\n (onSelect)=\"select($event)\"\n (onSend)=\"uploadFiles($event)\"\n [multiple]=\"isMultiple\"\n [accept]=\"fileFormatsString\"\n [maxFileSize]=\"maxSizeBytes\"\n [disabled]=\"isDisabled\"\n [ngClass]=\"{ disabledWidget: isDisabled }\"\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\n cancelLabel=\"M\u00E9gsem\"\n chooseLabel=\"V\u00E1laszt\u00E1s\"\n >\n <ng-template pTemplate=\"content\">\n <ng-container *ngTemplateOutlet=\"uploader\" />\n </ng-template>\n <ng-template pTemplate=\"file\" let-file let-i=\"index\">\n <ng-container *ngTemplateOutlet=\"fileContainer; context: { $implicit: file, i: i }\" />\n </ng-template>\n </p-fileUpload>\n} @else {\n <p-fileUpload\n #fileUploadPrimeNg\n name=\"files[]\"\n url=\"\"\n (onSelect)=\"select($event)\"\n (onSend)=\"uploadFiles($event)\"\n [disabled]=\"isDisabled\"\n [multiple]=\"isMultiple\"\n [accept]=\"fileFormatsString\"\n [maxFileSize]=\"maxSizeBytes\"\n [ngClass]=\"{ singlePrimeNg: true, autoUpload: autoUpload, disabledWidget: isDisabled }\"\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\n cancelLabel=\"M\u00E9gsem\"\n chooseLabel=\"V\u00E1laszt\u00E1s\"\n >\n <ng-template pTemplate=\"content\">\n <ng-container *ngTemplateOutlet=\"uploader\" />\n </ng-template>\n <ng-template pTemplate=\"file\" let-file let-i=\"index\">\n <ng-container *ngTemplateOutlet=\"fileContainer; context: { $implicit: file, i: i }\" />\n </ng-template>\n </p-fileUpload>\n}\n\n<ng-template #uploader let-file let-i=\"index\">\n <div class=\"uploadField\" (click)=\"fileUploadPrime.choose()\">\n <div class=\"uploadData\"\n ><smart-icon class=\"uploadIcon\" [icon]=\"'upload'\"></smart-icon>\n <div class=\"dataField\">\n <span class=\"title message\">{{ title }}</span>\n <span class=\"message\">{{ subTitle }}</span>\n <span class=\"message\">{{ fileFormatsString }}</span>\n <span class=\"message\"> max {{ maxSizeMb }} Mb</span>\n </div>\n </div>\n @if (autoUpload == false && files && files.length > 0) {\n <ui-action-button [descriptor]=\"uploadButton\" (actionClick)=\"fileUploadPrime.upload()\" />\n }\n </div>\n</ng-template>\n\n<ng-template #fileContainer let-file let-i=\"index\">\n <div class=\"p-fileupload-file\">\n @if (file.objectURL) {\n <img role=\"presentation\" [alt]=\"file.name\" [src]=\"file.objectURL\" width=\"50\" height=\"50\" />\n } @else {\n <i class=\"pi pi-file\" style=\"font-size: 2rem\"></i>\n }\n\n <div class=\"fileData\">\n <span class=\"fileName\">{{ file.name }}</span>\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\n </div>\n <div class=\"fileButtons\">\n <smart-icon\n class=\"downloadIcon\"\n icon=\"download\"\n (click)=\"downloadFile(file.dataUri)\"\n ></smart-icon>\n <smart-icon\n class=\"removeIcon\"\n icon=\"trash\"\n (click)=\"fileUploadPrime.remove($event, i)\"\n ></smart-icon>\n </div>\n </div>\n</ng-template>\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}:host ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:flex!important;flex-direction:row;justify-content:center;flex-wrap:wrap;gap:1rem}:host ::ng-deep .p-fileupload .p-fileupload-row>div{width:fit-content}:host ::ng-deep .p-fileupload .p-fileupload-content{padding:unset;align-content:center;text-align:center}.message{font-size:smaller;text-align:center;color:#6b7280}.title{font-size:unset;color:var(--primary-color)}.uploadField{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:1rem;padding:.5rem 1rem;cursor:pointer}.uploadField:hover{background-color:rgb(from var(--border-color) r g b / .1)}.disabledWidget ::ng-deep .uploadField:hover{background-color:unset;cursor:unset}:host ::ng-deep .p-fileupload-row{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}:host ::ng-deep .p-fileupload-choose,:host ::ng-deep .p-fileupload-row ::ng-deep button,:host ::ng-deep .p-fileupload-buttonbar ::ng-deep button{background-color:var(--primary-color);border-color:var(--primary-color)}:host ::ng-deep .p-fileupload-choose:hover,:host ::ng-deep .p-fileupload-row ::ng-deep button:hover,:host ::ng-deep .p-fileupload-buttonbar ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.8)}.disabledWidget ::ng-deep *{opacity:.85}:host ::ng-deep .disabledWidget ::ng-deep .p-fileupload-choose:hover,:host ::ng-deep .disabledWidget ::ng-deep .p-fileupload-row ::ng-deep button:hover,:host ::ng-deep .disabledWidget ::ng-deep .p-fileupload-buttonbar ::ng-deep button:hover{background-color:unset;cursor:unset}.p-fileupload-file{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;border:1px solid #dee2e6}.p-file-data{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.fileSize{display:flex;justify-content:flex-start}.fileData{flex:1;display:flex;flex-direction:column;justify-content:flex-end;padding-right:1rem}.uploadData{flex:1;display:flex;flex-direction:row;justify-content:flex-start;gap:1rem}.fileName{text-align:start}.singlePrimeNg ::ng-deep .uploadField{padding:1rem}.uploadIcon{align-content:center}:host ::ng-deep .uploadIcon i{font-size:2rem}:host ::ng-deep .p-fileupload-file i,:host ::ng-deep .uploadIcon i,:host ::ng-deep img{display:flex;justify-content:center;width:3rem}.dataField{display:flex;flex-direction:column;justify-content:flex-start;align-items:baseline}:host ::ng-deep .p-fileupload-content p-progressbar,:host ::ng-deep .p-fileupload ::ng-deep .p-fileupload-buttonbar{display:none!important}:host ::ng-deep .p-fileupload-content{display:flex;flex-direction:column-reverse}:host ::ng-deep .p-fileupload-file{border:unset;border-top:1px solid var(--border-color)}:host ::ng-deep .p-fileupload.p-fileupload-advanced .p-message{margin:unset}.fileButtons{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileButtons ::ng-deep .pi{width:unset!important}.removeIcon ::ng-deep i,.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep .pi,.downloadIcon ::ng-deep .pi{font-size:1.5rem!important}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon:hover,.downloadIcon:hover{cursor:pointer}smart-icon{display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i4$1.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }] }); }
|
|
7857
7879
|
}
|
|
7858
7880
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PrimeFileUploaderComponent, decorators: [{
|
|
7859
7881
|
type: Component,
|
|
7860
|
-
args: [{ selector: 'prime-file-uploader', template: "@if (isMultiple) {\
|
|
7882
|
+
args: [{ selector: 'prime-file-uploader', template: "@if (isMultiple) {\n <p-fileUpload\n #fileUploadPrimeNg\n name=\"files[]\"\n url=\"\"\n (onSelect)=\"select($event)\"\n (onSend)=\"uploadFiles($event)\"\n [multiple]=\"isMultiple\"\n [accept]=\"fileFormatsString\"\n [maxFileSize]=\"maxSizeBytes\"\n [disabled]=\"isDisabled\"\n [ngClass]=\"{ disabledWidget: isDisabled }\"\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\n cancelLabel=\"M\u00E9gsem\"\n chooseLabel=\"V\u00E1laszt\u00E1s\"\n >\n <ng-template pTemplate=\"content\">\n <ng-container *ngTemplateOutlet=\"uploader\" />\n </ng-template>\n <ng-template pTemplate=\"file\" let-file let-i=\"index\">\n <ng-container *ngTemplateOutlet=\"fileContainer; context: { $implicit: file, i: i }\" />\n </ng-template>\n </p-fileUpload>\n} @else {\n <p-fileUpload\n #fileUploadPrimeNg\n name=\"files[]\"\n url=\"\"\n (onSelect)=\"select($event)\"\n (onSend)=\"uploadFiles($event)\"\n [disabled]=\"isDisabled\"\n [multiple]=\"isMultiple\"\n [accept]=\"fileFormatsString\"\n [maxFileSize]=\"maxSizeBytes\"\n [ngClass]=\"{ singlePrimeNg: true, autoUpload: autoUpload, disabledWidget: isDisabled }\"\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\n cancelLabel=\"M\u00E9gsem\"\n chooseLabel=\"V\u00E1laszt\u00E1s\"\n >\n <ng-template pTemplate=\"content\">\n <ng-container *ngTemplateOutlet=\"uploader\" />\n </ng-template>\n <ng-template pTemplate=\"file\" let-file let-i=\"index\">\n <ng-container *ngTemplateOutlet=\"fileContainer; context: { $implicit: file, i: i }\" />\n </ng-template>\n </p-fileUpload>\n}\n\n<ng-template #uploader let-file let-i=\"index\">\n <div class=\"uploadField\" (click)=\"fileUploadPrime.choose()\">\n <div class=\"uploadData\"\n ><smart-icon class=\"uploadIcon\" [icon]=\"'upload'\"></smart-icon>\n <div class=\"dataField\">\n <span class=\"title message\">{{ title }}</span>\n <span class=\"message\">{{ subTitle }}</span>\n <span class=\"message\">{{ fileFormatsString }}</span>\n <span class=\"message\"> max {{ maxSizeMb }} Mb</span>\n </div>\n </div>\n @if (autoUpload == false && files && files.length > 0) {\n <ui-action-button [descriptor]=\"uploadButton\" (actionClick)=\"fileUploadPrime.upload()\" />\n }\n </div>\n</ng-template>\n\n<ng-template #fileContainer let-file let-i=\"index\">\n <div class=\"p-fileupload-file\">\n @if (file.objectURL) {\n <img role=\"presentation\" [alt]=\"file.name\" [src]=\"file.objectURL\" width=\"50\" height=\"50\" />\n } @else {\n <i class=\"pi pi-file\" style=\"font-size: 2rem\"></i>\n }\n\n <div class=\"fileData\">\n <span class=\"fileName\">{{ file.name }}</span>\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\n </div>\n <div class=\"fileButtons\">\n <smart-icon\n class=\"downloadIcon\"\n icon=\"download\"\n (click)=\"downloadFile(file.dataUri)\"\n ></smart-icon>\n <smart-icon\n class=\"removeIcon\"\n icon=\"trash\"\n (click)=\"fileUploadPrime.remove($event, i)\"\n ></smart-icon>\n </div>\n </div>\n</ng-template>\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}:host ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:flex!important;flex-direction:row;justify-content:center;flex-wrap:wrap;gap:1rem}:host ::ng-deep .p-fileupload .p-fileupload-row>div{width:fit-content}:host ::ng-deep .p-fileupload .p-fileupload-content{padding:unset;align-content:center;text-align:center}.message{font-size:smaller;text-align:center;color:#6b7280}.title{font-size:unset;color:var(--primary-color)}.uploadField{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:1rem;padding:.5rem 1rem;cursor:pointer}.uploadField:hover{background-color:rgb(from var(--border-color) r g b / .1)}.disabledWidget ::ng-deep .uploadField:hover{background-color:unset;cursor:unset}:host ::ng-deep .p-fileupload-row{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}:host ::ng-deep .p-fileupload-choose,:host ::ng-deep .p-fileupload-row ::ng-deep button,:host ::ng-deep .p-fileupload-buttonbar ::ng-deep button{background-color:var(--primary-color);border-color:var(--primary-color)}:host ::ng-deep .p-fileupload-choose:hover,:host ::ng-deep .p-fileupload-row ::ng-deep button:hover,:host ::ng-deep .p-fileupload-buttonbar ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.8)}.disabledWidget ::ng-deep *{opacity:.85}:host ::ng-deep .disabledWidget ::ng-deep .p-fileupload-choose:hover,:host ::ng-deep .disabledWidget ::ng-deep .p-fileupload-row ::ng-deep button:hover,:host ::ng-deep .disabledWidget ::ng-deep .p-fileupload-buttonbar ::ng-deep button:hover{background-color:unset;cursor:unset}.p-fileupload-file{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;border:1px solid #dee2e6}.p-file-data{flex:1;display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.fileSize{display:flex;justify-content:flex-start}.fileData{flex:1;display:flex;flex-direction:column;justify-content:flex-end;padding-right:1rem}.uploadData{flex:1;display:flex;flex-direction:row;justify-content:flex-start;gap:1rem}.fileName{text-align:start}.singlePrimeNg ::ng-deep .uploadField{padding:1rem}.uploadIcon{align-content:center}:host ::ng-deep .uploadIcon i{font-size:2rem}:host ::ng-deep .p-fileupload-file i,:host ::ng-deep .uploadIcon i,:host ::ng-deep img{display:flex;justify-content:center;width:3rem}.dataField{display:flex;flex-direction:column;justify-content:flex-start;align-items:baseline}:host ::ng-deep .p-fileupload-content p-progressbar,:host ::ng-deep .p-fileupload ::ng-deep .p-fileupload-buttonbar{display:none!important}:host ::ng-deep .p-fileupload-content{display:flex;flex-direction:column-reverse}:host ::ng-deep .p-fileupload-file{border:unset;border-top:1px solid var(--border-color)}:host ::ng-deep .p-fileupload.p-fileupload-advanced .p-message{margin:unset}.fileButtons{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileButtons ::ng-deep .pi{width:unset!important}.removeIcon ::ng-deep i,.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep .pi,.downloadIcon ::ng-deep .pi{font-size:1.5rem!important}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon:hover,.downloadIcon:hover{cursor:pointer}smart-icon{display:flex;align-items:center}\n"] }]
|
|
7861
7883
|
}], propDecorators: { fileUploadPrime: [{
|
|
7862
7884
|
type: ViewChild,
|
|
7863
7885
|
args: ['fileUploadPrimeNg']
|
|
@@ -7977,11 +7999,11 @@ class UploadWidgetComponent {
|
|
|
7977
7999
|
};
|
|
7978
8000
|
}
|
|
7979
8001
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UploadWidgetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: COMPONENT_LIBRARY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7980
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UploadWidgetComponent, selector: "smart-upload-widget", inputs: { uploadDescriptor: "uploadDescriptor", isMultiple: "isMultiple", isDisabled: "isDisabled" }, outputs: { uploadFilesEvent: "uploadFilesEvent" }, viewQueries: [{ propertyName: "fileUploadPrime", first: true, predicate: ["fileUploadPrimeNg"], descendants: true }, { propertyName: "fileUploadMaterial", first: true, predicate: ["fileUploadMaterial"], descendants: true }], ngImport: i0, template: "<div class=\"sb4UploadWidget\">\
|
|
8002
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UploadWidgetComponent, selector: "smart-upload-widget", inputs: { uploadDescriptor: "uploadDescriptor", isMultiple: "isMultiple", isDisabled: "isDisabled" }, outputs: { uploadFilesEvent: "uploadFilesEvent" }, viewQueries: [{ propertyName: "fileUploadPrime", first: true, predicate: ["fileUploadPrimeNg"], descendants: true }, { propertyName: "fileUploadMaterial", first: true, predicate: ["fileUploadMaterial"], descendants: true }], ngImport: i0, template: "<div class=\"sb4UploadWidget\">\n <!-- IMAGE TYPE WIDGET -->\n <ng-container *ngIf=\"widgetNeeded(uploadWidgetType.IMAGE) || widgetNeeded(uploadWidgetType.ALL)\">\n <photo-capture-widget\n [maxFileSize]=\"maxSizeMb * 1024 * 1024\"\n (photoCaptured)=\"uploadImage($event)\"\n >\n </photo-capture-widget>\n </ng-container>\n\n <!-- SOUND TYPE WIDGET -->\n <ng-container *ngIf=\"widgetNeeded(uploadWidgetType.SOUND) || widgetNeeded(uploadWidgetType.ALL)\">\n <voice-record-widget (recordingSaved)=\"uploadRecording($event)\"> </voice-record-widget>\n </ng-container>\n @if (compLib === componentLibrary.PRIMENG) {\n <prime-file-uploader\n #fileUploadPrimeNg\n [isMultiple]=\"isMultiple\"\n [autoUpload]=\"autoUpload\"\n [fileFormats]=\"fileFormats\"\n [maxSizeMb]=\"maxSizeMb\"\n [title]=\"uploadDescriptor?.title\"\n [subTitle]=\"uploadDescriptor?.description\"\n [isDisabled]=\"isDisabled\"\n (uploadFilesEvent)=\"uploadFiles($event)\"\n />\n } @else {\n <smartfileuploader\n #fileUploadMaterial\n [i18n]=\"i18n\"\n [fileFormats]=\"fileFormats\"\n [maxSizeMb]=\"maxSizeMb\"\n [uploadCallback]=\"upload.bind(this)\"\n [isMultiple]=\"isMultiple\"\n [autoUpload]=\"autoUpload\"\n [isDisabled]=\"isDisabled\"\n ></smartfileuploader>\n }\n</div>\n", styles: ["photo-capture-widget{width:100%;max-width:100%;overflow:hidden;display:flex;flex-direction:column;align-items:center}voice-record-widget{padding:.5rem;border-bottom:1px solid #e5e7eb}voice-record-widget ::ng-deep .sb4-red,voice-record-widget ::ng-deep .sb4-primary,voice-record-widget ::ng-deep ui-action-button{border:unset!important}@media (max-width: 900px){:host{width:100%}}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SmartfileuploaderComponent, selector: "smartfileuploader", inputs: ["uploadCallback", "fileFormats", "maxSizeMb", "i18n", "useIconButton", "isMultiple", "autoUpload", "isDisabled"] }, { kind: "component", type: VoiceRecordWidgetComponent, selector: "voice-record-widget", inputs: ["openDirection"], outputs: ["recordingSaved"] }, { kind: "component", type: PhotoCaptureWidgetComponent, selector: "photo-capture-widget", inputs: ["maxFileSize"], outputs: ["photoCaptured"] }, { kind: "component", type: PrimeFileUploaderComponent, selector: "prime-file-uploader", inputs: ["isMultiple", "autoUpload", "maxSizeMb", "fileFormats", "title", "subTitle", "isDisabled"], outputs: ["uploadFilesEvent"] }] }); }
|
|
7981
8003
|
}
|
|
7982
8004
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UploadWidgetComponent, decorators: [{
|
|
7983
8005
|
type: Component,
|
|
7984
|
-
args: [{ selector: 'smart-upload-widget', template: "<div class=\"sb4UploadWidget\">\
|
|
8006
|
+
args: [{ selector: 'smart-upload-widget', template: "<div class=\"sb4UploadWidget\">\n <!-- IMAGE TYPE WIDGET -->\n <ng-container *ngIf=\"widgetNeeded(uploadWidgetType.IMAGE) || widgetNeeded(uploadWidgetType.ALL)\">\n <photo-capture-widget\n [maxFileSize]=\"maxSizeMb * 1024 * 1024\"\n (photoCaptured)=\"uploadImage($event)\"\n >\n </photo-capture-widget>\n </ng-container>\n\n <!-- SOUND TYPE WIDGET -->\n <ng-container *ngIf=\"widgetNeeded(uploadWidgetType.SOUND) || widgetNeeded(uploadWidgetType.ALL)\">\n <voice-record-widget (recordingSaved)=\"uploadRecording($event)\"> </voice-record-widget>\n </ng-container>\n @if (compLib === componentLibrary.PRIMENG) {\n <prime-file-uploader\n #fileUploadPrimeNg\n [isMultiple]=\"isMultiple\"\n [autoUpload]=\"autoUpload\"\n [fileFormats]=\"fileFormats\"\n [maxSizeMb]=\"maxSizeMb\"\n [title]=\"uploadDescriptor?.title\"\n [subTitle]=\"uploadDescriptor?.description\"\n [isDisabled]=\"isDisabled\"\n (uploadFilesEvent)=\"uploadFiles($event)\"\n />\n } @else {\n <smartfileuploader\n #fileUploadMaterial\n [i18n]=\"i18n\"\n [fileFormats]=\"fileFormats\"\n [maxSizeMb]=\"maxSizeMb\"\n [uploadCallback]=\"upload.bind(this)\"\n [isMultiple]=\"isMultiple\"\n [autoUpload]=\"autoUpload\"\n [isDisabled]=\"isDisabled\"\n ></smartfileuploader>\n }\n</div>\n", styles: ["photo-capture-widget{width:100%;max-width:100%;overflow:hidden;display:flex;flex-direction:column;align-items:center}voice-record-widget{padding:.5rem;border-bottom:1px solid #e5e7eb}voice-record-widget ::ng-deep .sb4-red,voice-record-widget ::ng-deep .sb4-primary,voice-record-widget ::ng-deep ui-action-button{border:unset!important}@media (max-width: 900px){:host{width:100%}}\n"] }]
|
|
7985
8007
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: ComponentLibrary, decorators: [{
|
|
7986
8008
|
type: Inject,
|
|
7987
8009
|
args: [COMPONENT_LIBRARY]
|
|
@@ -8144,7 +8166,7 @@ class SmartFileEditorComponent {
|
|
|
8144
8166
|
useExisting: forwardRef(() => SmartFileEditorComponent),
|
|
8145
8167
|
multi: true,
|
|
8146
8168
|
},
|
|
8147
|
-
], viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }], ngImport: i0, template: "@if (widgetInstance && widgetInstance.fileUploaderProperties) {\
|
|
8169
|
+
], viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }], ngImport: i0, template: "@if (widgetInstance && widgetInstance.fileUploaderProperties) {\n <h4\n *ngIf=\"widgetInstance.showLabel\"\n class=\"labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ widgetInstance.label }}\n </h4>\n\n <div class=\"fileEditorComponent\">\n @if (widgetInstance.value && !isTypeSupported(widgetInstance.value)) {\n <div class=\"errorMessage\">\n <smart-icon [icon]=\"errorIcon\" [color]=\"'var(--warninig-color)'\"></smart-icon>\n <span> Unsupported widgetInstance.value type for this widget.</span>\n </div>\n } @else if (!widgetInstance.value || fileToChange) {\n <smart-upload-widget\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n [uploadDescriptor]=\"widgetInstance.fileUploaderProperties.uploadDescriptor!\"\n [isMultiple]=\"false\"\n [isDisabled]=\"widgetInstance.isDisabled\"\n (uploadFilesEvent)=\"upload($event)\"\n />\n }\n\n <div\n [ngClass]=\"{ disabledWidget: widgetInstance.isDisabled }\"\n class=\"uploadedFileContainer\"\n [style.display]=\"\n widgetInstance.value && isTypeSupported(widgetInstance.value) ? 'block' : 'none'\n \"\n >\n <div class=\"uploadedFile\">\n <smart-icon class=\"uploadedFileIcon\" [icon]=\"fileIcon\"></smart-icon>\n\n <div class=\"fileData\">\n <div class=\"fileDataContainer\">\n <span class=\"fileName\">{{ widgetInstance.value?.fileName }}</span>\n <span class=\"fileSize\">{{ formatSize(widgetInstance.value?.size) }}</span>\n </div>\n </div>\n\n <div class=\"fileActions\">\n <smart-ui-action-toolbar\n [id]=\"widgetInstance.toolbarId\"\n #toolbar\n ></smart-ui-action-toolbar>\n\n @if (!fileToChange) {\n <ui-action-button\n class=\"changeButton\"\n (actionClick)=\"change(widgetInstance.value)\"\n [disabled]=\"widgetInstance.isDisabled\"\n [descriptor]=\"changeButton\"\n >\n </ui-action-button>\n } @else {\n <ui-action-button\n class=\"removeIcon\"\n (actionClick)=\"cancelChange()\"\n [descriptor]=\"removeButton\"\n ></ui-action-button>\n }\n </div>\n </div>\n </div>\n </div>\n}\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem;width:100%}.fileEditorComponent{border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileEditorComponent ::ng-deep smartfileuploader ::ng-deep .container{border:unset;border-radius:unset}.uploadedFileContainer{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;gap:1rem}.fileEditorComponent:has(::ng-deep prime-file-uploader) ::ng-deep .uploadedFile,.fileEditorComponent:has(::ng-deep smartfileuploader) ::ng-deep .uploadedFile{border-top:1px solid #e0e0e0}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep button{border:unset}.fileActions ::ng-deep button:hover{border:unset}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.uploadedFileIcon{width:3rem;display:flex;justify-content:center}:host ::ng-deep .p-fileupload-content{border:unset;border-radius:var(--def-border-radius)}smart-icon ::ng-deep .pi{font-size:2rem!important}.fileEditorComponent:has(::ng-deep .errorMessage){border-color:var(--warninig-color)}.errorMessage{padding:1rem;font-size:1.5rem;color:var(--warninig-color);display:flex;flex-direction:row;align-items:center;gap:1rem}:host ::ng-deep .disabledWidget ::ng-deep .changeButton *,:host ::ng-deep .disabledWidget ::ng-deep .fileData *{opacity:.7}:host ::ng-deep smartfileuploader ::ng-deep .uploadedFile,:host ::ng-deep .p-fileupload-file{background:repeating-linear-gradient(45deg,#fafafa,#fafafa 12px,#f1f1f1 12px 24px)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "component", type: UploadWidgetComponent, selector: "smart-upload-widget", inputs: ["uploadDescriptor", "isMultiple", "isDisabled"], outputs: ["uploadFilesEvent"] }] }); }
|
|
8148
8170
|
}
|
|
8149
8171
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFileEditorComponent, decorators: [{
|
|
8150
8172
|
type: Component,
|
|
@@ -8154,7 +8176,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
8154
8176
|
useExisting: forwardRef(() => SmartFileEditorComponent),
|
|
8155
8177
|
multi: true,
|
|
8156
8178
|
},
|
|
8157
|
-
], template: "@if (widgetInstance && widgetInstance.fileUploaderProperties) {\
|
|
8179
|
+
], template: "@if (widgetInstance && widgetInstance.fileUploaderProperties) {\n <h4\n *ngIf=\"widgetInstance.showLabel\"\n class=\"labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ widgetInstance.label }}\n </h4>\n\n <div class=\"fileEditorComponent\">\n @if (widgetInstance.value && !isTypeSupported(widgetInstance.value)) {\n <div class=\"errorMessage\">\n <smart-icon [icon]=\"errorIcon\" [color]=\"'var(--warninig-color)'\"></smart-icon>\n <span> Unsupported widgetInstance.value type for this widget.</span>\n </div>\n } @else if (!widgetInstance.value || fileToChange) {\n <smart-upload-widget\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n [uploadDescriptor]=\"widgetInstance.fileUploaderProperties.uploadDescriptor!\"\n [isMultiple]=\"false\"\n [isDisabled]=\"widgetInstance.isDisabled\"\n (uploadFilesEvent)=\"upload($event)\"\n />\n }\n\n <div\n [ngClass]=\"{ disabledWidget: widgetInstance.isDisabled }\"\n class=\"uploadedFileContainer\"\n [style.display]=\"\n widgetInstance.value && isTypeSupported(widgetInstance.value) ? 'block' : 'none'\n \"\n >\n <div class=\"uploadedFile\">\n <smart-icon class=\"uploadedFileIcon\" [icon]=\"fileIcon\"></smart-icon>\n\n <div class=\"fileData\">\n <div class=\"fileDataContainer\">\n <span class=\"fileName\">{{ widgetInstance.value?.fileName }}</span>\n <span class=\"fileSize\">{{ formatSize(widgetInstance.value?.size) }}</span>\n </div>\n </div>\n\n <div class=\"fileActions\">\n <smart-ui-action-toolbar\n [id]=\"widgetInstance.toolbarId\"\n #toolbar\n ></smart-ui-action-toolbar>\n\n @if (!fileToChange) {\n <ui-action-button\n class=\"changeButton\"\n (actionClick)=\"change(widgetInstance.value)\"\n [disabled]=\"widgetInstance.isDisabled\"\n [descriptor]=\"changeButton\"\n >\n </ui-action-button>\n } @else {\n <ui-action-button\n class=\"removeIcon\"\n (actionClick)=\"cancelChange()\"\n [descriptor]=\"removeButton\"\n ></ui-action-button>\n }\n </div>\n </div>\n </div>\n </div>\n}\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem;width:100%}.fileEditorComponent{border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileEditorComponent ::ng-deep smartfileuploader ::ng-deep .container{border:unset;border-radius:unset}.uploadedFileContainer{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;gap:1rem}.fileEditorComponent:has(::ng-deep prime-file-uploader) ::ng-deep .uploadedFile,.fileEditorComponent:has(::ng-deep smartfileuploader) ::ng-deep .uploadedFile{border-top:1px solid #e0e0e0}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep button{border:unset}.fileActions ::ng-deep button:hover{border:unset}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.uploadedFileIcon{width:3rem;display:flex;justify-content:center}:host ::ng-deep .p-fileupload-content{border:unset;border-radius:var(--def-border-radius)}smart-icon ::ng-deep .pi{font-size:2rem!important}.fileEditorComponent:has(::ng-deep .errorMessage){border-color:var(--warninig-color)}.errorMessage{padding:1rem;font-size:1.5rem;color:var(--warninig-color);display:flex;flex-direction:row;align-items:center;gap:1rem}:host ::ng-deep .disabledWidget ::ng-deep .changeButton *,:host ::ng-deep .disabledWidget ::ng-deep .fileData *{opacity:.7}:host ::ng-deep smartfileuploader ::ng-deep .uploadedFile,:host ::ng-deep .p-fileupload-file{background:repeating-linear-gradient(45deg,#fafafa,#fafafa 12px,#f1f1f1 12px 24px)}\n"] }]
|
|
8158
8180
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: ComponentLibrary, decorators: [{
|
|
8159
8181
|
type: Inject,
|
|
8160
8182
|
args: [COMPONENT_LIBRARY]
|
|
@@ -8185,11 +8207,11 @@ class FileEditorToolbarComponent extends UiActionToolbarComponent {
|
|
|
8185
8207
|
await super.fireAction(uiActionModel);
|
|
8186
8208
|
}
|
|
8187
8209
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FileEditorToolbarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
8188
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: FileEditorToolbarComponent, selector: "file-editor-toolbar", inputs: { dataUri: "dataUri" }, outputs: { actionEvent: "actionEvent" }, usesInheritance: true, ngImport: i0, template: "@if (isScrollable && scrollOnWrap) {\
|
|
8210
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: FileEditorToolbarComponent, selector: "file-editor-toolbar", inputs: { dataUri: "dataUri" }, outputs: { actionEvent: "actionEvent" }, usesInheritance: true, ngImport: i0, template: "@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonLeft\"\n (actionClick)=\"scrollLeft()\"\n (mousedown)=\"scrollStart('left')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('left')\"\n (touchend)=\"stopScroll()\"\n />\n}\n\n<div\n #container\n class=\"uiActionButtonsContainer\"\n [ngClass]=\"{\n scrollableContent: scrollOnWrap,\n verticalToolbar: isVertical,\n }\"\n>\n <ng-container *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions; trackBy: trackByFn\">\n @if (uiActionModel.uiAction.subActions && uiActionModel.uiAction.subActions.length > 0) {\n <ui-tiered-menu\n #menu\n [triggerAction]=\"uiActionModel.uiAction\"\n [subActions]=\"uiActionModel.uiAction.subActions!\"\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\n ></ui-tiered-menu>\n } @else {\n <ui-action-button\n [descriptor]=\"uiActionModel.descriptor!\"\n [code]=\"uiActionModel.uiAction.code\"\n [disabled]=\"!!uiActionModel.uiAction.disabled\"\n [addedCssClass]=\"uiActionModel.cssClass\"\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\n (actionDoubleClick)=\"onActionDoubleClicked($event, uiActionModel)\"\n >\n </ui-action-button>\n }\n </ng-container>\n</div>\n\n@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonRight\"\n (actionClick)=\"scrollRight()\"\n (mousedown)=\"scrollStart('right')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('right')\"\n (touchend)=\"stopScroll()\"\n />\n}\n", styles: [":host:has(.uiActionButtonsContainer.scrollableContent){display:flex;flex-direction:row;justify-content:space-between;gap:.5rem;width:100%;align-items:center}.uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}.scrollableContent{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;display:flex;scrollbar-width:none;padding:.5rem 0;align-items:center}.scrollableContent::-webkit-scrollbar{display:none!important}.verticalToolbar{display:flex;flex-direction:column}.verticalToolbar ::ng-deep ui-action-button,.verticalToolbar ::ng-deep button{width:100%;justify-content:flex-start}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "component", type: MenuComponent, selector: "ui-tiered-menu", inputs: ["triggerAction", "isSubmenu"], outputs: ["actionClick", "submenuOpened"] }] }); }
|
|
8189
8211
|
}
|
|
8190
8212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FileEditorToolbarComponent, decorators: [{
|
|
8191
8213
|
type: Component,
|
|
8192
|
-
args: [{ selector: 'file-editor-toolbar', template: "@if (isScrollable && scrollOnWrap) {\
|
|
8214
|
+
args: [{ selector: 'file-editor-toolbar', template: "@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonLeft\"\n (actionClick)=\"scrollLeft()\"\n (mousedown)=\"scrollStart('left')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('left')\"\n (touchend)=\"stopScroll()\"\n />\n}\n\n<div\n #container\n class=\"uiActionButtonsContainer\"\n [ngClass]=\"{\n scrollableContent: scrollOnWrap,\n verticalToolbar: isVertical,\n }\"\n>\n <ng-container *ngFor=\"let uiActionModel of uiActionModelsWithDescriptions; trackBy: trackByFn\">\n @if (uiActionModel.uiAction.subActions && uiActionModel.uiAction.subActions.length > 0) {\n <ui-tiered-menu\n #menu\n [triggerAction]=\"uiActionModel.uiAction\"\n [subActions]=\"uiActionModel.uiAction.subActions!\"\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\n ></ui-tiered-menu>\n } @else {\n <ui-action-button\n [descriptor]=\"uiActionModel.descriptor!\"\n [code]=\"uiActionModel.uiAction.code\"\n [disabled]=\"!!uiActionModel.uiAction.disabled\"\n [addedCssClass]=\"uiActionModel.cssClass\"\n (actionClick)=\"onActionClicked($event, uiActionModel)\"\n (actionDoubleClick)=\"onActionDoubleClicked($event, uiActionModel)\"\n >\n </ui-action-button>\n }\n </ng-container>\n</div>\n\n@if (isScrollable && scrollOnWrap) {\n <ui-action-button\n [disabled]=\"!isScrollable\"\n [descriptor]=\"buttonRight\"\n (actionClick)=\"scrollRight()\"\n (mousedown)=\"scrollStart('right')\"\n (mouseup)=\"stopScroll()\"\n (mouseleave)=\"stopScroll()\"\n (touchstart)=\"scrollStart('right')\"\n (touchend)=\"stopScroll()\"\n />\n}\n", styles: [":host:has(.uiActionButtonsContainer.scrollableContent){display:flex;flex-direction:row;justify-content:space-between;gap:.5rem;width:100%;align-items:center}.uiActionButtonsContainer{display:flex;flex-direction:row;gap:1rem;flex-wrap:wrap}.uiActionButtonsContainer ::ng-deep button{display:flex;gap:1rem;align-items:center;justify-content:center}.uiActionButtonsContainer ::ng-deep .buttonWrapper{position:relative;width:fit-content;height:fit-content}.scrollableContent{flex:1;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;display:flex;scrollbar-width:none;padding:.5rem 0;align-items:center}.scrollableContent::-webkit-scrollbar{display:none!important}.verticalToolbar{display:flex;flex-direction:column}.verticalToolbar ::ng-deep ui-action-button,.verticalToolbar ::ng-deep button{width:100%;justify-content:flex-start}\n"] }]
|
|
8193
8215
|
}], propDecorators: { dataUri: [{
|
|
8194
8216
|
type: Input
|
|
8195
8217
|
}], actionEvent: [{
|
|
@@ -8327,7 +8349,7 @@ class SmartMultiFileEditorComponent {
|
|
|
8327
8349
|
useExisting: forwardRef(() => SmartMultiFileEditorComponent),
|
|
8328
8350
|
multi: true,
|
|
8329
8351
|
},
|
|
8330
|
-
], viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }], ngImport: i0, template: "@if (widgetInstance && widgetInstance.multiFileUploaderProperties) {\
|
|
8352
|
+
], viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }], ngImport: i0, template: "@if (widgetInstance && widgetInstance.multiFileUploaderProperties) {\n <h4\n *ngIf=\"widgetInstance.showLabel\"\n class=\"labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ widgetInstance.label }}\n </h4>\n <smart-ui-action-toolbar\n [id]=\"widgetInstance.toolbarId\"\n #toolbar\n [style]=\"{ display: 'none' }\"\n ></smart-ui-action-toolbar>\n\n <div class=\"fileEditorComponent\">\n @if (widgetInstance.value && !isTypeSupported(widgetInstance.value)) {\n <div class=\"errorMessage\">\n <smart-icon [icon]=\"errorIcon\" [color]=\"'var(--warninig-color)'\"></smart-icon>\n <span> Unsupported widgetInstance.value type for this widget.</span>\n </div>\n } @else {\n <smart-upload-widget\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n [uploadDescriptor]=\"widgetInstance.multiFileUploaderProperties.uploadDescriptor!\"\n [isMultiple]=\"true\"\n [isDisabled]=\"widgetInstance.isDisabled\"\n (uploadFilesEvent)=\"upload($event)\"\n />\n }\n\n <div\n [ngClass]=\"{ disabledWidget: widgetInstance.isDisabled }\"\n class=\"uploadedFileContainer\"\n [style.display]=\"\n widgetInstance.value && isTypeSupported(widgetInstance.value) ? 'block' : 'none'\n \"\n >\n <div class=\"scrollable\">\n <div class=\"uploadedFile\" *ngFor=\"let file of widgetInstance.value; let i = index\">\n <smart-icon class=\"uploadedFileIcon\" [icon]=\"fileIcon\"></smart-icon>\n\n <div class=\"fileData\">\n <div class=\"fileDataContainer\">\n <span class=\"fileName\">{{ file?.fileName }}</span>\n <span class=\"fileSize\">{{ formatSize(file?.size) }}</span>\n </div>\n </div>\n\n <div class=\"fileActions\">\n @if (toolbarComponent && toolbarComponent.uiActionModels) {\n <file-editor-toolbar\n [id]=\"widgetInstance.toolbarId\"\n [dataUri]=\"file.dataUri\"\n [uiActionModels]=\"toolbarComponent.uiActionModels\"\n ></file-editor-toolbar>\n }\n <smart-icon\n class=\"downloadIcon\"\n icon=\"download\"\n (click)=\"downloadFile(file.dataUri)\"\n ></smart-icon>\n @if (!file.readOnly) {\n <smart-icon\n class=\"removeIcon\"\n [icon]=\"removeIcon\"\n (click)=\"!isDisabled && file.readOnly === false && deleteFile(file.dataUri)\"\n ></smart-icon>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n}\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem;width:100%}.fileEditorComponent{border:2px dashed var(--border-color);border-radius:var(--def-border-radius);overflow:hidden}.fileEditorComponent ::ng-deep smartfileuploader ::ng-deep .container{border:unset;border-radius:unset}.uploadedFileContainer{display:flex;flex-direction:column;border-top:1px solid #e0e0e0}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;gap:1rem}.scrollable{max-height:30vh;overflow-y:auto}.scrollable>div:not(:last-child){border-bottom:1px solid #e0e0e0}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep button{border:unset}.fileActions ::ng-deep button:hover{border:unset}.removeIcon ::ng-deep i,.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep .pi,.downloadIcon ::ng-deep .pi{font-size:1.5rem!important}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon:hover,.downloadIcon:hover{cursor:pointer}smart-icon{display:flex;align-items:center}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.uploadedFileIcon{width:3rem;display:flex;justify-content:center}:host ::ng-deep .p-fileupload-content{border:unset;border-radius:var(--def-border-radius)}smart-icon ::ng-deep .pi{font-size:2rem!important}.fileEditorComponent:has(::ng-deep .errorMessage){border-color:var(--warninig-color)}.errorMessage{padding:1rem;font-size:1.5rem;color:var(--warninig-color);display:flex;flex-direction:row;align-items:center;gap:1rem}:host ::ng-deep .disabledWidget ::ng-deep .changeButton *,:host ::ng-deep .disabledWidget ::ng-deep .removeIcon *{opacity:.4!important;pointer-events:none!important}:host ::ng-deep .disabledWidget ::ng-deep .changeButton:hover,:host ::ng-deep .disabledWidget ::ng-deep .removeIcon:hover{cursor:not-allowed}:host ::ng-deep smartfileuploader ::ng-deep .uploadedFile,:host ::ng-deep .p-fileupload-file{background:repeating-linear-gradient(45deg,#fafafa,#fafafa 6px,#f1f1f1 6px 12px)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: FileEditorToolbarComponent, selector: "file-editor-toolbar", inputs: ["dataUri"], outputs: ["actionEvent"] }, { kind: "component", type: UploadWidgetComponent, selector: "smart-upload-widget", inputs: ["uploadDescriptor", "isMultiple", "isDisabled"], outputs: ["uploadFilesEvent"] }] }); }
|
|
8331
8353
|
}
|
|
8332
8354
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartMultiFileEditorComponent, decorators: [{
|
|
8333
8355
|
type: Component,
|
|
@@ -8337,7 +8359,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
8337
8359
|
useExisting: forwardRef(() => SmartMultiFileEditorComponent),
|
|
8338
8360
|
multi: true,
|
|
8339
8361
|
},
|
|
8340
|
-
], template: "@if (widgetInstance && widgetInstance.multiFileUploaderProperties) {\
|
|
8362
|
+
], template: "@if (widgetInstance && widgetInstance.multiFileUploaderProperties) {\n <h4\n *ngIf=\"widgetInstance.showLabel\"\n class=\"labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ widgetInstance.label }}\n </h4>\n <smart-ui-action-toolbar\n [id]=\"widgetInstance.toolbarId\"\n #toolbar\n [style]=\"{ display: 'none' }\"\n ></smart-ui-action-toolbar>\n\n <div class=\"fileEditorComponent\">\n @if (widgetInstance.value && !isTypeSupported(widgetInstance.value)) {\n <div class=\"errorMessage\">\n <smart-icon [icon]=\"errorIcon\" [color]=\"'var(--warninig-color)'\"></smart-icon>\n <span> Unsupported widgetInstance.value type for this widget.</span>\n </div>\n } @else {\n <smart-upload-widget\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n [uploadDescriptor]=\"widgetInstance.multiFileUploaderProperties.uploadDescriptor!\"\n [isMultiple]=\"true\"\n [isDisabled]=\"widgetInstance.isDisabled\"\n (uploadFilesEvent)=\"upload($event)\"\n />\n }\n\n <div\n [ngClass]=\"{ disabledWidget: widgetInstance.isDisabled }\"\n class=\"uploadedFileContainer\"\n [style.display]=\"\n widgetInstance.value && isTypeSupported(widgetInstance.value) ? 'block' : 'none'\n \"\n >\n <div class=\"scrollable\">\n <div class=\"uploadedFile\" *ngFor=\"let file of widgetInstance.value; let i = index\">\n <smart-icon class=\"uploadedFileIcon\" [icon]=\"fileIcon\"></smart-icon>\n\n <div class=\"fileData\">\n <div class=\"fileDataContainer\">\n <span class=\"fileName\">{{ file?.fileName }}</span>\n <span class=\"fileSize\">{{ formatSize(file?.size) }}</span>\n </div>\n </div>\n\n <div class=\"fileActions\">\n @if (toolbarComponent && toolbarComponent.uiActionModels) {\n <file-editor-toolbar\n [id]=\"widgetInstance.toolbarId\"\n [dataUri]=\"file.dataUri\"\n [uiActionModels]=\"toolbarComponent.uiActionModels\"\n ></file-editor-toolbar>\n }\n <smart-icon\n class=\"downloadIcon\"\n icon=\"download\"\n (click)=\"downloadFile(file.dataUri)\"\n ></smart-icon>\n @if (!file.readOnly) {\n <smart-icon\n class=\"removeIcon\"\n [icon]=\"removeIcon\"\n (click)=\"!isDisabled && file.readOnly === false && deleteFile(file.dataUri)\"\n ></smart-icon>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n}\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem;width:100%}.fileEditorComponent{border:2px dashed var(--border-color);border-radius:var(--def-border-radius);overflow:hidden}.fileEditorComponent ::ng-deep smartfileuploader ::ng-deep .container{border:unset;border-radius:unset}.uploadedFileContainer{display:flex;flex-direction:column;border-top:1px solid #e0e0e0}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;gap:1rem}.scrollable{max-height:30vh;overflow-y:auto}.scrollable>div:not(:last-child){border-bottom:1px solid #e0e0e0}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep button{border:unset}.fileActions ::ng-deep button:hover{border:unset}.removeIcon ::ng-deep i,.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep .pi,.downloadIcon ::ng-deep .pi{font-size:1.5rem!important}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon:hover,.downloadIcon:hover{cursor:pointer}smart-icon{display:flex;align-items:center}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.uploadedFileIcon{width:3rem;display:flex;justify-content:center}:host ::ng-deep .p-fileupload-content{border:unset;border-radius:var(--def-border-radius)}smart-icon ::ng-deep .pi{font-size:2rem!important}.fileEditorComponent:has(::ng-deep .errorMessage){border-color:var(--warninig-color)}.errorMessage{padding:1rem;font-size:1.5rem;color:var(--warninig-color);display:flex;flex-direction:row;align-items:center;gap:1rem}:host ::ng-deep .disabledWidget ::ng-deep .changeButton *,:host ::ng-deep .disabledWidget ::ng-deep .removeIcon *{opacity:.4!important;pointer-events:none!important}:host ::ng-deep .disabledWidget ::ng-deep .changeButton:hover,:host ::ng-deep .disabledWidget ::ng-deep .removeIcon:hover{cursor:not-allowed}:host ::ng-deep smartfileuploader ::ng-deep .uploadedFile,:host ::ng-deep .p-fileupload-file{background:repeating-linear-gradient(45deg,#fafafa,#fafafa 6px,#f1f1f1 6px 12px)}\n"] }]
|
|
8341
8363
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: ComponentLibrary, decorators: [{
|
|
8342
8364
|
type: Inject,
|
|
8343
8365
|
args: [COMPONENT_LIBRARY]
|
|
@@ -8538,7 +8560,7 @@ class SortableWidgetComponent {
|
|
|
8538
8560
|
useExisting: forwardRef(() => SortableWidgetComponent),
|
|
8539
8561
|
multi: true,
|
|
8540
8562
|
},
|
|
8541
|
-
], usesOnChanges: true, ngImport: i0, template: "<div cdkDropList (cdkDropListDropped)=\"onDrop($event)\" class=\"dropList\">\
|
|
8563
|
+
], usesOnChanges: true, ngImport: i0, template: "<div cdkDropList (cdkDropListDropped)=\"onDrop($event)\" class=\"dropList\">\n <div\n cdkDrag\n [cdkDragDisabled]=\"isDisabled\"\n *ngFor=\"let item of widgetInstance.valueList!; let i = index\"\n class=\"draggableItem\"\n >\n @if(compLib === componentLibrary.PRIMENG){\n <smart-icon\n class=\"cdkDragHandle\"\n cdkDragHandle\n color=\"drag-indicator\"\n [icon]=\"widgetInstance.icon ?? 'arrows-alt'\"\n ></smart-icon>\n }@else {\n <smart-icon\n class=\"cdkDragHandle\"\n cdkDragHandle\n color=\"drag-indicator\"\n icon=\"drag_indicator\"\n ></smart-icon>\n\n }\n <div class=\"indexCircle\">\n {{ i + 1 }}\n </div>\n <span class=\"valueLabel\"> {{ item.label }} </span>\n </div>\n</div>\n", styles: [".dropList{display:flex;flex-direction:column;gap:.25rem}.draggableItem{display:flex;flex-direction:row;gap:.5rem;background-color:#f1f1f1;border-radius:.5rem;padding:.75rem 1rem}.draggableItem .indexCircle{margin:auto 0;padding:.25rem .5rem;border-radius:100%;background-color:#3b3b3b;color:#f1f1f1}.draggableItem .valueLabel{margin:auto 0}.cdkDragHandle{cursor:grab;margin-top:auto;margin-bottom:auto}.cdkDragHandle:active,.draggableItem:active,.cdk-drop-list-dragging{cursor:grabbing}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "directive", type: i3$2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3$2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3$2.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }] }); }
|
|
8542
8564
|
}
|
|
8543
8565
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SortableWidgetComponent, decorators: [{
|
|
8544
8566
|
type: Component,
|
|
@@ -8548,7 +8570,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
8548
8570
|
useExisting: forwardRef(() => SortableWidgetComponent),
|
|
8549
8571
|
multi: true,
|
|
8550
8572
|
},
|
|
8551
|
-
], template: "<div cdkDropList (cdkDropListDropped)=\"onDrop($event)\" class=\"dropList\">\
|
|
8573
|
+
], template: "<div cdkDropList (cdkDropListDropped)=\"onDrop($event)\" class=\"dropList\">\n <div\n cdkDrag\n [cdkDragDisabled]=\"isDisabled\"\n *ngFor=\"let item of widgetInstance.valueList!; let i = index\"\n class=\"draggableItem\"\n >\n @if(compLib === componentLibrary.PRIMENG){\n <smart-icon\n class=\"cdkDragHandle\"\n cdkDragHandle\n color=\"drag-indicator\"\n [icon]=\"widgetInstance.icon ?? 'arrows-alt'\"\n ></smart-icon>\n }@else {\n <smart-icon\n class=\"cdkDragHandle\"\n cdkDragHandle\n color=\"drag-indicator\"\n icon=\"drag_indicator\"\n ></smart-icon>\n\n }\n <div class=\"indexCircle\">\n {{ i + 1 }}\n </div>\n <span class=\"valueLabel\"> {{ item.label }} </span>\n </div>\n</div>\n", styles: [".dropList{display:flex;flex-direction:column;gap:.25rem}.draggableItem{display:flex;flex-direction:row;gap:.5rem;background-color:#f1f1f1;border-radius:.5rem;padding:.75rem 1rem}.draggableItem .indexCircle{margin:auto 0;padding:.25rem .5rem;border-radius:100%;background-color:#3b3b3b;color:#f1f1f1}.draggableItem .valueLabel{margin:auto 0}.cdkDragHandle{cursor:grab;margin-top:auto;margin-bottom:auto}.cdkDragHandle:active,.draggableItem:active,.cdk-drop-list-dragging{cursor:grabbing}\n"] }]
|
|
8552
8574
|
}], ctorParameters: () => [{ type: ComponentLibrary, decorators: [{
|
|
8553
8575
|
type: Inject,
|
|
8554
8576
|
args: [COMPONENT_LIBRARY]
|
|
@@ -8610,7 +8632,7 @@ class SmartMonthPickerComponent {
|
|
|
8610
8632
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
8611
8633
|
},
|
|
8612
8634
|
{ provide: MAT_DATE_FORMATS, useValue: YEARH_MONTH_FORMAT },
|
|
8613
|
-
], ngImport: i0, template: "<div class=\"smart-month-picker-container\">\
|
|
8635
|
+
], ngImport: i0, template: "<div class=\"smart-month-picker-container\">\n <mat-form-field appearance=\"outline\">\n <input matInput [matDatepicker]=\"dp\" [formControl]=\"date\" (input)=\"handleChange($event)\" />\n <mat-datepicker-toggle matSuffix [for]=\"dp\"></mat-datepicker-toggle>\n <mat-datepicker\n #dp\n startView=\"multi-year\"\n (monthSelected)=\"chosenMonthHandler($event, dp)\"\n panelClass=\"example-month-picker\"\n >\n </mat-datepicker>\n </mat-form-field>\n @if (widgetInstance.hint?.position === SmartWidgetHintPosition.INPUT) {\n <div class=\"smart-month-picker-hint\">\n <mat-hint>{{ widgetInstance.hint?.text }}</mat-hint>\n </div>\n }\n</div>\n", styles: [".smart-month-picker-container{display:flex}.smart-month-picker-container mat-form-field{flex:1}\n"], dependencies: [{ kind: "directive", type: i10.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: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i11.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i11.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i11.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] }); }
|
|
8614
8636
|
}
|
|
8615
8637
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartMonthPickerComponent, decorators: [{
|
|
8616
8638
|
type: Component,
|
|
@@ -8621,7 +8643,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
8621
8643
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
8622
8644
|
},
|
|
8623
8645
|
{ provide: MAT_DATE_FORMATS, useValue: YEARH_MONTH_FORMAT },
|
|
8624
|
-
], template: "<div class=\"smart-month-picker-container\">\
|
|
8646
|
+
], template: "<div class=\"smart-month-picker-container\">\n <mat-form-field appearance=\"outline\">\n <input matInput [matDatepicker]=\"dp\" [formControl]=\"date\" (input)=\"handleChange($event)\" />\n <mat-datepicker-toggle matSuffix [for]=\"dp\"></mat-datepicker-toggle>\n <mat-datepicker\n #dp\n startView=\"multi-year\"\n (monthSelected)=\"chosenMonthHandler($event, dp)\"\n panelClass=\"example-month-picker\"\n >\n </mat-datepicker>\n </mat-form-field>\n @if (widgetInstance.hint?.position === SmartWidgetHintPosition.INPUT) {\n <div class=\"smart-month-picker-hint\">\n <mat-hint>{{ widgetInstance.hint?.text }}</mat-hint>\n </div>\n }\n</div>\n", styles: [".smart-month-picker-container{display:flex}.smart-month-picker-container mat-form-field{flex:1}\n"] }]
|
|
8625
8647
|
}], propDecorators: { widgetInstance: [{
|
|
8626
8648
|
type: Input
|
|
8627
8649
|
}], valueChange: [{
|
|
@@ -8745,7 +8767,7 @@ class SmartVoiceRecorderComponent {
|
|
|
8745
8767
|
useExisting: forwardRef(() => SmartVoiceRecorderComponent),
|
|
8746
8768
|
multi: true,
|
|
8747
8769
|
},
|
|
8748
|
-
], viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }], ngImport: i0, template: "<voice-record-widget [openDirection]=\"openDirection\" (recordingSaved)=\"uploadRecording($event)\">\
|
|
8770
|
+
], viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }], ngImport: i0, template: "<voice-record-widget [openDirection]=\"openDirection\" (recordingSaved)=\"uploadRecording($event)\">\n</voice-record-widget>\n", styles: [":host{display:block;width:100%;min-width:0}\n"], dependencies: [{ kind: "component", type: VoiceRecordWidgetComponent, selector: "voice-record-widget", inputs: ["openDirection"], outputs: ["recordingSaved"] }] }); }
|
|
8749
8771
|
}
|
|
8750
8772
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartVoiceRecorderComponent, decorators: [{
|
|
8751
8773
|
type: Component,
|
|
@@ -8755,7 +8777,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
8755
8777
|
useExisting: forwardRef(() => SmartVoiceRecorderComponent),
|
|
8756
8778
|
multi: true,
|
|
8757
8779
|
},
|
|
8758
|
-
], template: "<voice-record-widget [openDirection]=\"openDirection\" (recordingSaved)=\"uploadRecording($event)\">\
|
|
8780
|
+
], template: "<voice-record-widget [openDirection]=\"openDirection\" (recordingSaved)=\"uploadRecording($event)\">\n</voice-record-widget>\n", styles: [":host{display:block;width:100%;min-width:0}\n"] }]
|
|
8759
8781
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: ComponentLibrary, decorators: [{
|
|
8760
8782
|
type: Inject,
|
|
8761
8783
|
args: [COMPONENT_LIBRARY]
|
|
@@ -9725,11 +9747,11 @@ class SmartformwidgetComponent {
|
|
|
9725
9747
|
return /<[a-z][\s\S]*>/i.test(text);
|
|
9726
9748
|
}
|
|
9727
9749
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartformwidgetComponent, deps: [{ token: SmartFormService }, { token: ComponentFactoryService }, { token: i2.DomSanitizer }, { token: COMPONENT_LIBRARY }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9728
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartformwidgetComponent, selector: "smartformwidget", inputs: { form: "form", widgetInstance: "widgetInstance", onBlur: "onBlur", onValueChange: "onValueChange", labelColor: "labelColor", sophisticatedValueChange: "sophisticatedValueChange", blurSophisticatedValueChange: "blurSophisticatedValueChange" }, outputs: { valueCleared: "valueCleared" }, viewQueries: [{ propertyName: "chipInputChild", first: true, predicate: ["chipInput"], descendants: true }, { propertyName: "customComponentVcRef", first: true, predicate: ["customComponent"], descendants: true, read: ViewContainerRef }, { propertyName: "quill", first: true, predicate: ["quillEditor"], descendants: true }, { propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "sb4Textarea", first: true, predicate: ["sb4Textarea"], descendants: true }, { propertyName: "fileUploader", first: true, predicate: SmartFileEditorComponent, descendants: true }, { propertyName: "multiFileUploader", first: true, predicate: SmartMultiFileEditorComponent, descendants: true }, { propertyName: "dateInputChild", first: true, predicate: ["dateInput"], descendants: true }, { propertyName: "timeInputChild", first: true, predicate: ["timeInput"], descendants: true }, { propertyName: "childrenWidgetsQL", predicate: SmartformwidgetComponent, descendants: true }], ngImport: i0, template: "@if (compLib === componentLibrary.PRIMENG) {\r\n <div class=\"container prime\" [formGroup]=\"form\">\r\n <div\r\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\r\n class=\"container\"\r\n *ngIf=\"widgetInstance.isVisible === undefined ? true : widgetInstance.isVisible\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CONTAINER\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [ngClass]=\"getDirection()\"\r\n >\r\n <smartformwidget\r\n *ngFor=\"let widget of widgetInstance.valueList\"\r\n [form]=\"form\"\r\n [widgetInstance]=\"widget\"\r\n class=\"container-item\"\r\n [ngClass]=\"widget.cssClass ?? ''\"\r\n [onBlur]=\"onBlur\"\r\n [onValueChange]=\"onValueChange\"\r\n [sophisticatedValueChange]=\"sophisticatedValueChange\"\r\n [blurSophisticatedValueChange]=\"blurSophisticatedValueChange\"\r\n class=\"{{ widget.key }}\"\r\n [labelColor]=\"labelColor\"\r\n ></smartformwidget>\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer textFieldContainer\">\r\n <p-floatLabel [ngClass]=\"{ hasToolbar: isToolbarPresent() }\">\r\n <input\r\n *ngIf=\"!widgetInstance.mask\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n type=\"{{ widgetInstance.isPassword ? (hidePassword ? 'password' : 'text') : '' }}\"\r\n pInputText\r\n formControlName=\"text\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (change)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n />\r\n <p-inputMask\r\n *ngIf=\"widgetInstance.mask\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n [mask]=\"widgetInstance.mask\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onBlur)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n />\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <div class=\"textFieldButtons\">\r\n <smart-ui-action-toolbar\r\n #toolbar\r\n *ngIf=\"isToolbarPresent()\"\r\n class=\"textFieldToolbar\"\r\n matSuffix\r\n [id]=\"widgetInstance.toolbarId\"\r\n >\r\n </smart-ui-action-toolbar>\r\n @if (widgetInstance.textFieldProperties?.clearable) {\r\n <ui-action-button\r\n class=\"clearButton\"\r\n [addBasicClasses]=\"false\"\r\n [descriptor]=\"clearButtonDescriptor\"\r\n (actionClick)=\"clearField(widgetInstance.key)\"\r\n />\r\n }\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance?.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length != 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_NUMBER\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer\">\r\n <p-floatLabel>\r\n <p-inputNumber\r\n [formControlName]=\"widgetInstance.key\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n inputId=\"minmax\"\r\n mode=\"decimal\"\r\n [max]=\"widgetInstance.maxValues ?? null\"\r\n [minFractionDigits]=\"0\"\r\n [maxFractionDigits]=\"5\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onBlur)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n />\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <div\r\n *ngIf=\"widgetInstance?.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.RICH_TEXT\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div class=\"labelContainer\">\r\n <div *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"widgetContent\">\r\n <p-editor\r\n [ngClass]=\"widgetInstance.isReadonly == true ? 'disabledEditor' : ''\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [modules]=\"\r\n widgetInstance.isDisabled ? emptyQuillToolbar : widgetInstance.quillModules\r\n \"\r\n [placeholder]=\"widgetInstance.placeholder\"\r\n [readOnly]=\"widgetInstance.isReadonly\"\r\n [disabled]=\"widgetInstance.isReadonly ?? false\"\r\n [maxLength]=\"widgetInstance.maxLength\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onTextChange)=\"onPrimeRichTextEditorContentChanged($event)\"\r\n (onTextChange)=\"handleBlurEvent($event)\"\r\n />\r\n </div>\r\n <span class=\"prime-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <div\r\n *ngIf=\"widgetInstance?.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SORTABLE\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div class=\"labelContainer\">\r\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n </div>\r\n <div class=\"widgetContent\">\r\n <lib-sortable-widget\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n ></lib-sortable-widget>\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_PICKER\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer\">\r\n <p-floatLabel>\r\n <p-calendar\r\n [formControlName]=\"widgetInstance.key\"\r\n [iconDisplay]=\"'input'\"\r\n [showIcon]=\"true\"\r\n [minDate]=\"\r\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\r\n \"\r\n [maxDate]=\"\r\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\r\n \"\r\n [showClear]=\"true\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onShow)=\"onCalendarShow()\"\r\n (onInput)=\"onCalendarInput()\"\r\n (onBlur)=\"safeCalendarBlur($event)\"\r\n (onClear)=\"handleBlurEvent($event)\"\r\n (onClose)=\"handleBlurEvent($event)\"\r\n dateFormat=\"yy-mm-dd\"\r\n appendTo=\"body\"\r\n />\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <div\r\n *ngIf=\"widgetInstance?.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n\r\n @if (widgetInstance.type === smartFormWidgetType.MONTH_PICKER) {\r\n Currently not implemented\r\n }\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_TIME_PICKER\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer\">\r\n <p-floatLabel>\r\n <p-calendar\r\n [formControlName]=\"widgetInstance.key\"\r\n [iconDisplay]=\"'input'\"\r\n [showIcon]=\"true\"\r\n [showTime]=\"true\"\r\n [showClear]=\"true\"\r\n [minDate]=\"\r\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\r\n \"\r\n [maxDate]=\"\r\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\r\n \"\r\n hourFormat=\"24\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onShow)=\"onCalendarShow()\"\r\n (onInput)=\"onCalendarInput()\"\r\n (onBlur)=\"safeCalendarBlur($event)\"\r\n (onClear)=\"handleBlurEvent($event)\"\r\n (onClose)=\"handleBlurEvent($event)\"\r\n dateFormat=\"yy-mm-dd\"\r\n appendTo=\"body\"\r\n >\r\n </p-calendar>\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <div\r\n *ngIf=\"widgetInstance?.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer\">\r\n <p-floatLabel>\r\n <p-dropdown\r\n [formControlName]=\"widgetInstance.key\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n [options]=\"getOptions(widgetInstance.valueList)\"\r\n [checkmark]=\"true\"\r\n [filter]=\"true\"\r\n [showClear]=\"true\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onBlur)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n [compareWith]=\"\r\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\r\n \"\r\n appendTo=\"body\"\r\n />\r\n <span class=\"prime-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT_MULTIPLE\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer\">\r\n <p-floatLabel>\r\n <p-multiSelect\r\n [formControlName]=\"widgetInstance.key\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n [options]=\"getOptions(widgetInstance.valueList)\"\r\n [checkmark]=\"true\"\r\n [showClear]=\"true\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onPanelShow)=\"onDropDownShow()\"\r\n (onBlur)=\"safeDropDownBlur($event)\"\r\n (onClear)=\"handleBlurEvent($event)\"\r\n (onPanelHide)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n [compareWith]=\"\r\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\r\n \"\r\n appendTo=\"body\"\r\n selectedItemsLabel=\"{0} elem kiv\u00E1lasztva\"\r\n />\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_BOX\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer\" [ngClass]=\"getNgClass()\" [ngStyle]=\"getStyle()\">\r\n <p-floatLabel>\r\n <textarea\r\n class=\"sb4-textarea\"\r\n #sb4Textarea\r\n pInputTextarea\r\n [autoResize]=\"true\"\r\n cols=\"30\"\r\n [rows]=\"widgetInstance.textBoxProperties?.minRows ?? 1\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n placeholder=\" \"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (change)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n (ngModelChange)=\"onTextareaChange($event)\"\r\n ></textarea>\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n [for]=\"widgetInstance.key\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_LOOKUP\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer\">\r\n <p-floatLabel>\r\n <p-chips\r\n [disabled]=\"widgetInstance.isDisabled ? widgetInstance.isDisabled : false\"\r\n [max]=\"0\"\r\n [maxLength]=\"0\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onBlur)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n >\r\n <ng-template let-item pTemplate=\"item\"> {{ getChipsValue(item) }} </ng-template>\r\n </p-chips>\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <smart-ui-action-toolbar\r\n #toolbar\r\n *ngIf=\"isToolbarPresent()\"\r\n matSuffix\r\n [id]=\"widgetInstance.toolbarId\"\r\n ></smart-ui-action-toolbar>\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.LABEL\"\r\n class=\"label widgetContainer\"\r\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\r\n >\r\n <div class=\"label-title labelContainer\" [ngClass]=\"widgetInstance.cssClass ?? ''\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n @if (widgetInstance.widgetDescription) {\r\n <p>{{ widgetInstance.widgetDescription }}</p>\r\n }\r\n </div>\r\n </div>\r\n @if (widgetInstance.type === smartFormWidgetType.RECORDING_UPLOADER) {\r\n <div class=\"widgetContainer\">\r\n <div class=\"widgetItemContainer\">\r\n <smart-voice-recorder\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n </div>\r\n }\r\n @if (widgetInstance.type === smartFormWidgetType.FILE_UPLOADER) {\r\n <div class=\"widgetContainer\">\r\n <div class=\"widgetItemContainer\">\r\n <smart-file-editor\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (widgetInstance.type === smartFormWidgetType.MULTI_FILE_UPLOADER) {\r\n <div class=\"widgetContainer\">\r\n <div class=\"widgetItemContainer\">\r\n <smart-multi-file-editor\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n (fileEvent)=\"executeUiAction($event.uiAction)\"\r\n />\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.IMAGE\"\r\n class=\"widgetContainer imageContainer\"\r\n >\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel && getWidgetLabel(widgetInstance)\"\r\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n\r\n @if (widgetInstance.imageProperties?.image) {\r\n <smart-icon\r\n [imageResource]=\"widgetInstance.imageProperties!.image\"\r\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\r\n alt=\"Image\"\r\n title=\"{{ widgetInstance.key }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n ></smart-icon>\r\n } @else if (widgetInstance.value) {\r\n <smart-icon\r\n [imageResource]=\"widgetInstance.value\"\r\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\r\n alt=\"Image\"\r\n title=\"{{ widgetInstance.key }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n ></smart-icon>\r\n }\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TOGGLE\"\r\n class=\"widgetContainer toggle-col\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <label [ngClass]=\"widgetInstance.cssLabelClass ?? ''\" [for]=\"widgetInstance.key\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </label>\r\n <p-inputSwitch\r\n formControlName=\"{{ widgetInstance.key }}\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n name=\"{{ getWidgetLabel(widgetInstance) }}\"\r\n (onChange)=\"onValueChange?.next($event)\"\r\n (onChange)=\"handleBlurEvent($event)\"\r\n />\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n class=\"widgetContainer\"\r\n >\r\n <div\r\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\r\n <div class=\"checkbox-item-container\">\r\n <p-checkbox\r\n class=\"selecatbleObject\"\r\n formControlName=\"{{ widgetInstance.key }}\"\r\n [binary]=\"true\"\r\n [label]=\"widgetInstance.label\"\r\n />\r\n </div>\r\n <div class=\"radio-error\">\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n ></smart-icon>\r\n </div>\r\n </section>\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX_2\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n class=\"widgetContainer\"\r\n >\r\n <div\r\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\r\n <div\r\n class=\"checkbox-item-container\"\r\n *ngFor=\"let checkbox of widgetInstance.valueList; let i = index\"\r\n >\r\n <img\r\n *ngIf=\"checkbox.imageUrl\"\r\n title=\"{{ widgetInstance.key }}\"\r\n class=\"checkbox-item-image\"\r\n [src]=\"checkbox.imageUrl\"\r\n />\r\n <p-checkbox\r\n class=\"selecatbleObject\"\r\n formControlName=\"{{ widgetInstance.key + '.' + checkbox.key }}\"\r\n [ngModel]=\"checkbox.value\"\r\n [binary]=\"true\"\r\n [label]=\"checkbox.label\"\r\n />\r\n </div>\r\n <div class=\"radio-error\">\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n ></smart-icon>\r\n </div>\r\n </section>\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n\r\n @if (widgetInstance.type === smartFormWidgetType.DIV) {\r\n <div class=\"widgetContainer\">\r\n <div\r\n class=\"smartDiv\"\r\n [innerHTML]=\"sanitizeHtml(getWidgetLabel(widgetInstance))\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SVG\" class=\"widgetContainer\">\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <div\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [innerHTML]=\"sanitizeHtml(widgetInstance.value)\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n} @else {\r\n <div class=\"container material\" [formGroup]=\"form\">\r\n <div\r\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\r\n class=\"container\"\r\n *ngIf=\"widgetInstance.isVisible === undefined ? true : widgetInstance.isVisible\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CONTAINER\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [ngClass]=\"getDirection()\"\r\n >\r\n <smartformwidget\r\n *ngFor=\"let widget of widgetInstance.valueList\"\r\n [form]=\"form\"\r\n [widgetInstance]=\"widget\"\r\n class=\"container-item\"\r\n [ngClass]=\"widget.cssClass ?? ''\"\r\n [onBlur]=\"onBlur\"\r\n [onValueChange]=\"onValueChange\"\r\n [sophisticatedValueChange]=\"sophisticatedValueChange\"\r\n class=\"{{ widget.key }}\"\r\n [labelColor]=\"labelColor\"\r\n ></smartformwidget>\r\n </div>\r\n\r\n <div\r\n (capsLock)=\"capsOn = $event\"\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input textField widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n\r\n <input\r\n *ngIf=\"!widgetInstance.selection\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [attr.inputmode]=\"\r\n widgetInstance.inputMode ? widgetInstance.inputMode.toLocaleLowerCase() : 'text'\r\n \"\r\n [type]=\"'string'\"\r\n [value]=\"widgetInstance.value\"\r\n [readonly]=\"widgetInstance.isReadonly\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n matInput\r\n (change)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n type=\"{{ widgetInstance.isPassword ? (hidePassword ? 'password' : 'text') : '' }}\"\r\n (keydown.enter)=\"onKeydown()\"\r\n maxlength=\"{{ widgetInstance.maxLength }}\"\r\n />\r\n <!-- [mask]=\"widgetInstance.mask ?? ''\" -->\r\n <input\r\n *ngIf=\"widgetInstance.selection\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [type]=\"'string'\"\r\n [value]=\"widgetInstance.value\"\r\n [readonly]=\"widgetInstance.isReadonly\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n matInput\r\n (change)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n (click)=\"onValueChange?.next($event)\"\r\n type=\"{{ widgetInstance.isPassword ? 'password' : '' }}\"\r\n [matAutocomplete]=\"textFieldAuto\"\r\n (keydown.enter)=\"onKeydown()\"\r\n />\r\n <button\r\n *ngIf=\"widgetInstance.isPassword\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"togglePasswordVisibility($event)\"\r\n >\r\n <mat-icon>{{ hidePassword ? 'visibility_off' : 'visibility' }}</mat-icon>\r\n </button>\r\n <mat-autocomplete #textFieldAuto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option.label\">\r\n <span [innerHTML]=\"option.label | highlight: toHighlight\"></span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <span class=\"mat-error\" *ngIf=\"capsOn && widgetInstance.isPassword\">\r\n {{ widgetInstance.capsLockWarning }}\r\n </span>\r\n\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n\r\n <span matPrefix>\r\n <smart-icon\r\n *ngIf=\"capsOn && widgetInstance.isPassword\"\r\n [icon]=\"widgetInstance.capsLockWarningIcon ?? 'keyboard_capslock'\"\r\n color=\"warn\"\r\n ></smart-icon>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.icon && widgetInstance.iconPosition === 'PRE'\"\r\n [icon]=\"widgetInstance.icon\"\r\n [color]=\"widgetInstance.iconColor ?? 'primary'\"\r\n ></smart-icon>\r\n {{ widgetInstance.prefix }}\r\n </span>\r\n <span matSuffix>\r\n {{ widgetInstance.suffix }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"\r\n widgetInstance.icon &&\r\n (!widgetInstance.iconPosition || widgetInstance.iconPosition === 'POST')\r\n \"\r\n [icon]=\"widgetInstance.icon\"\r\n [color]=\"widgetInstance.iconColor ?? 'primary'\"\r\n matSuffix\r\n ></smart-icon>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <div class=\"textFieldButtons\">\r\n @if (widgetInstance.textFieldProperties?.clearable) {\r\n <ui-action-button\r\n class=\"clearButton\"\r\n [addBasicClasses]=\"false\"\r\n [descriptor]=\"clearButtonDescriptor\"\r\n (actionClick)=\"clearField(widgetInstance.key)\"\r\n />\r\n }\r\n </div>\r\n <smart-ui-action-toolbar\r\n #toolbar\r\n *ngIf=\"isToolbarPresent()\"\r\n class=\"textFieldToolbar\"\r\n matSuffix\r\n [id]=\"widgetInstance.toolbarId\"\r\n ></smart-ui-action-toolbar>\r\n <button\r\n *ngIf=\"widgetInstance.textFieldButton\"\r\n matSuffix\r\n mat-button\r\n color=\"{{ widgetInstance.textFieldButton.color }}\"\r\n (click)=\"widgetInstance.textFieldButton.callback(widgetInstance)\"\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n widgetInstance.textFieldButton.iconPosition ===\r\n smartFormTextFieldButtonIconPosition().PRE && widgetInstance.textFieldButton.icon\r\n \"\r\n [icon]=\"widgetInstance.textFieldButton.icon\"\r\n [color]=\"widgetInstance.textFieldButton.iconColor\"\r\n >\r\n </smart-icon>\r\n {{ widgetInstance.textFieldButton.label }}\r\n <smart-icon\r\n *ngIf=\"\r\n widgetInstance.textFieldButton.iconPosition ===\r\n smartFormTextFieldButtonIconPosition().POST && widgetInstance.textFieldButton.icon\r\n \"\r\n [icon]=\"widgetInstance.textFieldButton.icon\"\r\n >\r\n </smart-icon>\r\n </button>\r\n <mat-hint\r\n *ngIf=\"widgetInstance.showCharacterLimitSuffix && widgetInstance.maxLength\"\r\n matSuffix\r\n align=\"end\"\r\n >{{\r\n widgetInstance.maxLength - form.controls[widgetInstance.key].value.length\r\n }}</mat-hint\r\n >\r\n </mat-form-field>\r\n <mat-hint\r\n *ngIf=\"\r\n !widgetInstance?.hint ||\r\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\r\n \"\r\n >{{ widgetInstance.hint?.text }}</mat-hint\r\n >\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_NUMBER\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input textField widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <input\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [value]=\"widgetInstance.value\"\r\n [readonly]=\"widgetInstance.isReadonly\"\r\n [type]=\"'number'\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n [min]=\"widgetInstance.minValues ?? null\"\r\n [max]=\"widgetInstance.maxValues ?? null\"\r\n matInput\r\n (change)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n />\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <span matPrefix>\r\n {{ widgetInstance.prefix }}\r\n </span>\r\n <span matSuffix>\r\n {{ widgetInstance.suffix }}\r\n </span>\r\n <smart-icon *ngIf=\"widgetInstance.icon\" [icon]=\"widgetInstance.icon\" matSuffix>\r\n </smart-icon>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <button\r\n *ngIf=\"widgetInstance.textFieldButton\"\r\n matSuffix\r\n mat-button\r\n color=\"{{ widgetInstance.textFieldButton.color }}\"\r\n (click)=\"widgetInstance.textFieldButton.callback(widgetInstance)\"\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n widgetInstance.textFieldButton.iconPosition ===\r\n smartFormTextFieldButtonIconPosition().PRE && widgetInstance.textFieldButton.icon\r\n \"\r\n [icon]=\"widgetInstance.textFieldButton.icon\"\r\n >\r\n </smart-icon>\r\n {{ widgetInstance.textFieldButton.label }}\r\n <smart-icon\r\n *ngIf=\"\r\n widgetInstance.textFieldButton.iconPosition ===\r\n smartFormTextFieldButtonIconPosition().POST && widgetInstance.textFieldButton.icon\r\n \"\r\n [icon]=\"widgetInstance.textFieldButton.icon\"\r\n >\r\n </smart-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_CHIPS\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <mat-chip-grid #chipList aria-label=\"{{ widgetInstance.label }}\">\r\n <mat-chip-row\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n *ngFor=\"let value of widgetInstance.value\"\r\n (removed)=\"remove(value)\"\r\n >\r\n {{ value }}\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n <input\r\n #chipInput\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"addOnBlur\"\r\n [readonly]=\"widgetInstance.isReadonly\"\r\n [matAutocomplete]=\"chipAuto\"\r\n (matChipInputTokenEnd)=\"add($event)\"\r\n (change)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n />\r\n <mat-autocomplete\r\n #chipAuto=\"matAutocomplete\"\r\n (optionSelected)=\"selected($event, widgetInstance)\"\r\n >\r\n <mat-option\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n *ngFor=\"let item of widgetInstance.valueList\"\r\n [value]=\"item.value\"\r\n >\r\n {{ item.label }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-chip-grid>\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_LOOKUP\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <mat-chip-grid #chipListLookup aria-label=\"{{ widgetInstance.label }}\">\r\n <mat-chip\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n *ngFor=\"let value of widgetInstance.value\"\r\n (removed)=\"remove(value)\"\r\n >\r\n {{ getChipsValue(value) }}\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <input\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n [matChipInputFor]=\"chipListLookup\"\r\n [matChipInputSeparatorKeyCodes]=\"emptySeparatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"false\"\r\n [readonly]=\"true\"\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n />\r\n </mat-chip-grid>\r\n <smart-ui-action-toolbar\r\n #toolbar\r\n *ngIf=\"isToolbarPresent()\"\r\n matSuffix\r\n [id]=\"widgetInstance.toolbarId\"\r\n ></smart-ui-action-toolbar>\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_BOX\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <textarea\r\n class=\"sb4-textarea\"\r\n #sb4Textarea\r\n cols=\"30\"\r\n cdkTextareaAutosize\r\n [cdkAutosizeMinRows]=\"widgetInstance.textBoxProperties?.minRows ?? 1\"\r\n [cdkAutosizeMaxRows]=\"widgetInstance.textBoxProperties?.maxRows ?? undefined\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [type]=\"'string'\"\r\n [value]=\"widgetInstance.value\"\r\n [readonly]=\"widgetInstance.isReadonly\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n matInput\r\n (change)=\"handleBlurEvent($event)\"\r\n maxlength=\"{{ widgetInstance.maxLength }}\"\r\n ></textarea>\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <mat-hint\r\n *ngIf=\"widgetInstance.showCharacterLimitSuffix && widgetInstance.maxLength\"\r\n matSuffix\r\n align=\"end\"\r\n >{{\r\n widgetInstance.maxLength - form.controls[widgetInstance.key].value.length\r\n }}</mat-hint\r\n >\r\n </mat-form-field>\r\n <mat-hint\r\n *ngIf=\"\r\n !widgetInstance.hint || widgetInstance.hint?.position === SmartWidgetHintPosition.INPUT\r\n \"\r\n >{{ widgetInstance.hint?.text }}</mat-hint\r\n >\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <div\r\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label class=\"radioLabel\" *ngIf=\"!widgetInstance.showLabel\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\r\n <div class=\"checkbox-item-container\">\r\n <mat-checkbox\r\n class=\"selecatbleObject\"\r\n formControlName=\"{{ widgetInstance.key }}\"\r\n (change)=\"onValueChange?.next(widgetInstance)\"\r\n >\r\n {{ widgetInstance.label }}\r\n </mat-checkbox>\r\n </div>\r\n <div class=\"radio-error\">\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n ></smart-icon>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX_2\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssLabelClass }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <div\r\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label class=\"radioLabel\" *ngIf=\"!widgetInstance.showLabel\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\r\n <div\r\n class=\"checkbox-item-container\"\r\n *ngFor=\"let checkbox of widgetInstance.valueList; let i = index\"\r\n >\r\n <img\r\n *ngIf=\"checkbox.imageUrl\"\r\n title=\"{{ widgetInstance.key }}\"\r\n class=\"checkbox-item-image\"\r\n [src]=\"checkbox.imageUrl\"\r\n />\r\n <mat-checkbox\r\n class=\"selecatbleObject\"\r\n formControlName=\"{{ widgetInstance.key + '.' + checkbox.key }}\"\r\n [value]=\"checkbox.value\"\r\n (change)=\"onValueChange?.next(checkbox)\"\r\n [disabled]=\"widgetInstance.isDisabled!\"\r\n >\r\n {{ checkbox.label }}\r\n </mat-checkbox>\r\n </div>\r\n <div class=\"radio-error\">\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n ></smart-icon>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.RADIO_BUTTON\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssLabelClass }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-radio-group\r\n class=\"input radio-section widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n aria-label=\"{{ widgetInstance.label }}\"\r\n appearance=\"outline\"\r\n formControlName=\"{{ widgetInstance.key }}\"\r\n >\r\n <mat-label class=\"radioLabel\" *ngIf=\"!widgetInstance.showLabel\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <div [ngClass]=\"getDirection()\">\r\n <div class=\"radio-item-container\" *ngFor=\"let radio of widgetInstance.valueList\">\r\n <img\r\n *ngIf=\"radio.imageUrl\"\r\n title=\"{{ widgetInstance.key }}\"\r\n class=\"radio-item-image\"\r\n [src]=\"radio.imageUrl\"\r\n />\r\n <mat-radio-button\r\n class=\"selecatbleObject\"\r\n value=\"{{ radio.value }}\"\r\n [ngClass]=\"getDirection()\"\r\n (change)=\"onValueChange?.next(radio.value)\"\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n >\r\n {{ radio.label }}\r\n </mat-radio-button>\r\n </div>\r\n <div class=\"radio-error\">\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n ></smart-icon>\r\n </div>\r\n </div>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_PICKER\"\r\n class=\"datePicker widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent date {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker (closed)=\"handleBlurEvent(widgetInstance)\"></mat-datepicker>\r\n <input\r\n matInput\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [value]=\"widgetInstance.value\"\r\n [min]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\"\r\n [max]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n [matDatepicker]=\"picker\"\r\n (change)=\"handleBlurEvent(widgetInstance)\"\r\n (dateChange)=\"onValueChange?.next(widgetInstance)\"\r\n [matDatepickerFilter]=\"widgetInstance.filter ?? dateFilter\"\r\n />\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <mat-hint>\r\n {{ widgetInstance.dateFormatHint }}\r\n </mat-hint>\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_TIME_PICKER\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4 class=\"{{ labelColor }} smart-form-widget-label\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent\"\r\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\r\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <mat-datepicker-toggle matSuffix [for]=\"$any(picker)\"></mat-datepicker-toggle>\r\n <ngx-mat-datetime-picker\r\n #picker\r\n [showSpinners]=\"true\"\r\n [showSeconds]=\"false\"\r\n [stepHour]=\"1\"\r\n [stepMinute]=\"1\"\r\n [stepSecond]=\"10\"\r\n [touchUi]=\"false\"\r\n [color]=\"'primary'\"\r\n [enableMeridian]=\"false\"\r\n [disableMinute]=\"false\"\r\n [hideTime]=\"false\"\r\n >\r\n </ngx-mat-datetime-picker>\r\n <input\r\n matInput\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [value]=\"widgetInstance.value\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n [ngxMatDatetimePicker]=\"picker\"\r\n [ngxMatDatetimePickerFilter]=\"widgetInstance.filter ?? dateFilter\"\r\n (blur)=\"onBlur?.next(widgetInstance)\"\r\n />\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <mat-hint>\r\n {{ widgetInstance.dateFormatHint }}\r\n </mat-hint>\r\n </mat-form-field>\r\n </div> -->\r\n\r\n @if (widgetInstance.type === smartFormWidgetType.MONTH_PICKER) {\r\n <div class=\"widgetContainer\">\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <div class=\"{{ labelColor }} smart-form-widget-label\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <lib-smart-month-picker\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n (valueChange)=\"handleYearMonthPicked($event)\"\r\n ></lib-smart-month-picker>\r\n </div>\r\n }\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_TIME_PICKER\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <div\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <div class=\"dateTimePickerContainer\">\r\n <mat-form-field\r\n class=\"input widgetContent date {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker (closed)=\"handleBlurEvent(widgetInstance)\"></mat-datepicker>\r\n <input\r\n #dateInput\r\n matInput\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [min]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\"\r\n [max]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\"\r\n [id]=\"widgetInstance.key\"\r\n [value]=\"widgetInstance.value\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n [matDatepicker]=\"picker\"\r\n (blur)=\"onDatePickerBlur($event)\"\r\n (dateChange)=\"onValueChange?.next(widgetInstance)\"\r\n [matDatepickerFilter]=\"widgetInstance.filter ?? dateFilter\"\r\n />\r\n\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <mat-hint>\r\n {{ widgetInstance.dateFormatHint }}\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-form-field\r\n *ngIf=\"hasCreated\"\r\n class=\"input widgetContent time\"\r\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\r\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\r\n appearance=\"outline\"\r\n >\r\n <input\r\n #timeInput\r\n [formControlName]=\"widgetInstance.key + '-time'\"\r\n [attr.data-testid]=\"widgetInstance.key + '-time'\"\r\n [id]=\"widgetInstance.key\"\r\n [type]=\"'time'\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n (blur)=\"onTimePickerBlur($event)\"\r\n matInput\r\n />\r\n </mat-form-field>\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <div\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <mat-select\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (selectionChange)=\"onValueChange?.next($event.value)\"\r\n (closed)=\"handleBlurEvent(widgetInstance)\"\r\n [disabled]=\"widgetInstance.isDisabled!\"\r\n [compareWith]=\"\r\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\r\n \"\r\n placeholder=\"{{ widgetInstance.placeholder ? widgetInstance.placeholder : '' }}\"\r\n >\r\n <div *ngFor=\"let option of widgetInstance.valueList\">\r\n <mat-optgroup\r\n *ngIf=\"option.type === getType().ITEM_GROUP\"\r\n [label]=\"option.label\"\r\n [disabled]=\"option.isDisabled\"\r\n >\r\n <mat-option\r\n *ngFor=\"let innerOption of option.valueList\"\r\n [value]=\"innerOption.value\"\r\n [disabled]=\"innerOption.isDisabled\"\r\n >\r\n <smart-icon\r\n *ngIf=\"innerOption.icon\"\r\n [icon]=\"innerOption.icon\"\r\n [color]=\"innerOption.iconColor\"\r\n ></smart-icon>\r\n {{ innerOption.label }}\r\n </mat-option>\r\n </mat-optgroup>\r\n <mat-option\r\n *ngIf=\"option.type === getType().ITEM\"\r\n [value]=\"option.value\"\r\n [disabled]=\"option.isDisabled\"\r\n >\r\n <smart-icon\r\n *ngIf=\"option.icon\"\r\n [icon]=\"option.icon\"\r\n [color]=\"option.iconColor\"\r\n ></smart-icon\r\n >{{ option.label }}</mat-option\r\n >\r\n </div>\r\n </mat-select>\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n </mat-form-field>\r\n <mat-hint\r\n *ngIf=\"\r\n !widgetInstance?.hint ||\r\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\r\n \"\r\n >{{ widgetInstance.hint?.text }}</mat-hint\r\n >\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT_MULTIPLE\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <mat-select\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n multiple\r\n (selectionChange)=\"onValueChange?.next($event.value)\"\r\n (closed)=\"handleBlurEvent(widgetInstance)\"\r\n [disabled]=\"widgetInstance.isDisabled!\"\r\n [compareWith]=\"\r\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\r\n \"\r\n placeholder=\"{{ widgetInstance.placeholder ? widgetInstance.placeholder : '' }}\"\r\n >\r\n <div *ngFor=\"let option of widgetInstance.valueList\">\r\n <mat-optgroup\r\n *ngIf=\"option.type === getType().ITEM_GROUP\"\r\n [label]=\"option.label\"\r\n [disabled]=\"option.isDisabled\"\r\n >\r\n <mat-option\r\n *ngFor=\"let innerOption of option.valueList\"\r\n [value]=\"innerOption.value\"\r\n [disabled]=\"innerOption.isDisabled\"\r\n >\r\n <smart-icon\r\n *ngIf=\"innerOption.icon\"\r\n [icon]=\"innerOption.icon\"\r\n [color]=\"innerOption.iconColor\"\r\n ></smart-icon\r\n >{{ innerOption.label }}</mat-option\r\n >\r\n </mat-optgroup>\r\n <mat-option\r\n *ngIf=\"option.type === getType().ITEM\"\r\n [value]=\"option.value\"\r\n [disabled]=\"option.isDisabled\"\r\n >\r\n <smart-icon\r\n *ngIf=\"option.icon\"\r\n [icon]=\"option.icon\"\r\n [color]=\"option.iconColor\"\r\n ></smart-icon\r\n >{{ option.label }}</mat-option\r\n >\r\n </div>\r\n </mat-select>\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n </mat-form-field>\r\n <mat-hint\r\n *ngIf=\"\r\n !widgetInstance?.hint ||\r\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\r\n \"\r\n >{{ widgetInstance.hint?.text }}</mat-hint\r\n >\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.LABEL\"\r\n class=\"label widgetContainer\"\r\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\r\n >\r\n <div class=\"label-title labelContainer\" [ngClass]=\"widgetInstance.cssClass ?? ''\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n @if (widgetInstance.widgetDescription) {\r\n <p>{{ widgetInstance.widgetDescription }}</p>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.TIME\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent time {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <input\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [type]=\"'time'\"\r\n [value]=\"getTime()\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n matInput\r\n (change)=\"handleBlurEvent(widgetInstance)\"\r\n />\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.TOGGLE\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <div\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n >\r\n <mat-slide-toggle\r\n formControlName=\"{{ widgetInstance.key }}\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n value=\"{{ widgetInstance.value }}\"\r\n (change)=\"onValueChange?.next($event)\"\r\n [labelPosition]=\"widgetInstance.toggleLabelPosition ?? 'before'\"\r\n >{{ !widgetInstance.showLabel ? widgetInstance.label : '' }}</mat-slide-toggle\r\n ><span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n ></smart-icon>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.INDICATOR\" class=\"widgetContainer\">\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"{{ labelColor }} labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <div class=\"smartIndicator widgetContent\">\r\n <div class=\"indicatorItems {{ widgetInstance.cssClass ?? '' }}\" [ngClass]=\"getNgClass()\">\r\n <div\r\n *ngFor=\"let item of indicatorItems; let i = index\"\r\n class=\"indicatorItem\"\r\n [ngClass]=\"getIndicatorItemClass(i)\"\r\n ></div>\r\n </div>\r\n <p [ngClass]=\"getIndicatorStatusLabelColor()\">\r\n {{ getIndicatorStatusLabel() }}\r\n </p>\r\n </div>\r\n </div>\r\n @if (widgetInstance.type === smartFormWidgetType.RECORDING_UPLOADER) {\r\n <div class=\"widgetContainer\">\r\n <div class=\"widgetItemContainer\">\r\n <smart-voice-recorder\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n @if (widgetInstance.type === smartFormWidgetType.FILE_UPLOADER) {\r\n <div class=\"widgetContainer\">\r\n <smart-file-editor\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n </div>\r\n }\r\n\r\n @if (widgetInstance.type === smartFormWidgetType.MULTI_FILE_UPLOADER) {\r\n <div class=\"widgetContainer\">\r\n <smart-multi-file-editor\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n (fileEvent)=\"executeUiAction($event.uiAction)\"\r\n />\r\n </div>\r\n }\r\n\r\n @if (widgetInstance.type === smartFormWidgetType.IMAGE) {\r\n <div class=\"widgetContainer imageContainer\">\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel && getWidgetLabel(widgetInstance)\"\r\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n\r\n @if (widgetInstance.imageProperties?.image) {\r\n <smart-icon\r\n [imageResource]=\"widgetInstance.imageProperties?.image\"\r\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\r\n alt=\"Image\"\r\n title=\"{{ widgetInstance.key }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n ></smart-icon>\r\n } @else if (widgetInstance.value) {\r\n <smart-icon\r\n [(ngModel)]=\"widgetInstance.value\"\r\n [imageResource]=\"widgetInstance.value\"\r\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\r\n alt=\"Image\"\r\n title=\"{{ widgetInstance.key }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n ></smart-icon>\r\n }\r\n </div>\r\n }\r\n\r\n @if (widgetInstance.type === smartFormWidgetType.DIV) {\r\n <div class=\"widgetContainer\">\r\n <div\r\n class=\"smartDiv\"\r\n [innerHTML]=\"sanitizeHtml(getWidgetLabel(widgetInstance))\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SVG\" class=\"widgetContainer\">\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <div\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [innerHTML]=\"sanitizeHtml(widgetInstance.value)\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n ></div>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.DIVIDER\" class=\"widgetContainer\">\r\n <hr\r\n class=\"smartDivider {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n />\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.BUTTON\" class=\"widgetContainer\">\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <div\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n >\r\n <button\r\n mat-button\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [ngClass]=\"getButtonType(widgetInstance.uiActionDescriptor)\"\r\n [color]=\"widgetInstance.uiActionDescriptor?.color\"\r\n (click)=\"onButtonClicked(widgetInstance)\"\r\n >\r\n <div\r\n *ngIf=\"isOnlyIcon(widgetInstance.uiActionDescriptor); then iconOnly; else text\"\r\n ></div>\r\n <ng-template #iconOnly>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.uiActionDescriptor?.icon\"\r\n [icon]=\"widgetInstance.uiActionDescriptor!.icon!\"\r\n [color]=\"\r\n widgetInstance.uiActionDescriptor?.iconColor ??\r\n widgetInstance.uiActionDescriptor?.color\r\n \"\r\n ></smart-icon>\r\n </ng-template>\r\n <ng-template #text>\r\n <smart-icon\r\n *ngIf=\"\r\n widgetInstance.uiActionDescriptor?.icon &&\r\n widgetInstance.uiActionDescriptor?.iconPosition === 'PRE'\r\n \"\r\n [icon]=\"widgetInstance.uiActionDescriptor!.icon!\"\r\n [color]=\"\r\n widgetInstance.uiActionDescriptor?.iconColor ??\r\n widgetInstance.uiActionDescriptor?.color\r\n \"\r\n ></smart-icon>\r\n {{ widgetInstance.uiActionDescriptor?.title }}\r\n <smart-icon\r\n *ngIf=\"\r\n widgetInstance.uiActionDescriptor?.icon &&\r\n widgetInstance.uiActionDescriptor?.iconPosition === 'POST'\r\n \"\r\n [icon]=\"widgetInstance.uiActionDescriptor!.icon!\"\r\n [color]=\"\r\n widgetInstance.uiActionDescriptor?.iconColor ??\r\n widgetInstance.uiActionDescriptor?.color\r\n \"\r\n ></smart-icon>\r\n </ng-template>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"widgetContainer\">\r\n <h4\r\n class=\"labelContainer\"\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.COMPONENT && widgetInstance.showLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <div class=\"widgetContent\">\r\n <ng-template #customComponent></ng-template>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.RICH_TEXT\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\">\r\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <div class=\"widgetContent\">\r\n <quill-editor\r\n #quillEditor\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [modules]=\"widgetInstance.isDisabled ? emptyQuillToolbar : widgetInstance.quillModules\"\r\n [placeholder]=\"widgetInstance.placeholder\"\r\n [readOnly]=\"widgetInstance.isReadonly\"\r\n [maxLength]=\"widgetInstance.maxLength\"\r\n (onContentChanged)=\"onRichTextEditorContentChanged($event)\"\r\n ></quill-editor>\r\n <mat-hint\r\n *ngIf=\"\r\n !widgetInstance?.hint ||\r\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\r\n \"\r\n >{{ widgetInstance.hint?.text }}</mat-hint\r\n >\r\n <mat-hint\r\n *ngIf=\"widgetInstance.showCharacterLimitSuffix && widgetInstance.maxLength\"\r\n matSuffix\r\n align=\"end\"\r\n class=\"rich-text-editor-leeway-counter\"\r\n >{{ getRichTextEditorLengthLeeway() }}</mat-hint\r\n >\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SORTABLE\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\">\r\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <div class=\"widgetContent\">\r\n <lib-sortable-widget\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n ></lib-sortable-widget>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.MATRIX\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\">\r\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n\r\n <table class=\"matrixTable widgetContent\">\r\n <tr>\r\n <th></th>\r\n <th class=\"optionLabel\" *ngFor=\"let option of widgetInstance.value.columns\">\r\n {{ option.displayValue }}\r\n </th>\r\n </tr>\r\n <tr *ngFor=\"let question of widgetInstance.value.rows; let i = index\">\r\n <th class=\"questionLabel\">\r\n <label>{{ question.displayValue }}</label>\r\n </th>\r\n\r\n <td class=\"selectTd\" *ngFor=\"let option of widgetInstance.value.columns; let j = index\">\r\n <mat-radio-group\r\n *ngIf=\"!widgetInstance.isMultiple\"\r\n [formControlName]=\"widgetInstance.key + '.' + question.code\"\r\n [name]=\"'q' + i\"\r\n >\r\n <mat-radio-button [value]=\"option.code\"> </mat-radio-button>\r\n </mat-radio-group>\r\n <div *ngIf=\"widgetInstance.isMultiple\">\r\n <mat-checkbox\r\n [formControlName]=\"\r\n widgetInstance.key + '.data.' + question.code + '.' + option.code\r\n \"\r\n [value]=\"widgetInstance.value['data'][question.code][option.code]\"\r\n [checked]=\"true\"\r\n ></mat-checkbox>\r\n </div>\r\n </td>\r\n <br />\r\n <button *ngIf=\"widgetInstance.button\" mat-icon-button (click)=\"removeMatrixRow(question)\"\r\n ><smart-icon icon=\"close\"></smart-icon\r\n ></button>\r\n </tr>\r\n </table>\r\n </div>\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.YOUTUBE_PLAYER\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\">\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"{{ labelColor }} {{ widgetInstance.cssLabelClass }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <youtube-player\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n videoId=\"{{ widgetInstance.videoId }}\"\r\n [width]=\"widgetInstance.width\"\r\n [height]=\"widgetInstance.height\"\r\n [startSeconds]=\"widgetInstance.startSeconds\"\r\n [endSeconds]=\"widgetInstance.endSeconds\"\r\n ></youtube-player>\r\n <mat-hint\r\n *ngIf=\"\r\n !widgetInstance?.hint || widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\r\n \"\r\n >{{ widgetInstance.hint?.text }}</mat-hint\r\n >\r\n </div>\r\n </div>\r\n}\r\n", styles: [".ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:\"\\2022\"}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li *{pointer-events:all}.ql-editor ul[data-checked=true]>li:before,.ql-editor ul[data-checked=false]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:\"\\2611\"}.ql-editor ul[data-checked=false]>li:before{content:\"\\2610\"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) \". \"}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) \". \"}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) \". \"}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) \". \"}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) \". \"}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) \". \"}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) \". \"}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) \". \"}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) \". \"}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) \". \"}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:\"\";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media (pointer: coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:\"\";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=\"\"]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:\"Normal\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"1\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before{content:\"Heading 1\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"2\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before{content:\"Heading 2\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"3\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before{content:\"Heading 3\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"4\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before{content:\"Heading 4\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"5\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before{content:\"Heading 5\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"6\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before{content:\"Heading 6\"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:\"Sans Serif\"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:\"Serif\"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:\"Monospace\"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:\"Normal\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:\"Small\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:\"Large\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:\"Huge\"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0px}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:\"Visit URL:\";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:\"Edit\";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:\"Remove\";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0px;content:\"Save\";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:\"Enter link:\"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:\"Enter formula:\"}.ql-snow .ql-tooltip[data-mode=video]:before{content:\"Enter video:\"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}.checkbox-section,.radio-section{display:flex;flex-direction:column}.input{width:100%}.direction-col,.toggle-col{display:flex;flex-direction:column;gap:.5em}.toggle-col>label{font-size:.75rem;color:#6b7280;padding-left:.5em}.prime-error{color:red}.direction-row{display:flex;flex-direction:row;align-items:center;gap:.5em}.selecatbleObject{margin:.5em}.radioLabel{color:var(--primary-color);text-align:left!important}.container{height:100%}.input{height:100%;display:flex;flex-direction:column}.checkbox{flex-direction:column}.mat-form-field-wrapper{padding-bottom:0!important}.input .mat-mdc-standard-chip.mat-chip-with-trailing-icon{padding-right:12px}.time-picker{display:flex;flex-direction:row;height:100%;border:solid 2px lightgrey;padding:1em;border-radius:4px}.time-picker:hover{border-color:#000}::ng-deep .mat-h4 .mat-body-1 .mat-typography h4{margin:0}.label{margin:28px 0 8px}.smartIndicator{display:flex;flex-direction:column;gap:.25rem;width:-moz-fit-content;width:fit-content}.indicatorItems{display:flex;flex-direction:row;gap:.25rem}.indicatorItem{width:3rem;height:.25rem;background-color:#d3d3d3;border-radius:.5rem}.radio-error{width:-moz-fit-content;width:fit-content;display:flex;flex-direction:row;gap:.5rem}.mat-calendar-previous-button,.mat-calendar-next-button{padding:0;min-width:0;width:40px!important;height:40px!important;flex-shrink:0;line-height:40px;border-radius:50%}.mat-calendar-arrow{height:36px!important;display:flex!important;flex-direction:column!important;justify-content:center}.radio-item-container,.checkbox-item-container{display:flex;flex-direction:column}.widgetContent::ng-deep .ql-container{height:200px;width:460px}.dateTimePickerContainer{display:flex;flex-direction:row;gap:.25rem}.dateTimePickerContainer mat-form-field{flex:1}.date{width:125px}.time{width:90px}.date .mat-form-field-infix,.time .mat-form-field-infix{width:inherit!important}::ng-deep .mat-icon.mat-drag-indicator{--drag-indicator: #3b3b3b;color:var(--drag-indicator)}.matrixTable{width:100%;border-spacing:0 1rem}.matrixTable th{padding:.25rem}.matrixTable .optionLabel,.matrixTable td{text-align:center}.example-month-picker .mat-calendar-period-button{pointer-events:none}.example-month-picker .mat-calendar-arrow{display:none}.textFieldContainer{display:flex;flex-direction:row}.textFieldContainer p-floatlabel{flex:1}.textFieldContainer{align-content:center;border:1px solid #cbd5e1;border-radius:3px;background-color:#fff}.textFieldContainer input{border:unset}.textFieldContainer:focus-within:not(:has(input:disabled)){outline:0 none;outline-offset:0;box-shadow:0 0 0 .2rem #a6d5fa;border-color:#2196f3}.textFieldContainer:has(input:disabled) .clearButton{cursor:not-allowed;opacity:.6}.textFieldContainer:has(.p-inputtext.ng-dirty.ng-invalid){border-color:#f44336}.textFieldContainer:has(.p-inputtext.ng-dirty.ng-invalid) label{color:#f44336}.p-inputtext:enabled:focus{outline:unset;outline-offset:unset;box-shadow:unset;border-color:unset}.textFieldButtons{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.clearButton .mat-mdc-raised-button,.clearButton button{background-color:unset!important;border:unset;color:#6b7280!important;box-shadow:unset;font-size:1rem!important}.clearButton .mat-icon.mat-primary{color:#6b7280!important}.clearButton .mat-mdc-raised-button:hover,.clearButton button:hover{color:#6b7280cc!important;background-color:unset;border:unset;box-shadow:unset;font-size:1rem!important}.mat-mdc-form-field-infix{display:flex;flex-direction:row}p-calendar{display:flex;width:100%}p-calendar span{width:100%}textarea:not(:placeholder-shown)~label{top:-.75em!important;font-size:12px!important}.p-calendar ::ng-deep timesicon ::ng-deep .p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.p-calendar ::ng-deep timesicon.p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.p-calendar timesicon ::ng-deep .p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.p-calendar timesicon.p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.container:has(.p-inputswitch){height:unset}.disabledEditor *{-webkit-user-modify:read-only;-moz-user-modify:read-only;user-modify:read-only}.sb4-textarea{--sb4-textarea-line-height: 20px;line-height:var(--sb4-textarea-line-height);overflow-y:auto!important}.widgetContainer .imageIcon{max-width:unset!important;height:unset!important}.prime .widgetContainer{height:100%;width:100%;display:flex;flex-direction:column;position:relative}.prime .widgetContainer smart-ui-action-toolbar{flex:unset}.prime .widgetContainer .p-dropdown{flex:1;display:flex}.prime .widgetContainer :is(.p-float-label,p-floatlabel){height:100%;width:100%}.prime .widgetItemContainer{height:100%;width:100%;display:flex;flex-direction:row}.prime .widgetItemContainer smart-ui-action-toolbar{flex:unset}.prime .widgetItemContainer .p-dropdown{flex:1;display:flex}.prime .widgetItemContainer :is(.p-float-label,p-floatlabel){height:100%;width:100%}.prime :is(p-calendar,.p-multiselect){height:100%}.material .sb4-textarea{resize:vertical!important}.material .smart-form-widget-label{font-weight:700}.material .mat-mdc-form-field-subscript-wrapper{display:none}.label-right{display:flex;gap:.5rem;flex-direction:row-reverse}.label-left{display:flex;gap:.5rem;flex-direction:row}.label-top{display:flex;gap:.5rem;flex-direction:column}.label-bottom{display:flex;gap:.5rem;flex-direction:column-reverse}.p-message .p-message-wrapper{padding:.5rem}.smartDiv{width:100%}.p-message.p-message-error .p-message-icon{color:#73000c;display:flex}.p-message.p-message-error{position:absolute;top:100%;left:0;z-index:1000;border-radius:4px;box-shadow:0 2px 6px #0003;margin:.2rem 0!important}.p-inputgroup-addon{max-height:2.8rem;background:unset;border:unset!important}\n/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i9.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled", "tabIndex"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i9.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i9.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i9.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i9.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "directive", type: i10.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: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i10.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i10.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i11.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i11.MatLabel, selector: "mat-label" }, { kind: "directive", type: i11.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i11.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i11.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4$3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i13.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i14.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i14.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i16.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "component", type: i4$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i18.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i18.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: i19.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i20.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i20.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i21.QuillEditorComponent, selector: "quill-editor" }, { kind: "component", type: i22.YouTubePlayer, selector: "youtube-player", inputs: ["videoId", "height", "width", "startSeconds", "endSeconds", "suggestedQuality", "playerVars", "disableCookies", "showBeforeIframeApiLoads"], outputs: ["ready", "stateChange", "error", "apiChange", "playbackQualityChange", "playbackRateChange"] }, { kind: "directive", type: i23.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i24.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange", "onClose"] }, { kind: "component", type: i25.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i1$5.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i1$6.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i28.InputSwitch, selector: "p-inputSwitch", inputs: ["style", "styleClass", "tabindex", "inputId", "name", "disabled", "readonly", "trueValue", "falseValue", "ariaLabel", "ariaLabelledBy", "autofocus"], outputs: ["onChange"] }, { kind: "component", type: i29.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "directive", type: i30.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize", "variant"], outputs: ["onResize"] }, { kind: "component", type: i31.FloatLabel, selector: "p-floatLabel" }, { kind: "component", type: i32.Chips, selector: "p-chips", inputs: ["style", "styleClass", "disabled", "field", "placeholder", "max", "maxLength", "ariaLabel", "ariaLabelledBy", "tabindex", "inputId", "allowDuplicate", "caseSensitiveDuplication", "inputStyle", "inputStyleClass", "addOnTab", "addOnBlur", "separator", "showClear", "autofocus", "variant"], outputs: ["onAdd", "onRemove", "onFocus", "onBlur", "onChipClick", "onClear"] }, { kind: "component", type: i33.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: i34.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "component", type: i35.InputMask, selector: "p-inputMask", inputs: ["type", "slotChar", "autoClear", "showClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "variant", "ariaLabel", "ariaLabelledBy", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autofocus", "autoFocus", "autocomplete", "keepBuffer", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown", "onClear"] }, { kind: "component", type: i36.Editor, selector: "p-editor", inputs: ["style", "styleClass", "placeholder", "formats", "modules", "bounds", "scrollingContainer", "debug", "readonly"], outputs: ["onInit", "onTextChange", "onSelectionChange"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: SmartformwidgetComponent, selector: "smartformwidget", inputs: ["form", "widgetInstance", "onBlur", "onValueChange", "labelColor", "sophisticatedValueChange", "blurSophisticatedValueChange"], outputs: ["valueCleared"] }, { kind: "directive", type: TrackCapsDirective, selector: "[capsLock]", outputs: ["capsLock"] }, { kind: "directive", type: ComparableDropdownDirective, selector: "p-dropdown", inputs: ["compareWith"] }, { kind: "directive", type: ComparableMultiselectDirective, selector: "p-multiSelect", inputs: ["compareWith"] }, { kind: "component", type: SortableWidgetComponent, selector: "lib-sortable-widget", inputs: ["widgetInstance"] }, { kind: "component", type: SmartMonthPickerComponent, selector: "lib-smart-month-picker", inputs: ["widgetInstance"], outputs: ["valueChange"] }, { kind: "component", type: SmartFileEditorComponent, selector: "smart-file-editor", inputs: ["widgetInstance"], outputs: ["uploadFilesEvent"] }, { kind: "component", type: SmartMultiFileEditorComponent, selector: "smart-multi-file-editor", inputs: ["widgetInstance"], outputs: ["uploadFilesEvent", "fileEvent"] }, { kind: "component", type: SmartVoiceRecorderComponent, selector: "smart-voice-recorder", inputs: ["widgetInstance"], outputs: ["uploadFilesEvent"] }, { kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: HighlightPipe, name: "highlight" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
9750
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartformwidgetComponent, selector: "smartformwidget", inputs: { form: "form", widgetInstance: "widgetInstance", onBlur: "onBlur", onValueChange: "onValueChange", labelColor: "labelColor", sophisticatedValueChange: "sophisticatedValueChange", blurSophisticatedValueChange: "blurSophisticatedValueChange" }, outputs: { valueCleared: "valueCleared" }, viewQueries: [{ propertyName: "chipInputChild", first: true, predicate: ["chipInput"], descendants: true }, { propertyName: "customComponentVcRef", first: true, predicate: ["customComponent"], descendants: true, read: ViewContainerRef }, { propertyName: "quill", first: true, predicate: ["quillEditor"], descendants: true }, { propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "sb4Textarea", first: true, predicate: ["sb4Textarea"], descendants: true }, { propertyName: "fileUploader", first: true, predicate: SmartFileEditorComponent, descendants: true }, { propertyName: "multiFileUploader", first: true, predicate: SmartMultiFileEditorComponent, descendants: true }, { propertyName: "dateInputChild", first: true, predicate: ["dateInput"], descendants: true }, { propertyName: "timeInputChild", first: true, predicate: ["timeInput"], descendants: true }, { propertyName: "childrenWidgetsQL", predicate: SmartformwidgetComponent, descendants: true }], ngImport: i0, template: "@if (compLib === componentLibrary.PRIMENG) {\n <div class=\"container prime\" [formGroup]=\"form\">\n <div\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\n class=\"container\"\n *ngIf=\"widgetInstance.isVisible === undefined ? true : widgetInstance.isVisible\"\n >\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CONTAINER\"\n [attr.data-testid]=\"widgetInstance.key\"\n [ngClass]=\"getDirection()\"\n >\n <smartformwidget\n *ngFor=\"let widget of widgetInstance.valueList\"\n [form]=\"form\"\n [widgetInstance]=\"widget\"\n class=\"container-item\"\n [ngClass]=\"widget.cssClass ?? ''\"\n [onBlur]=\"onBlur\"\n [onValueChange]=\"onValueChange\"\n [sophisticatedValueChange]=\"sophisticatedValueChange\"\n [blurSophisticatedValueChange]=\"blurSophisticatedValueChange\"\n class=\"{{ widget.key }}\"\n [labelColor]=\"labelColor\"\n ></smartformwidget>\n </div>\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer textFieldContainer\">\n <p-floatLabel [ngClass]=\"{ hasToolbar: isToolbarPresent() }\">\n <input\n *ngIf=\"!widgetInstance.mask\"\n [formControlName]=\"widgetInstance.key\"\n [(ngModel)]=\"widgetInstance.value\"\n type=\"{{ widgetInstance.isPassword ? (hidePassword ? 'password' : 'text') : '' }}\"\n pInputText\n formControlName=\"text\"\n [attr.data-testid]=\"widgetInstance.key\"\n (change)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n />\n <p-inputMask\n *ngIf=\"widgetInstance.mask\"\n [formControlName]=\"widgetInstance.key\"\n [(ngModel)]=\"widgetInstance.value\"\n [mask]=\"widgetInstance.mask\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onBlur)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n />\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <div class=\"textFieldButtons\">\n <smart-ui-action-toolbar\n #toolbar\n *ngIf=\"isToolbarPresent()\"\n class=\"textFieldToolbar\"\n matSuffix\n [id]=\"widgetInstance.toolbarId\"\n >\n </smart-ui-action-toolbar>\n @if (widgetInstance.textFieldProperties?.clearable) {\n <ui-action-button\n class=\"clearButton\"\n [addBasicClasses]=\"false\"\n [descriptor]=\"clearButtonDescriptor\"\n (actionClick)=\"clearField(widgetInstance.key)\"\n />\n }\n </div>\n <div\n *ngIf=\"widgetInstance?.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length != 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_NUMBER\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer\">\n <p-floatLabel>\n <p-inputNumber\n [formControlName]=\"widgetInstance.key\"\n [(ngModel)]=\"widgetInstance.value\"\n inputId=\"minmax\"\n mode=\"decimal\"\n [max]=\"widgetInstance.maxValues ?? null\"\n [minFractionDigits]=\"0\"\n [maxFractionDigits]=\"5\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onBlur)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n />\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <div\n *ngIf=\"widgetInstance?.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.RICH_TEXT\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div class=\"labelContainer\">\n <div *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n </div>\n <div>\n <div class=\"widgetContent\">\n <p-editor\n [ngClass]=\"widgetInstance.isReadonly == true ? 'disabledEditor' : ''\"\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [modules]=\"\n widgetInstance.isDisabled ? emptyQuillToolbar : widgetInstance.quillModules\n \"\n [placeholder]=\"widgetInstance.placeholder\"\n [readOnly]=\"widgetInstance.isReadonly\"\n [disabled]=\"widgetInstance.isReadonly ?? false\"\n [maxLength]=\"widgetInstance.maxLength\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onTextChange)=\"onPrimeRichTextEditorContentChanged($event)\"\n (onTextChange)=\"handleBlurEvent($event)\"\n />\n </div>\n <span class=\"prime-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <div\n *ngIf=\"widgetInstance?.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SORTABLE\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div class=\"labelContainer\">\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n </div>\n <div class=\"widgetContent\">\n <lib-sortable-widget\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n ></lib-sortable-widget>\n </div>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_PICKER\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer\">\n <p-floatLabel>\n <p-calendar\n [formControlName]=\"widgetInstance.key\"\n [iconDisplay]=\"'input'\"\n [showIcon]=\"true\"\n [minDate]=\"\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\n \"\n [maxDate]=\"\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\n \"\n [showClear]=\"true\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onShow)=\"onCalendarShow()\"\n (onInput)=\"onCalendarInput()\"\n (onBlur)=\"safeCalendarBlur($event)\"\n (onClear)=\"handleBlurEvent($event)\"\n (onClose)=\"handleBlurEvent($event)\"\n dateFormat=\"yy-mm-dd\"\n appendTo=\"body\"\n />\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <div\n *ngIf=\"widgetInstance?.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n\n @if (widgetInstance.type === smartFormWidgetType.MONTH_PICKER) {\n Currently not implemented\n }\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_TIME_PICKER\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer\">\n <p-floatLabel>\n <p-calendar\n [formControlName]=\"widgetInstance.key\"\n [iconDisplay]=\"'input'\"\n [showIcon]=\"true\"\n [showTime]=\"true\"\n [showClear]=\"true\"\n [minDate]=\"\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\n \"\n [maxDate]=\"\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\n \"\n hourFormat=\"24\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onShow)=\"onCalendarShow()\"\n (onInput)=\"onCalendarInput()\"\n (onBlur)=\"safeCalendarBlur($event)\"\n (onClear)=\"handleBlurEvent($event)\"\n (onClose)=\"handleBlurEvent($event)\"\n dateFormat=\"yy-mm-dd\"\n appendTo=\"body\"\n >\n </p-calendar>\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <div\n *ngIf=\"widgetInstance?.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer\">\n <p-floatLabel>\n <p-dropdown\n [formControlName]=\"widgetInstance.key\"\n [(ngModel)]=\"widgetInstance.value\"\n [options]=\"getOptions(widgetInstance.valueList)\"\n [checkmark]=\"true\"\n [filter]=\"true\"\n [showClear]=\"true\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onBlur)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n [compareWith]=\"\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\n \"\n appendTo=\"body\"\n />\n <span class=\"prime-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT_MULTIPLE\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer\">\n <p-floatLabel>\n <p-multiSelect\n [formControlName]=\"widgetInstance.key\"\n [(ngModel)]=\"widgetInstance.value\"\n [options]=\"getOptions(widgetInstance.valueList)\"\n [checkmark]=\"true\"\n [showClear]=\"true\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onPanelShow)=\"onDropDownShow()\"\n (onBlur)=\"safeDropDownBlur($event)\"\n (onClear)=\"handleBlurEvent($event)\"\n (onPanelHide)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n [compareWith]=\"\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\n \"\n appendTo=\"body\"\n selectedItemsLabel=\"{0} elem kiv\u00E1lasztva\"\n />\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_BOX\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer\" [ngClass]=\"getNgClass()\" [ngStyle]=\"getStyle()\">\n <p-floatLabel>\n <textarea\n class=\"sb4-textarea\"\n #sb4Textarea\n pInputTextarea\n [autoResize]=\"true\"\n cols=\"30\"\n [rows]=\"widgetInstance.textBoxProperties?.minRows ?? 1\"\n [formControlName]=\"widgetInstance.key\"\n [(ngModel)]=\"widgetInstance.value\"\n placeholder=\" \"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n (change)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n (ngModelChange)=\"onTextareaChange($event)\"\n ></textarea>\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n [for]=\"widgetInstance.key\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_LOOKUP\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer\">\n <p-floatLabel>\n <p-chips\n [disabled]=\"widgetInstance.isDisabled ? widgetInstance.isDisabled : false\"\n [max]=\"0\"\n [maxLength]=\"0\"\n [formControlName]=\"widgetInstance.key\"\n [(ngModel)]=\"widgetInstance.value\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onBlur)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n >\n <ng-template let-item pTemplate=\"item\"> {{ getChipsValue(item) }} </ng-template>\n </p-chips>\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <smart-ui-action-toolbar\n #toolbar\n *ngIf=\"isToolbarPresent()\"\n matSuffix\n [id]=\"widgetInstance.toolbarId\"\n ></smart-ui-action-toolbar>\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.LABEL\"\n class=\"label widgetContainer\"\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\n >\n <div class=\"label-title labelContainer\" [ngClass]=\"widgetInstance.cssClass ?? ''\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n @if (widgetInstance.widgetDescription) {\n <p>{{ widgetInstance.widgetDescription }}</p>\n }\n </div>\n </div>\n @if (widgetInstance.type === smartFormWidgetType.RECORDING_UPLOADER) {\n <div class=\"widgetContainer\">\n <div class=\"widgetItemContainer\">\n <smart-voice-recorder\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n (uploadFilesEvent)=\"upload($event)\"\n />\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n </div>\n }\n @if (widgetInstance.type === smartFormWidgetType.FILE_UPLOADER) {\n <div class=\"widgetContainer\">\n <div class=\"widgetItemContainer\">\n <smart-file-editor\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n (uploadFilesEvent)=\"upload($event)\"\n />\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n </div>\n }\n\n @if (widgetInstance.type === smartFormWidgetType.MULTI_FILE_UPLOADER) {\n <div class=\"widgetContainer\">\n <div class=\"widgetItemContainer\">\n <smart-multi-file-editor\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n (uploadFilesEvent)=\"upload($event)\"\n (fileEvent)=\"executeUiAction($event.uiAction)\"\n />\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n </div>\n }\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.IMAGE\"\n class=\"widgetContainer imageContainer\"\n >\n <h4\n *ngIf=\"widgetInstance.showLabel && getWidgetLabel(widgetInstance)\"\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n\n @if (widgetInstance.imageProperties?.image) {\n <smart-icon\n [imageResource]=\"widgetInstance.imageProperties!.image\"\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\n alt=\"Image\"\n title=\"{{ widgetInstance.key }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n ></smart-icon>\n } @else if (widgetInstance.value) {\n <smart-icon\n [imageResource]=\"widgetInstance.value\"\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\n alt=\"Image\"\n title=\"{{ widgetInstance.key }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n ></smart-icon>\n }\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TOGGLE\"\n class=\"widgetContainer toggle-col\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <label [ngClass]=\"widgetInstance.cssLabelClass ?? ''\" [for]=\"widgetInstance.key\">\n {{ getWidgetLabel(widgetInstance) }}\n </label>\n <p-inputSwitch\n formControlName=\"{{ widgetInstance.key }}\"\n [(ngModel)]=\"widgetInstance.value\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n name=\"{{ getWidgetLabel(widgetInstance) }}\"\n (onChange)=\"onValueChange?.next($event)\"\n (onChange)=\"handleBlurEvent($event)\"\n />\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX\"\n [attr.data-testid]=\"widgetInstance.key\"\n class=\"widgetContainer\"\n >\n <div\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\n <div class=\"checkbox-item-container\">\n <p-checkbox\n class=\"selecatbleObject\"\n formControlName=\"{{ widgetInstance.key }}\"\n [binary]=\"true\"\n [label]=\"widgetInstance.label\"\n />\n </div>\n <div class=\"radio-error\">\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n ></smart-icon>\n </div>\n </section>\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n </div>\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX_2\"\n [attr.data-testid]=\"widgetInstance.key\"\n class=\"widgetContainer\"\n >\n <div\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\n <div\n class=\"checkbox-item-container\"\n *ngFor=\"let checkbox of widgetInstance.valueList; let i = index\"\n >\n <img\n *ngIf=\"checkbox.imageUrl\"\n title=\"{{ widgetInstance.key }}\"\n class=\"checkbox-item-image\"\n [src]=\"checkbox.imageUrl\"\n />\n <p-checkbox\n class=\"selecatbleObject\"\n formControlName=\"{{ widgetInstance.key + '.' + checkbox.key }}\"\n [ngModel]=\"checkbox.value\"\n [binary]=\"true\"\n [label]=\"checkbox.label\"\n />\n </div>\n <div class=\"radio-error\">\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n ></smart-icon>\n </div>\n </section>\n </div>\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n\n @if (widgetInstance.type === smartFormWidgetType.DIV) {\n <div class=\"widgetContainer\">\n <div\n class=\"smartDiv\"\n [innerHTML]=\"sanitizeHtml(getWidgetLabel(widgetInstance))\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n >\n </div>\n </div>\n }\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SVG\" class=\"widgetContainer\">\n <h4\n *ngIf=\"widgetInstance.showLabel\"\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <div\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [innerHTML]=\"sanitizeHtml(widgetInstance.value)\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n ></div>\n </div>\n </div>\n </div>\n} @else {\n <div class=\"container material\" [formGroup]=\"form\">\n <div\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\n class=\"container\"\n *ngIf=\"widgetInstance.isVisible === undefined ? true : widgetInstance.isVisible\"\n >\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CONTAINER\"\n [attr.data-testid]=\"widgetInstance.key\"\n [ngClass]=\"getDirection()\"\n >\n <smartformwidget\n *ngFor=\"let widget of widgetInstance.valueList\"\n [form]=\"form\"\n [widgetInstance]=\"widget\"\n class=\"container-item\"\n [ngClass]=\"widget.cssClass ?? ''\"\n [onBlur]=\"onBlur\"\n [onValueChange]=\"onValueChange\"\n [sophisticatedValueChange]=\"sophisticatedValueChange\"\n class=\"{{ widget.key }}\"\n [labelColor]=\"labelColor\"\n ></smartformwidget>\n </div>\n\n <div\n (capsLock)=\"capsOn = $event\"\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input textField widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n\n <input\n *ngIf=\"!widgetInstance.selection\"\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [attr.inputmode]=\"\n widgetInstance.inputMode ? widgetInstance.inputMode.toLocaleLowerCase() : 'text'\n \"\n [type]=\"'string'\"\n [value]=\"widgetInstance.value\"\n [readonly]=\"widgetInstance.isReadonly\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n matInput\n (change)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n type=\"{{ widgetInstance.isPassword ? (hidePassword ? 'password' : 'text') : '' }}\"\n (keydown.enter)=\"onKeydown()\"\n maxlength=\"{{ widgetInstance.maxLength }}\"\n />\n <!-- [mask]=\"widgetInstance.mask ?? ''\" -->\n <input\n *ngIf=\"widgetInstance.selection\"\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [type]=\"'string'\"\n [value]=\"widgetInstance.value\"\n [readonly]=\"widgetInstance.isReadonly\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n matInput\n (change)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n (click)=\"onValueChange?.next($event)\"\n type=\"{{ widgetInstance.isPassword ? 'password' : '' }}\"\n [matAutocomplete]=\"textFieldAuto\"\n (keydown.enter)=\"onKeydown()\"\n />\n <button\n *ngIf=\"widgetInstance.isPassword\"\n mat-icon-button\n matSuffix\n (click)=\"togglePasswordVisibility($event)\"\n >\n <mat-icon>{{ hidePassword ? 'visibility_off' : 'visibility' }}</mat-icon>\n </button>\n <mat-autocomplete #textFieldAuto=\"matAutocomplete\">\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option.label\">\n <span [innerHTML]=\"option.label | highlight: toHighlight\"></span>\n </mat-option>\n </mat-autocomplete>\n <span class=\"mat-error\" *ngIf=\"capsOn && widgetInstance.isPassword\">\n {{ widgetInstance.capsLockWarning }}\n </span>\n\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n\n <span matPrefix>\n <smart-icon\n *ngIf=\"capsOn && widgetInstance.isPassword\"\n [icon]=\"widgetInstance.capsLockWarningIcon ?? 'keyboard_capslock'\"\n color=\"warn\"\n ></smart-icon>\n <smart-icon\n *ngIf=\"widgetInstance.icon && widgetInstance.iconPosition === 'PRE'\"\n [icon]=\"widgetInstance.icon\"\n [color]=\"widgetInstance.iconColor ?? 'primary'\"\n ></smart-icon>\n {{ widgetInstance.prefix }}\n </span>\n <span matSuffix>\n {{ widgetInstance.suffix }}\n </span>\n <smart-icon\n *ngIf=\"\n widgetInstance.icon &&\n (!widgetInstance.iconPosition || widgetInstance.iconPosition === 'POST')\n \"\n [icon]=\"widgetInstance.icon\"\n [color]=\"widgetInstance.iconColor ?? 'primary'\"\n matSuffix\n ></smart-icon>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <div class=\"textFieldButtons\">\n @if (widgetInstance.textFieldProperties?.clearable) {\n <ui-action-button\n class=\"clearButton\"\n [addBasicClasses]=\"false\"\n [descriptor]=\"clearButtonDescriptor\"\n (actionClick)=\"clearField(widgetInstance.key)\"\n />\n }\n </div>\n <smart-ui-action-toolbar\n #toolbar\n *ngIf=\"isToolbarPresent()\"\n class=\"textFieldToolbar\"\n matSuffix\n [id]=\"widgetInstance.toolbarId\"\n ></smart-ui-action-toolbar>\n <button\n *ngIf=\"widgetInstance.textFieldButton\"\n matSuffix\n mat-button\n color=\"{{ widgetInstance.textFieldButton.color }}\"\n (click)=\"widgetInstance.textFieldButton.callback(widgetInstance)\"\n >\n <smart-icon\n *ngIf=\"\n widgetInstance.textFieldButton.iconPosition ===\n smartFormTextFieldButtonIconPosition().PRE && widgetInstance.textFieldButton.icon\n \"\n [icon]=\"widgetInstance.textFieldButton.icon\"\n [color]=\"widgetInstance.textFieldButton.iconColor\"\n >\n </smart-icon>\n {{ widgetInstance.textFieldButton.label }}\n <smart-icon\n *ngIf=\"\n widgetInstance.textFieldButton.iconPosition ===\n smartFormTextFieldButtonIconPosition().POST && widgetInstance.textFieldButton.icon\n \"\n [icon]=\"widgetInstance.textFieldButton.icon\"\n >\n </smart-icon>\n </button>\n <mat-hint\n *ngIf=\"widgetInstance.showCharacterLimitSuffix && widgetInstance.maxLength\"\n matSuffix\n align=\"end\"\n >{{\n widgetInstance.maxLength - form.controls[widgetInstance.key].value.length\n }}</mat-hint\n >\n </mat-form-field>\n <mat-hint\n *ngIf=\"\n !widgetInstance?.hint ||\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\n \"\n >{{ widgetInstance.hint?.text }}</mat-hint\n >\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_NUMBER\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input textField widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <input\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [value]=\"widgetInstance.value\"\n [readonly]=\"widgetInstance.isReadonly\"\n [type]=\"'number'\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n [min]=\"widgetInstance.minValues ?? null\"\n [max]=\"widgetInstance.maxValues ?? null\"\n matInput\n (change)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n />\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <span matPrefix>\n {{ widgetInstance.prefix }}\n </span>\n <span matSuffix>\n {{ widgetInstance.suffix }}\n </span>\n <smart-icon *ngIf=\"widgetInstance.icon\" [icon]=\"widgetInstance.icon\" matSuffix>\n </smart-icon>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <button\n *ngIf=\"widgetInstance.textFieldButton\"\n matSuffix\n mat-button\n color=\"{{ widgetInstance.textFieldButton.color }}\"\n (click)=\"widgetInstance.textFieldButton.callback(widgetInstance)\"\n >\n <smart-icon\n *ngIf=\"\n widgetInstance.textFieldButton.iconPosition ===\n smartFormTextFieldButtonIconPosition().PRE && widgetInstance.textFieldButton.icon\n \"\n [icon]=\"widgetInstance.textFieldButton.icon\"\n >\n </smart-icon>\n {{ widgetInstance.textFieldButton.label }}\n <smart-icon\n *ngIf=\"\n widgetInstance.textFieldButton.iconPosition ===\n smartFormTextFieldButtonIconPosition().POST && widgetInstance.textFieldButton.icon\n \"\n [icon]=\"widgetInstance.textFieldButton.icon\"\n >\n </smart-icon>\n </button>\n </mat-form-field>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_CHIPS\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <mat-chip-grid #chipList aria-label=\"{{ widgetInstance.label }}\">\n <mat-chip-row\n [disabled]=\"widgetInstance.isDisabled\"\n *ngFor=\"let value of widgetInstance.value\"\n (removed)=\"remove(value)\"\n >\n {{ value }}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n <input\n #chipInput\n [attr.data-testid]=\"widgetInstance.key\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n [matChipInputAddOnBlur]=\"addOnBlur\"\n [readonly]=\"widgetInstance.isReadonly\"\n [matAutocomplete]=\"chipAuto\"\n (matChipInputTokenEnd)=\"add($event)\"\n (change)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n [disabled]=\"widgetInstance.isDisabled\"\n />\n <mat-autocomplete\n #chipAuto=\"matAutocomplete\"\n (optionSelected)=\"selected($event, widgetInstance)\"\n >\n <mat-option\n [disabled]=\"widgetInstance.isDisabled\"\n *ngFor=\"let item of widgetInstance.valueList\"\n [value]=\"item.value\"\n >\n {{ item.label }}\n </mat-option>\n </mat-autocomplete>\n </mat-chip-grid>\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n </mat-form-field>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_LOOKUP\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <mat-chip-grid #chipListLookup aria-label=\"{{ widgetInstance.label }}\">\n <mat-chip\n [disabled]=\"widgetInstance.isDisabled\"\n *ngFor=\"let value of widgetInstance.value\"\n (removed)=\"remove(value)\"\n >\n {{ getChipsValue(value) }}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip>\n <input\n [attr.data-testid]=\"widgetInstance.key\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n [matChipInputFor]=\"chipListLookup\"\n [matChipInputSeparatorKeyCodes]=\"emptySeparatorKeysCodes\"\n [matChipInputAddOnBlur]=\"false\"\n [readonly]=\"true\"\n [disabled]=\"widgetInstance.isDisabled\"\n />\n </mat-chip-grid>\n <smart-ui-action-toolbar\n #toolbar\n *ngIf=\"isToolbarPresent()\"\n matSuffix\n [id]=\"widgetInstance.toolbarId\"\n ></smart-ui-action-toolbar>\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n </mat-form-field>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_BOX\" class=\"widgetContainer\">\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <textarea\n class=\"sb4-textarea\"\n #sb4Textarea\n cols=\"30\"\n cdkTextareaAutosize\n [cdkAutosizeMinRows]=\"widgetInstance.textBoxProperties?.minRows ?? 1\"\n [cdkAutosizeMaxRows]=\"widgetInstance.textBoxProperties?.maxRows ?? undefined\"\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [type]=\"'string'\"\n [value]=\"widgetInstance.value\"\n [readonly]=\"widgetInstance.isReadonly\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n matInput\n (change)=\"handleBlurEvent($event)\"\n maxlength=\"{{ widgetInstance.maxLength }}\"\n ></textarea>\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <mat-hint\n *ngIf=\"widgetInstance.showCharacterLimitSuffix && widgetInstance.maxLength\"\n matSuffix\n align=\"end\"\n >{{\n widgetInstance.maxLength - form.controls[widgetInstance.key].value.length\n }}</mat-hint\n >\n </mat-form-field>\n <mat-hint\n *ngIf=\"\n !widgetInstance.hint || widgetInstance.hint?.position === SmartWidgetHintPosition.INPUT\n \"\n >{{ widgetInstance.hint?.text }}</mat-hint\n >\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX\"\n [attr.data-testid]=\"widgetInstance.key\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <div\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label class=\"radioLabel\" *ngIf=\"!widgetInstance.showLabel\">\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\n <div class=\"checkbox-item-container\">\n <mat-checkbox\n class=\"selecatbleObject\"\n formControlName=\"{{ widgetInstance.key }}\"\n (change)=\"onValueChange?.next(widgetInstance)\"\n >\n {{ widgetInstance.label }}\n </mat-checkbox>\n </div>\n <div class=\"radio-error\">\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n ></smart-icon>\n </div>\n </section>\n </div>\n </div>\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX_2\"\n [attr.data-testid]=\"widgetInstance.key\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssLabelClass }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <div\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label class=\"radioLabel\" *ngIf=\"!widgetInstance.showLabel\">\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\n <div\n class=\"checkbox-item-container\"\n *ngFor=\"let checkbox of widgetInstance.valueList; let i = index\"\n >\n <img\n *ngIf=\"checkbox.imageUrl\"\n title=\"{{ widgetInstance.key }}\"\n class=\"checkbox-item-image\"\n [src]=\"checkbox.imageUrl\"\n />\n <mat-checkbox\n class=\"selecatbleObject\"\n formControlName=\"{{ widgetInstance.key + '.' + checkbox.key }}\"\n [value]=\"checkbox.value\"\n (change)=\"onValueChange?.next(checkbox)\"\n [disabled]=\"widgetInstance.isDisabled!\"\n >\n {{ checkbox.label }}\n </mat-checkbox>\n </div>\n <div class=\"radio-error\">\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n ></smart-icon>\n </div>\n </section>\n </div>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.RADIO_BUTTON\" class=\"widgetContainer\">\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssLabelClass }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-radio-group\n class=\"input radio-section widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n [attr.data-testid]=\"widgetInstance.key\"\n aria-label=\"{{ widgetInstance.label }}\"\n appearance=\"outline\"\n formControlName=\"{{ widgetInstance.key }}\"\n >\n <mat-label class=\"radioLabel\" *ngIf=\"!widgetInstance.showLabel\">\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <div [ngClass]=\"getDirection()\">\n <div class=\"radio-item-container\" *ngFor=\"let radio of widgetInstance.valueList\">\n <img\n *ngIf=\"radio.imageUrl\"\n title=\"{{ widgetInstance.key }}\"\n class=\"radio-item-image\"\n [src]=\"radio.imageUrl\"\n />\n <mat-radio-button\n class=\"selecatbleObject\"\n value=\"{{ radio.value }}\"\n [ngClass]=\"getDirection()\"\n (change)=\"onValueChange?.next(radio.value)\"\n [disabled]=\"widgetInstance.isDisabled\"\n >\n {{ radio.label }}\n </mat-radio-button>\n </div>\n <div class=\"radio-error\">\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n ></smart-icon>\n </div>\n </div>\n </mat-radio-group>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_PICKER\"\n class=\"datePicker widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input widgetContent date {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker (closed)=\"handleBlurEvent(widgetInstance)\"></mat-datepicker>\n <input\n matInput\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [value]=\"widgetInstance.value\"\n [min]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\"\n [max]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n [matDatepicker]=\"picker\"\n (change)=\"handleBlurEvent(widgetInstance)\"\n (dateChange)=\"onValueChange?.next(widgetInstance)\"\n [matDatepickerFilter]=\"widgetInstance.filter ?? dateFilter\"\n />\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <mat-hint>\n {{ widgetInstance.dateFormatHint }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <!-- <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_TIME_PICKER\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4 class=\"{{ labelColor }} smart-form-widget-label\">\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n </div>\n <mat-form-field\n class=\"input widgetContent\"\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <mat-datepicker-toggle matSuffix [for]=\"$any(picker)\"></mat-datepicker-toggle>\n <ngx-mat-datetime-picker\n #picker\n [showSpinners]=\"true\"\n [showSeconds]=\"false\"\n [stepHour]=\"1\"\n [stepMinute]=\"1\"\n [stepSecond]=\"10\"\n [touchUi]=\"false\"\n [color]=\"'primary'\"\n [enableMeridian]=\"false\"\n [disableMinute]=\"false\"\n [hideTime]=\"false\"\n >\n </ngx-mat-datetime-picker>\n <input\n matInput\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [value]=\"widgetInstance.value\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n [ngxMatDatetimePicker]=\"picker\"\n [ngxMatDatetimePickerFilter]=\"widgetInstance.filter ?? dateFilter\"\n (blur)=\"onBlur?.next(widgetInstance)\"\n />\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <mat-hint>\n {{ widgetInstance.dateFormatHint }}\n </mat-hint>\n </mat-form-field>\n </div> -->\n\n @if (widgetInstance.type === smartFormWidgetType.MONTH_PICKER) {\n <div class=\"widgetContainer\">\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <div class=\"{{ labelColor }} smart-form-widget-label\">\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <lib-smart-month-picker\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n (valueChange)=\"handleYearMonthPicked($event)\"\n ></lib-smart-month-picker>\n </div>\n }\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_TIME_PICKER\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <div\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <div class=\"dateTimePickerContainer\">\n <mat-form-field\n class=\"input widgetContent date {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker (closed)=\"handleBlurEvent(widgetInstance)\"></mat-datepicker>\n <input\n #dateInput\n matInput\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [min]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\"\n [max]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\"\n [id]=\"widgetInstance.key\"\n [value]=\"widgetInstance.value\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n [matDatepicker]=\"picker\"\n (blur)=\"onDatePickerBlur($event)\"\n (dateChange)=\"onValueChange?.next(widgetInstance)\"\n [matDatepickerFilter]=\"widgetInstance.filter ?? dateFilter\"\n />\n\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <mat-hint>\n {{ widgetInstance.dateFormatHint }}\n </mat-hint>\n </mat-form-field>\n <mat-form-field\n *ngIf=\"hasCreated\"\n class=\"input widgetContent time\"\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\n appearance=\"outline\"\n >\n <input\n #timeInput\n [formControlName]=\"widgetInstance.key + '-time'\"\n [attr.data-testid]=\"widgetInstance.key + '-time'\"\n [id]=\"widgetInstance.key\"\n [type]=\"'time'\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n (blur)=\"onTimePickerBlur($event)\"\n matInput\n />\n </mat-form-field>\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n </div>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT\" class=\"widgetContainer\">\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <div\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <mat-select\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n (selectionChange)=\"onValueChange?.next($event.value)\"\n (closed)=\"handleBlurEvent(widgetInstance)\"\n [disabled]=\"widgetInstance.isDisabled!\"\n [compareWith]=\"\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\n \"\n placeholder=\"{{ widgetInstance.placeholder ? widgetInstance.placeholder : '' }}\"\n >\n <div *ngFor=\"let option of widgetInstance.valueList\">\n <mat-optgroup\n *ngIf=\"option.type === getType().ITEM_GROUP\"\n [label]=\"option.label\"\n [disabled]=\"option.isDisabled\"\n >\n <mat-option\n *ngFor=\"let innerOption of option.valueList\"\n [value]=\"innerOption.value\"\n [disabled]=\"innerOption.isDisabled\"\n >\n <smart-icon\n *ngIf=\"innerOption.icon\"\n [icon]=\"innerOption.icon\"\n [color]=\"innerOption.iconColor\"\n ></smart-icon>\n {{ innerOption.label }}\n </mat-option>\n </mat-optgroup>\n <mat-option\n *ngIf=\"option.type === getType().ITEM\"\n [value]=\"option.value\"\n [disabled]=\"option.isDisabled\"\n >\n <smart-icon\n *ngIf=\"option.icon\"\n [icon]=\"option.icon\"\n [color]=\"option.iconColor\"\n ></smart-icon\n >{{ option.label }}</mat-option\n >\n </div>\n </mat-select>\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n </mat-form-field>\n <mat-hint\n *ngIf=\"\n !widgetInstance?.hint ||\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\n \"\n >{{ widgetInstance.hint?.text }}</mat-hint\n >\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT_MULTIPLE\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <mat-select\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n multiple\n (selectionChange)=\"onValueChange?.next($event.value)\"\n (closed)=\"handleBlurEvent(widgetInstance)\"\n [disabled]=\"widgetInstance.isDisabled!\"\n [compareWith]=\"\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\n \"\n placeholder=\"{{ widgetInstance.placeholder ? widgetInstance.placeholder : '' }}\"\n >\n <div *ngFor=\"let option of widgetInstance.valueList\">\n <mat-optgroup\n *ngIf=\"option.type === getType().ITEM_GROUP\"\n [label]=\"option.label\"\n [disabled]=\"option.isDisabled\"\n >\n <mat-option\n *ngFor=\"let innerOption of option.valueList\"\n [value]=\"innerOption.value\"\n [disabled]=\"innerOption.isDisabled\"\n >\n <smart-icon\n *ngIf=\"innerOption.icon\"\n [icon]=\"innerOption.icon\"\n [color]=\"innerOption.iconColor\"\n ></smart-icon\n >{{ innerOption.label }}</mat-option\n >\n </mat-optgroup>\n <mat-option\n *ngIf=\"option.type === getType().ITEM\"\n [value]=\"option.value\"\n [disabled]=\"option.isDisabled\"\n >\n <smart-icon\n *ngIf=\"option.icon\"\n [icon]=\"option.icon\"\n [color]=\"option.iconColor\"\n ></smart-icon\n >{{ option.label }}</mat-option\n >\n </div>\n </mat-select>\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n </mat-form-field>\n <mat-hint\n *ngIf=\"\n !widgetInstance?.hint ||\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\n \"\n >{{ widgetInstance.hint?.text }}</mat-hint\n >\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.LABEL\"\n class=\"label widgetContainer\"\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\n >\n <div class=\"label-title labelContainer\" [ngClass]=\"widgetInstance.cssClass ?? ''\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n @if (widgetInstance.widgetDescription) {\n <p>{{ widgetInstance.widgetDescription }}</p>\n }\n </div>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.TIME\" class=\"widgetContainer\">\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input widgetContent time {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <input\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [type]=\"'time'\"\n [value]=\"getTime()\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n matInput\n (change)=\"handleBlurEvent(widgetInstance)\"\n />\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n </mat-form-field>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.TOGGLE\" class=\"widgetContainer\">\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <div\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n >\n <mat-slide-toggle\n formControlName=\"{{ widgetInstance.key }}\"\n [attr.data-testid]=\"widgetInstance.key\"\n value=\"{{ widgetInstance.value }}\"\n (change)=\"onValueChange?.next($event)\"\n [labelPosition]=\"widgetInstance.toggleLabelPosition ?? 'before'\"\n >{{ !widgetInstance.showLabel ? widgetInstance.label : '' }}</mat-slide-toggle\n ><span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n ></smart-icon>\n </div>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.INDICATOR\" class=\"widgetContainer\">\n <h4\n *ngIf=\"widgetInstance.showLabel\"\n class=\"{{ labelColor }} labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <div class=\"smartIndicator widgetContent\">\n <div class=\"indicatorItems {{ widgetInstance.cssClass ?? '' }}\" [ngClass]=\"getNgClass()\">\n <div\n *ngFor=\"let item of indicatorItems; let i = index\"\n class=\"indicatorItem\"\n [ngClass]=\"getIndicatorItemClass(i)\"\n ></div>\n </div>\n <p [ngClass]=\"getIndicatorStatusLabelColor()\">\n {{ getIndicatorStatusLabel() }}\n </p>\n </div>\n </div>\n @if (widgetInstance.type === smartFormWidgetType.RECORDING_UPLOADER) {\n <div class=\"widgetContainer\">\n <div class=\"widgetItemContainer\">\n <smart-voice-recorder\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n (uploadFilesEvent)=\"upload($event)\"\n />\n </div>\n </div>\n }\n @if (widgetInstance.type === smartFormWidgetType.FILE_UPLOADER) {\n <div class=\"widgetContainer\">\n <smart-file-editor\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n (uploadFilesEvent)=\"upload($event)\"\n />\n </div>\n }\n\n @if (widgetInstance.type === smartFormWidgetType.MULTI_FILE_UPLOADER) {\n <div class=\"widgetContainer\">\n <smart-multi-file-editor\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n (uploadFilesEvent)=\"upload($event)\"\n (fileEvent)=\"executeUiAction($event.uiAction)\"\n />\n </div>\n }\n\n @if (widgetInstance.type === smartFormWidgetType.IMAGE) {\n <div class=\"widgetContainer imageContainer\">\n <h4\n *ngIf=\"widgetInstance.showLabel && getWidgetLabel(widgetInstance)\"\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n\n @if (widgetInstance.imageProperties?.image) {\n <smart-icon\n [imageResource]=\"widgetInstance.imageProperties?.image\"\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\n alt=\"Image\"\n title=\"{{ widgetInstance.key }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n ></smart-icon>\n } @else if (widgetInstance.value) {\n <smart-icon\n [(ngModel)]=\"widgetInstance.value\"\n [imageResource]=\"widgetInstance.value\"\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\n alt=\"Image\"\n title=\"{{ widgetInstance.key }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n ></smart-icon>\n }\n </div>\n }\n\n @if (widgetInstance.type === smartFormWidgetType.DIV) {\n <div class=\"widgetContainer\">\n <div\n class=\"smartDiv\"\n [innerHTML]=\"sanitizeHtml(getWidgetLabel(widgetInstance))\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n >\n </div>\n </div>\n }\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SVG\" class=\"widgetContainer\">\n <h4\n *ngIf=\"widgetInstance.showLabel\"\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <div\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [innerHTML]=\"sanitizeHtml(widgetInstance.value)\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n ></div>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.DIVIDER\" class=\"widgetContainer\">\n <hr\n class=\"smartDivider {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n />\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.BUTTON\" class=\"widgetContainer\">\n <h4\n *ngIf=\"widgetInstance.showLabel\"\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <div\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n >\n <button\n mat-button\n [attr.data-testid]=\"widgetInstance.key\"\n [ngClass]=\"getButtonType(widgetInstance.uiActionDescriptor)\"\n [color]=\"widgetInstance.uiActionDescriptor?.color\"\n (click)=\"onButtonClicked(widgetInstance)\"\n >\n <div\n *ngIf=\"isOnlyIcon(widgetInstance.uiActionDescriptor); then iconOnly; else text\"\n ></div>\n <ng-template #iconOnly>\n <smart-icon\n *ngIf=\"widgetInstance.uiActionDescriptor?.icon\"\n [icon]=\"widgetInstance.uiActionDescriptor!.icon!\"\n [color]=\"\n widgetInstance.uiActionDescriptor?.iconColor ??\n widgetInstance.uiActionDescriptor?.color\n \"\n ></smart-icon>\n </ng-template>\n <ng-template #text>\n <smart-icon\n *ngIf=\"\n widgetInstance.uiActionDescriptor?.icon &&\n widgetInstance.uiActionDescriptor?.iconPosition === 'PRE'\n \"\n [icon]=\"widgetInstance.uiActionDescriptor!.icon!\"\n [color]=\"\n widgetInstance.uiActionDescriptor?.iconColor ??\n widgetInstance.uiActionDescriptor?.color\n \"\n ></smart-icon>\n {{ widgetInstance.uiActionDescriptor?.title }}\n <smart-icon\n *ngIf=\"\n widgetInstance.uiActionDescriptor?.icon &&\n widgetInstance.uiActionDescriptor?.iconPosition === 'POST'\n \"\n [icon]=\"widgetInstance.uiActionDescriptor!.icon!\"\n [color]=\"\n widgetInstance.uiActionDescriptor?.iconColor ??\n widgetInstance.uiActionDescriptor?.color\n \"\n ></smart-icon>\n </ng-template>\n </button>\n </div>\n </div>\n\n <div class=\"widgetContainer\">\n <h4\n class=\"labelContainer\"\n *ngIf=\"widgetInstance.type === smartFormWidgetType.COMPONENT && widgetInstance.showLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <div class=\"widgetContent\">\n <ng-template #customComponent></ng-template>\n </div>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.RICH_TEXT\" class=\"widgetContainer\">\n <div class=\"labelContainer\">\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <div class=\"widgetContent\">\n <quill-editor\n #quillEditor\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [modules]=\"widgetInstance.isDisabled ? emptyQuillToolbar : widgetInstance.quillModules\"\n [placeholder]=\"widgetInstance.placeholder\"\n [readOnly]=\"widgetInstance.isReadonly\"\n [maxLength]=\"widgetInstance.maxLength\"\n (onContentChanged)=\"onRichTextEditorContentChanged($event)\"\n ></quill-editor>\n <mat-hint\n *ngIf=\"\n !widgetInstance?.hint ||\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\n \"\n >{{ widgetInstance.hint?.text }}</mat-hint\n >\n <mat-hint\n *ngIf=\"widgetInstance.showCharacterLimitSuffix && widgetInstance.maxLength\"\n matSuffix\n align=\"end\"\n class=\"rich-text-editor-leeway-counter\"\n >{{ getRichTextEditorLengthLeeway() }}</mat-hint\n >\n </div>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SORTABLE\" class=\"widgetContainer\">\n <div class=\"labelContainer\">\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <div class=\"widgetContent\">\n <lib-sortable-widget\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n ></lib-sortable-widget>\n </div>\n </div>\n </div>\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.MATRIX\" class=\"widgetContainer\">\n <div class=\"labelContainer\">\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n\n <table class=\"matrixTable widgetContent\">\n <tr>\n <th></th>\n <th class=\"optionLabel\" *ngFor=\"let option of widgetInstance.value.columns\">\n {{ option.displayValue }}\n </th>\n </tr>\n <tr *ngFor=\"let question of widgetInstance.value.rows; let i = index\">\n <th class=\"questionLabel\">\n <label>{{ question.displayValue }}</label>\n </th>\n\n <td class=\"selectTd\" *ngFor=\"let option of widgetInstance.value.columns; let j = index\">\n <mat-radio-group\n *ngIf=\"!widgetInstance.isMultiple\"\n [formControlName]=\"widgetInstance.key + '.' + question.code\"\n [name]=\"'q' + i\"\n >\n <mat-radio-button [value]=\"option.code\"> </mat-radio-button>\n </mat-radio-group>\n <div *ngIf=\"widgetInstance.isMultiple\">\n <mat-checkbox\n [formControlName]=\"\n widgetInstance.key + '.data.' + question.code + '.' + option.code\n \"\n [value]=\"widgetInstance.value['data'][question.code][option.code]\"\n [checked]=\"true\"\n ></mat-checkbox>\n </div>\n </td>\n <br />\n <button *ngIf=\"widgetInstance.button\" mat-icon-button (click)=\"removeMatrixRow(question)\"\n ><smart-icon icon=\"close\"></smart-icon\n ></button>\n </tr>\n </table>\n </div>\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.YOUTUBE_PLAYER\" class=\"widgetContainer\">\n <div class=\"labelContainer\">\n <h4\n *ngIf=\"widgetInstance.showLabel\"\n class=\"{{ labelColor }} {{ widgetInstance.cssLabelClass }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <youtube-player\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n videoId=\"{{ widgetInstance.videoId }}\"\n [width]=\"widgetInstance.width\"\n [height]=\"widgetInstance.height\"\n [startSeconds]=\"widgetInstance.startSeconds\"\n [endSeconds]=\"widgetInstance.endSeconds\"\n ></youtube-player>\n <mat-hint\n *ngIf=\"\n !widgetInstance?.hint || widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\n \"\n >{{ widgetInstance.hint?.text }}</mat-hint\n >\n </div>\n </div>\n}\n", styles: [".ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:\"\\2022\"}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li *{pointer-events:all}.ql-editor ul[data-checked=true]>li:before,.ql-editor ul[data-checked=false]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:\"\\2611\"}.ql-editor ul[data-checked=false]>li:before{content:\"\\2610\"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) \". \"}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) \". \"}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) \". \"}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) \". \"}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) \". \"}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) \". \"}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) \". \"}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) \". \"}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) \". \"}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) \". \"}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:\"\";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media (pointer: coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:\"\";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=\"\"]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:\"Normal\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"1\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before{content:\"Heading 1\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"2\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before{content:\"Heading 2\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"3\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before{content:\"Heading 3\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"4\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before{content:\"Heading 4\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"5\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before{content:\"Heading 5\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"6\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before{content:\"Heading 6\"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:\"Sans Serif\"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:\"Serif\"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:\"Monospace\"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:\"Normal\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:\"Small\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:\"Large\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:\"Huge\"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0px}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:\"Visit URL:\";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:\"Edit\";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:\"Remove\";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0px;content:\"Save\";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:\"Enter link:\"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:\"Enter formula:\"}.ql-snow .ql-tooltip[data-mode=video]:before{content:\"Enter video:\"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}.checkbox-section,.radio-section{display:flex;flex-direction:column}.input{width:100%}.direction-col,.toggle-col{display:flex;flex-direction:column;gap:.5em}.toggle-col>label{font-size:.75rem;color:#6b7280;padding-left:.5em}.prime-error{color:red}.direction-row{display:flex;flex-direction:row;align-items:center;gap:.5em}.selecatbleObject{margin:.5em}.radioLabel{color:var(--primary-color);text-align:left!important}.container{height:100%}.input{height:100%;display:flex;flex-direction:column}.checkbox{flex-direction:column}.mat-form-field-wrapper{padding-bottom:0!important}.input .mat-mdc-standard-chip.mat-chip-with-trailing-icon{padding-right:12px}.time-picker{display:flex;flex-direction:row;height:100%;border:solid 2px lightgrey;padding:1em;border-radius:4px}.time-picker:hover{border-color:#000}::ng-deep .mat-h4 .mat-body-1 .mat-typography h4{margin:0}.label{margin:28px 0 8px}.smartIndicator{display:flex;flex-direction:column;gap:.25rem;width:-moz-fit-content;width:fit-content}.indicatorItems{display:flex;flex-direction:row;gap:.25rem}.indicatorItem{width:3rem;height:.25rem;background-color:#d3d3d3;border-radius:.5rem}.radio-error{width:-moz-fit-content;width:fit-content;display:flex;flex-direction:row;gap:.5rem}.mat-calendar-previous-button,.mat-calendar-next-button{padding:0;min-width:0;width:40px!important;height:40px!important;flex-shrink:0;line-height:40px;border-radius:50%}.mat-calendar-arrow{height:36px!important;display:flex!important;flex-direction:column!important;justify-content:center}.radio-item-container,.checkbox-item-container{display:flex;flex-direction:column}.widgetContent::ng-deep .ql-container{height:200px;width:460px}.dateTimePickerContainer{display:flex;flex-direction:row;gap:.25rem}.dateTimePickerContainer mat-form-field{flex:1}.date{width:125px}.time{width:90px}.date .mat-form-field-infix,.time .mat-form-field-infix{width:inherit!important}::ng-deep .mat-icon.mat-drag-indicator{--drag-indicator: #3b3b3b;color:var(--drag-indicator)}.matrixTable{width:100%;border-spacing:0 1rem}.matrixTable th{padding:.25rem}.matrixTable .optionLabel,.matrixTable td{text-align:center}.example-month-picker .mat-calendar-period-button{pointer-events:none}.example-month-picker .mat-calendar-arrow{display:none}.textFieldContainer{display:flex;flex-direction:row}.textFieldContainer p-floatlabel{flex:1}.textFieldContainer{align-content:center;border:1px solid #cbd5e1;border-radius:3px;background-color:#fff}.textFieldContainer input{border:unset}.textFieldContainer:focus-within:not(:has(input:disabled)){outline:0 none;outline-offset:0;box-shadow:0 0 0 .2rem #a6d5fa;border-color:#2196f3}.textFieldContainer:has(input:disabled) .clearButton{cursor:not-allowed;opacity:.6}.textFieldContainer:has(.p-inputtext.ng-dirty.ng-invalid){border-color:#f44336}.textFieldContainer:has(.p-inputtext.ng-dirty.ng-invalid) label{color:#f44336}.p-inputtext:enabled:focus{outline:unset;outline-offset:unset;box-shadow:unset;border-color:unset}.textFieldButtons{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.clearButton .mat-mdc-raised-button,.clearButton button{background-color:unset!important;border:unset;color:#6b7280!important;box-shadow:unset;font-size:1rem!important}.clearButton .mat-icon.mat-primary{color:#6b7280!important}.clearButton .mat-mdc-raised-button:hover,.clearButton button:hover{color:#6b7280cc!important;background-color:unset;border:unset;box-shadow:unset;font-size:1rem!important}.mat-mdc-form-field-infix{display:flex;flex-direction:row}p-calendar{display:flex;width:100%}p-calendar span{width:100%}textarea:not(:placeholder-shown)~label{top:-.75em!important;font-size:12px!important}.p-calendar ::ng-deep timesicon ::ng-deep .p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.p-calendar ::ng-deep timesicon.p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.p-calendar timesicon ::ng-deep .p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.p-calendar timesicon.p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.container:has(.p-inputswitch){height:unset}.disabledEditor *{-webkit-user-modify:read-only;-moz-user-modify:read-only;user-modify:read-only}.sb4-textarea{--sb4-textarea-line-height: 20px;line-height:var(--sb4-textarea-line-height);overflow-y:auto!important}.widgetContainer .imageIcon{max-width:unset!important;height:unset!important}.prime .widgetContainer{height:100%;width:100%;display:flex;flex-direction:column;position:relative}.prime .widgetContainer smart-ui-action-toolbar{flex:unset}.prime .widgetContainer .p-dropdown{flex:1;display:flex}.prime .widgetContainer :is(.p-float-label,p-floatlabel){height:100%;width:100%}.prime .widgetItemContainer{height:100%;width:100%;display:flex;flex-direction:row}.prime .widgetItemContainer smart-ui-action-toolbar{flex:unset}.prime .widgetItemContainer .p-dropdown{flex:1;display:flex}.prime .widgetItemContainer :is(.p-float-label,p-floatlabel){height:100%;width:100%}.prime :is(p-calendar,.p-multiselect){height:100%}.material .sb4-textarea{resize:vertical!important}.material .smart-form-widget-label{font-weight:700}.material .mat-mdc-form-field-subscript-wrapper{display:none}.label-right{display:flex;gap:.5rem;flex-direction:row-reverse}.label-left{display:flex;gap:.5rem;flex-direction:row}.label-top{display:flex;gap:.5rem;flex-direction:column}.label-bottom{display:flex;gap:.5rem;flex-direction:column-reverse}.p-message .p-message-wrapper{padding:.5rem}.smartDiv{width:100%}.p-message.p-message-error .p-message-icon{color:#73000c;display:flex}.p-message.p-message-error{position:absolute;top:100%;left:0;z-index:1000;border-radius:4px;box-shadow:0 2px 6px #0003;margin:.2rem 0!important}.p-inputgroup-addon{max-height:2.8rem;background:unset;border:unset!important}\n/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i9.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled", "tabIndex"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i9.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i9.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i9.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i9.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "directive", type: i10.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: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i10.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i10.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i11.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i11.MatLabel, selector: "mat-label" }, { kind: "directive", type: i11.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i11.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i11.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4$3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i13.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i14.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i14.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "directive", type: i3$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i16.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "component", type: i4$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i18.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i18.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: i19.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i20.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i20.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i21.QuillEditorComponent, selector: "quill-editor" }, { kind: "component", type: i22.YouTubePlayer, selector: "youtube-player", inputs: ["videoId", "height", "width", "startSeconds", "endSeconds", "suggestedQuality", "playerVars", "disableCookies", "showBeforeIframeApiLoads"], outputs: ["ready", "stateChange", "error", "apiChange", "playbackQualityChange", "playbackRateChange"] }, { kind: "directive", type: i23.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i24.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange", "onClose"] }, { kind: "component", type: i25.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i1$5.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i1$6.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i28.InputSwitch, selector: "p-inputSwitch", inputs: ["style", "styleClass", "tabindex", "inputId", "name", "disabled", "readonly", "trueValue", "falseValue", "ariaLabel", "ariaLabelledBy", "autofocus"], outputs: ["onChange"] }, { kind: "component", type: i29.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "directive", type: i30.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize", "variant"], outputs: ["onResize"] }, { kind: "component", type: i31.FloatLabel, selector: "p-floatLabel" }, { kind: "component", type: i32.Chips, selector: "p-chips", inputs: ["style", "styleClass", "disabled", "field", "placeholder", "max", "maxLength", "ariaLabel", "ariaLabelledBy", "tabindex", "inputId", "allowDuplicate", "caseSensitiveDuplication", "inputStyle", "inputStyleClass", "addOnTab", "addOnBlur", "separator", "showClear", "autofocus", "variant"], outputs: ["onAdd", "onRemove", "onFocus", "onBlur", "onChipClick", "onClear"] }, { kind: "component", type: i33.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "component", type: i34.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "component", type: i35.InputMask, selector: "p-inputMask", inputs: ["type", "slotChar", "autoClear", "showClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "variant", "ariaLabel", "ariaLabelledBy", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autofocus", "autoFocus", "autocomplete", "keepBuffer", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown", "onClear"] }, { kind: "component", type: i36.Editor, selector: "p-editor", inputs: ["style", "styleClass", "placeholder", "formats", "modules", "bounds", "scrollingContainer", "debug", "readonly"], outputs: ["onInit", "onTextChange", "onSelectionChange"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: SmartformwidgetComponent, selector: "smartformwidget", inputs: ["form", "widgetInstance", "onBlur", "onValueChange", "labelColor", "sophisticatedValueChange", "blurSophisticatedValueChange"], outputs: ["valueCleared"] }, { kind: "directive", type: TrackCapsDirective, selector: "[capsLock]", outputs: ["capsLock"] }, { kind: "directive", type: ComparableDropdownDirective, selector: "p-dropdown", inputs: ["compareWith"] }, { kind: "directive", type: ComparableMultiselectDirective, selector: "p-multiSelect", inputs: ["compareWith"] }, { kind: "component", type: SortableWidgetComponent, selector: "lib-sortable-widget", inputs: ["widgetInstance"] }, { kind: "component", type: SmartMonthPickerComponent, selector: "lib-smart-month-picker", inputs: ["widgetInstance"], outputs: ["valueChange"] }, { kind: "component", type: SmartFileEditorComponent, selector: "smart-file-editor", inputs: ["widgetInstance"], outputs: ["uploadFilesEvent"] }, { kind: "component", type: SmartMultiFileEditorComponent, selector: "smart-multi-file-editor", inputs: ["widgetInstance"], outputs: ["uploadFilesEvent", "fileEvent"] }, { kind: "component", type: SmartVoiceRecorderComponent, selector: "smart-voice-recorder", inputs: ["widgetInstance"], outputs: ["uploadFilesEvent"] }, { kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: HighlightPipe, name: "highlight" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
9729
9751
|
}
|
|
9730
9752
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartformwidgetComponent, decorators: [{
|
|
9731
9753
|
type: Component,
|
|
9732
|
-
args: [{ selector: 'smartformwidget', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (compLib === componentLibrary.PRIMENG) {\r\n <div class=\"container prime\" [formGroup]=\"form\">\r\n <div\r\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\r\n class=\"container\"\r\n *ngIf=\"widgetInstance.isVisible === undefined ? true : widgetInstance.isVisible\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CONTAINER\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [ngClass]=\"getDirection()\"\r\n >\r\n <smartformwidget\r\n *ngFor=\"let widget of widgetInstance.valueList\"\r\n [form]=\"form\"\r\n [widgetInstance]=\"widget\"\r\n class=\"container-item\"\r\n [ngClass]=\"widget.cssClass ?? ''\"\r\n [onBlur]=\"onBlur\"\r\n [onValueChange]=\"onValueChange\"\r\n [sophisticatedValueChange]=\"sophisticatedValueChange\"\r\n [blurSophisticatedValueChange]=\"blurSophisticatedValueChange\"\r\n class=\"{{ widget.key }}\"\r\n [labelColor]=\"labelColor\"\r\n ></smartformwidget>\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer textFieldContainer\">\r\n <p-floatLabel [ngClass]=\"{ hasToolbar: isToolbarPresent() }\">\r\n <input\r\n *ngIf=\"!widgetInstance.mask\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n type=\"{{ widgetInstance.isPassword ? (hidePassword ? 'password' : 'text') : '' }}\"\r\n pInputText\r\n formControlName=\"text\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (change)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n />\r\n <p-inputMask\r\n *ngIf=\"widgetInstance.mask\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n [mask]=\"widgetInstance.mask\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onBlur)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n />\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <div class=\"textFieldButtons\">\r\n <smart-ui-action-toolbar\r\n #toolbar\r\n *ngIf=\"isToolbarPresent()\"\r\n class=\"textFieldToolbar\"\r\n matSuffix\r\n [id]=\"widgetInstance.toolbarId\"\r\n >\r\n </smart-ui-action-toolbar>\r\n @if (widgetInstance.textFieldProperties?.clearable) {\r\n <ui-action-button\r\n class=\"clearButton\"\r\n [addBasicClasses]=\"false\"\r\n [descriptor]=\"clearButtonDescriptor\"\r\n (actionClick)=\"clearField(widgetInstance.key)\"\r\n />\r\n }\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance?.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length != 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_NUMBER\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer\">\r\n <p-floatLabel>\r\n <p-inputNumber\r\n [formControlName]=\"widgetInstance.key\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n inputId=\"minmax\"\r\n mode=\"decimal\"\r\n [max]=\"widgetInstance.maxValues ?? null\"\r\n [minFractionDigits]=\"0\"\r\n [maxFractionDigits]=\"5\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onBlur)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n />\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <div\r\n *ngIf=\"widgetInstance?.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.RICH_TEXT\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div class=\"labelContainer\">\r\n <div *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"widgetContent\">\r\n <p-editor\r\n [ngClass]=\"widgetInstance.isReadonly == true ? 'disabledEditor' : ''\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [modules]=\"\r\n widgetInstance.isDisabled ? emptyQuillToolbar : widgetInstance.quillModules\r\n \"\r\n [placeholder]=\"widgetInstance.placeholder\"\r\n [readOnly]=\"widgetInstance.isReadonly\"\r\n [disabled]=\"widgetInstance.isReadonly ?? false\"\r\n [maxLength]=\"widgetInstance.maxLength\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onTextChange)=\"onPrimeRichTextEditorContentChanged($event)\"\r\n (onTextChange)=\"handleBlurEvent($event)\"\r\n />\r\n </div>\r\n <span class=\"prime-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <div\r\n *ngIf=\"widgetInstance?.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SORTABLE\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div class=\"labelContainer\">\r\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n </div>\r\n <div class=\"widgetContent\">\r\n <lib-sortable-widget\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n ></lib-sortable-widget>\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_PICKER\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer\">\r\n <p-floatLabel>\r\n <p-calendar\r\n [formControlName]=\"widgetInstance.key\"\r\n [iconDisplay]=\"'input'\"\r\n [showIcon]=\"true\"\r\n [minDate]=\"\r\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\r\n \"\r\n [maxDate]=\"\r\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\r\n \"\r\n [showClear]=\"true\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onShow)=\"onCalendarShow()\"\r\n (onInput)=\"onCalendarInput()\"\r\n (onBlur)=\"safeCalendarBlur($event)\"\r\n (onClear)=\"handleBlurEvent($event)\"\r\n (onClose)=\"handleBlurEvent($event)\"\r\n dateFormat=\"yy-mm-dd\"\r\n appendTo=\"body\"\r\n />\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <div\r\n *ngIf=\"widgetInstance?.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n\r\n @if (widgetInstance.type === smartFormWidgetType.MONTH_PICKER) {\r\n Currently not implemented\r\n }\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_TIME_PICKER\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer\">\r\n <p-floatLabel>\r\n <p-calendar\r\n [formControlName]=\"widgetInstance.key\"\r\n [iconDisplay]=\"'input'\"\r\n [showIcon]=\"true\"\r\n [showTime]=\"true\"\r\n [showClear]=\"true\"\r\n [minDate]=\"\r\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\r\n \"\r\n [maxDate]=\"\r\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\r\n \"\r\n hourFormat=\"24\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onShow)=\"onCalendarShow()\"\r\n (onInput)=\"onCalendarInput()\"\r\n (onBlur)=\"safeCalendarBlur($event)\"\r\n (onClear)=\"handleBlurEvent($event)\"\r\n (onClose)=\"handleBlurEvent($event)\"\r\n dateFormat=\"yy-mm-dd\"\r\n appendTo=\"body\"\r\n >\r\n </p-calendar>\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <div\r\n *ngIf=\"widgetInstance?.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer\">\r\n <p-floatLabel>\r\n <p-dropdown\r\n [formControlName]=\"widgetInstance.key\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n [options]=\"getOptions(widgetInstance.valueList)\"\r\n [checkmark]=\"true\"\r\n [filter]=\"true\"\r\n [showClear]=\"true\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onBlur)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n [compareWith]=\"\r\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\r\n \"\r\n appendTo=\"body\"\r\n />\r\n <span class=\"prime-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT_MULTIPLE\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer\">\r\n <p-floatLabel>\r\n <p-multiSelect\r\n [formControlName]=\"widgetInstance.key\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n [options]=\"getOptions(widgetInstance.valueList)\"\r\n [checkmark]=\"true\"\r\n [showClear]=\"true\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onPanelShow)=\"onDropDownShow()\"\r\n (onBlur)=\"safeDropDownBlur($event)\"\r\n (onClear)=\"handleBlurEvent($event)\"\r\n (onPanelHide)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n [compareWith]=\"\r\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\r\n \"\r\n appendTo=\"body\"\r\n selectedItemsLabel=\"{0} elem kiv\u00E1lasztva\"\r\n />\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_BOX\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer\" [ngClass]=\"getNgClass()\" [ngStyle]=\"getStyle()\">\r\n <p-floatLabel>\r\n <textarea\r\n class=\"sb4-textarea\"\r\n #sb4Textarea\r\n pInputTextarea\r\n [autoResize]=\"true\"\r\n cols=\"30\"\r\n [rows]=\"widgetInstance.textBoxProperties?.minRows ?? 1\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n placeholder=\" \"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (change)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n (ngModelChange)=\"onTextareaChange($event)\"\r\n ></textarea>\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n [for]=\"widgetInstance.key\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <p-messages\r\n class=\"floating-error\"\r\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\r\n [value]=\"errorMessages\"\r\n [closable]=\"true\"\r\n ></p-messages>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_LOOKUP\"\r\n class=\"widgetContainer\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <div class=\"widgetItemContainer\">\r\n <p-floatLabel>\r\n <p-chips\r\n [disabled]=\"widgetInstance.isDisabled ? widgetInstance.isDisabled : false\"\r\n [max]=\"0\"\r\n [maxLength]=\"0\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (onBlur)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n >\r\n <ng-template let-item pTemplate=\"item\"> {{ getChipsValue(item) }} </ng-template>\r\n </p-chips>\r\n <label\r\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}</label\r\n >\r\n </p-floatLabel>\r\n <smart-ui-action-toolbar\r\n #toolbar\r\n *ngIf=\"isToolbarPresent()\"\r\n matSuffix\r\n [id]=\"widgetInstance.toolbarId\"\r\n ></smart-ui-action-toolbar>\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.LABEL\"\r\n class=\"label widgetContainer\"\r\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\r\n >\r\n <div class=\"label-title labelContainer\" [ngClass]=\"widgetInstance.cssClass ?? ''\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n @if (widgetInstance.widgetDescription) {\r\n <p>{{ widgetInstance.widgetDescription }}</p>\r\n }\r\n </div>\r\n </div>\r\n @if (widgetInstance.type === smartFormWidgetType.RECORDING_UPLOADER) {\r\n <div class=\"widgetContainer\">\r\n <div class=\"widgetItemContainer\">\r\n <smart-voice-recorder\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n </div>\r\n }\r\n @if (widgetInstance.type === smartFormWidgetType.FILE_UPLOADER) {\r\n <div class=\"widgetContainer\">\r\n <div class=\"widgetItemContainer\">\r\n <smart-file-editor\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (widgetInstance.type === smartFormWidgetType.MULTI_FILE_UPLOADER) {\r\n <div class=\"widgetContainer\">\r\n <div class=\"widgetItemContainer\">\r\n <smart-multi-file-editor\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n (fileEvent)=\"executeUiAction($event.uiAction)\"\r\n />\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.IMAGE\"\r\n class=\"widgetContainer imageContainer\"\r\n >\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel && getWidgetLabel(widgetInstance)\"\r\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n\r\n @if (widgetInstance.imageProperties?.image) {\r\n <smart-icon\r\n [imageResource]=\"widgetInstance.imageProperties!.image\"\r\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\r\n alt=\"Image\"\r\n title=\"{{ widgetInstance.key }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n ></smart-icon>\r\n } @else if (widgetInstance.value) {\r\n <smart-icon\r\n [imageResource]=\"widgetInstance.value\"\r\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\r\n alt=\"Image\"\r\n title=\"{{ widgetInstance.key }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n ></smart-icon>\r\n }\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TOGGLE\"\r\n class=\"widgetContainer toggle-col\"\r\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\r\n >\r\n <label [ngClass]=\"widgetInstance.cssLabelClass ?? ''\" [for]=\"widgetInstance.key\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </label>\r\n <p-inputSwitch\r\n formControlName=\"{{ widgetInstance.key }}\"\r\n [(ngModel)]=\"widgetInstance.value\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n name=\"{{ getWidgetLabel(widgetInstance) }}\"\r\n (onChange)=\"onValueChange?.next($event)\"\r\n (onChange)=\"handleBlurEvent($event)\"\r\n />\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n class=\"widgetContainer\"\r\n >\r\n <div\r\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\r\n <div class=\"checkbox-item-container\">\r\n <p-checkbox\r\n class=\"selecatbleObject\"\r\n formControlName=\"{{ widgetInstance.key }}\"\r\n [binary]=\"true\"\r\n [label]=\"widgetInstance.label\"\r\n />\r\n </div>\r\n <div class=\"radio-error\">\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n ></smart-icon>\r\n </div>\r\n </section>\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n (click)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX_2\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n class=\"widgetContainer\"\r\n >\r\n <div\r\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\r\n <div\r\n class=\"checkbox-item-container\"\r\n *ngFor=\"let checkbox of widgetInstance.valueList; let i = index\"\r\n >\r\n <img\r\n *ngIf=\"checkbox.imageUrl\"\r\n title=\"{{ widgetInstance.key }}\"\r\n class=\"checkbox-item-image\"\r\n [src]=\"checkbox.imageUrl\"\r\n />\r\n <p-checkbox\r\n class=\"selecatbleObject\"\r\n formControlName=\"{{ widgetInstance.key + '.' + checkbox.key }}\"\r\n [ngModel]=\"checkbox.value\"\r\n [binary]=\"true\"\r\n [label]=\"checkbox.label\"\r\n />\r\n </div>\r\n <div class=\"radio-error\">\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n ></smart-icon>\r\n </div>\r\n </section>\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance.hint\"\r\n class=\"p-inputgroup-addon\"\r\n (mouseenter)=\"op.toggle($event)\"\r\n (mouseleave)=\"op.toggle($event)\"\r\n >\r\n <i class=\"pi pi-info-circle\"></i>\r\n </div>\r\n <p-overlayPanel #op>\r\n <div\r\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\r\n [innerHTML]=\"widgetInstance.hint?.text\"\r\n >\r\n </div>\r\n <ng-template #plainText>\r\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\r\n </ng-template>\r\n </p-overlayPanel>\r\n </div>\r\n\r\n @if (widgetInstance.type === smartFormWidgetType.DIV) {\r\n <div class=\"widgetContainer\">\r\n <div\r\n class=\"smartDiv\"\r\n [innerHTML]=\"sanitizeHtml(getWidgetLabel(widgetInstance))\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SVG\" class=\"widgetContainer\">\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <div\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [innerHTML]=\"sanitizeHtml(widgetInstance.value)\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n} @else {\r\n <div class=\"container material\" [formGroup]=\"form\">\r\n <div\r\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\r\n class=\"container\"\r\n *ngIf=\"widgetInstance.isVisible === undefined ? true : widgetInstance.isVisible\"\r\n >\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CONTAINER\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [ngClass]=\"getDirection()\"\r\n >\r\n <smartformwidget\r\n *ngFor=\"let widget of widgetInstance.valueList\"\r\n [form]=\"form\"\r\n [widgetInstance]=\"widget\"\r\n class=\"container-item\"\r\n [ngClass]=\"widget.cssClass ?? ''\"\r\n [onBlur]=\"onBlur\"\r\n [onValueChange]=\"onValueChange\"\r\n [sophisticatedValueChange]=\"sophisticatedValueChange\"\r\n class=\"{{ widget.key }}\"\r\n [labelColor]=\"labelColor\"\r\n ></smartformwidget>\r\n </div>\r\n\r\n <div\r\n (capsLock)=\"capsOn = $event\"\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input textField widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n\r\n <input\r\n *ngIf=\"!widgetInstance.selection\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [attr.inputmode]=\"\r\n widgetInstance.inputMode ? widgetInstance.inputMode.toLocaleLowerCase() : 'text'\r\n \"\r\n [type]=\"'string'\"\r\n [value]=\"widgetInstance.value\"\r\n [readonly]=\"widgetInstance.isReadonly\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n matInput\r\n (change)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n type=\"{{ widgetInstance.isPassword ? (hidePassword ? 'password' : 'text') : '' }}\"\r\n (keydown.enter)=\"onKeydown()\"\r\n maxlength=\"{{ widgetInstance.maxLength }}\"\r\n />\r\n <!-- [mask]=\"widgetInstance.mask ?? ''\" -->\r\n <input\r\n *ngIf=\"widgetInstance.selection\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [type]=\"'string'\"\r\n [value]=\"widgetInstance.value\"\r\n [readonly]=\"widgetInstance.isReadonly\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n matInput\r\n (change)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n (click)=\"onValueChange?.next($event)\"\r\n type=\"{{ widgetInstance.isPassword ? 'password' : '' }}\"\r\n [matAutocomplete]=\"textFieldAuto\"\r\n (keydown.enter)=\"onKeydown()\"\r\n />\r\n <button\r\n *ngIf=\"widgetInstance.isPassword\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"togglePasswordVisibility($event)\"\r\n >\r\n <mat-icon>{{ hidePassword ? 'visibility_off' : 'visibility' }}</mat-icon>\r\n </button>\r\n <mat-autocomplete #textFieldAuto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option.label\">\r\n <span [innerHTML]=\"option.label | highlight: toHighlight\"></span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <span class=\"mat-error\" *ngIf=\"capsOn && widgetInstance.isPassword\">\r\n {{ widgetInstance.capsLockWarning }}\r\n </span>\r\n\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n\r\n <span matPrefix>\r\n <smart-icon\r\n *ngIf=\"capsOn && widgetInstance.isPassword\"\r\n [icon]=\"widgetInstance.capsLockWarningIcon ?? 'keyboard_capslock'\"\r\n color=\"warn\"\r\n ></smart-icon>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.icon && widgetInstance.iconPosition === 'PRE'\"\r\n [icon]=\"widgetInstance.icon\"\r\n [color]=\"widgetInstance.iconColor ?? 'primary'\"\r\n ></smart-icon>\r\n {{ widgetInstance.prefix }}\r\n </span>\r\n <span matSuffix>\r\n {{ widgetInstance.suffix }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"\r\n widgetInstance.icon &&\r\n (!widgetInstance.iconPosition || widgetInstance.iconPosition === 'POST')\r\n \"\r\n [icon]=\"widgetInstance.icon\"\r\n [color]=\"widgetInstance.iconColor ?? 'primary'\"\r\n matSuffix\r\n ></smart-icon>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <div class=\"textFieldButtons\">\r\n @if (widgetInstance.textFieldProperties?.clearable) {\r\n <ui-action-button\r\n class=\"clearButton\"\r\n [addBasicClasses]=\"false\"\r\n [descriptor]=\"clearButtonDescriptor\"\r\n (actionClick)=\"clearField(widgetInstance.key)\"\r\n />\r\n }\r\n </div>\r\n <smart-ui-action-toolbar\r\n #toolbar\r\n *ngIf=\"isToolbarPresent()\"\r\n class=\"textFieldToolbar\"\r\n matSuffix\r\n [id]=\"widgetInstance.toolbarId\"\r\n ></smart-ui-action-toolbar>\r\n <button\r\n *ngIf=\"widgetInstance.textFieldButton\"\r\n matSuffix\r\n mat-button\r\n color=\"{{ widgetInstance.textFieldButton.color }}\"\r\n (click)=\"widgetInstance.textFieldButton.callback(widgetInstance)\"\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n widgetInstance.textFieldButton.iconPosition ===\r\n smartFormTextFieldButtonIconPosition().PRE && widgetInstance.textFieldButton.icon\r\n \"\r\n [icon]=\"widgetInstance.textFieldButton.icon\"\r\n [color]=\"widgetInstance.textFieldButton.iconColor\"\r\n >\r\n </smart-icon>\r\n {{ widgetInstance.textFieldButton.label }}\r\n <smart-icon\r\n *ngIf=\"\r\n widgetInstance.textFieldButton.iconPosition ===\r\n smartFormTextFieldButtonIconPosition().POST && widgetInstance.textFieldButton.icon\r\n \"\r\n [icon]=\"widgetInstance.textFieldButton.icon\"\r\n >\r\n </smart-icon>\r\n </button>\r\n <mat-hint\r\n *ngIf=\"widgetInstance.showCharacterLimitSuffix && widgetInstance.maxLength\"\r\n matSuffix\r\n align=\"end\"\r\n >{{\r\n widgetInstance.maxLength - form.controls[widgetInstance.key].value.length\r\n }}</mat-hint\r\n >\r\n </mat-form-field>\r\n <mat-hint\r\n *ngIf=\"\r\n !widgetInstance?.hint ||\r\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\r\n \"\r\n >{{ widgetInstance.hint?.text }}</mat-hint\r\n >\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_NUMBER\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input textField widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <input\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [value]=\"widgetInstance.value\"\r\n [readonly]=\"widgetInstance.isReadonly\"\r\n [type]=\"'number'\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n [min]=\"widgetInstance.minValues ?? null\"\r\n [max]=\"widgetInstance.maxValues ?? null\"\r\n matInput\r\n (change)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n />\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <span matPrefix>\r\n {{ widgetInstance.prefix }}\r\n </span>\r\n <span matSuffix>\r\n {{ widgetInstance.suffix }}\r\n </span>\r\n <smart-icon *ngIf=\"widgetInstance.icon\" [icon]=\"widgetInstance.icon\" matSuffix>\r\n </smart-icon>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <button\r\n *ngIf=\"widgetInstance.textFieldButton\"\r\n matSuffix\r\n mat-button\r\n color=\"{{ widgetInstance.textFieldButton.color }}\"\r\n (click)=\"widgetInstance.textFieldButton.callback(widgetInstance)\"\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n widgetInstance.textFieldButton.iconPosition ===\r\n smartFormTextFieldButtonIconPosition().PRE && widgetInstance.textFieldButton.icon\r\n \"\r\n [icon]=\"widgetInstance.textFieldButton.icon\"\r\n >\r\n </smart-icon>\r\n {{ widgetInstance.textFieldButton.label }}\r\n <smart-icon\r\n *ngIf=\"\r\n widgetInstance.textFieldButton.iconPosition ===\r\n smartFormTextFieldButtonIconPosition().POST && widgetInstance.textFieldButton.icon\r\n \"\r\n [icon]=\"widgetInstance.textFieldButton.icon\"\r\n >\r\n </smart-icon>\r\n </button>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_CHIPS\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <mat-chip-grid #chipList aria-label=\"{{ widgetInstance.label }}\">\r\n <mat-chip-row\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n *ngFor=\"let value of widgetInstance.value\"\r\n (removed)=\"remove(value)\"\r\n >\r\n {{ value }}\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n <input\r\n #chipInput\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"addOnBlur\"\r\n [readonly]=\"widgetInstance.isReadonly\"\r\n [matAutocomplete]=\"chipAuto\"\r\n (matChipInputTokenEnd)=\"add($event)\"\r\n (change)=\"handleBlurEvent($event)\"\r\n (input)=\"onValueChange?.next($event)\"\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n />\r\n <mat-autocomplete\r\n #chipAuto=\"matAutocomplete\"\r\n (optionSelected)=\"selected($event, widgetInstance)\"\r\n >\r\n <mat-option\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n *ngFor=\"let item of widgetInstance.valueList\"\r\n [value]=\"item.value\"\r\n >\r\n {{ item.label }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-chip-grid>\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_LOOKUP\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <mat-chip-grid #chipListLookup aria-label=\"{{ widgetInstance.label }}\">\r\n <mat-chip\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n *ngFor=\"let value of widgetInstance.value\"\r\n (removed)=\"remove(value)\"\r\n >\r\n {{ getChipsValue(value) }}\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <input\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n [matChipInputFor]=\"chipListLookup\"\r\n [matChipInputSeparatorKeyCodes]=\"emptySeparatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"false\"\r\n [readonly]=\"true\"\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n />\r\n </mat-chip-grid>\r\n <smart-ui-action-toolbar\r\n #toolbar\r\n *ngIf=\"isToolbarPresent()\"\r\n matSuffix\r\n [id]=\"widgetInstance.toolbarId\"\r\n ></smart-ui-action-toolbar>\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_BOX\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <textarea\r\n class=\"sb4-textarea\"\r\n #sb4Textarea\r\n cols=\"30\"\r\n cdkTextareaAutosize\r\n [cdkAutosizeMinRows]=\"widgetInstance.textBoxProperties?.minRows ?? 1\"\r\n [cdkAutosizeMaxRows]=\"widgetInstance.textBoxProperties?.maxRows ?? undefined\"\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [type]=\"'string'\"\r\n [value]=\"widgetInstance.value\"\r\n [readonly]=\"widgetInstance.isReadonly\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n matInput\r\n (change)=\"handleBlurEvent($event)\"\r\n maxlength=\"{{ widgetInstance.maxLength }}\"\r\n ></textarea>\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <mat-hint\r\n *ngIf=\"widgetInstance.showCharacterLimitSuffix && widgetInstance.maxLength\"\r\n matSuffix\r\n align=\"end\"\r\n >{{\r\n widgetInstance.maxLength - form.controls[widgetInstance.key].value.length\r\n }}</mat-hint\r\n >\r\n </mat-form-field>\r\n <mat-hint\r\n *ngIf=\"\r\n !widgetInstance.hint || widgetInstance.hint?.position === SmartWidgetHintPosition.INPUT\r\n \"\r\n >{{ widgetInstance.hint?.text }}</mat-hint\r\n >\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <div\r\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label class=\"radioLabel\" *ngIf=\"!widgetInstance.showLabel\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\r\n <div class=\"checkbox-item-container\">\r\n <mat-checkbox\r\n class=\"selecatbleObject\"\r\n formControlName=\"{{ widgetInstance.key }}\"\r\n (change)=\"onValueChange?.next(widgetInstance)\"\r\n >\r\n {{ widgetInstance.label }}\r\n </mat-checkbox>\r\n </div>\r\n <div class=\"radio-error\">\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n ></smart-icon>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX_2\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssLabelClass }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <div\r\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label class=\"radioLabel\" *ngIf=\"!widgetInstance.showLabel\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\r\n <div\r\n class=\"checkbox-item-container\"\r\n *ngFor=\"let checkbox of widgetInstance.valueList; let i = index\"\r\n >\r\n <img\r\n *ngIf=\"checkbox.imageUrl\"\r\n title=\"{{ widgetInstance.key }}\"\r\n class=\"checkbox-item-image\"\r\n [src]=\"checkbox.imageUrl\"\r\n />\r\n <mat-checkbox\r\n class=\"selecatbleObject\"\r\n formControlName=\"{{ widgetInstance.key + '.' + checkbox.key }}\"\r\n [value]=\"checkbox.value\"\r\n (change)=\"onValueChange?.next(checkbox)\"\r\n [disabled]=\"widgetInstance.isDisabled!\"\r\n >\r\n {{ checkbox.label }}\r\n </mat-checkbox>\r\n </div>\r\n <div class=\"radio-error\">\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n ></smart-icon>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.RADIO_BUTTON\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssLabelClass }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-radio-group\r\n class=\"input radio-section widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n aria-label=\"{{ widgetInstance.label }}\"\r\n appearance=\"outline\"\r\n formControlName=\"{{ widgetInstance.key }}\"\r\n >\r\n <mat-label class=\"radioLabel\" *ngIf=\"!widgetInstance.showLabel\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <div [ngClass]=\"getDirection()\">\r\n <div class=\"radio-item-container\" *ngFor=\"let radio of widgetInstance.valueList\">\r\n <img\r\n *ngIf=\"radio.imageUrl\"\r\n title=\"{{ widgetInstance.key }}\"\r\n class=\"radio-item-image\"\r\n [src]=\"radio.imageUrl\"\r\n />\r\n <mat-radio-button\r\n class=\"selecatbleObject\"\r\n value=\"{{ radio.value }}\"\r\n [ngClass]=\"getDirection()\"\r\n (change)=\"onValueChange?.next(radio.value)\"\r\n [disabled]=\"widgetInstance.isDisabled\"\r\n >\r\n {{ radio.label }}\r\n </mat-radio-button>\r\n </div>\r\n <div class=\"radio-error\">\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n ></smart-icon>\r\n </div>\r\n </div>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_PICKER\"\r\n class=\"datePicker widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent date {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker (closed)=\"handleBlurEvent(widgetInstance)\"></mat-datepicker>\r\n <input\r\n matInput\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [value]=\"widgetInstance.value\"\r\n [min]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\"\r\n [max]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n [matDatepicker]=\"picker\"\r\n (change)=\"handleBlurEvent(widgetInstance)\"\r\n (dateChange)=\"onValueChange?.next(widgetInstance)\"\r\n [matDatepickerFilter]=\"widgetInstance.filter ?? dateFilter\"\r\n />\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <mat-hint>\r\n {{ widgetInstance.dateFormatHint }}\r\n </mat-hint>\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_TIME_PICKER\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4 class=\"{{ labelColor }} smart-form-widget-label\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent\"\r\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\r\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <mat-datepicker-toggle matSuffix [for]=\"$any(picker)\"></mat-datepicker-toggle>\r\n <ngx-mat-datetime-picker\r\n #picker\r\n [showSpinners]=\"true\"\r\n [showSeconds]=\"false\"\r\n [stepHour]=\"1\"\r\n [stepMinute]=\"1\"\r\n [stepSecond]=\"10\"\r\n [touchUi]=\"false\"\r\n [color]=\"'primary'\"\r\n [enableMeridian]=\"false\"\r\n [disableMinute]=\"false\"\r\n [hideTime]=\"false\"\r\n >\r\n </ngx-mat-datetime-picker>\r\n <input\r\n matInput\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [value]=\"widgetInstance.value\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n [ngxMatDatetimePicker]=\"picker\"\r\n [ngxMatDatetimePickerFilter]=\"widgetInstance.filter ?? dateFilter\"\r\n (blur)=\"onBlur?.next(widgetInstance)\"\r\n />\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <mat-hint>\r\n {{ widgetInstance.dateFormatHint }}\r\n </mat-hint>\r\n </mat-form-field>\r\n </div> -->\r\n\r\n @if (widgetInstance.type === smartFormWidgetType.MONTH_PICKER) {\r\n <div class=\"widgetContainer\">\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <div class=\"{{ labelColor }} smart-form-widget-label\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <lib-smart-month-picker\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n (valueChange)=\"handleYearMonthPicked($event)\"\r\n ></lib-smart-month-picker>\r\n </div>\r\n }\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_TIME_PICKER\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <div\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <div class=\"dateTimePickerContainer\">\r\n <mat-form-field\r\n class=\"input widgetContent date {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker (closed)=\"handleBlurEvent(widgetInstance)\"></mat-datepicker>\r\n <input\r\n #dateInput\r\n matInput\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [min]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\"\r\n [max]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\"\r\n [id]=\"widgetInstance.key\"\r\n [value]=\"widgetInstance.value\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n [matDatepicker]=\"picker\"\r\n (blur)=\"onDatePickerBlur($event)\"\r\n (dateChange)=\"onValueChange?.next(widgetInstance)\"\r\n [matDatepickerFilter]=\"widgetInstance.filter ?? dateFilter\"\r\n />\r\n\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n <mat-hint>\r\n {{ widgetInstance.dateFormatHint }}\r\n </mat-hint>\r\n </mat-form-field>\r\n <mat-form-field\r\n *ngIf=\"hasCreated\"\r\n class=\"input widgetContent time\"\r\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\r\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\r\n appearance=\"outline\"\r\n >\r\n <input\r\n #timeInput\r\n [formControlName]=\"widgetInstance.key + '-time'\"\r\n [attr.data-testid]=\"widgetInstance.key + '-time'\"\r\n [id]=\"widgetInstance.key\"\r\n [type]=\"'time'\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n (blur)=\"onTimePickerBlur($event)\"\r\n matInput\r\n />\r\n </mat-form-field>\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <div\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </div>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <mat-select\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n (selectionChange)=\"onValueChange?.next($event.value)\"\r\n (closed)=\"handleBlurEvent(widgetInstance)\"\r\n [disabled]=\"widgetInstance.isDisabled!\"\r\n [compareWith]=\"\r\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\r\n \"\r\n placeholder=\"{{ widgetInstance.placeholder ? widgetInstance.placeholder : '' }}\"\r\n >\r\n <div *ngFor=\"let option of widgetInstance.valueList\">\r\n <mat-optgroup\r\n *ngIf=\"option.type === getType().ITEM_GROUP\"\r\n [label]=\"option.label\"\r\n [disabled]=\"option.isDisabled\"\r\n >\r\n <mat-option\r\n *ngFor=\"let innerOption of option.valueList\"\r\n [value]=\"innerOption.value\"\r\n [disabled]=\"innerOption.isDisabled\"\r\n >\r\n <smart-icon\r\n *ngIf=\"innerOption.icon\"\r\n [icon]=\"innerOption.icon\"\r\n [color]=\"innerOption.iconColor\"\r\n ></smart-icon>\r\n {{ innerOption.label }}\r\n </mat-option>\r\n </mat-optgroup>\r\n <mat-option\r\n *ngIf=\"option.type === getType().ITEM\"\r\n [value]=\"option.value\"\r\n [disabled]=\"option.isDisabled\"\r\n >\r\n <smart-icon\r\n *ngIf=\"option.icon\"\r\n [icon]=\"option.icon\"\r\n [color]=\"option.iconColor\"\r\n ></smart-icon\r\n >{{ option.label }}</mat-option\r\n >\r\n </div>\r\n </mat-select>\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n </mat-form-field>\r\n <mat-hint\r\n *ngIf=\"\r\n !widgetInstance?.hint ||\r\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\r\n \"\r\n >{{ widgetInstance.hint?.text }}</mat-hint\r\n >\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT_MULTIPLE\"\r\n class=\"widgetContainer\"\r\n >\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <mat-select\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n multiple\r\n (selectionChange)=\"onValueChange?.next($event.value)\"\r\n (closed)=\"handleBlurEvent(widgetInstance)\"\r\n [disabled]=\"widgetInstance.isDisabled!\"\r\n [compareWith]=\"\r\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\r\n \"\r\n placeholder=\"{{ widgetInstance.placeholder ? widgetInstance.placeholder : '' }}\"\r\n >\r\n <div *ngFor=\"let option of widgetInstance.valueList\">\r\n <mat-optgroup\r\n *ngIf=\"option.type === getType().ITEM_GROUP\"\r\n [label]=\"option.label\"\r\n [disabled]=\"option.isDisabled\"\r\n >\r\n <mat-option\r\n *ngFor=\"let innerOption of option.valueList\"\r\n [value]=\"innerOption.value\"\r\n [disabled]=\"innerOption.isDisabled\"\r\n >\r\n <smart-icon\r\n *ngIf=\"innerOption.icon\"\r\n [icon]=\"innerOption.icon\"\r\n [color]=\"innerOption.iconColor\"\r\n ></smart-icon\r\n >{{ innerOption.label }}</mat-option\r\n >\r\n </mat-optgroup>\r\n <mat-option\r\n *ngIf=\"option.type === getType().ITEM\"\r\n [value]=\"option.value\"\r\n [disabled]=\"option.isDisabled\"\r\n >\r\n <smart-icon\r\n *ngIf=\"option.icon\"\r\n [icon]=\"option.icon\"\r\n [color]=\"option.iconColor\"\r\n ></smart-icon\r\n >{{ option.label }}</mat-option\r\n >\r\n </div>\r\n </mat-select>\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n </mat-form-field>\r\n <mat-hint\r\n *ngIf=\"\r\n !widgetInstance?.hint ||\r\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\r\n \"\r\n >{{ widgetInstance.hint?.text }}</mat-hint\r\n >\r\n </div>\r\n\r\n <div\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.LABEL\"\r\n class=\"label widgetContainer\"\r\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\r\n >\r\n <div class=\"label-title labelContainer\" [ngClass]=\"widgetInstance.cssClass ?? ''\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n @if (widgetInstance.widgetDescription) {\r\n <p>{{ widgetInstance.widgetDescription }}</p>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.TIME\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <mat-form-field\r\n class=\"input widgetContent time {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n appearance=\"outline\"\r\n >\r\n <mat-label\r\n class=\"label\"\r\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\r\n *ngIf=\"!widgetInstance.showLabel\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </mat-label>\r\n <input\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [type]=\"'time'\"\r\n [value]=\"getTime()\"\r\n placeholder=\"{{ widgetInstance.placeholder }}\"\r\n matInput\r\n (change)=\"handleBlurEvent(widgetInstance)\"\r\n />\r\n <span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n matSuffix\r\n ></smart-icon>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.TOGGLE\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\r\n <h4\r\n class=\"{{ labelColor }} smart-form-widget-label {{\r\n widgetInstance.cssLabelClass ?? ''\r\n }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <div\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n >\r\n <mat-slide-toggle\r\n formControlName=\"{{ widgetInstance.key }}\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n value=\"{{ widgetInstance.value }}\"\r\n (change)=\"onValueChange?.next($event)\"\r\n [labelPosition]=\"widgetInstance.toggleLabelPosition ?? 'before'\"\r\n >{{ !widgetInstance.showLabel ? widgetInstance.label : '' }}</mat-slide-toggle\r\n ><span class=\"mat-error\">\r\n {{ widgetInstance.error }}\r\n </span>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\r\n [icon]=\"widgetInstance.errorIcon\"\r\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\r\n ></smart-icon>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.INDICATOR\" class=\"widgetContainer\">\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"{{ labelColor }} labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <div class=\"smartIndicator widgetContent\">\r\n <div class=\"indicatorItems {{ widgetInstance.cssClass ?? '' }}\" [ngClass]=\"getNgClass()\">\r\n <div\r\n *ngFor=\"let item of indicatorItems; let i = index\"\r\n class=\"indicatorItem\"\r\n [ngClass]=\"getIndicatorItemClass(i)\"\r\n ></div>\r\n </div>\r\n <p [ngClass]=\"getIndicatorStatusLabelColor()\">\r\n {{ getIndicatorStatusLabel() }}\r\n </p>\r\n </div>\r\n </div>\r\n @if (widgetInstance.type === smartFormWidgetType.RECORDING_UPLOADER) {\r\n <div class=\"widgetContainer\">\r\n <div class=\"widgetItemContainer\">\r\n <smart-voice-recorder\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n @if (widgetInstance.type === smartFormWidgetType.FILE_UPLOADER) {\r\n <div class=\"widgetContainer\">\r\n <smart-file-editor\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n />\r\n </div>\r\n }\r\n\r\n @if (widgetInstance.type === smartFormWidgetType.MULTI_FILE_UPLOADER) {\r\n <div class=\"widgetContainer\">\r\n <smart-multi-file-editor\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n (uploadFilesEvent)=\"upload($event)\"\r\n (fileEvent)=\"executeUiAction($event.uiAction)\"\r\n />\r\n </div>\r\n }\r\n\r\n @if (widgetInstance.type === smartFormWidgetType.IMAGE) {\r\n <div class=\"widgetContainer imageContainer\">\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel && getWidgetLabel(widgetInstance)\"\r\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n\r\n @if (widgetInstance.imageProperties?.image) {\r\n <smart-icon\r\n [imageResource]=\"widgetInstance.imageProperties?.image\"\r\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\r\n alt=\"Image\"\r\n title=\"{{ widgetInstance.key }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n ></smart-icon>\r\n } @else if (widgetInstance.value) {\r\n <smart-icon\r\n [(ngModel)]=\"widgetInstance.value\"\r\n [imageResource]=\"widgetInstance.value\"\r\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\r\n alt=\"Image\"\r\n title=\"{{ widgetInstance.key }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n ></smart-icon>\r\n }\r\n </div>\r\n }\r\n\r\n @if (widgetInstance.type === smartFormWidgetType.DIV) {\r\n <div class=\"widgetContainer\">\r\n <div\r\n class=\"smartDiv\"\r\n [innerHTML]=\"sanitizeHtml(getWidgetLabel(widgetInstance))\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SVG\" class=\"widgetContainer\">\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <div\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [innerHTML]=\"sanitizeHtml(widgetInstance.value)\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n ></div>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.DIVIDER\" class=\"widgetContainer\">\r\n <hr\r\n class=\"smartDivider {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n />\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.BUTTON\" class=\"widgetContainer\">\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <div\r\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n >\r\n <button\r\n mat-button\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [ngClass]=\"getButtonType(widgetInstance.uiActionDescriptor)\"\r\n [color]=\"widgetInstance.uiActionDescriptor?.color\"\r\n (click)=\"onButtonClicked(widgetInstance)\"\r\n >\r\n <div\r\n *ngIf=\"isOnlyIcon(widgetInstance.uiActionDescriptor); then iconOnly; else text\"\r\n ></div>\r\n <ng-template #iconOnly>\r\n <smart-icon\r\n *ngIf=\"widgetInstance.uiActionDescriptor?.icon\"\r\n [icon]=\"widgetInstance.uiActionDescriptor!.icon!\"\r\n [color]=\"\r\n widgetInstance.uiActionDescriptor?.iconColor ??\r\n widgetInstance.uiActionDescriptor?.color\r\n \"\r\n ></smart-icon>\r\n </ng-template>\r\n <ng-template #text>\r\n <smart-icon\r\n *ngIf=\"\r\n widgetInstance.uiActionDescriptor?.icon &&\r\n widgetInstance.uiActionDescriptor?.iconPosition === 'PRE'\r\n \"\r\n [icon]=\"widgetInstance.uiActionDescriptor!.icon!\"\r\n [color]=\"\r\n widgetInstance.uiActionDescriptor?.iconColor ??\r\n widgetInstance.uiActionDescriptor?.color\r\n \"\r\n ></smart-icon>\r\n {{ widgetInstance.uiActionDescriptor?.title }}\r\n <smart-icon\r\n *ngIf=\"\r\n widgetInstance.uiActionDescriptor?.icon &&\r\n widgetInstance.uiActionDescriptor?.iconPosition === 'POST'\r\n \"\r\n [icon]=\"widgetInstance.uiActionDescriptor!.icon!\"\r\n [color]=\"\r\n widgetInstance.uiActionDescriptor?.iconColor ??\r\n widgetInstance.uiActionDescriptor?.color\r\n \"\r\n ></smart-icon>\r\n </ng-template>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"widgetContainer\">\r\n <h4\r\n class=\"labelContainer\"\r\n *ngIf=\"widgetInstance.type === smartFormWidgetType.COMPONENT && widgetInstance.showLabel\"\r\n class=\"{{ labelColor }}\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <div class=\"widgetContent\">\r\n <ng-template #customComponent></ng-template>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.RICH_TEXT\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\">\r\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <div class=\"widgetContent\">\r\n <quill-editor\r\n #quillEditor\r\n [formControlName]=\"widgetInstance.key\"\r\n [id]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [modules]=\"widgetInstance.isDisabled ? emptyQuillToolbar : widgetInstance.quillModules\"\r\n [placeholder]=\"widgetInstance.placeholder\"\r\n [readOnly]=\"widgetInstance.isReadonly\"\r\n [maxLength]=\"widgetInstance.maxLength\"\r\n (onContentChanged)=\"onRichTextEditorContentChanged($event)\"\r\n ></quill-editor>\r\n <mat-hint\r\n *ngIf=\"\r\n !widgetInstance?.hint ||\r\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\r\n \"\r\n >{{ widgetInstance.hint?.text }}</mat-hint\r\n >\r\n <mat-hint\r\n *ngIf=\"widgetInstance.showCharacterLimitSuffix && widgetInstance.maxLength\"\r\n matSuffix\r\n align=\"end\"\r\n class=\"rich-text-editor-leeway-counter\"\r\n >{{ getRichTextEditorLengthLeeway() }}</mat-hint\r\n >\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SORTABLE\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\">\r\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <div class=\"widgetContent\">\r\n <lib-sortable-widget\r\n [formControlName]=\"widgetInstance.key\"\r\n [attr.data-testid]=\"widgetInstance.key\"\r\n [widgetInstance]=\"widgetInstance\"\r\n ></lib-sortable-widget>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.MATRIX\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\">\r\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n\r\n <table class=\"matrixTable widgetContent\">\r\n <tr>\r\n <th></th>\r\n <th class=\"optionLabel\" *ngFor=\"let option of widgetInstance.value.columns\">\r\n {{ option.displayValue }}\r\n </th>\r\n </tr>\r\n <tr *ngFor=\"let question of widgetInstance.value.rows; let i = index\">\r\n <th class=\"questionLabel\">\r\n <label>{{ question.displayValue }}</label>\r\n </th>\r\n\r\n <td class=\"selectTd\" *ngFor=\"let option of widgetInstance.value.columns; let j = index\">\r\n <mat-radio-group\r\n *ngIf=\"!widgetInstance.isMultiple\"\r\n [formControlName]=\"widgetInstance.key + '.' + question.code\"\r\n [name]=\"'q' + i\"\r\n >\r\n <mat-radio-button [value]=\"option.code\"> </mat-radio-button>\r\n </mat-radio-group>\r\n <div *ngIf=\"widgetInstance.isMultiple\">\r\n <mat-checkbox\r\n [formControlName]=\"\r\n widgetInstance.key + '.data.' + question.code + '.' + option.code\r\n \"\r\n [value]=\"widgetInstance.value['data'][question.code][option.code]\"\r\n [checked]=\"true\"\r\n ></mat-checkbox>\r\n </div>\r\n </td>\r\n <br />\r\n <button *ngIf=\"widgetInstance.button\" mat-icon-button (click)=\"removeMatrixRow(question)\"\r\n ><smart-icon icon=\"close\"></smart-icon\r\n ></button>\r\n </tr>\r\n </table>\r\n </div>\r\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.YOUTUBE_PLAYER\" class=\"widgetContainer\">\r\n <div class=\"labelContainer\">\r\n <h4\r\n *ngIf=\"widgetInstance.showLabel\"\r\n class=\"{{ labelColor }} {{ widgetInstance.cssLabelClass }}\"\r\n [ngClass]=\"getLabelNgClass()\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n >\r\n {{ getWidgetLabel(widgetInstance) }}\r\n </h4>\r\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\r\n widgetInstance.hint?.text\r\n }}</mat-hint>\r\n </div>\r\n <youtube-player\r\n [ngClass]=\"getNgClass()\"\r\n [ngStyle]=\"getStyle()\"\r\n videoId=\"{{ widgetInstance.videoId }}\"\r\n [width]=\"widgetInstance.width\"\r\n [height]=\"widgetInstance.height\"\r\n [startSeconds]=\"widgetInstance.startSeconds\"\r\n [endSeconds]=\"widgetInstance.endSeconds\"\r\n ></youtube-player>\r\n <mat-hint\r\n *ngIf=\"\r\n !widgetInstance?.hint || widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\r\n \"\r\n >{{ widgetInstance.hint?.text }}</mat-hint\r\n >\r\n </div>\r\n </div>\r\n}\r\n", styles: [".ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:\"\\2022\"}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li *{pointer-events:all}.ql-editor ul[data-checked=true]>li:before,.ql-editor ul[data-checked=false]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:\"\\2611\"}.ql-editor ul[data-checked=false]>li:before{content:\"\\2610\"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) \". \"}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) \". \"}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) \". \"}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) \". \"}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) \". \"}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) \". \"}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) \". \"}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) \". \"}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) \". \"}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) \". \"}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:\"\";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media (pointer: coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:\"\";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=\"\"]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:\"Normal\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"1\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before{content:\"Heading 1\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"2\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before{content:\"Heading 2\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"3\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before{content:\"Heading 3\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"4\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before{content:\"Heading 4\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"5\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before{content:\"Heading 5\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"6\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before{content:\"Heading 6\"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:\"Sans Serif\"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:\"Serif\"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:\"Monospace\"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:\"Normal\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:\"Small\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:\"Large\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:\"Huge\"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0px}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:\"Visit URL:\";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:\"Edit\";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:\"Remove\";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0px;content:\"Save\";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:\"Enter link:\"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:\"Enter formula:\"}.ql-snow .ql-tooltip[data-mode=video]:before{content:\"Enter video:\"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}.checkbox-section,.radio-section{display:flex;flex-direction:column}.input{width:100%}.direction-col,.toggle-col{display:flex;flex-direction:column;gap:.5em}.toggle-col>label{font-size:.75rem;color:#6b7280;padding-left:.5em}.prime-error{color:red}.direction-row{display:flex;flex-direction:row;align-items:center;gap:.5em}.selecatbleObject{margin:.5em}.radioLabel{color:var(--primary-color);text-align:left!important}.container{height:100%}.input{height:100%;display:flex;flex-direction:column}.checkbox{flex-direction:column}.mat-form-field-wrapper{padding-bottom:0!important}.input .mat-mdc-standard-chip.mat-chip-with-trailing-icon{padding-right:12px}.time-picker{display:flex;flex-direction:row;height:100%;border:solid 2px lightgrey;padding:1em;border-radius:4px}.time-picker:hover{border-color:#000}::ng-deep .mat-h4 .mat-body-1 .mat-typography h4{margin:0}.label{margin:28px 0 8px}.smartIndicator{display:flex;flex-direction:column;gap:.25rem;width:-moz-fit-content;width:fit-content}.indicatorItems{display:flex;flex-direction:row;gap:.25rem}.indicatorItem{width:3rem;height:.25rem;background-color:#d3d3d3;border-radius:.5rem}.radio-error{width:-moz-fit-content;width:fit-content;display:flex;flex-direction:row;gap:.5rem}.mat-calendar-previous-button,.mat-calendar-next-button{padding:0;min-width:0;width:40px!important;height:40px!important;flex-shrink:0;line-height:40px;border-radius:50%}.mat-calendar-arrow{height:36px!important;display:flex!important;flex-direction:column!important;justify-content:center}.radio-item-container,.checkbox-item-container{display:flex;flex-direction:column}.widgetContent::ng-deep .ql-container{height:200px;width:460px}.dateTimePickerContainer{display:flex;flex-direction:row;gap:.25rem}.dateTimePickerContainer mat-form-field{flex:1}.date{width:125px}.time{width:90px}.date .mat-form-field-infix,.time .mat-form-field-infix{width:inherit!important}::ng-deep .mat-icon.mat-drag-indicator{--drag-indicator: #3b3b3b;color:var(--drag-indicator)}.matrixTable{width:100%;border-spacing:0 1rem}.matrixTable th{padding:.25rem}.matrixTable .optionLabel,.matrixTable td{text-align:center}.example-month-picker .mat-calendar-period-button{pointer-events:none}.example-month-picker .mat-calendar-arrow{display:none}.textFieldContainer{display:flex;flex-direction:row}.textFieldContainer p-floatlabel{flex:1}.textFieldContainer{align-content:center;border:1px solid #cbd5e1;border-radius:3px;background-color:#fff}.textFieldContainer input{border:unset}.textFieldContainer:focus-within:not(:has(input:disabled)){outline:0 none;outline-offset:0;box-shadow:0 0 0 .2rem #a6d5fa;border-color:#2196f3}.textFieldContainer:has(input:disabled) .clearButton{cursor:not-allowed;opacity:.6}.textFieldContainer:has(.p-inputtext.ng-dirty.ng-invalid){border-color:#f44336}.textFieldContainer:has(.p-inputtext.ng-dirty.ng-invalid) label{color:#f44336}.p-inputtext:enabled:focus{outline:unset;outline-offset:unset;box-shadow:unset;border-color:unset}.textFieldButtons{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.clearButton .mat-mdc-raised-button,.clearButton button{background-color:unset!important;border:unset;color:#6b7280!important;box-shadow:unset;font-size:1rem!important}.clearButton .mat-icon.mat-primary{color:#6b7280!important}.clearButton .mat-mdc-raised-button:hover,.clearButton button:hover{color:#6b7280cc!important;background-color:unset;border:unset;box-shadow:unset;font-size:1rem!important}.mat-mdc-form-field-infix{display:flex;flex-direction:row}p-calendar{display:flex;width:100%}p-calendar span{width:100%}textarea:not(:placeholder-shown)~label{top:-.75em!important;font-size:12px!important}.p-calendar ::ng-deep timesicon ::ng-deep .p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.p-calendar ::ng-deep timesicon.p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.p-calendar timesicon ::ng-deep .p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.p-calendar timesicon.p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.container:has(.p-inputswitch){height:unset}.disabledEditor *{-webkit-user-modify:read-only;-moz-user-modify:read-only;user-modify:read-only}.sb4-textarea{--sb4-textarea-line-height: 20px;line-height:var(--sb4-textarea-line-height);overflow-y:auto!important}.widgetContainer .imageIcon{max-width:unset!important;height:unset!important}.prime .widgetContainer{height:100%;width:100%;display:flex;flex-direction:column;position:relative}.prime .widgetContainer smart-ui-action-toolbar{flex:unset}.prime .widgetContainer .p-dropdown{flex:1;display:flex}.prime .widgetContainer :is(.p-float-label,p-floatlabel){height:100%;width:100%}.prime .widgetItemContainer{height:100%;width:100%;display:flex;flex-direction:row}.prime .widgetItemContainer smart-ui-action-toolbar{flex:unset}.prime .widgetItemContainer .p-dropdown{flex:1;display:flex}.prime .widgetItemContainer :is(.p-float-label,p-floatlabel){height:100%;width:100%}.prime :is(p-calendar,.p-multiselect){height:100%}.material .sb4-textarea{resize:vertical!important}.material .smart-form-widget-label{font-weight:700}.material .mat-mdc-form-field-subscript-wrapper{display:none}.label-right{display:flex;gap:.5rem;flex-direction:row-reverse}.label-left{display:flex;gap:.5rem;flex-direction:row}.label-top{display:flex;gap:.5rem;flex-direction:column}.label-bottom{display:flex;gap:.5rem;flex-direction:column-reverse}.p-message .p-message-wrapper{padding:.5rem}.smartDiv{width:100%}.p-message.p-message-error .p-message-icon{color:#73000c;display:flex}.p-message.p-message-error{position:absolute;top:100%;left:0;z-index:1000;border-radius:4px;box-shadow:0 2px 6px #0003;margin:.2rem 0!important}.p-inputgroup-addon{max-height:2.8rem;background:unset;border:unset!important}\n/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n"] }]
|
|
9754
|
+
args: [{ selector: 'smartformwidget', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (compLib === componentLibrary.PRIMENG) {\n <div class=\"container prime\" [formGroup]=\"form\">\n <div\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\n class=\"container\"\n *ngIf=\"widgetInstance.isVisible === undefined ? true : widgetInstance.isVisible\"\n >\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CONTAINER\"\n [attr.data-testid]=\"widgetInstance.key\"\n [ngClass]=\"getDirection()\"\n >\n <smartformwidget\n *ngFor=\"let widget of widgetInstance.valueList\"\n [form]=\"form\"\n [widgetInstance]=\"widget\"\n class=\"container-item\"\n [ngClass]=\"widget.cssClass ?? ''\"\n [onBlur]=\"onBlur\"\n [onValueChange]=\"onValueChange\"\n [sophisticatedValueChange]=\"sophisticatedValueChange\"\n [blurSophisticatedValueChange]=\"blurSophisticatedValueChange\"\n class=\"{{ widget.key }}\"\n [labelColor]=\"labelColor\"\n ></smartformwidget>\n </div>\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer textFieldContainer\">\n <p-floatLabel [ngClass]=\"{ hasToolbar: isToolbarPresent() }\">\n <input\n *ngIf=\"!widgetInstance.mask\"\n [formControlName]=\"widgetInstance.key\"\n [(ngModel)]=\"widgetInstance.value\"\n type=\"{{ widgetInstance.isPassword ? (hidePassword ? 'password' : 'text') : '' }}\"\n pInputText\n formControlName=\"text\"\n [attr.data-testid]=\"widgetInstance.key\"\n (change)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n />\n <p-inputMask\n *ngIf=\"widgetInstance.mask\"\n [formControlName]=\"widgetInstance.key\"\n [(ngModel)]=\"widgetInstance.value\"\n [mask]=\"widgetInstance.mask\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onBlur)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n />\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <div class=\"textFieldButtons\">\n <smart-ui-action-toolbar\n #toolbar\n *ngIf=\"isToolbarPresent()\"\n class=\"textFieldToolbar\"\n matSuffix\n [id]=\"widgetInstance.toolbarId\"\n >\n </smart-ui-action-toolbar>\n @if (widgetInstance.textFieldProperties?.clearable) {\n <ui-action-button\n class=\"clearButton\"\n [addBasicClasses]=\"false\"\n [descriptor]=\"clearButtonDescriptor\"\n (actionClick)=\"clearField(widgetInstance.key)\"\n />\n }\n </div>\n <div\n *ngIf=\"widgetInstance?.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length != 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_NUMBER\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer\">\n <p-floatLabel>\n <p-inputNumber\n [formControlName]=\"widgetInstance.key\"\n [(ngModel)]=\"widgetInstance.value\"\n inputId=\"minmax\"\n mode=\"decimal\"\n [max]=\"widgetInstance.maxValues ?? null\"\n [minFractionDigits]=\"0\"\n [maxFractionDigits]=\"5\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onBlur)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n />\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <div\n *ngIf=\"widgetInstance?.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.RICH_TEXT\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div class=\"labelContainer\">\n <div *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n </div>\n <div>\n <div class=\"widgetContent\">\n <p-editor\n [ngClass]=\"widgetInstance.isReadonly == true ? 'disabledEditor' : ''\"\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [modules]=\"\n widgetInstance.isDisabled ? emptyQuillToolbar : widgetInstance.quillModules\n \"\n [placeholder]=\"widgetInstance.placeholder\"\n [readOnly]=\"widgetInstance.isReadonly\"\n [disabled]=\"widgetInstance.isReadonly ?? false\"\n [maxLength]=\"widgetInstance.maxLength\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onTextChange)=\"onPrimeRichTextEditorContentChanged($event)\"\n (onTextChange)=\"handleBlurEvent($event)\"\n />\n </div>\n <span class=\"prime-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <div\n *ngIf=\"widgetInstance?.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SORTABLE\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div class=\"labelContainer\">\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n </div>\n <div class=\"widgetContent\">\n <lib-sortable-widget\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n ></lib-sortable-widget>\n </div>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_PICKER\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer\">\n <p-floatLabel>\n <p-calendar\n [formControlName]=\"widgetInstance.key\"\n [iconDisplay]=\"'input'\"\n [showIcon]=\"true\"\n [minDate]=\"\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\n \"\n [maxDate]=\"\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\n \"\n [showClear]=\"true\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onShow)=\"onCalendarShow()\"\n (onInput)=\"onCalendarInput()\"\n (onBlur)=\"safeCalendarBlur($event)\"\n (onClear)=\"handleBlurEvent($event)\"\n (onClose)=\"handleBlurEvent($event)\"\n dateFormat=\"yy-mm-dd\"\n appendTo=\"body\"\n />\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <div\n *ngIf=\"widgetInstance?.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n\n @if (widgetInstance.type === smartFormWidgetType.MONTH_PICKER) {\n Currently not implemented\n }\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_TIME_PICKER\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer\">\n <p-floatLabel>\n <p-calendar\n [formControlName]=\"widgetInstance.key\"\n [iconDisplay]=\"'input'\"\n [showIcon]=\"true\"\n [showTime]=\"true\"\n [showClear]=\"true\"\n [minDate]=\"\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\n \"\n [maxDate]=\"\n convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\n \"\n hourFormat=\"24\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onShow)=\"onCalendarShow()\"\n (onInput)=\"onCalendarInput()\"\n (onBlur)=\"safeCalendarBlur($event)\"\n (onClear)=\"handleBlurEvent($event)\"\n (onClose)=\"handleBlurEvent($event)\"\n dateFormat=\"yy-mm-dd\"\n appendTo=\"body\"\n >\n </p-calendar>\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <div\n *ngIf=\"widgetInstance?.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer\">\n <p-floatLabel>\n <p-dropdown\n [formControlName]=\"widgetInstance.key\"\n [(ngModel)]=\"widgetInstance.value\"\n [options]=\"getOptions(widgetInstance.valueList)\"\n [checkmark]=\"true\"\n [filter]=\"true\"\n [showClear]=\"true\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onBlur)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n [compareWith]=\"\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\n \"\n appendTo=\"body\"\n />\n <span class=\"prime-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT_MULTIPLE\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer\">\n <p-floatLabel>\n <p-multiSelect\n [formControlName]=\"widgetInstance.key\"\n [(ngModel)]=\"widgetInstance.value\"\n [options]=\"getOptions(widgetInstance.valueList)\"\n [checkmark]=\"true\"\n [showClear]=\"true\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onPanelShow)=\"onDropDownShow()\"\n (onBlur)=\"safeDropDownBlur($event)\"\n (onClear)=\"handleBlurEvent($event)\"\n (onPanelHide)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n [compareWith]=\"\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\n \"\n appendTo=\"body\"\n selectedItemsLabel=\"{0} elem kiv\u00E1lasztva\"\n />\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_BOX\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer\" [ngClass]=\"getNgClass()\" [ngStyle]=\"getStyle()\">\n <p-floatLabel>\n <textarea\n class=\"sb4-textarea\"\n #sb4Textarea\n pInputTextarea\n [autoResize]=\"true\"\n cols=\"30\"\n [rows]=\"widgetInstance.textBoxProperties?.minRows ?? 1\"\n [formControlName]=\"widgetInstance.key\"\n [(ngModel)]=\"widgetInstance.value\"\n placeholder=\" \"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n (change)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n (ngModelChange)=\"onTextareaChange($event)\"\n ></textarea>\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n [for]=\"widgetInstance.key\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <p-messages\n class=\"floating-error\"\n *ngIf=\"errorMessages && errorMessages.length && errorMessages.length > 0\"\n [value]=\"errorMessages\"\n [closable]=\"true\"\n ></p-messages>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_LOOKUP\"\n class=\"widgetContainer\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <div\n *ngIf=\"widgetInstance.showLabel && !widgetInstance.isFloatLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <div class=\"widgetItemContainer\">\n <p-floatLabel>\n <p-chips\n [disabled]=\"widgetInstance.isDisabled ? widgetInstance.isDisabled : false\"\n [max]=\"0\"\n [maxLength]=\"0\"\n [formControlName]=\"widgetInstance.key\"\n [(ngModel)]=\"widgetInstance.value\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n [attr.data-testid]=\"widgetInstance.key\"\n (onBlur)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n >\n <ng-template let-item pTemplate=\"item\"> {{ getChipsValue(item) }} </ng-template>\n </p-chips>\n <label\n *ngIf=\"widgetInstance.showLabel && widgetInstance.isFloatLabel\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n >\n {{ getWidgetLabel(widgetInstance) }}</label\n >\n </p-floatLabel>\n <smart-ui-action-toolbar\n #toolbar\n *ngIf=\"isToolbarPresent()\"\n matSuffix\n [id]=\"widgetInstance.toolbarId\"\n ></smart-ui-action-toolbar>\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.LABEL\"\n class=\"label widgetContainer\"\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\n >\n <div class=\"label-title labelContainer\" [ngClass]=\"widgetInstance.cssClass ?? ''\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n @if (widgetInstance.widgetDescription) {\n <p>{{ widgetInstance.widgetDescription }}</p>\n }\n </div>\n </div>\n @if (widgetInstance.type === smartFormWidgetType.RECORDING_UPLOADER) {\n <div class=\"widgetContainer\">\n <div class=\"widgetItemContainer\">\n <smart-voice-recorder\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n (uploadFilesEvent)=\"upload($event)\"\n />\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n </div>\n }\n @if (widgetInstance.type === smartFormWidgetType.FILE_UPLOADER) {\n <div class=\"widgetContainer\">\n <div class=\"widgetItemContainer\">\n <smart-file-editor\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n (uploadFilesEvent)=\"upload($event)\"\n />\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n </div>\n }\n\n @if (widgetInstance.type === smartFormWidgetType.MULTI_FILE_UPLOADER) {\n <div class=\"widgetContainer\">\n <div class=\"widgetItemContainer\">\n <smart-multi-file-editor\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n (uploadFilesEvent)=\"upload($event)\"\n (fileEvent)=\"executeUiAction($event.uiAction)\"\n />\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n </div>\n }\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.IMAGE\"\n class=\"widgetContainer imageContainer\"\n >\n <h4\n *ngIf=\"widgetInstance.showLabel && getWidgetLabel(widgetInstance)\"\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n\n @if (widgetInstance.imageProperties?.image) {\n <smart-icon\n [imageResource]=\"widgetInstance.imageProperties!.image\"\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\n alt=\"Image\"\n title=\"{{ widgetInstance.key }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n ></smart-icon>\n } @else if (widgetInstance.value) {\n <smart-icon\n [imageResource]=\"widgetInstance.value\"\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\n alt=\"Image\"\n title=\"{{ widgetInstance.key }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n ></smart-icon>\n }\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TOGGLE\"\n class=\"widgetContainer toggle-col\"\n [ngClass]=\"widgetInstance.labelPositionClass ?? ''\"\n >\n <label [ngClass]=\"widgetInstance.cssLabelClass ?? ''\" [for]=\"widgetInstance.key\">\n {{ getWidgetLabel(widgetInstance) }}\n </label>\n <p-inputSwitch\n formControlName=\"{{ widgetInstance.key }}\"\n [(ngModel)]=\"widgetInstance.value\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n name=\"{{ getWidgetLabel(widgetInstance) }}\"\n (onChange)=\"onValueChange?.next($event)\"\n (onChange)=\"handleBlurEvent($event)\"\n />\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX\"\n [attr.data-testid]=\"widgetInstance.key\"\n class=\"widgetContainer\"\n >\n <div\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\n <div class=\"checkbox-item-container\">\n <p-checkbox\n class=\"selecatbleObject\"\n formControlName=\"{{ widgetInstance.key }}\"\n [binary]=\"true\"\n [label]=\"widgetInstance.label\"\n />\n </div>\n <div class=\"radio-error\">\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n ></smart-icon>\n </div>\n </section>\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n (click)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n </div>\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX_2\"\n [attr.data-testid]=\"widgetInstance.key\"\n class=\"widgetContainer\"\n >\n <div\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\n <div\n class=\"checkbox-item-container\"\n *ngFor=\"let checkbox of widgetInstance.valueList; let i = index\"\n >\n <img\n *ngIf=\"checkbox.imageUrl\"\n title=\"{{ widgetInstance.key }}\"\n class=\"checkbox-item-image\"\n [src]=\"checkbox.imageUrl\"\n />\n <p-checkbox\n class=\"selecatbleObject\"\n formControlName=\"{{ widgetInstance.key + '.' + checkbox.key }}\"\n [ngModel]=\"checkbox.value\"\n [binary]=\"true\"\n [label]=\"checkbox.label\"\n />\n </div>\n <div class=\"radio-error\">\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n ></smart-icon>\n </div>\n </section>\n </div>\n <div\n *ngIf=\"widgetInstance.hint\"\n class=\"p-inputgroup-addon\"\n (mouseenter)=\"op.toggle($event)\"\n (mouseleave)=\"op.toggle($event)\"\n >\n <i class=\"pi pi-info-circle\"></i>\n </div>\n <p-overlayPanel #op>\n <div\n *ngIf=\"isHtml(widgetInstance.hint?.text ?? ''); else plainText\"\n [innerHTML]=\"widgetInstance.hint?.text\"\n >\n </div>\n <ng-template #plainText>\n <div style=\"white-space: pre-wrap\">{{ widgetInstance.hint?.text }}</div>\n </ng-template>\n </p-overlayPanel>\n </div>\n\n @if (widgetInstance.type === smartFormWidgetType.DIV) {\n <div class=\"widgetContainer\">\n <div\n class=\"smartDiv\"\n [innerHTML]=\"sanitizeHtml(getWidgetLabel(widgetInstance))\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n >\n </div>\n </div>\n }\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SVG\" class=\"widgetContainer\">\n <h4\n *ngIf=\"widgetInstance.showLabel\"\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <div\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [innerHTML]=\"sanitizeHtml(widgetInstance.value)\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n ></div>\n </div>\n </div>\n </div>\n} @else {\n <div class=\"container material\" [formGroup]=\"form\">\n <div\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\n class=\"container\"\n *ngIf=\"widgetInstance.isVisible === undefined ? true : widgetInstance.isVisible\"\n >\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CONTAINER\"\n [attr.data-testid]=\"widgetInstance.key\"\n [ngClass]=\"getDirection()\"\n >\n <smartformwidget\n *ngFor=\"let widget of widgetInstance.valueList\"\n [form]=\"form\"\n [widgetInstance]=\"widget\"\n class=\"container-item\"\n [ngClass]=\"widget.cssClass ?? ''\"\n [onBlur]=\"onBlur\"\n [onValueChange]=\"onValueChange\"\n [sophisticatedValueChange]=\"sophisticatedValueChange\"\n class=\"{{ widget.key }}\"\n [labelColor]=\"labelColor\"\n ></smartformwidget>\n </div>\n\n <div\n (capsLock)=\"capsOn = $event\"\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input textField widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n\n <input\n *ngIf=\"!widgetInstance.selection\"\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [attr.inputmode]=\"\n widgetInstance.inputMode ? widgetInstance.inputMode.toLocaleLowerCase() : 'text'\n \"\n [type]=\"'string'\"\n [value]=\"widgetInstance.value\"\n [readonly]=\"widgetInstance.isReadonly\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n matInput\n (change)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n type=\"{{ widgetInstance.isPassword ? (hidePassword ? 'password' : 'text') : '' }}\"\n (keydown.enter)=\"onKeydown()\"\n maxlength=\"{{ widgetInstance.maxLength }}\"\n />\n <!-- [mask]=\"widgetInstance.mask ?? ''\" -->\n <input\n *ngIf=\"widgetInstance.selection\"\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [type]=\"'string'\"\n [value]=\"widgetInstance.value\"\n [readonly]=\"widgetInstance.isReadonly\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n matInput\n (change)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n (click)=\"onValueChange?.next($event)\"\n type=\"{{ widgetInstance.isPassword ? 'password' : '' }}\"\n [matAutocomplete]=\"textFieldAuto\"\n (keydown.enter)=\"onKeydown()\"\n />\n <button\n *ngIf=\"widgetInstance.isPassword\"\n mat-icon-button\n matSuffix\n (click)=\"togglePasswordVisibility($event)\"\n >\n <mat-icon>{{ hidePassword ? 'visibility_off' : 'visibility' }}</mat-icon>\n </button>\n <mat-autocomplete #textFieldAuto=\"matAutocomplete\">\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option.label\">\n <span [innerHTML]=\"option.label | highlight: toHighlight\"></span>\n </mat-option>\n </mat-autocomplete>\n <span class=\"mat-error\" *ngIf=\"capsOn && widgetInstance.isPassword\">\n {{ widgetInstance.capsLockWarning }}\n </span>\n\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n\n <span matPrefix>\n <smart-icon\n *ngIf=\"capsOn && widgetInstance.isPassword\"\n [icon]=\"widgetInstance.capsLockWarningIcon ?? 'keyboard_capslock'\"\n color=\"warn\"\n ></smart-icon>\n <smart-icon\n *ngIf=\"widgetInstance.icon && widgetInstance.iconPosition === 'PRE'\"\n [icon]=\"widgetInstance.icon\"\n [color]=\"widgetInstance.iconColor ?? 'primary'\"\n ></smart-icon>\n {{ widgetInstance.prefix }}\n </span>\n <span matSuffix>\n {{ widgetInstance.suffix }}\n </span>\n <smart-icon\n *ngIf=\"\n widgetInstance.icon &&\n (!widgetInstance.iconPosition || widgetInstance.iconPosition === 'POST')\n \"\n [icon]=\"widgetInstance.icon\"\n [color]=\"widgetInstance.iconColor ?? 'primary'\"\n matSuffix\n ></smart-icon>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <div class=\"textFieldButtons\">\n @if (widgetInstance.textFieldProperties?.clearable) {\n <ui-action-button\n class=\"clearButton\"\n [addBasicClasses]=\"false\"\n [descriptor]=\"clearButtonDescriptor\"\n (actionClick)=\"clearField(widgetInstance.key)\"\n />\n }\n </div>\n <smart-ui-action-toolbar\n #toolbar\n *ngIf=\"isToolbarPresent()\"\n class=\"textFieldToolbar\"\n matSuffix\n [id]=\"widgetInstance.toolbarId\"\n ></smart-ui-action-toolbar>\n <button\n *ngIf=\"widgetInstance.textFieldButton\"\n matSuffix\n mat-button\n color=\"{{ widgetInstance.textFieldButton.color }}\"\n (click)=\"widgetInstance.textFieldButton.callback(widgetInstance)\"\n >\n <smart-icon\n *ngIf=\"\n widgetInstance.textFieldButton.iconPosition ===\n smartFormTextFieldButtonIconPosition().PRE && widgetInstance.textFieldButton.icon\n \"\n [icon]=\"widgetInstance.textFieldButton.icon\"\n [color]=\"widgetInstance.textFieldButton.iconColor\"\n >\n </smart-icon>\n {{ widgetInstance.textFieldButton.label }}\n <smart-icon\n *ngIf=\"\n widgetInstance.textFieldButton.iconPosition ===\n smartFormTextFieldButtonIconPosition().POST && widgetInstance.textFieldButton.icon\n \"\n [icon]=\"widgetInstance.textFieldButton.icon\"\n >\n </smart-icon>\n </button>\n <mat-hint\n *ngIf=\"widgetInstance.showCharacterLimitSuffix && widgetInstance.maxLength\"\n matSuffix\n align=\"end\"\n >{{\n widgetInstance.maxLength - form.controls[widgetInstance.key].value.length\n }}</mat-hint\n >\n </mat-form-field>\n <mat-hint\n *ngIf=\"\n !widgetInstance?.hint ||\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\n \"\n >{{ widgetInstance.hint?.text }}</mat-hint\n >\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_NUMBER\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input textField widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <input\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [value]=\"widgetInstance.value\"\n [readonly]=\"widgetInstance.isReadonly\"\n [type]=\"'number'\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n [min]=\"widgetInstance.minValues ?? null\"\n [max]=\"widgetInstance.maxValues ?? null\"\n matInput\n (change)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n />\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <span matPrefix>\n {{ widgetInstance.prefix }}\n </span>\n <span matSuffix>\n {{ widgetInstance.suffix }}\n </span>\n <smart-icon *ngIf=\"widgetInstance.icon\" [icon]=\"widgetInstance.icon\" matSuffix>\n </smart-icon>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <button\n *ngIf=\"widgetInstance.textFieldButton\"\n matSuffix\n mat-button\n color=\"{{ widgetInstance.textFieldButton.color }}\"\n (click)=\"widgetInstance.textFieldButton.callback(widgetInstance)\"\n >\n <smart-icon\n *ngIf=\"\n widgetInstance.textFieldButton.iconPosition ===\n smartFormTextFieldButtonIconPosition().PRE && widgetInstance.textFieldButton.icon\n \"\n [icon]=\"widgetInstance.textFieldButton.icon\"\n >\n </smart-icon>\n {{ widgetInstance.textFieldButton.label }}\n <smart-icon\n *ngIf=\"\n widgetInstance.textFieldButton.iconPosition ===\n smartFormTextFieldButtonIconPosition().POST && widgetInstance.textFieldButton.icon\n \"\n [icon]=\"widgetInstance.textFieldButton.icon\"\n >\n </smart-icon>\n </button>\n </mat-form-field>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_CHIPS\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <mat-chip-grid #chipList aria-label=\"{{ widgetInstance.label }}\">\n <mat-chip-row\n [disabled]=\"widgetInstance.isDisabled\"\n *ngFor=\"let value of widgetInstance.value\"\n (removed)=\"remove(value)\"\n >\n {{ value }}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n <input\n #chipInput\n [attr.data-testid]=\"widgetInstance.key\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n [matChipInputAddOnBlur]=\"addOnBlur\"\n [readonly]=\"widgetInstance.isReadonly\"\n [matAutocomplete]=\"chipAuto\"\n (matChipInputTokenEnd)=\"add($event)\"\n (change)=\"handleBlurEvent($event)\"\n (input)=\"onValueChange?.next($event)\"\n [disabled]=\"widgetInstance.isDisabled\"\n />\n <mat-autocomplete\n #chipAuto=\"matAutocomplete\"\n (optionSelected)=\"selected($event, widgetInstance)\"\n >\n <mat-option\n [disabled]=\"widgetInstance.isDisabled\"\n *ngFor=\"let item of widgetInstance.valueList\"\n [value]=\"item.value\"\n >\n {{ item.label }}\n </mat-option>\n </mat-autocomplete>\n </mat-chip-grid>\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n </mat-form-field>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_FIELD_LOOKUP\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <mat-chip-grid #chipListLookup aria-label=\"{{ widgetInstance.label }}\">\n <mat-chip\n [disabled]=\"widgetInstance.isDisabled\"\n *ngFor=\"let value of widgetInstance.value\"\n (removed)=\"remove(value)\"\n >\n {{ getChipsValue(value) }}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip>\n <input\n [attr.data-testid]=\"widgetInstance.key\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n [matChipInputFor]=\"chipListLookup\"\n [matChipInputSeparatorKeyCodes]=\"emptySeparatorKeysCodes\"\n [matChipInputAddOnBlur]=\"false\"\n [readonly]=\"true\"\n [disabled]=\"widgetInstance.isDisabled\"\n />\n </mat-chip-grid>\n <smart-ui-action-toolbar\n #toolbar\n *ngIf=\"isToolbarPresent()\"\n matSuffix\n [id]=\"widgetInstance.toolbarId\"\n ></smart-ui-action-toolbar>\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n </mat-form-field>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.TEXT_BOX\" class=\"widgetContainer\">\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <textarea\n class=\"sb4-textarea\"\n #sb4Textarea\n cols=\"30\"\n cdkTextareaAutosize\n [cdkAutosizeMinRows]=\"widgetInstance.textBoxProperties?.minRows ?? 1\"\n [cdkAutosizeMaxRows]=\"widgetInstance.textBoxProperties?.maxRows ?? undefined\"\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [type]=\"'string'\"\n [value]=\"widgetInstance.value\"\n [readonly]=\"widgetInstance.isReadonly\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n matInput\n (change)=\"handleBlurEvent($event)\"\n maxlength=\"{{ widgetInstance.maxLength }}\"\n ></textarea>\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <mat-hint\n *ngIf=\"widgetInstance.showCharacterLimitSuffix && widgetInstance.maxLength\"\n matSuffix\n align=\"end\"\n >{{\n widgetInstance.maxLength - form.controls[widgetInstance.key].value.length\n }}</mat-hint\n >\n </mat-form-field>\n <mat-hint\n *ngIf=\"\n !widgetInstance.hint || widgetInstance.hint?.position === SmartWidgetHintPosition.INPUT\n \"\n >{{ widgetInstance.hint?.text }}</mat-hint\n >\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX\"\n [attr.data-testid]=\"widgetInstance.key\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <div\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label class=\"radioLabel\" *ngIf=\"!widgetInstance.showLabel\">\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\n <div class=\"checkbox-item-container\">\n <mat-checkbox\n class=\"selecatbleObject\"\n formControlName=\"{{ widgetInstance.key }}\"\n (change)=\"onValueChange?.next(widgetInstance)\"\n >\n {{ widgetInstance.label }}\n </mat-checkbox>\n </div>\n <div class=\"radio-error\">\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n ></smart-icon>\n </div>\n </section>\n </div>\n </div>\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.CHECK_BOX_2\"\n [attr.data-testid]=\"widgetInstance.key\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssLabelClass }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <div\n class=\"input checkbox widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label class=\"radioLabel\" *ngIf=\"!widgetInstance.showLabel\">\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <section class=\"checkbox-section\" [ngClass]=\"getDirection()\">\n <div\n class=\"checkbox-item-container\"\n *ngFor=\"let checkbox of widgetInstance.valueList; let i = index\"\n >\n <img\n *ngIf=\"checkbox.imageUrl\"\n title=\"{{ widgetInstance.key }}\"\n class=\"checkbox-item-image\"\n [src]=\"checkbox.imageUrl\"\n />\n <mat-checkbox\n class=\"selecatbleObject\"\n formControlName=\"{{ widgetInstance.key + '.' + checkbox.key }}\"\n [value]=\"checkbox.value\"\n (change)=\"onValueChange?.next(checkbox)\"\n [disabled]=\"widgetInstance.isDisabled!\"\n >\n {{ checkbox.label }}\n </mat-checkbox>\n </div>\n <div class=\"radio-error\">\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n ></smart-icon>\n </div>\n </section>\n </div>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.RADIO_BUTTON\" class=\"widgetContainer\">\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssLabelClass }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-radio-group\n class=\"input radio-section widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n [attr.data-testid]=\"widgetInstance.key\"\n aria-label=\"{{ widgetInstance.label }}\"\n appearance=\"outline\"\n formControlName=\"{{ widgetInstance.key }}\"\n >\n <mat-label class=\"radioLabel\" *ngIf=\"!widgetInstance.showLabel\">\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <div [ngClass]=\"getDirection()\">\n <div class=\"radio-item-container\" *ngFor=\"let radio of widgetInstance.valueList\">\n <img\n *ngIf=\"radio.imageUrl\"\n title=\"{{ widgetInstance.key }}\"\n class=\"radio-item-image\"\n [src]=\"radio.imageUrl\"\n />\n <mat-radio-button\n class=\"selecatbleObject\"\n value=\"{{ radio.value }}\"\n [ngClass]=\"getDirection()\"\n (change)=\"onValueChange?.next(radio.value)\"\n [disabled]=\"widgetInstance.isDisabled\"\n >\n {{ radio.label }}\n </mat-radio-button>\n </div>\n <div class=\"radio-error\">\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n ></smart-icon>\n </div>\n </div>\n </mat-radio-group>\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_PICKER\"\n class=\"datePicker widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input widgetContent date {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker (closed)=\"handleBlurEvent(widgetInstance)\"></mat-datepicker>\n <input\n matInput\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [value]=\"widgetInstance.value\"\n [min]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\"\n [max]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n [matDatepicker]=\"picker\"\n (change)=\"handleBlurEvent(widgetInstance)\"\n (dateChange)=\"onValueChange?.next(widgetInstance)\"\n [matDatepickerFilter]=\"widgetInstance.filter ?? dateFilter\"\n />\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <mat-hint>\n {{ widgetInstance.dateFormatHint }}\n </mat-hint>\n </mat-form-field>\n </div>\n\n <!-- <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_TIME_PICKER\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4 class=\"{{ labelColor }} smart-form-widget-label\">\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n </div>\n <mat-form-field\n class=\"input widgetContent\"\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <mat-datepicker-toggle matSuffix [for]=\"$any(picker)\"></mat-datepicker-toggle>\n <ngx-mat-datetime-picker\n #picker\n [showSpinners]=\"true\"\n [showSeconds]=\"false\"\n [stepHour]=\"1\"\n [stepMinute]=\"1\"\n [stepSecond]=\"10\"\n [touchUi]=\"false\"\n [color]=\"'primary'\"\n [enableMeridian]=\"false\"\n [disableMinute]=\"false\"\n [hideTime]=\"false\"\n >\n </ngx-mat-datetime-picker>\n <input\n matInput\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [value]=\"widgetInstance.value\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n [ngxMatDatetimePicker]=\"picker\"\n [ngxMatDatetimePickerFilter]=\"widgetInstance.filter ?? dateFilter\"\n (blur)=\"onBlur?.next(widgetInstance)\"\n />\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <mat-hint>\n {{ widgetInstance.dateFormatHint }}\n </mat-hint>\n </mat-form-field>\n </div> -->\n\n @if (widgetInstance.type === smartFormWidgetType.MONTH_PICKER) {\n <div class=\"widgetContainer\">\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <div class=\"{{ labelColor }} smart-form-widget-label\">\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <lib-smart-month-picker\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n (valueChange)=\"handleYearMonthPicked($event)\"\n ></lib-smart-month-picker>\n </div>\n }\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.DATE_TIME_PICKER\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <div\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <div class=\"dateTimePickerContainer\">\n <mat-form-field\n class=\"input widgetContent date {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker (closed)=\"handleBlurEvent(widgetInstance)\"></mat-datepicker>\n <input\n #dateInput\n matInput\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [min]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.minDate ?? null)\"\n [max]=\"convertToLocalDateTime(widgetInstance.dateFieldProperties?.maxDate ?? null)\"\n [id]=\"widgetInstance.key\"\n [value]=\"widgetInstance.value\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n [matDatepicker]=\"picker\"\n (blur)=\"onDatePickerBlur($event)\"\n (dateChange)=\"onValueChange?.next(widgetInstance)\"\n [matDatepickerFilter]=\"widgetInstance.filter ?? dateFilter\"\n />\n\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n <mat-hint>\n {{ widgetInstance.dateFormatHint }}\n </mat-hint>\n </mat-form-field>\n <mat-form-field\n *ngIf=\"hasCreated\"\n class=\"input widgetContent time\"\n [ngClass]=\"widgetInstance.cssClass ?? ''\"\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\n appearance=\"outline\"\n >\n <input\n #timeInput\n [formControlName]=\"widgetInstance.key + '-time'\"\n [attr.data-testid]=\"widgetInstance.key + '-time'\"\n [id]=\"widgetInstance.key\"\n [type]=\"'time'\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n (blur)=\"onTimePickerBlur($event)\"\n matInput\n />\n </mat-form-field>\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n </div>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT\" class=\"widgetContainer\">\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <div\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </div>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <mat-select\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n (selectionChange)=\"onValueChange?.next($event.value)\"\n (closed)=\"handleBlurEvent(widgetInstance)\"\n [disabled]=\"widgetInstance.isDisabled!\"\n [compareWith]=\"\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\n \"\n placeholder=\"{{ widgetInstance.placeholder ? widgetInstance.placeholder : '' }}\"\n >\n <div *ngFor=\"let option of widgetInstance.valueList\">\n <mat-optgroup\n *ngIf=\"option.type === getType().ITEM_GROUP\"\n [label]=\"option.label\"\n [disabled]=\"option.isDisabled\"\n >\n <mat-option\n *ngFor=\"let innerOption of option.valueList\"\n [value]=\"innerOption.value\"\n [disabled]=\"innerOption.isDisabled\"\n >\n <smart-icon\n *ngIf=\"innerOption.icon\"\n [icon]=\"innerOption.icon\"\n [color]=\"innerOption.iconColor\"\n ></smart-icon>\n {{ innerOption.label }}\n </mat-option>\n </mat-optgroup>\n <mat-option\n *ngIf=\"option.type === getType().ITEM\"\n [value]=\"option.value\"\n [disabled]=\"option.isDisabled\"\n >\n <smart-icon\n *ngIf=\"option.icon\"\n [icon]=\"option.icon\"\n [color]=\"option.iconColor\"\n ></smart-icon\n >{{ option.label }}</mat-option\n >\n </div>\n </mat-select>\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n </mat-form-field>\n <mat-hint\n *ngIf=\"\n !widgetInstance?.hint ||\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\n \"\n >{{ widgetInstance.hint?.text }}</mat-hint\n >\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.SELECT_MULTIPLE\"\n class=\"widgetContainer\"\n >\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <mat-select\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n multiple\n (selectionChange)=\"onValueChange?.next($event.value)\"\n (closed)=\"handleBlurEvent(widgetInstance)\"\n [disabled]=\"widgetInstance.isDisabled!\"\n [compareWith]=\"\n widgetInstance.compareWith == null ? compareItems : widgetInstance.compareWith\n \"\n placeholder=\"{{ widgetInstance.placeholder ? widgetInstance.placeholder : '' }}\"\n >\n <div *ngFor=\"let option of widgetInstance.valueList\">\n <mat-optgroup\n *ngIf=\"option.type === getType().ITEM_GROUP\"\n [label]=\"option.label\"\n [disabled]=\"option.isDisabled\"\n >\n <mat-option\n *ngFor=\"let innerOption of option.valueList\"\n [value]=\"innerOption.value\"\n [disabled]=\"innerOption.isDisabled\"\n >\n <smart-icon\n *ngIf=\"innerOption.icon\"\n [icon]=\"innerOption.icon\"\n [color]=\"innerOption.iconColor\"\n ></smart-icon\n >{{ innerOption.label }}</mat-option\n >\n </mat-optgroup>\n <mat-option\n *ngIf=\"option.type === getType().ITEM\"\n [value]=\"option.value\"\n [disabled]=\"option.isDisabled\"\n >\n <smart-icon\n *ngIf=\"option.icon\"\n [icon]=\"option.icon\"\n [color]=\"option.iconColor\"\n ></smart-icon\n >{{ option.label }}</mat-option\n >\n </div>\n </mat-select>\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n </mat-form-field>\n <mat-hint\n *ngIf=\"\n !widgetInstance?.hint ||\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\n \"\n >{{ widgetInstance.hint?.text }}</mat-hint\n >\n </div>\n\n <div\n *ngIf=\"widgetInstance.type === smartFormWidgetType.LABEL\"\n class=\"label widgetContainer\"\n [ngStyle]=\"{ width: widgetInstance.minWidth + 'px' }\"\n >\n <div class=\"label-title labelContainer\" [ngClass]=\"widgetInstance.cssClass ?? ''\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n @if (widgetInstance.widgetDescription) {\n <p>{{ widgetInstance.widgetDescription }}</p>\n }\n </div>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.TIME\" class=\"widgetContainer\">\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <mat-form-field\n class=\"input widgetContent time {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n appearance=\"outline\"\n >\n <mat-label\n class=\"label\"\n [ngClass]=\"widgetInstance.cssLabelClass ?? ''\"\n *ngIf=\"!widgetInstance.showLabel\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </mat-label>\n <input\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [type]=\"'time'\"\n [value]=\"getTime()\"\n placeholder=\"{{ widgetInstance.placeholder }}\"\n matInput\n (change)=\"handleBlurEvent(widgetInstance)\"\n />\n <span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n matSuffix\n ></smart-icon>\n </mat-form-field>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.TOGGLE\" class=\"widgetContainer\">\n <div class=\"labelContainer\" *ngIf=\"widgetInstance.showLabel\">\n <h4\n class=\"{{ labelColor }} smart-form-widget-label {{\n widgetInstance.cssLabelClass ?? ''\n }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <div\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n >\n <mat-slide-toggle\n formControlName=\"{{ widgetInstance.key }}\"\n [attr.data-testid]=\"widgetInstance.key\"\n value=\"{{ widgetInstance.value }}\"\n (change)=\"onValueChange?.next($event)\"\n [labelPosition]=\"widgetInstance.toggleLabelPosition ?? 'before'\"\n >{{ !widgetInstance.showLabel ? widgetInstance.label : '' }}</mat-slide-toggle\n ><span class=\"mat-error\">\n {{ widgetInstance.error }}\n </span>\n <smart-icon\n *ngIf=\"widgetInstance.error && widgetInstance.errorIcon\"\n [icon]=\"widgetInstance.errorIcon\"\n [color]=\"widgetInstance.errorIconColor ?? 'warn'\"\n ></smart-icon>\n </div>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.INDICATOR\" class=\"widgetContainer\">\n <h4\n *ngIf=\"widgetInstance.showLabel\"\n class=\"{{ labelColor }} labelContainer {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <div class=\"smartIndicator widgetContent\">\n <div class=\"indicatorItems {{ widgetInstance.cssClass ?? '' }}\" [ngClass]=\"getNgClass()\">\n <div\n *ngFor=\"let item of indicatorItems; let i = index\"\n class=\"indicatorItem\"\n [ngClass]=\"getIndicatorItemClass(i)\"\n ></div>\n </div>\n <p [ngClass]=\"getIndicatorStatusLabelColor()\">\n {{ getIndicatorStatusLabel() }}\n </p>\n </div>\n </div>\n @if (widgetInstance.type === smartFormWidgetType.RECORDING_UPLOADER) {\n <div class=\"widgetContainer\">\n <div class=\"widgetItemContainer\">\n <smart-voice-recorder\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n (uploadFilesEvent)=\"upload($event)\"\n />\n </div>\n </div>\n }\n @if (widgetInstance.type === smartFormWidgetType.FILE_UPLOADER) {\n <div class=\"widgetContainer\">\n <smart-file-editor\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n (uploadFilesEvent)=\"upload($event)\"\n />\n </div>\n }\n\n @if (widgetInstance.type === smartFormWidgetType.MULTI_FILE_UPLOADER) {\n <div class=\"widgetContainer\">\n <smart-multi-file-editor\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n (uploadFilesEvent)=\"upload($event)\"\n (fileEvent)=\"executeUiAction($event.uiAction)\"\n />\n </div>\n }\n\n @if (widgetInstance.type === smartFormWidgetType.IMAGE) {\n <div class=\"widgetContainer imageContainer\">\n <h4\n *ngIf=\"widgetInstance.showLabel && getWidgetLabel(widgetInstance)\"\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n\n @if (widgetInstance.imageProperties?.image) {\n <smart-icon\n [imageResource]=\"widgetInstance.imageProperties?.image\"\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\n alt=\"Image\"\n title=\"{{ widgetInstance.key }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n ></smart-icon>\n } @else if (widgetInstance.value) {\n <smart-icon\n [(ngModel)]=\"widgetInstance.value\"\n [imageResource]=\"widgetInstance.value\"\n class=\"widgetContent {{ widgetInstance.imageCss ?? '' }}\"\n alt=\"Image\"\n title=\"{{ widgetInstance.key }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n ></smart-icon>\n }\n </div>\n }\n\n @if (widgetInstance.type === smartFormWidgetType.DIV) {\n <div class=\"widgetContainer\">\n <div\n class=\"smartDiv\"\n [innerHTML]=\"sanitizeHtml(getWidgetLabel(widgetInstance))\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n >\n </div>\n </div>\n }\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SVG\" class=\"widgetContainer\">\n <h4\n *ngIf=\"widgetInstance.showLabel\"\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <div\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [innerHTML]=\"sanitizeHtml(widgetInstance.value)\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n ></div>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.DIVIDER\" class=\"widgetContainer\">\n <hr\n class=\"smartDivider {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n />\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.BUTTON\" class=\"widgetContainer\">\n <h4\n *ngIf=\"widgetInstance.showLabel\"\n class=\"labelContainer {{ labelColor }} {{ widgetInstance.cssLabelClass ?? '' }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <div\n class=\"widgetContent {{ widgetInstance.cssClass ?? '' }}\"\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n >\n <button\n mat-button\n [attr.data-testid]=\"widgetInstance.key\"\n [ngClass]=\"getButtonType(widgetInstance.uiActionDescriptor)\"\n [color]=\"widgetInstance.uiActionDescriptor?.color\"\n (click)=\"onButtonClicked(widgetInstance)\"\n >\n <div\n *ngIf=\"isOnlyIcon(widgetInstance.uiActionDescriptor); then iconOnly; else text\"\n ></div>\n <ng-template #iconOnly>\n <smart-icon\n *ngIf=\"widgetInstance.uiActionDescriptor?.icon\"\n [icon]=\"widgetInstance.uiActionDescriptor!.icon!\"\n [color]=\"\n widgetInstance.uiActionDescriptor?.iconColor ??\n widgetInstance.uiActionDescriptor?.color\n \"\n ></smart-icon>\n </ng-template>\n <ng-template #text>\n <smart-icon\n *ngIf=\"\n widgetInstance.uiActionDescriptor?.icon &&\n widgetInstance.uiActionDescriptor?.iconPosition === 'PRE'\n \"\n [icon]=\"widgetInstance.uiActionDescriptor!.icon!\"\n [color]=\"\n widgetInstance.uiActionDescriptor?.iconColor ??\n widgetInstance.uiActionDescriptor?.color\n \"\n ></smart-icon>\n {{ widgetInstance.uiActionDescriptor?.title }}\n <smart-icon\n *ngIf=\"\n widgetInstance.uiActionDescriptor?.icon &&\n widgetInstance.uiActionDescriptor?.iconPosition === 'POST'\n \"\n [icon]=\"widgetInstance.uiActionDescriptor!.icon!\"\n [color]=\"\n widgetInstance.uiActionDescriptor?.iconColor ??\n widgetInstance.uiActionDescriptor?.color\n \"\n ></smart-icon>\n </ng-template>\n </button>\n </div>\n </div>\n\n <div class=\"widgetContainer\">\n <h4\n class=\"labelContainer\"\n *ngIf=\"widgetInstance.type === smartFormWidgetType.COMPONENT && widgetInstance.showLabel\"\n class=\"{{ labelColor }}\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <div class=\"widgetContent\">\n <ng-template #customComponent></ng-template>\n </div>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.RICH_TEXT\" class=\"widgetContainer\">\n <div class=\"labelContainer\">\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <div class=\"widgetContent\">\n <quill-editor\n #quillEditor\n [formControlName]=\"widgetInstance.key\"\n [id]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [modules]=\"widgetInstance.isDisabled ? emptyQuillToolbar : widgetInstance.quillModules\"\n [placeholder]=\"widgetInstance.placeholder\"\n [readOnly]=\"widgetInstance.isReadonly\"\n [maxLength]=\"widgetInstance.maxLength\"\n (onContentChanged)=\"onRichTextEditorContentChanged($event)\"\n ></quill-editor>\n <mat-hint\n *ngIf=\"\n !widgetInstance?.hint ||\n widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\n \"\n >{{ widgetInstance.hint?.text }}</mat-hint\n >\n <mat-hint\n *ngIf=\"widgetInstance.showCharacterLimitSuffix && widgetInstance.maxLength\"\n matSuffix\n align=\"end\"\n class=\"rich-text-editor-leeway-counter\"\n >{{ getRichTextEditorLengthLeeway() }}</mat-hint\n >\n </div>\n </div>\n\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.SORTABLE\" class=\"widgetContainer\">\n <div class=\"labelContainer\">\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <div class=\"widgetContent\">\n <lib-sortable-widget\n [formControlName]=\"widgetInstance.key\"\n [attr.data-testid]=\"widgetInstance.key\"\n [widgetInstance]=\"widgetInstance\"\n ></lib-sortable-widget>\n </div>\n </div>\n </div>\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.MATRIX\" class=\"widgetContainer\">\n <div class=\"labelContainer\">\n <h4 *ngIf=\"widgetInstance.showLabel\" class=\"{{ labelColor }}\">\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n\n <table class=\"matrixTable widgetContent\">\n <tr>\n <th></th>\n <th class=\"optionLabel\" *ngFor=\"let option of widgetInstance.value.columns\">\n {{ option.displayValue }}\n </th>\n </tr>\n <tr *ngFor=\"let question of widgetInstance.value.rows; let i = index\">\n <th class=\"questionLabel\">\n <label>{{ question.displayValue }}</label>\n </th>\n\n <td class=\"selectTd\" *ngFor=\"let option of widgetInstance.value.columns; let j = index\">\n <mat-radio-group\n *ngIf=\"!widgetInstance.isMultiple\"\n [formControlName]=\"widgetInstance.key + '.' + question.code\"\n [name]=\"'q' + i\"\n >\n <mat-radio-button [value]=\"option.code\"> </mat-radio-button>\n </mat-radio-group>\n <div *ngIf=\"widgetInstance.isMultiple\">\n <mat-checkbox\n [formControlName]=\"\n widgetInstance.key + '.data.' + question.code + '.' + option.code\n \"\n [value]=\"widgetInstance.value['data'][question.code][option.code]\"\n [checked]=\"true\"\n ></mat-checkbox>\n </div>\n </td>\n <br />\n <button *ngIf=\"widgetInstance.button\" mat-icon-button (click)=\"removeMatrixRow(question)\"\n ><smart-icon icon=\"close\"></smart-icon\n ></button>\n </tr>\n </table>\n </div>\n <div *ngIf=\"widgetInstance.type === smartFormWidgetType.YOUTUBE_PLAYER\" class=\"widgetContainer\">\n <div class=\"labelContainer\">\n <h4\n *ngIf=\"widgetInstance.showLabel\"\n class=\"{{ labelColor }} {{ widgetInstance.cssLabelClass }}\"\n [ngClass]=\"getLabelNgClass()\"\n [ngStyle]=\"getLabelStyle()\"\n >\n {{ getWidgetLabel(widgetInstance) }}\n </h4>\n <mat-hint *ngIf=\"widgetInstance?.hint?.position === SmartWidgetHintPosition.LABEL\">{{\n widgetInstance.hint?.text\n }}</mat-hint>\n </div>\n <youtube-player\n [ngClass]=\"getNgClass()\"\n [ngStyle]=\"getStyle()\"\n videoId=\"{{ widgetInstance.videoId }}\"\n [width]=\"widgetInstance.width\"\n [height]=\"widgetInstance.height\"\n [startSeconds]=\"widgetInstance.startSeconds\"\n [endSeconds]=\"widgetInstance.endSeconds\"\n ></youtube-player>\n <mat-hint\n *ngIf=\"\n !widgetInstance?.hint || widgetInstance?.hint?.position === SmartWidgetHintPosition.INPUT\n \"\n >{{ widgetInstance.hint?.text }}</mat-hint\n >\n </div>\n </div>\n}\n", styles: [".ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:\"\\2022\"}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li *{pointer-events:all}.ql-editor ul[data-checked=true]>li:before,.ql-editor ul[data-checked=false]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:\"\\2611\"}.ql-editor ul[data-checked=false]>li:before{content:\"\\2610\"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) \". \"}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) \". \"}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) \". \"}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) \". \"}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) \". \"}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) \". \"}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) \". \"}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) \". \"}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) \". \"}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) \". \"}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:\"\";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media (pointer: coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:\"\";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=\"\"]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=\"\"]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:\"Normal\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"1\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before{content:\"Heading 1\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"2\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before{content:\"Heading 2\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"3\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before{content:\"Heading 3\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"4\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before{content:\"Heading 4\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"5\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before{content:\"Heading 5\"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\"6\"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before{content:\"Heading 6\"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"1\"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"2\"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"3\"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"4\"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"5\"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\"6\"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:\"Sans Serif\"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:\"Serif\"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:\"Monospace\"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:\"Normal\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:\"Small\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:\"Large\"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:\"Huge\"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0px}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:\"Visit URL:\";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:\"Edit\";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:\"Remove\";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0px;content:\"Save\";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:\"Enter link:\"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:\"Enter formula:\"}.ql-snow .ql-tooltip[data-mode=video]:before{content:\"Enter video:\"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}.checkbox-section,.radio-section{display:flex;flex-direction:column}.input{width:100%}.direction-col,.toggle-col{display:flex;flex-direction:column;gap:.5em}.toggle-col>label{font-size:.75rem;color:#6b7280;padding-left:.5em}.prime-error{color:red}.direction-row{display:flex;flex-direction:row;align-items:center;gap:.5em}.selecatbleObject{margin:.5em}.radioLabel{color:var(--primary-color);text-align:left!important}.container{height:100%}.input{height:100%;display:flex;flex-direction:column}.checkbox{flex-direction:column}.mat-form-field-wrapper{padding-bottom:0!important}.input .mat-mdc-standard-chip.mat-chip-with-trailing-icon{padding-right:12px}.time-picker{display:flex;flex-direction:row;height:100%;border:solid 2px lightgrey;padding:1em;border-radius:4px}.time-picker:hover{border-color:#000}::ng-deep .mat-h4 .mat-body-1 .mat-typography h4{margin:0}.label{margin:28px 0 8px}.smartIndicator{display:flex;flex-direction:column;gap:.25rem;width:-moz-fit-content;width:fit-content}.indicatorItems{display:flex;flex-direction:row;gap:.25rem}.indicatorItem{width:3rem;height:.25rem;background-color:#d3d3d3;border-radius:.5rem}.radio-error{width:-moz-fit-content;width:fit-content;display:flex;flex-direction:row;gap:.5rem}.mat-calendar-previous-button,.mat-calendar-next-button{padding:0;min-width:0;width:40px!important;height:40px!important;flex-shrink:0;line-height:40px;border-radius:50%}.mat-calendar-arrow{height:36px!important;display:flex!important;flex-direction:column!important;justify-content:center}.radio-item-container,.checkbox-item-container{display:flex;flex-direction:column}.widgetContent::ng-deep .ql-container{height:200px;width:460px}.dateTimePickerContainer{display:flex;flex-direction:row;gap:.25rem}.dateTimePickerContainer mat-form-field{flex:1}.date{width:125px}.time{width:90px}.date .mat-form-field-infix,.time .mat-form-field-infix{width:inherit!important}::ng-deep .mat-icon.mat-drag-indicator{--drag-indicator: #3b3b3b;color:var(--drag-indicator)}.matrixTable{width:100%;border-spacing:0 1rem}.matrixTable th{padding:.25rem}.matrixTable .optionLabel,.matrixTable td{text-align:center}.example-month-picker .mat-calendar-period-button{pointer-events:none}.example-month-picker .mat-calendar-arrow{display:none}.textFieldContainer{display:flex;flex-direction:row}.textFieldContainer p-floatlabel{flex:1}.textFieldContainer{align-content:center;border:1px solid #cbd5e1;border-radius:3px;background-color:#fff}.textFieldContainer input{border:unset}.textFieldContainer:focus-within:not(:has(input:disabled)){outline:0 none;outline-offset:0;box-shadow:0 0 0 .2rem #a6d5fa;border-color:#2196f3}.textFieldContainer:has(input:disabled) .clearButton{cursor:not-allowed;opacity:.6}.textFieldContainer:has(.p-inputtext.ng-dirty.ng-invalid){border-color:#f44336}.textFieldContainer:has(.p-inputtext.ng-dirty.ng-invalid) label{color:#f44336}.p-inputtext:enabled:focus{outline:unset;outline-offset:unset;box-shadow:unset;border-color:unset}.textFieldButtons{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.clearButton .mat-mdc-raised-button,.clearButton button{background-color:unset!important;border:unset;color:#6b7280!important;box-shadow:unset;font-size:1rem!important}.clearButton .mat-icon.mat-primary{color:#6b7280!important}.clearButton .mat-mdc-raised-button:hover,.clearButton button:hover{color:#6b7280cc!important;background-color:unset;border:unset;box-shadow:unset;font-size:1rem!important}.mat-mdc-form-field-infix{display:flex;flex-direction:row}p-calendar{display:flex;width:100%}p-calendar span{width:100%}textarea:not(:placeholder-shown)~label{top:-.75em!important;font-size:12px!important}.p-calendar ::ng-deep timesicon ::ng-deep .p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.p-calendar ::ng-deep timesicon.p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.p-calendar timesicon ::ng-deep .p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.p-calendar timesicon.p-icon-wrapper{position:absolute!important;top:70%!important;margin-top:-.5rem!important;right:7%!important}.container:has(.p-inputswitch){height:unset}.disabledEditor *{-webkit-user-modify:read-only;-moz-user-modify:read-only;user-modify:read-only}.sb4-textarea{--sb4-textarea-line-height: 20px;line-height:var(--sb4-textarea-line-height);overflow-y:auto!important}.widgetContainer .imageIcon{max-width:unset!important;height:unset!important}.prime .widgetContainer{height:100%;width:100%;display:flex;flex-direction:column;position:relative}.prime .widgetContainer smart-ui-action-toolbar{flex:unset}.prime .widgetContainer .p-dropdown{flex:1;display:flex}.prime .widgetContainer :is(.p-float-label,p-floatlabel){height:100%;width:100%}.prime .widgetItemContainer{height:100%;width:100%;display:flex;flex-direction:row}.prime .widgetItemContainer smart-ui-action-toolbar{flex:unset}.prime .widgetItemContainer .p-dropdown{flex:1;display:flex}.prime .widgetItemContainer :is(.p-float-label,p-floatlabel){height:100%;width:100%}.prime :is(p-calendar,.p-multiselect){height:100%}.material .sb4-textarea{resize:vertical!important}.material .smart-form-widget-label{font-weight:700}.material .mat-mdc-form-field-subscript-wrapper{display:none}.label-right{display:flex;gap:.5rem;flex-direction:row-reverse}.label-left{display:flex;gap:.5rem;flex-direction:row}.label-top{display:flex;gap:.5rem;flex-direction:column}.label-bottom{display:flex;gap:.5rem;flex-direction:column-reverse}.p-message .p-message-wrapper{padding:.5rem}.smartDiv{width:100%}.p-message.p-message-error .p-message-icon{color:#73000c;display:flex}.p-message.p-message-error{position:absolute;top:100%;left:0;z-index:1000;border-radius:4px;box-shadow:0 2px 6px #0003;margin:.2rem 0!important}.p-inputgroup-addon{max-height:2.8rem;background:unset;border:unset!important}\n/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n"] }]
|
|
9733
9755
|
}], ctorParameters: () => [{ type: SmartFormService }, { type: ComponentFactoryService }, { type: i2.DomSanitizer }, { type: ComponentLibrary, decorators: [{
|
|
9734
9756
|
type: Inject,
|
|
9735
9757
|
args: [COMPONENT_LIBRARY]
|
|
@@ -9942,11 +9964,11 @@ class SmartformComponent {
|
|
|
9942
9964
|
return [];
|
|
9943
9965
|
}
|
|
9944
9966
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartformComponent, deps: [{ token: SmartFormService }, { token: COMPONENT_LIBRARY }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9945
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartformComponent, selector: "smartform", inputs: { smartForm: "smartForm" }, providers: [SmartFormService], viewQueries: [{ propertyName: "smartWidgetsQL", predicate: SmartformwidgetComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<form *ngIf=\"smartForm\" (keydown)=\"keyDownFunction($event)\" [formGroup]=\"form\" class=\"flex form\">\
|
|
9967
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartformComponent, selector: "smartform", inputs: { smartForm: "smartForm" }, providers: [SmartFormService], viewQueries: [{ propertyName: "smartWidgetsQL", predicate: SmartformwidgetComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<form *ngIf=\"smartForm\" (keydown)=\"keyDownFunction($event)\" [formGroup]=\"form\" class=\"flex form\">\n <h2 *ngIf=\"smartForm.name\">\n {{ smartForm.name }}\n </h2>\n <div [ngClass]=\"smartForm.direction === direction.ROW ? 'row' : 'col'\">\n <div *ngFor=\"let widget of smartForm.widgets\" class=\"item\">\n <smartformwidget\n *ngIf=\"widget.isVisible === undefined ? true : widget.isVisible\"\n [widgetInstance]=\"widget\"\n [form]=\"form\"\n class=\"grid-item\"\n [onBlur]=\"onBlurSubject\"\n [onValueChange]=\"onValueChangeSubject\"\n [blurSophisticatedValueChange]=\"blurSophisticatedValueChange\"\n [sophisticatedValueChange]=\"sophisticatedValueChange\"\n class=\"{{ widget.key }}\"\n [labelColor]=\"smartForm.labelTheme\"\n (valueCleared)=\"submitForm(true)\"\n ></smartformwidget>\n </div>\n </div>\n</form>\n", styles: [":host{display:flex}form{display:flex;flex:1}.col{flex:1;display:flex;flex-direction:column;gap:.25em}.row{flex:1;display:flex;flex-wrap:wrap;gap:.25em}.grid-item{text-align:left}.item{flex:1}.item ::ng-deep .p-inputtext{width:100%!important;min-height:45px}.item ::ng-deep p-inputnumber,.item ::ng-deep .p-inputnumber{width:100%!important;height:45px!important}.item ::ng-deep .p-dropdown,.item ::ng-deep .p-multiselect{width:100%!important}.item ::ng-deep p-overlay{z-index:1002}.item ::ng-deep .p-chips{width:100%!important;height:45px!important}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: SmartformwidgetComponent, selector: "smartformwidget", inputs: ["form", "widgetInstance", "onBlur", "onValueChange", "labelColor", "sophisticatedValueChange", "blurSophisticatedValueChange"], outputs: ["valueCleared"] }] }); }
|
|
9946
9968
|
}
|
|
9947
9969
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartformComponent, decorators: [{
|
|
9948
9970
|
type: Component,
|
|
9949
|
-
args: [{ selector: 'smartform', providers: [SmartFormService], template: "<form *ngIf=\"smartForm\" (keydown)=\"keyDownFunction($event)\" [formGroup]=\"form\" class=\"flex form\">\
|
|
9971
|
+
args: [{ selector: 'smartform', providers: [SmartFormService], template: "<form *ngIf=\"smartForm\" (keydown)=\"keyDownFunction($event)\" [formGroup]=\"form\" class=\"flex form\">\n <h2 *ngIf=\"smartForm.name\">\n {{ smartForm.name }}\n </h2>\n <div [ngClass]=\"smartForm.direction === direction.ROW ? 'row' : 'col'\">\n <div *ngFor=\"let widget of smartForm.widgets\" class=\"item\">\n <smartformwidget\n *ngIf=\"widget.isVisible === undefined ? true : widget.isVisible\"\n [widgetInstance]=\"widget\"\n [form]=\"form\"\n class=\"grid-item\"\n [onBlur]=\"onBlurSubject\"\n [onValueChange]=\"onValueChangeSubject\"\n [blurSophisticatedValueChange]=\"blurSophisticatedValueChange\"\n [sophisticatedValueChange]=\"sophisticatedValueChange\"\n class=\"{{ widget.key }}\"\n [labelColor]=\"smartForm.labelTheme\"\n (valueCleared)=\"submitForm(true)\"\n ></smartformwidget>\n </div>\n </div>\n</form>\n", styles: [":host{display:flex}form{display:flex;flex:1}.col{flex:1;display:flex;flex-direction:column;gap:.25em}.row{flex:1;display:flex;flex-wrap:wrap;gap:.25em}.grid-item{text-align:left}.item{flex:1}.item ::ng-deep .p-inputtext{width:100%!important;min-height:45px}.item ::ng-deep p-inputnumber,.item ::ng-deep .p-inputnumber{width:100%!important;height:45px!important}.item ::ng-deep .p-dropdown,.item ::ng-deep .p-multiselect{width:100%!important}.item ::ng-deep p-overlay{z-index:1002}.item ::ng-deep .p-chips{width:100%!important;height:45px!important}\n"] }]
|
|
9950
9972
|
}], ctorParameters: () => [{ type: SmartFormService }, { type: ComponentLibrary, decorators: [{
|
|
9951
9973
|
type: Inject,
|
|
9952
9974
|
args: [COMPONENT_LIBRARY]
|
|
@@ -10199,11 +10221,11 @@ class DefaultActionsPopupComponent {
|
|
|
10199
10221
|
}
|
|
10200
10222
|
}
|
|
10201
10223
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DefaultActionsPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10202
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DefaultActionsPopupComponent, selector: "lib-default-actions-popup", inputs: { buttons: "buttons", row: "row", colIdx: "colIdx" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: ["defaultActionsMenuTrigger"], descendants: true, read: MatContextMenuTriggerForDirective }], ngImport: i0, template: "<div #defaultActionsMenuTrigger [matContextMenuTriggerFor]=\"defaultActionsMenu\"></div>\
|
|
10224
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DefaultActionsPopupComponent, selector: "lib-default-actions-popup", inputs: { buttons: "buttons", row: "row", colIdx: "colIdx" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: ["defaultActionsMenuTrigger"], descendants: true, read: MatContextMenuTriggerForDirective }], ngImport: i0, template: "<div #defaultActionsMenuTrigger [matContextMenuTriggerFor]=\"defaultActionsMenu\"></div>\n<mat-menu #defaultActionsMenu=\"matMenu\">\n <div *ngFor=\"let button of buttons | keyvalue\">\n <button\n *ngIf=\"button.key.type !== ACTION_SEPERATOR\"\n (click)=\"defaultActionButtonClicked(button)\"\n mat-menu-item\n [attr.data-testid]=\"button.value.code ?? null\"\n [disabled]=\"button.value.disabled\"\n [smartTooltip]=\"\n button.value.descriptor?.tooltip\n ? button.value.descriptor?.tooltip\n : button.key.translator!(button.value).tooltip\n \"\n >\n <div\n class=\"smart-table-icon-container\"\n [ngClass]=\"button.key.translator!(button.value).iconPosition === 'POST' ? 'reversed' : ''\"\n ><smart-icon\n *ngIf=\"button.key.translator!(button.value).icon\"\n [icon]=\"button.key.translator!(button.value).icon!\"\n ></smart-icon>\n {{ button.key.translator!(button.value).title }}</div\n >\n </button>\n <mat-divider *ngIf=\"button.key.type === ACTION_SEPERATOR\"></mat-divider>\n </div>\n</mat-menu>\n", styles: [".smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.reversed{flex-direction:row-reverse;gap:1rem}\n"], dependencies: [{ kind: "directive", type: SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i5$2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: MatContextMenuTriggerForDirective, selector: "[matContextMenuTriggerFor]", inputs: ["matContextMenuTriggerFor"], exportAs: ["matContextMenuTriggerDirective"] }, { kind: "pipe", type: i1$2.KeyValuePipe, name: "keyvalue" }] }); }
|
|
10203
10225
|
}
|
|
10204
10226
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DefaultActionsPopupComponent, decorators: [{
|
|
10205
10227
|
type: Component,
|
|
10206
|
-
args: [{ selector: 'lib-default-actions-popup', template: "<div #defaultActionsMenuTrigger [matContextMenuTriggerFor]=\"defaultActionsMenu\"></div>\
|
|
10228
|
+
args: [{ selector: 'lib-default-actions-popup', template: "<div #defaultActionsMenuTrigger [matContextMenuTriggerFor]=\"defaultActionsMenu\"></div>\n<mat-menu #defaultActionsMenu=\"matMenu\">\n <div *ngFor=\"let button of buttons | keyvalue\">\n <button\n *ngIf=\"button.key.type !== ACTION_SEPERATOR\"\n (click)=\"defaultActionButtonClicked(button)\"\n mat-menu-item\n [attr.data-testid]=\"button.value.code ?? null\"\n [disabled]=\"button.value.disabled\"\n [smartTooltip]=\"\n button.value.descriptor?.tooltip\n ? button.value.descriptor?.tooltip\n : button.key.translator!(button.value).tooltip\n \"\n >\n <div\n class=\"smart-table-icon-container\"\n [ngClass]=\"button.key.translator!(button.value).iconPosition === 'POST' ? 'reversed' : ''\"\n ><smart-icon\n *ngIf=\"button.key.translator!(button.value).icon\"\n [icon]=\"button.key.translator!(button.value).icon!\"\n ></smart-icon>\n {{ button.key.translator!(button.value).title }}</div\n >\n </button>\n <mat-divider *ngIf=\"button.key.type === ACTION_SEPERATOR\"></mat-divider>\n </div>\n</mat-menu>\n", styles: [".smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.reversed{flex-direction:row-reverse;gap:1rem}\n"] }]
|
|
10207
10229
|
}], ctorParameters: () => [], propDecorators: { trigger: [{
|
|
10208
10230
|
type: ViewChild,
|
|
10209
10231
|
args: ['defaultActionsMenuTrigger', { read: MatContextMenuTriggerForDirective }]
|
|
@@ -10220,11 +10242,11 @@ class LoadingComponent {
|
|
|
10220
10242
|
ngOnInit() {
|
|
10221
10243
|
}
|
|
10222
10244
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10223
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: LoadingComponent, selector: "lib-loading", ngImport: i0, template: "<div class=\"spinnerContainer\">\
|
|
10245
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: LoadingComponent, selector: "lib-loading", ngImport: i0, template: "<div class=\"spinnerContainer\">\n <div class=\"spinner\">\n <mat-spinner color=\"accent\" #mainSpinner></mat-spinner>\n </div>\n</div>\n", styles: [".spinnerContainer{width:100%;display:flex;flex-direction:row;justify-content:center}\n"], dependencies: [{ kind: "component", type: i1$7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
|
|
10224
10246
|
}
|
|
10225
10247
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: LoadingComponent, decorators: [{
|
|
10226
10248
|
type: Component,
|
|
10227
|
-
args: [{ selector: 'lib-loading', template: "<div class=\"spinnerContainer\">\
|
|
10249
|
+
args: [{ selector: 'lib-loading', template: "<div class=\"spinnerContainer\">\n <div class=\"spinner\">\n <mat-spinner color=\"accent\" #mainSpinner></mat-spinner>\n </div>\n</div>\n", styles: [".spinnerContainer{width:100%;display:flex;flex-direction:row;justify-content:center}\n"] }]
|
|
10228
10250
|
}], ctorParameters: () => [] });
|
|
10229
10251
|
|
|
10230
10252
|
class SmartObjectUtility {
|
|
@@ -10943,7 +10965,7 @@ class MaterialTableComponent extends Table {
|
|
|
10943
10965
|
this.defaultActionToolbarId = SmartGridToolbarActionsUtil.defaultActionToolbarId;
|
|
10944
10966
|
}
|
|
10945
10967
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MaterialTableComponent, deps: [{ token: ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10946
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: MaterialTableComponent, selector: "lib-material-table", usesInheritance: true, ngImport: i0, template: "<table\r\n #myTable\r\n mat-table\r\n [dataSource]=\"smartTable.tableRows\"\r\n class=\"full-width\"\r\n multiTemplateDataRows\r\n>\r\n <!-- Column Descriptor -->\r\n @if(smartTable.title){\r\n <caption *ngIf=\"smartTable.title\" class=\"captionTitle\">\r\n {{ smartTable.title }}\r\n </caption>\r\n\r\n }\r\n <ng-container\r\n *ngFor=\"let header of smartTable.tableHeaders; let i = index\"\r\n matColumnDef=\"{{ header }}\"\r\n >\r\n <!-- my_menu is the implicit action column present on all tables: -->\r\n @if ('my_menu' === header) {\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n [ngClass]=\"getColumnClasses(smartTable.customSmartTableHeaders![i])\"\r\n [ngStyle]=\"getColumnStyles(smartTable.customSmartTableHeaders![i])\"\r\n >\r\n <smart-ui-action-toolbar\r\n #headerToolbar\r\n [id]=\"\r\n smartTable.getGridId()\r\n ? smartTable.getGridId() + '_headerToolbar'\r\n : 'grid_not_initialized'\r\n \"\r\n >\r\n </smart-ui-action-toolbar>\r\n </th>\r\n } @else {\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n [ngClass]=\"getColumnClasses(smartTable.customSmartTableHeaders![i])\"\r\n [ngStyle]=\"getColumnStyles(smartTable.customSmartTableHeaders![i])\"\r\n >\r\n <div\r\n *ngIf=\"header === 'icon' || header === 'img' || header === 'options' || header === 'button'\"\r\n ></div>\r\n <div *ngIf=\"header === 'select'\">\r\n <mat-checkbox\r\n *ngIf=\"smartTable.customSmartTableHeaders![i].showCheckboxInHeader\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"smartTable.selection!.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"smartTable.selection!.hasValue() && !isAllSelected()\"\r\n [aria-label]=\"checkboxLabel()\"\r\n >\r\n </mat-checkbox>\r\n <div *ngIf=\"!smartTable.customSmartTableHeaders![i].showCheckboxInHeader\">\r\n {{ smartTable.customTableHeaders[i] }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'options' &&\r\n header !== 'button' &&\r\n header !== 'select' &&\r\n header !== 'expand' &&\r\n header !== 'actions'\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.sortable; then sortable; else notSortable\"></div>\r\n <ng-template #sortable>\r\n <button\r\n (click)=\"sortButtonClicked($event, smartTable.customSmartTableHeaders![i])\"\r\n *ngIf=\"smartTable.sortable && isSortable(smartTable.customSmartTableHeaders![i])\"\r\n mat-button\r\n class=\"sortableHeaderButton\"\r\n >\r\n {{ smartTable.customTableHeaders[i] }}\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"getSortIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortIcon(header)!\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"hasSortNumIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortNumIcon(header)\"\r\n ></smart-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template #notSortable>\r\n {{ smartTable.customTableHeaders[i] }}\r\n </ng-template>\r\n </div>\r\n </th>\r\n }\r\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"isDisabled(element) ? 'disabledRow' : ''\">\r\n <mat-checkbox\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'select' &&\r\n !isDisabled(element)\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n $event\r\n ? setSelection(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n : null\r\n \"\r\n [disabled]=\"isDisabled(element)\"\r\n [checked]=\"\r\n smartTable.selection!.isSelected(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n [aria-label]=\"\r\n checkboxLabel(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n >\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\r\n {{\r\n getValue(element, header)\r\n | smartDateTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\r\n {{\r\n getValue(element, header)\r\n | smartDate : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\r\n {{\r\n getValue(element, header)\r\n | smartTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().CHECKBOX\">\r\n <mat-checkbox [disabled]=\"true\" [checked]=\"getValue(element, header)\"></mat-checkbox>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\r\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\r\n \"\r\n >\r\n <smart-icon\r\n [smartTooltip]=\"getToolTip(element, i)\"\r\n [icon]=\"getIcon(getValue(element, header), i)!\"\r\n [color]=\"getColor(getValue(element, header), i)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n </div>\r\n <div class=\"smart-table-icon-container\">\r\n <div *ngFor=\"let ir of getImageResourceIcons(element, header)\">\r\n <smart-icon [imageResource]=\"ir\"> </smart-icon>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\r\n class=\"smart-table-buttons-col\"\r\n >\r\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\r\n <div *ngIf=\"showButton(button, element)\" [ngSwitch]=\"button.type\">\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.ICON\"\r\n mat-icon-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\r\n mat-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\r\n mat-raised-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\r\n </button>\r\n <div *ngSwitchCase=\"smartTableButtonType.MENU\" class=\"menu-button\">\r\n <!------ TOOLBAR ------>\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowColumnAction(element, defaultActionToolbarId)\"\r\n ></smart-ui-action-toolbar>\r\n <!------ TOOLBAR ------>\r\n <button\r\n *ngIf=\"showMenuButton(element, button)\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"customButtonClicked($event, button, element, undefined, true)\"\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n <!-- {{ button.label ?? (button.translator ? button.translator(element).title : '') }} -->\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div *ngIf=\"button.menuItemButtons\">\r\n <button\r\n *ngFor=\"let btn of getMenuButtons(element, button)\"\r\n (click)=\"customButtonClicked($event, btn, element, undefined, true)\"\r\n mat-menu-item\r\n >\r\n <smart-icon\r\n *ngIf=\"btn?.translator(btn)?.icon\"\r\n [icon]=\"btn!.translator!(btn)!.icon!\"\r\n ></smart-icon>\r\n {{ btn?.translator(btn)?.title }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"button.menuItemButtonsPropertyName\">\r\n <div *ngFor=\"let btn of getMenuItemButtonsPropertyName(element, button)\">\r\n <button\r\n *ngIf=\"btn.code !== ACTION_SEPERATOR\"\r\n (click)=\"customButtonClicked($event, button, element, btn, true)\"\r\n mat-menu-item\r\n [disabled]=\"btn.disabled\"\r\n [smartTooltip]=\"\r\n btn?.descriptor?.tooltip\r\n ? btn?.descriptor?.tooltip\r\n : button.translator!(btn).tooltip\r\n \"\r\n >\r\n <div\r\n class=\"smart-table-icon-container\"\r\n [ngClass]=\"\r\n button.translator!(btn).iconPosition === 'POST' ? 'reversed' : ''\r\n \"\r\n ><smart-icon\r\n *ngIf=\"button.translator!(btn).icon\"\r\n [icon]=\"button.translator!(btn).icon!\"\r\n ></smart-icon>\r\n {{ button.translator!(btn).title }}</div\r\n >\r\n </button>\r\n <mat-divider *ngIf=\"btn.code === ACTION_SEPERATOR\"></mat-divider>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\r\n <smart-icon\r\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\r\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\r\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\r\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].translator !== undefined\r\n \"\r\n >\r\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(element, header)) }}\r\n </div>\r\n <button\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'expand'\r\n \"\r\n mat-icon-button\r\n aria-label=\"expand row\"\r\n (click)=\"onToggle(element, $event)\"\r\n >\r\n <smart-icon *ngIf=\"expandedElement !== element\" [icon]=\"'keyboard_arrow_down'\"></smart-icon>\r\n <smart-icon *ngIf=\"expandedElement === element\" [icon]=\"'keyboard_arrow_up'\"></smart-icon>\r\n </button>\r\n <div\r\n *ngIf=\"\r\n !smartTable.customSmartTableHeaders ||\r\n (smartTable.customSmartTableHeaders &&\r\n !smartTable.customSmartTableHeaders[i].properties &&\r\n !smartTable.customSmartTableHeaders[i].icon &&\r\n !smartTable.customSmartTableHeaders[i].buttons &&\r\n !smartTable.customSmartTableHeaders[i].translator &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\r\n \"\r\n >\r\n <smart-icon *ngIf=\"header === 'icon'\" [icon]=\"getValue(element, header)!\"> </smart-icon>\r\n <img\r\n *ngIf=\"header === 'img'\"\r\n [src]=\"getValue(element, header)\"\r\n alt=\"\"\r\n class=\"smarttableImg\"\r\n />\r\n <!------ TOOLBAR ------>\r\n <ng-container *ngIf=\"showCellToolbar(element, header)\">\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowColumnAction(element, header)\"\r\n ></smart-ui-action-toolbar>\r\n </ng-container>\r\n <!------ TOOLBAR ------>\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'option' &&\r\n header !== 'button' &&\r\n !isImageResource(element, header)\r\n \"\r\n [innerHtml]=\"getValue(element, header)\"\r\n ></div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"smartTable.tableHeaders.length\">\r\n <div\r\n class=\"example-element-detail\"\r\n [@detailExpand]=\"element == expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <ng-template #expandedArea></ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"smartTable.tableHeaders; sticky: true\"></tr>\r\n <ng-container *matRowDef=\"let element; columns: smartTable.tableHeaders\">\r\n <tr\r\n mat-row\r\n class=\"example-element-row\"\r\n [class.example-expanded-row]=\"expandedElement === element\"\r\n [ngClass]=\"getRowClasses(element)\"\r\n [ngStyle]=\"getRowStyles(element)\"\r\n (click)=\"handleOnRowClick(element)\"\r\n (dblclick)=\"handleOnRowDoubleClick($event, element)\"\r\n ></tr>\r\n <lib-default-actions-popup\r\n *ngIf=\"smartTable.defaultActionCodes && smartTable.defaultActionCodes.length > 0\"\r\n #defaultActionMenu\r\n [buttons]=\"getDefaultActionsForRow(element)!\"\r\n [row]=\"element\"\r\n ></lib-default-actions-popup>\r\n </ng-container>\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"example-detail-row\"></tr>\r\n</table>\r\n", styles: [".full-width{width:100%}.smarttableImg{width:25px}.smartTableRowHover:hover{cursor:pointer}tr.example-detail-row{height:0}tr.example-element-row:not(.example-expanded-row):hover{background:#f5f5f5}tr.example-element-row:not(.example-expanded-row):active{background:#efefef}.example-element-row td{border-bottom-width:0}.example-element-detail{overflow:hidden;display:flex;flex-direction:column}.example-element-diagram{min-width:80px;border:2px solid black;padding:8px;font-weight:lighter;margin:8px 0;height:104px}.example-element-symbol{font-weight:700;font-size:40px;line-height:normal}.example-element-description{padding:16px}.example-element-description-attribution{opacity:.5}.disabledRow{color:var(--disabled)}.disabledRow:hover{cursor:default}.smart-table-buttons-col{display:flex;flex-direction:row;justify-content:flex-end}.sortableHeaderButton{margin:0!important;padding:0!important;text-align:left!important}.selected{background-color:var(--primary-light-color)}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.reversed{flex-direction:row-reverse;gap:1rem}:host ::ng-deep .mat-mdc-menu-item{line-height:normal!important}.mat-mdc-menu-item[disabled]{cursor:default!important}.menu-button{display:flex;flex-direction:row;justify-content:flex-end;text-align:-webkit-right;align-items:center}.captionTitle{font-size:1.5rem;align-content:center;padding:.5rem .75rem;text-align:start;border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12);background:#f5f5f5}\n"], dependencies: [{ kind: "directive", type: SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4$3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i5$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i5$2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: DefaultActionsPopupComponent, selector: "lib-default-actions-popup", inputs: ["buttons", "row", "colIdx"] }, { kind: "pipe", type: SmartDateTimePipe, name: "smartDateTime" }, { kind: "pipe", type: SmartDatePipe, name: "smartDate" }, { kind: "pipe", type: SmartTimePipe, name: "smartTime" }], animations: [
|
|
10968
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: MaterialTableComponent, selector: "lib-material-table", usesInheritance: true, ngImport: i0, template: "<table\n #myTable\n mat-table\n [dataSource]=\"smartTable.tableRows\"\n class=\"full-width\"\n multiTemplateDataRows\n>\n <!-- Column Descriptor -->\n @if(smartTable.title){\n <caption *ngIf=\"smartTable.title\" class=\"captionTitle\">\n {{ smartTable.title }}\n </caption>\n\n }\n <ng-container\n *ngFor=\"let header of smartTable.tableHeaders; let i = index\"\n matColumnDef=\"{{ header }}\"\n >\n <!-- my_menu is the implicit action column present on all tables: -->\n @if ('my_menu' === header) {\n <th\n mat-header-cell\n *matHeaderCellDef\n [ngClass]=\"getColumnClasses(smartTable.customSmartTableHeaders![i])\"\n [ngStyle]=\"getColumnStyles(smartTable.customSmartTableHeaders![i])\"\n >\n <smart-ui-action-toolbar\n #headerToolbar\n [id]=\"\n smartTable.getGridId()\n ? smartTable.getGridId() + '_headerToolbar'\n : 'grid_not_initialized'\n \"\n >\n </smart-ui-action-toolbar>\n </th>\n } @else {\n <th\n mat-header-cell\n *matHeaderCellDef\n [ngClass]=\"getColumnClasses(smartTable.customSmartTableHeaders![i])\"\n [ngStyle]=\"getColumnStyles(smartTable.customSmartTableHeaders![i])\"\n >\n <div\n *ngIf=\"header === 'icon' || header === 'img' || header === 'options' || header === 'button'\"\n ></div>\n <div *ngIf=\"header === 'select'\">\n <mat-checkbox\n *ngIf=\"smartTable.customSmartTableHeaders![i].showCheckboxInHeader\"\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"smartTable.selection!.hasValue() && isAllSelected()\"\n [indeterminate]=\"smartTable.selection!.hasValue() && !isAllSelected()\"\n [aria-label]=\"checkboxLabel()\"\n >\n </mat-checkbox>\n <div *ngIf=\"!smartTable.customSmartTableHeaders![i].showCheckboxInHeader\">\n {{ smartTable.customTableHeaders[i] }}\n </div>\n </div>\n <div\n *ngIf=\"\n header !== 'icon' &&\n header !== 'img' &&\n header !== 'options' &&\n header !== 'button' &&\n header !== 'select' &&\n header !== 'expand' &&\n header !== 'actions'\n \"\n >\n <div *ngIf=\"smartTable.sortable; then sortable; else notSortable\"></div>\n <ng-template #sortable>\n <button\n (click)=\"sortButtonClicked($event, smartTable.customSmartTableHeaders![i])\"\n *ngIf=\"smartTable.sortable && isSortable(smartTable.customSmartTableHeaders![i])\"\n mat-button\n class=\"sortableHeaderButton\"\n >\n {{ smartTable.customTableHeaders[i] }}\n <smart-icon\n class=\"sortableHeaderButtonIcon\"\n *ngIf=\"getSortIcon(header)\"\n title=\"sort\"\n [icon]=\"getSortIcon(header)!\"\n ></smart-icon>\n <smart-icon\n class=\"sortableHeaderButtonIcon\"\n *ngIf=\"hasSortNumIcon(header)\"\n title=\"sort\"\n [icon]=\"getSortNumIcon(header)\"\n ></smart-icon>\n </button>\n </ng-template>\n <ng-template #notSortable>\n {{ smartTable.customTableHeaders[i] }}\n </ng-template>\n </div>\n </th>\n }\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"isDisabled(element) ? 'disabledRow' : ''\">\n <mat-checkbox\n *ngIf=\"\n smartTable.customSmartTableHeaders &&\n smartTable.customSmartTableHeaders[i].propertyName === 'select' &&\n !isDisabled(element)\n \"\n (click)=\"$event.stopPropagation()\"\n (change)=\"\n $event\n ? setSelection(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\n : element\n )\n : null\n \"\n [disabled]=\"isDisabled(element)\"\n [checked]=\"\n smartTable.selection!.isSelected(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\n : element\n )\n \"\n [aria-label]=\"\n checkboxLabel(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\n : element\n )\n \"\n >\n </mat-checkbox>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\n \"\n >\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\n {{\n getValue(element, header)\n | smartDateTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\n {{\n getValue(element, header)\n | smartDate : smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\n {{\n getValue(element, header)\n | smartTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().CHECKBOX\">\n <mat-checkbox [disabled]=\"true\" [checked]=\"getValue(element, header)\"></mat-checkbox>\n </div>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\n \"\n >\n <smart-icon\n [smartTooltip]=\"getToolTip(element, i)\"\n [icon]=\"getIcon(getValue(element, header), i)!\"\n [color]=\"getColor(getValue(element, header), i)\"\n >\n </smart-icon>\n </div>\n </div>\n <div class=\"smart-table-icon-container\">\n <div *ngFor=\"let ir of getImageResourceIcons(element, header)\">\n <smart-icon [imageResource]=\"ir\"> </smart-icon>\n </div>\n </div>\n <div\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\n class=\"smart-table-buttons-col\"\n >\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\n <div *ngIf=\"showButton(button, element)\" [ngSwitch]=\"button.type\">\n <button\n (click)=\"customButtonClicked($event, button, element)\"\n *ngSwitchCase=\"smartTableButtonType.ICON\"\n mat-icon-button\n color=\"{{ button.color }}\"\n >\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\n </button>\n <button\n (click)=\"customButtonClicked($event, button, element)\"\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\n mat-button\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\n </button>\n <button\n (click)=\"customButtonClicked($event, button, element)\"\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\n mat-raised-button\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\n </button>\n <div *ngSwitchCase=\"smartTableButtonType.MENU\" class=\"menu-button\">\n <!------ TOOLBAR ------>\n <smart-ui-action-toolbar\n [uiActionModels]=\"getRowColumnAction(element, defaultActionToolbarId)\"\n ></smart-ui-action-toolbar>\n <!------ TOOLBAR ------>\n <button\n *ngIf=\"showMenuButton(element, button)\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"customButtonClicked($event, button, element, undefined, true)\"\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n <!-- {{ button.label ?? (button.translator ? button.translator(element).title : '') }} -->\n </button>\n <mat-menu #menu=\"matMenu\">\n <div *ngIf=\"button.menuItemButtons\">\n <button\n *ngFor=\"let btn of getMenuButtons(element, button)\"\n (click)=\"customButtonClicked($event, btn, element, undefined, true)\"\n mat-menu-item\n >\n <smart-icon\n *ngIf=\"btn?.translator(btn)?.icon\"\n [icon]=\"btn!.translator!(btn)!.icon!\"\n ></smart-icon>\n {{ btn?.translator(btn)?.title }}\n </button>\n </div>\n <div *ngIf=\"button.menuItemButtonsPropertyName\">\n <div *ngFor=\"let btn of getMenuItemButtonsPropertyName(element, button)\">\n <button\n *ngIf=\"btn.code !== ACTION_SEPERATOR\"\n (click)=\"customButtonClicked($event, button, element, btn, true)\"\n mat-menu-item\n [disabled]=\"btn.disabled\"\n [smartTooltip]=\"\n btn?.descriptor?.tooltip\n ? btn?.descriptor?.tooltip\n : button.translator!(btn).tooltip\n \"\n >\n <div\n class=\"smart-table-icon-container\"\n [ngClass]=\"\n button.translator!(btn).iconPosition === 'POST' ? 'reversed' : ''\n \"\n ><smart-icon\n *ngIf=\"button.translator!(btn).icon\"\n [icon]=\"button.translator!(btn).icon!\"\n ></smart-icon>\n {{ button.translator!(btn).title }}</div\n >\n </button>\n <mat-divider *ngIf=\"btn.code === ACTION_SEPERATOR\"></mat-divider>\n </div>\n </div>\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\n <smart-icon\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\n >\n </smart-icon>\n </div>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders &&\n smartTable.customSmartTableHeaders[i].translator !== undefined\n \"\n >\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(element, header)) }}\n </div>\n <button\n *ngIf=\"\n smartTable.customSmartTableHeaders &&\n smartTable.customSmartTableHeaders[i].propertyName === 'expand'\n \"\n mat-icon-button\n aria-label=\"expand row\"\n (click)=\"onToggle(element, $event)\"\n >\n <smart-icon *ngIf=\"expandedElement !== element\" [icon]=\"'keyboard_arrow_down'\"></smart-icon>\n <smart-icon *ngIf=\"expandedElement === element\" [icon]=\"'keyboard_arrow_up'\"></smart-icon>\n </button>\n <div\n *ngIf=\"\n !smartTable.customSmartTableHeaders ||\n (smartTable.customSmartTableHeaders &&\n !smartTable.customSmartTableHeaders[i].properties &&\n !smartTable.customSmartTableHeaders[i].icon &&\n !smartTable.customSmartTableHeaders[i].buttons &&\n !smartTable.customSmartTableHeaders[i].translator &&\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\n \"\n >\n <smart-icon *ngIf=\"header === 'icon'\" [icon]=\"getValue(element, header)!\"> </smart-icon>\n <img\n *ngIf=\"header === 'img'\"\n [src]=\"getValue(element, header)\"\n alt=\"\"\n class=\"smarttableImg\"\n />\n <!------ TOOLBAR ------>\n <ng-container *ngIf=\"showCellToolbar(element, header)\">\n <smart-ui-action-toolbar\n [uiActionModels]=\"getRowColumnAction(element, header)\"\n ></smart-ui-action-toolbar>\n </ng-container>\n <!------ TOOLBAR ------>\n <div\n *ngIf=\"\n header !== 'icon' &&\n header !== 'img' &&\n header !== 'option' &&\n header !== 'button' &&\n !isImageResource(element, header)\n \"\n [innerHtml]=\"getValue(element, header)\"\n ></div>\n </div>\n </td>\n </ng-container>\n\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\n <ng-container matColumnDef=\"expandedDetail\">\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"smartTable.tableHeaders.length\">\n <div\n class=\"example-element-detail\"\n [@detailExpand]=\"element == expandedElement ? 'expanded' : 'collapsed'\"\n >\n <ng-template #expandedArea></ng-template>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"smartTable.tableHeaders; sticky: true\"></tr>\n <ng-container *matRowDef=\"let element; columns: smartTable.tableHeaders\">\n <tr\n mat-row\n class=\"example-element-row\"\n [class.example-expanded-row]=\"expandedElement === element\"\n [ngClass]=\"getRowClasses(element)\"\n [ngStyle]=\"getRowStyles(element)\"\n (click)=\"handleOnRowClick(element)\"\n (dblclick)=\"handleOnRowDoubleClick($event, element)\"\n ></tr>\n <lib-default-actions-popup\n *ngIf=\"smartTable.defaultActionCodes && smartTable.defaultActionCodes.length > 0\"\n #defaultActionMenu\n [buttons]=\"getDefaultActionsForRow(element)!\"\n [row]=\"element\"\n ></lib-default-actions-popup>\n </ng-container>\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"example-detail-row\"></tr>\n</table>\n", styles: [".full-width{width:100%}.smarttableImg{width:25px}.smartTableRowHover:hover{cursor:pointer}tr.example-detail-row{height:0}tr.example-element-row:not(.example-expanded-row):hover{background:#f5f5f5}tr.example-element-row:not(.example-expanded-row):active{background:#efefef}.example-element-row td{border-bottom-width:0}.example-element-detail{overflow:hidden;display:flex;flex-direction:column}.example-element-diagram{min-width:80px;border:2px solid black;padding:8px;font-weight:lighter;margin:8px 0;height:104px}.example-element-symbol{font-weight:700;font-size:40px;line-height:normal}.example-element-description{padding:16px}.example-element-description-attribution{opacity:.5}.disabledRow{color:var(--disabled)}.disabledRow:hover{cursor:default}.smart-table-buttons-col{display:flex;flex-direction:row;justify-content:flex-end}.sortableHeaderButton{margin:0!important;padding:0!important;text-align:left!important}.selected{background-color:var(--primary-light-color)}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.reversed{flex-direction:row-reverse;gap:1rem}:host ::ng-deep .mat-mdc-menu-item{line-height:normal!important}.mat-mdc-menu-item[disabled]{cursor:default!important}.menu-button{display:flex;flex-direction:row;justify-content:flex-end;text-align:-webkit-right;align-items:center}.captionTitle{font-size:1.5rem;align-content:center;padding:.5rem .75rem;text-align:start;border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12);background:#f5f5f5}\n"], dependencies: [{ kind: "directive", type: SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4$3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i5$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i5$2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: DefaultActionsPopupComponent, selector: "lib-default-actions-popup", inputs: ["buttons", "row", "colIdx"] }, { kind: "pipe", type: SmartDateTimePipe, name: "smartDateTime" }, { kind: "pipe", type: SmartDatePipe, name: "smartDate" }, { kind: "pipe", type: SmartTimePipe, name: "smartTime" }], animations: [
|
|
10947
10969
|
trigger('detailExpand', [
|
|
10948
10970
|
state('collapsed', style({ height: '0px', minHeight: '0' })),
|
|
10949
10971
|
state('expanded', style({ height: '*' })),
|
|
@@ -10959,7 +10981,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
10959
10981
|
state('expanded', style({ height: '*' })),
|
|
10960
10982
|
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
10961
10983
|
]),
|
|
10962
|
-
], template: "<table\r\n #myTable\r\n mat-table\r\n [dataSource]=\"smartTable.tableRows\"\r\n class=\"full-width\"\r\n multiTemplateDataRows\r\n>\r\n <!-- Column Descriptor -->\r\n @if(smartTable.title){\r\n <caption *ngIf=\"smartTable.title\" class=\"captionTitle\">\r\n {{ smartTable.title }}\r\n </caption>\r\n\r\n }\r\n <ng-container\r\n *ngFor=\"let header of smartTable.tableHeaders; let i = index\"\r\n matColumnDef=\"{{ header }}\"\r\n >\r\n <!-- my_menu is the implicit action column present on all tables: -->\r\n @if ('my_menu' === header) {\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n [ngClass]=\"getColumnClasses(smartTable.customSmartTableHeaders![i])\"\r\n [ngStyle]=\"getColumnStyles(smartTable.customSmartTableHeaders![i])\"\r\n >\r\n <smart-ui-action-toolbar\r\n #headerToolbar\r\n [id]=\"\r\n smartTable.getGridId()\r\n ? smartTable.getGridId() + '_headerToolbar'\r\n : 'grid_not_initialized'\r\n \"\r\n >\r\n </smart-ui-action-toolbar>\r\n </th>\r\n } @else {\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n [ngClass]=\"getColumnClasses(smartTable.customSmartTableHeaders![i])\"\r\n [ngStyle]=\"getColumnStyles(smartTable.customSmartTableHeaders![i])\"\r\n >\r\n <div\r\n *ngIf=\"header === 'icon' || header === 'img' || header === 'options' || header === 'button'\"\r\n ></div>\r\n <div *ngIf=\"header === 'select'\">\r\n <mat-checkbox\r\n *ngIf=\"smartTable.customSmartTableHeaders![i].showCheckboxInHeader\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"smartTable.selection!.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"smartTable.selection!.hasValue() && !isAllSelected()\"\r\n [aria-label]=\"checkboxLabel()\"\r\n >\r\n </mat-checkbox>\r\n <div *ngIf=\"!smartTable.customSmartTableHeaders![i].showCheckboxInHeader\">\r\n {{ smartTable.customTableHeaders[i] }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'options' &&\r\n header !== 'button' &&\r\n header !== 'select' &&\r\n header !== 'expand' &&\r\n header !== 'actions'\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.sortable; then sortable; else notSortable\"></div>\r\n <ng-template #sortable>\r\n <button\r\n (click)=\"sortButtonClicked($event, smartTable.customSmartTableHeaders![i])\"\r\n *ngIf=\"smartTable.sortable && isSortable(smartTable.customSmartTableHeaders![i])\"\r\n mat-button\r\n class=\"sortableHeaderButton\"\r\n >\r\n {{ smartTable.customTableHeaders[i] }}\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"getSortIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortIcon(header)!\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"hasSortNumIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortNumIcon(header)\"\r\n ></smart-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template #notSortable>\r\n {{ smartTable.customTableHeaders[i] }}\r\n </ng-template>\r\n </div>\r\n </th>\r\n }\r\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"isDisabled(element) ? 'disabledRow' : ''\">\r\n <mat-checkbox\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'select' &&\r\n !isDisabled(element)\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n $event\r\n ? setSelection(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n : null\r\n \"\r\n [disabled]=\"isDisabled(element)\"\r\n [checked]=\"\r\n smartTable.selection!.isSelected(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n [aria-label]=\"\r\n checkboxLabel(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n >\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\r\n {{\r\n getValue(element, header)\r\n | smartDateTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\r\n {{\r\n getValue(element, header)\r\n | smartDate : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\r\n {{\r\n getValue(element, header)\r\n | smartTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().CHECKBOX\">\r\n <mat-checkbox [disabled]=\"true\" [checked]=\"getValue(element, header)\"></mat-checkbox>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\r\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\r\n \"\r\n >\r\n <smart-icon\r\n [smartTooltip]=\"getToolTip(element, i)\"\r\n [icon]=\"getIcon(getValue(element, header), i)!\"\r\n [color]=\"getColor(getValue(element, header), i)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n </div>\r\n <div class=\"smart-table-icon-container\">\r\n <div *ngFor=\"let ir of getImageResourceIcons(element, header)\">\r\n <smart-icon [imageResource]=\"ir\"> </smart-icon>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\r\n class=\"smart-table-buttons-col\"\r\n >\r\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\r\n <div *ngIf=\"showButton(button, element)\" [ngSwitch]=\"button.type\">\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.ICON\"\r\n mat-icon-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\r\n mat-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\r\n mat-raised-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\r\n </button>\r\n <div *ngSwitchCase=\"smartTableButtonType.MENU\" class=\"menu-button\">\r\n <!------ TOOLBAR ------>\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowColumnAction(element, defaultActionToolbarId)\"\r\n ></smart-ui-action-toolbar>\r\n <!------ TOOLBAR ------>\r\n <button\r\n *ngIf=\"showMenuButton(element, button)\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"customButtonClicked($event, button, element, undefined, true)\"\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n <!-- {{ button.label ?? (button.translator ? button.translator(element).title : '') }} -->\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div *ngIf=\"button.menuItemButtons\">\r\n <button\r\n *ngFor=\"let btn of getMenuButtons(element, button)\"\r\n (click)=\"customButtonClicked($event, btn, element, undefined, true)\"\r\n mat-menu-item\r\n >\r\n <smart-icon\r\n *ngIf=\"btn?.translator(btn)?.icon\"\r\n [icon]=\"btn!.translator!(btn)!.icon!\"\r\n ></smart-icon>\r\n {{ btn?.translator(btn)?.title }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"button.menuItemButtonsPropertyName\">\r\n <div *ngFor=\"let btn of getMenuItemButtonsPropertyName(element, button)\">\r\n <button\r\n *ngIf=\"btn.code !== ACTION_SEPERATOR\"\r\n (click)=\"customButtonClicked($event, button, element, btn, true)\"\r\n mat-menu-item\r\n [disabled]=\"btn.disabled\"\r\n [smartTooltip]=\"\r\n btn?.descriptor?.tooltip\r\n ? btn?.descriptor?.tooltip\r\n : button.translator!(btn).tooltip\r\n \"\r\n >\r\n <div\r\n class=\"smart-table-icon-container\"\r\n [ngClass]=\"\r\n button.translator!(btn).iconPosition === 'POST' ? 'reversed' : ''\r\n \"\r\n ><smart-icon\r\n *ngIf=\"button.translator!(btn).icon\"\r\n [icon]=\"button.translator!(btn).icon!\"\r\n ></smart-icon>\r\n {{ button.translator!(btn).title }}</div\r\n >\r\n </button>\r\n <mat-divider *ngIf=\"btn.code === ACTION_SEPERATOR\"></mat-divider>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\r\n <smart-icon\r\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\r\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\r\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\r\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].translator !== undefined\r\n \"\r\n >\r\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(element, header)) }}\r\n </div>\r\n <button\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'expand'\r\n \"\r\n mat-icon-button\r\n aria-label=\"expand row\"\r\n (click)=\"onToggle(element, $event)\"\r\n >\r\n <smart-icon *ngIf=\"expandedElement !== element\" [icon]=\"'keyboard_arrow_down'\"></smart-icon>\r\n <smart-icon *ngIf=\"expandedElement === element\" [icon]=\"'keyboard_arrow_up'\"></smart-icon>\r\n </button>\r\n <div\r\n *ngIf=\"\r\n !smartTable.customSmartTableHeaders ||\r\n (smartTable.customSmartTableHeaders &&\r\n !smartTable.customSmartTableHeaders[i].properties &&\r\n !smartTable.customSmartTableHeaders[i].icon &&\r\n !smartTable.customSmartTableHeaders[i].buttons &&\r\n !smartTable.customSmartTableHeaders[i].translator &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\r\n \"\r\n >\r\n <smart-icon *ngIf=\"header === 'icon'\" [icon]=\"getValue(element, header)!\"> </smart-icon>\r\n <img\r\n *ngIf=\"header === 'img'\"\r\n [src]=\"getValue(element, header)\"\r\n alt=\"\"\r\n class=\"smarttableImg\"\r\n />\r\n <!------ TOOLBAR ------>\r\n <ng-container *ngIf=\"showCellToolbar(element, header)\">\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowColumnAction(element, header)\"\r\n ></smart-ui-action-toolbar>\r\n </ng-container>\r\n <!------ TOOLBAR ------>\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'option' &&\r\n header !== 'button' &&\r\n !isImageResource(element, header)\r\n \"\r\n [innerHtml]=\"getValue(element, header)\"\r\n ></div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"smartTable.tableHeaders.length\">\r\n <div\r\n class=\"example-element-detail\"\r\n [@detailExpand]=\"element == expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <ng-template #expandedArea></ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"smartTable.tableHeaders; sticky: true\"></tr>\r\n <ng-container *matRowDef=\"let element; columns: smartTable.tableHeaders\">\r\n <tr\r\n mat-row\r\n class=\"example-element-row\"\r\n [class.example-expanded-row]=\"expandedElement === element\"\r\n [ngClass]=\"getRowClasses(element)\"\r\n [ngStyle]=\"getRowStyles(element)\"\r\n (click)=\"handleOnRowClick(element)\"\r\n (dblclick)=\"handleOnRowDoubleClick($event, element)\"\r\n ></tr>\r\n <lib-default-actions-popup\r\n *ngIf=\"smartTable.defaultActionCodes && smartTable.defaultActionCodes.length > 0\"\r\n #defaultActionMenu\r\n [buttons]=\"getDefaultActionsForRow(element)!\"\r\n [row]=\"element\"\r\n ></lib-default-actions-popup>\r\n </ng-container>\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"example-detail-row\"></tr>\r\n</table>\r\n", styles: [".full-width{width:100%}.smarttableImg{width:25px}.smartTableRowHover:hover{cursor:pointer}tr.example-detail-row{height:0}tr.example-element-row:not(.example-expanded-row):hover{background:#f5f5f5}tr.example-element-row:not(.example-expanded-row):active{background:#efefef}.example-element-row td{border-bottom-width:0}.example-element-detail{overflow:hidden;display:flex;flex-direction:column}.example-element-diagram{min-width:80px;border:2px solid black;padding:8px;font-weight:lighter;margin:8px 0;height:104px}.example-element-symbol{font-weight:700;font-size:40px;line-height:normal}.example-element-description{padding:16px}.example-element-description-attribution{opacity:.5}.disabledRow{color:var(--disabled)}.disabledRow:hover{cursor:default}.smart-table-buttons-col{display:flex;flex-direction:row;justify-content:flex-end}.sortableHeaderButton{margin:0!important;padding:0!important;text-align:left!important}.selected{background-color:var(--primary-light-color)}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.reversed{flex-direction:row-reverse;gap:1rem}:host ::ng-deep .mat-mdc-menu-item{line-height:normal!important}.mat-mdc-menu-item[disabled]{cursor:default!important}.menu-button{display:flex;flex-direction:row;justify-content:flex-end;text-align:-webkit-right;align-items:center}.captionTitle{font-size:1.5rem;align-content:center;padding:.5rem .75rem;text-align:start;border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12);background:#f5f5f5}\n"] }]
|
|
10984
|
+
], template: "<table\n #myTable\n mat-table\n [dataSource]=\"smartTable.tableRows\"\n class=\"full-width\"\n multiTemplateDataRows\n>\n <!-- Column Descriptor -->\n @if(smartTable.title){\n <caption *ngIf=\"smartTable.title\" class=\"captionTitle\">\n {{ smartTable.title }}\n </caption>\n\n }\n <ng-container\n *ngFor=\"let header of smartTable.tableHeaders; let i = index\"\n matColumnDef=\"{{ header }}\"\n >\n <!-- my_menu is the implicit action column present on all tables: -->\n @if ('my_menu' === header) {\n <th\n mat-header-cell\n *matHeaderCellDef\n [ngClass]=\"getColumnClasses(smartTable.customSmartTableHeaders![i])\"\n [ngStyle]=\"getColumnStyles(smartTable.customSmartTableHeaders![i])\"\n >\n <smart-ui-action-toolbar\n #headerToolbar\n [id]=\"\n smartTable.getGridId()\n ? smartTable.getGridId() + '_headerToolbar'\n : 'grid_not_initialized'\n \"\n >\n </smart-ui-action-toolbar>\n </th>\n } @else {\n <th\n mat-header-cell\n *matHeaderCellDef\n [ngClass]=\"getColumnClasses(smartTable.customSmartTableHeaders![i])\"\n [ngStyle]=\"getColumnStyles(smartTable.customSmartTableHeaders![i])\"\n >\n <div\n *ngIf=\"header === 'icon' || header === 'img' || header === 'options' || header === 'button'\"\n ></div>\n <div *ngIf=\"header === 'select'\">\n <mat-checkbox\n *ngIf=\"smartTable.customSmartTableHeaders![i].showCheckboxInHeader\"\n (change)=\"$event ? toggleAllRows() : null\"\n [checked]=\"smartTable.selection!.hasValue() && isAllSelected()\"\n [indeterminate]=\"smartTable.selection!.hasValue() && !isAllSelected()\"\n [aria-label]=\"checkboxLabel()\"\n >\n </mat-checkbox>\n <div *ngIf=\"!smartTable.customSmartTableHeaders![i].showCheckboxInHeader\">\n {{ smartTable.customTableHeaders[i] }}\n </div>\n </div>\n <div\n *ngIf=\"\n header !== 'icon' &&\n header !== 'img' &&\n header !== 'options' &&\n header !== 'button' &&\n header !== 'select' &&\n header !== 'expand' &&\n header !== 'actions'\n \"\n >\n <div *ngIf=\"smartTable.sortable; then sortable; else notSortable\"></div>\n <ng-template #sortable>\n <button\n (click)=\"sortButtonClicked($event, smartTable.customSmartTableHeaders![i])\"\n *ngIf=\"smartTable.sortable && isSortable(smartTable.customSmartTableHeaders![i])\"\n mat-button\n class=\"sortableHeaderButton\"\n >\n {{ smartTable.customTableHeaders[i] }}\n <smart-icon\n class=\"sortableHeaderButtonIcon\"\n *ngIf=\"getSortIcon(header)\"\n title=\"sort\"\n [icon]=\"getSortIcon(header)!\"\n ></smart-icon>\n <smart-icon\n class=\"sortableHeaderButtonIcon\"\n *ngIf=\"hasSortNumIcon(header)\"\n title=\"sort\"\n [icon]=\"getSortNumIcon(header)\"\n ></smart-icon>\n </button>\n </ng-template>\n <ng-template #notSortable>\n {{ smartTable.customTableHeaders[i] }}\n </ng-template>\n </div>\n </th>\n }\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"isDisabled(element) ? 'disabledRow' : ''\">\n <mat-checkbox\n *ngIf=\"\n smartTable.customSmartTableHeaders &&\n smartTable.customSmartTableHeaders[i].propertyName === 'select' &&\n !isDisabled(element)\n \"\n (click)=\"$event.stopPropagation()\"\n (change)=\"\n $event\n ? setSelection(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\n : element\n )\n : null\n \"\n [disabled]=\"isDisabled(element)\"\n [checked]=\"\n smartTable.selection!.isSelected(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\n : element\n )\n \"\n [aria-label]=\"\n checkboxLabel(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\n : element\n )\n \"\n >\n </mat-checkbox>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\n \"\n >\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\n {{\n getValue(element, header)\n | smartDateTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\n {{\n getValue(element, header)\n | smartDate : smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\n {{\n getValue(element, header)\n | smartTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().CHECKBOX\">\n <mat-checkbox [disabled]=\"true\" [checked]=\"getValue(element, header)\"></mat-checkbox>\n </div>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\n \"\n >\n <smart-icon\n [smartTooltip]=\"getToolTip(element, i)\"\n [icon]=\"getIcon(getValue(element, header), i)!\"\n [color]=\"getColor(getValue(element, header), i)\"\n >\n </smart-icon>\n </div>\n </div>\n <div class=\"smart-table-icon-container\">\n <div *ngFor=\"let ir of getImageResourceIcons(element, header)\">\n <smart-icon [imageResource]=\"ir\"> </smart-icon>\n </div>\n </div>\n <div\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\n class=\"smart-table-buttons-col\"\n >\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\n <div *ngIf=\"showButton(button, element)\" [ngSwitch]=\"button.type\">\n <button\n (click)=\"customButtonClicked($event, button, element)\"\n *ngSwitchCase=\"smartTableButtonType.ICON\"\n mat-icon-button\n color=\"{{ button.color }}\"\n >\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\n </button>\n <button\n (click)=\"customButtonClicked($event, button, element)\"\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\n mat-button\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\n </button>\n <button\n (click)=\"customButtonClicked($event, button, element)\"\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\n mat-raised-button\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\n </button>\n <div *ngSwitchCase=\"smartTableButtonType.MENU\" class=\"menu-button\">\n <!------ TOOLBAR ------>\n <smart-ui-action-toolbar\n [uiActionModels]=\"getRowColumnAction(element, defaultActionToolbarId)\"\n ></smart-ui-action-toolbar>\n <!------ TOOLBAR ------>\n <button\n *ngIf=\"showMenuButton(element, button)\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"customButtonClicked($event, button, element, undefined, true)\"\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n <!-- {{ button.label ?? (button.translator ? button.translator(element).title : '') }} -->\n </button>\n <mat-menu #menu=\"matMenu\">\n <div *ngIf=\"button.menuItemButtons\">\n <button\n *ngFor=\"let btn of getMenuButtons(element, button)\"\n (click)=\"customButtonClicked($event, btn, element, undefined, true)\"\n mat-menu-item\n >\n <smart-icon\n *ngIf=\"btn?.translator(btn)?.icon\"\n [icon]=\"btn!.translator!(btn)!.icon!\"\n ></smart-icon>\n {{ btn?.translator(btn)?.title }}\n </button>\n </div>\n <div *ngIf=\"button.menuItemButtonsPropertyName\">\n <div *ngFor=\"let btn of getMenuItemButtonsPropertyName(element, button)\">\n <button\n *ngIf=\"btn.code !== ACTION_SEPERATOR\"\n (click)=\"customButtonClicked($event, button, element, btn, true)\"\n mat-menu-item\n [disabled]=\"btn.disabled\"\n [smartTooltip]=\"\n btn?.descriptor?.tooltip\n ? btn?.descriptor?.tooltip\n : button.translator!(btn).tooltip\n \"\n >\n <div\n class=\"smart-table-icon-container\"\n [ngClass]=\"\n button.translator!(btn).iconPosition === 'POST' ? 'reversed' : ''\n \"\n ><smart-icon\n *ngIf=\"button.translator!(btn).icon\"\n [icon]=\"button.translator!(btn).icon!\"\n ></smart-icon>\n {{ button.translator!(btn).title }}</div\n >\n </button>\n <mat-divider *ngIf=\"btn.code === ACTION_SEPERATOR\"></mat-divider>\n </div>\n </div>\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\n <smart-icon\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\n >\n </smart-icon>\n </div>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders &&\n smartTable.customSmartTableHeaders[i].translator !== undefined\n \"\n >\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(element, header)) }}\n </div>\n <button\n *ngIf=\"\n smartTable.customSmartTableHeaders &&\n smartTable.customSmartTableHeaders[i].propertyName === 'expand'\n \"\n mat-icon-button\n aria-label=\"expand row\"\n (click)=\"onToggle(element, $event)\"\n >\n <smart-icon *ngIf=\"expandedElement !== element\" [icon]=\"'keyboard_arrow_down'\"></smart-icon>\n <smart-icon *ngIf=\"expandedElement === element\" [icon]=\"'keyboard_arrow_up'\"></smart-icon>\n </button>\n <div\n *ngIf=\"\n !smartTable.customSmartTableHeaders ||\n (smartTable.customSmartTableHeaders &&\n !smartTable.customSmartTableHeaders[i].properties &&\n !smartTable.customSmartTableHeaders[i].icon &&\n !smartTable.customSmartTableHeaders[i].buttons &&\n !smartTable.customSmartTableHeaders[i].translator &&\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\n \"\n >\n <smart-icon *ngIf=\"header === 'icon'\" [icon]=\"getValue(element, header)!\"> </smart-icon>\n <img\n *ngIf=\"header === 'img'\"\n [src]=\"getValue(element, header)\"\n alt=\"\"\n class=\"smarttableImg\"\n />\n <!------ TOOLBAR ------>\n <ng-container *ngIf=\"showCellToolbar(element, header)\">\n <smart-ui-action-toolbar\n [uiActionModels]=\"getRowColumnAction(element, header)\"\n ></smart-ui-action-toolbar>\n </ng-container>\n <!------ TOOLBAR ------>\n <div\n *ngIf=\"\n header !== 'icon' &&\n header !== 'img' &&\n header !== 'option' &&\n header !== 'button' &&\n !isImageResource(element, header)\n \"\n [innerHtml]=\"getValue(element, header)\"\n ></div>\n </div>\n </td>\n </ng-container>\n\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\n <ng-container matColumnDef=\"expandedDetail\">\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"smartTable.tableHeaders.length\">\n <div\n class=\"example-element-detail\"\n [@detailExpand]=\"element == expandedElement ? 'expanded' : 'collapsed'\"\n >\n <ng-template #expandedArea></ng-template>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"smartTable.tableHeaders; sticky: true\"></tr>\n <ng-container *matRowDef=\"let element; columns: smartTable.tableHeaders\">\n <tr\n mat-row\n class=\"example-element-row\"\n [class.example-expanded-row]=\"expandedElement === element\"\n [ngClass]=\"getRowClasses(element)\"\n [ngStyle]=\"getRowStyles(element)\"\n (click)=\"handleOnRowClick(element)\"\n (dblclick)=\"handleOnRowDoubleClick($event, element)\"\n ></tr>\n <lib-default-actions-popup\n *ngIf=\"smartTable.defaultActionCodes && smartTable.defaultActionCodes.length > 0\"\n #defaultActionMenu\n [buttons]=\"getDefaultActionsForRow(element)!\"\n [row]=\"element\"\n ></lib-default-actions-popup>\n </ng-container>\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"example-detail-row\"></tr>\n</table>\n", styles: [".full-width{width:100%}.smarttableImg{width:25px}.smartTableRowHover:hover{cursor:pointer}tr.example-detail-row{height:0}tr.example-element-row:not(.example-expanded-row):hover{background:#f5f5f5}tr.example-element-row:not(.example-expanded-row):active{background:#efefef}.example-element-row td{border-bottom-width:0}.example-element-detail{overflow:hidden;display:flex;flex-direction:column}.example-element-diagram{min-width:80px;border:2px solid black;padding:8px;font-weight:lighter;margin:8px 0;height:104px}.example-element-symbol{font-weight:700;font-size:40px;line-height:normal}.example-element-description{padding:16px}.example-element-description-attribution{opacity:.5}.disabledRow{color:var(--disabled)}.disabledRow:hover{cursor:default}.smart-table-buttons-col{display:flex;flex-direction:row;justify-content:flex-end}.sortableHeaderButton{margin:0!important;padding:0!important;text-align:left!important}.selected{background-color:var(--primary-light-color)}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.reversed{flex-direction:row-reverse;gap:1rem}:host ::ng-deep .mat-mdc-menu-item{line-height:normal!important}.mat-mdc-menu-item[disabled]{cursor:default!important}.menu-button{display:flex;flex-direction:row;justify-content:flex-end;text-align:-webkit-right;align-items:center}.captionTitle{font-size:1.5rem;align-content:center;padding:.5rem .75rem;text-align:start;border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12);background:#f5f5f5}\n"] }]
|
|
10963
10985
|
}], ctorParameters: () => [{ type: ComponentFactoryService }] });
|
|
10964
10986
|
|
|
10965
10987
|
class MobileTableComponent extends Table {
|
|
@@ -10967,11 +10989,11 @@ class MobileTableComponent extends Table {
|
|
|
10967
10989
|
super(cfService);
|
|
10968
10990
|
}
|
|
10969
10991
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MobileTableComponent, deps: [{ token: ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10970
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: MobileTableComponent, selector: "lib-mobile-table", usesInheritance: true, ngImport: i0, template: "<div class=\"mobileTable\">\r\n <div\r\n class=\"mobileTableRow\"\r\n *ngFor=\"let row of smartTable.tableRows\"\r\n [ngClass]=\"getRowClasses(row)\"\r\n [ngStyle]=\"getRowStyles(row)\"\r\n >\r\n <div\r\n class=\"mobileTableCell\"\r\n *ngFor=\"let header of smartTable.customSmartTableHeaders; let i = index\"\r\n (click)=\"handleOnRowClick(row)\"\r\n (dblclick)=\"handleOnRowDoubleClick($event, row)\"\r\n >\r\n <div class=\"mobileTableCellHeader\">\r\n {{ header.label }}\r\n </div>\r\n\r\n <mat-checkbox\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'select'\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n $event\r\n ? setSelection(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\r\n : row\r\n )\r\n : null\r\n \"\r\n [disabled]=\"isDisabled(row)\"\r\n [checked]=\"\r\n smartTable.selection!.isSelected(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\r\n : row\r\n )\r\n \"\r\n [aria-label]=\"\r\n checkboxLabel(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\r\n : row\r\n )\r\n \"\r\n >\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\r\n {{\r\n getValue(row, header.propertyName)\r\n | smartDateTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\r\n {{\r\n getValue(row, header.propertyName)\r\n | smartDate : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\r\n {{\r\n getValue(row, header.propertyName)\r\n | smartTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().CHECKBOX\">\r\n <mat-checkbox\r\n [disabled]=\"true\"\r\n [checked]=\"getValue(row, header.propertyName)\"\r\n ></mat-checkbox>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\r\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\r\n \"\r\n >\r\n <smart-icon\r\n [smartTooltip]=\"getToolTip(row, i)\"\r\n [icon]=\"getIcon(getValue(row, header.propertyName), i)!\"\r\n [color]=\"getColor(getValue(row, header.propertyName), i)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isImageResource(row, header.propertyName)\">\r\n <smart-icon\r\n [icon]=\"getImageResourceIcon(row, header.propertyName)\"\r\n [color]=\"getImageResourceColor(row, header.propertyName)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\r\n class=\"smart-table-buttons-col\"\r\n >\r\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\r\n <div *ngIf=\"showButton(button, row)\" [ngSwitch]=\"button.type\">\r\n <button\r\n (click)=\"customButtonClicked($event, button, row)\"\r\n *ngSwitchCase=\"smartTableButtonType.ICON\"\r\n mat-icon-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, row)\"\r\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\r\n mat-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label }}\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, row)\"\r\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\r\n mat-raised-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label }}\r\n </button>\r\n <div *ngSwitchCase=\"smartTableButtonType.MENU\">\r\n <button\r\n *ngIf=\"showMenuButton(row, button)\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"customButtonClicked($event, button, row, undefined, true)\"\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label }}\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div *ngIf=\"button.menuItemButtons\">\r\n <button\r\n *ngFor=\"let btn of button.menuItemButtons\"\r\n (click)=\"customButtonClicked($event, btn, row, undefined, true)\"\r\n mat-menu-item\r\n >\r\n <smart-icon *ngIf=\"btn.icon\" [icon]=\"btn.icon\"></smart-icon>\r\n {{ btn.label }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"button.menuItemButtonsPropertyName\">\r\n <button\r\n *ngFor=\"let btn of getValue(row, button.menuItemButtonsPropertyName)\"\r\n (click)=\"customButtonClicked($event, button, row, btn, true)\"\r\n [disabled]=\"btn.disabled\"\r\n mat-menu-item\r\n >\r\n {{ button.translator!(btn) }}\r\n </button>\r\n </div>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\r\n <smart-icon\r\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\r\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\r\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\r\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].translator !== undefined\r\n \"\r\n >\r\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(row, header.propertyName)) }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n !smartTable.customSmartTableHeaders ||\r\n (smartTable.customSmartTableHeaders &&\r\n !smartTable.customSmartTableHeaders[i].properties &&\r\n !smartTable.customSmartTableHeaders[i].icon &&\r\n !smartTable.customSmartTableHeaders[i].buttons &&\r\n !smartTable.customSmartTableHeaders[i].translator &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\r\n \"\r\n >\r\n <smart-icon\r\n *ngIf=\"header.propertyName === 'icon'\"\r\n [icon]=\"getValue(row, header.propertyName)!\"\r\n >\r\n </smart-icon>\r\n <img\r\n *ngIf=\"header.propertyName === 'img'\"\r\n [src]=\"getValue(row, header.propertyName)\"\r\n alt=\"\"\r\n class=\"smarttableImg\"\r\n />\r\n <div\r\n *ngIf=\"\r\n header.propertyName !== 'icon' &&\r\n header.propertyName !== 'img' &&\r\n header.propertyName !== 'option' &&\r\n header.propertyName !== 'button'\r\n \"\r\n [innerHtml]=\"getValue(row, header.propertyName)\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".mobileTable{display:flex;flex-direction:column}.mobileTableRow{display:flex;flex-direction:column;border-bottom:1px solid #ccc;padding:.5rem;gap:.5rem}.mobileTableCell{display:flex;flex-direction:column;gap:.25rem}.mobileTableCellHeader{font-weight:700;color:var(--primary-color)}.selected{background-color:var(--primary-light-color)}.mat-mdc-menu-item[disabled]{cursor:default!important}\n"], dependencies: [{ kind: "directive", type: SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4$3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "pipe", type: SmartDateTimePipe, name: "smartDateTime" }, { kind: "pipe", type: SmartDatePipe, name: "smartDate" }, { kind: "pipe", type: SmartTimePipe, name: "smartTime" }] }); }
|
|
10992
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: MobileTableComponent, selector: "lib-mobile-table", usesInheritance: true, ngImport: i0, template: "<div class=\"mobileTable\">\n <div\n class=\"mobileTableRow\"\n *ngFor=\"let row of smartTable.tableRows\"\n [ngClass]=\"getRowClasses(row)\"\n [ngStyle]=\"getRowStyles(row)\"\n >\n <div\n class=\"mobileTableCell\"\n *ngFor=\"let header of smartTable.customSmartTableHeaders; let i = index\"\n (click)=\"handleOnRowClick(row)\"\n (dblclick)=\"handleOnRowDoubleClick($event, row)\"\n >\n <div class=\"mobileTableCellHeader\">\n {{ header.label }}\n </div>\n\n <mat-checkbox\n *ngIf=\"\n smartTable.customSmartTableHeaders &&\n smartTable.customSmartTableHeaders[i].propertyName === 'select'\n \"\n (click)=\"$event.stopPropagation()\"\n (change)=\"\n $event\n ? setSelection(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\n : row\n )\n : null\n \"\n [disabled]=\"isDisabled(row)\"\n [checked]=\"\n smartTable.selection!.isSelected(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\n : row\n )\n \"\n [aria-label]=\"\n checkboxLabel(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\n : row\n )\n \"\n >\n </mat-checkbox>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\n \"\n >\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\n {{\n getValue(row, header.propertyName)\n | smartDateTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\n {{\n getValue(row, header.propertyName)\n | smartDate : smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\n {{\n getValue(row, header.propertyName)\n | smartTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().CHECKBOX\">\n <mat-checkbox\n [disabled]=\"true\"\n [checked]=\"getValue(row, header.propertyName)\"\n ></mat-checkbox>\n </div>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\n \"\n >\n <smart-icon\n [smartTooltip]=\"getToolTip(row, i)\"\n [icon]=\"getIcon(getValue(row, header.propertyName), i)!\"\n [color]=\"getColor(getValue(row, header.propertyName), i)\"\n >\n </smart-icon>\n </div>\n </div>\n <div *ngIf=\"isImageResource(row, header.propertyName)\">\n <smart-icon\n [icon]=\"getImageResourceIcon(row, header.propertyName)\"\n [color]=\"getImageResourceColor(row, header.propertyName)\"\n >\n </smart-icon>\n </div>\n <div\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\n class=\"smart-table-buttons-col\"\n >\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\n <div *ngIf=\"showButton(button, row)\" [ngSwitch]=\"button.type\">\n <button\n (click)=\"customButtonClicked($event, button, row)\"\n *ngSwitchCase=\"smartTableButtonType.ICON\"\n mat-icon-button\n color=\"{{ button.color }}\"\n >\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\n </button>\n <button\n (click)=\"customButtonClicked($event, button, row)\"\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\n mat-button\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n {{ button.label }}\n </button>\n <button\n (click)=\"customButtonClicked($event, button, row)\"\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\n mat-raised-button\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n {{ button.label }}\n </button>\n <div *ngSwitchCase=\"smartTableButtonType.MENU\">\n <button\n *ngIf=\"showMenuButton(row, button)\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"customButtonClicked($event, button, row, undefined, true)\"\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n {{ button.label }}\n </button>\n <mat-menu #menu=\"matMenu\">\n <div *ngIf=\"button.menuItemButtons\">\n <button\n *ngFor=\"let btn of button.menuItemButtons\"\n (click)=\"customButtonClicked($event, btn, row, undefined, true)\"\n mat-menu-item\n >\n <smart-icon *ngIf=\"btn.icon\" [icon]=\"btn.icon\"></smart-icon>\n {{ btn.label }}\n </button>\n </div>\n <div *ngIf=\"button.menuItemButtonsPropertyName\">\n <button\n *ngFor=\"let btn of getValue(row, button.menuItemButtonsPropertyName)\"\n (click)=\"customButtonClicked($event, button, row, btn, true)\"\n [disabled]=\"btn.disabled\"\n mat-menu-item\n >\n {{ button.translator!(btn) }}\n </button>\n </div>\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\n <smart-icon\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\n >\n </smart-icon>\n </div>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders &&\n smartTable.customSmartTableHeaders[i].translator !== undefined\n \"\n >\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(row, header.propertyName)) }}\n </div>\n <div\n *ngIf=\"\n !smartTable.customSmartTableHeaders ||\n (smartTable.customSmartTableHeaders &&\n !smartTable.customSmartTableHeaders[i].properties &&\n !smartTable.customSmartTableHeaders[i].icon &&\n !smartTable.customSmartTableHeaders[i].buttons &&\n !smartTable.customSmartTableHeaders[i].translator &&\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\n \"\n >\n <smart-icon\n *ngIf=\"header.propertyName === 'icon'\"\n [icon]=\"getValue(row, header.propertyName)!\"\n >\n </smart-icon>\n <img\n *ngIf=\"header.propertyName === 'img'\"\n [src]=\"getValue(row, header.propertyName)\"\n alt=\"\"\n class=\"smarttableImg\"\n />\n <div\n *ngIf=\"\n header.propertyName !== 'icon' &&\n header.propertyName !== 'img' &&\n header.propertyName !== 'option' &&\n header.propertyName !== 'button'\n \"\n [innerHtml]=\"getValue(row, header.propertyName)\"\n ></div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".mobileTable{display:flex;flex-direction:column}.mobileTableRow{display:flex;flex-direction:column;border-bottom:1px solid #ccc;padding:.5rem;gap:.5rem}.mobileTableCell{display:flex;flex-direction:column;gap:.25rem}.mobileTableCellHeader{font-weight:700;color:var(--primary-color)}.selected{background-color:var(--primary-light-color)}.mat-mdc-menu-item[disabled]{cursor:default!important}\n"], dependencies: [{ kind: "directive", type: SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4$3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "pipe", type: SmartDateTimePipe, name: "smartDateTime" }, { kind: "pipe", type: SmartDatePipe, name: "smartDate" }, { kind: "pipe", type: SmartTimePipe, name: "smartTime" }] }); }
|
|
10971
10993
|
}
|
|
10972
10994
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MobileTableComponent, decorators: [{
|
|
10973
10995
|
type: Component,
|
|
10974
|
-
args: [{ selector: 'lib-mobile-table', template: "<div class=\"mobileTable\">\
|
|
10996
|
+
args: [{ selector: 'lib-mobile-table', template: "<div class=\"mobileTable\">\n <div\n class=\"mobileTableRow\"\n *ngFor=\"let row of smartTable.tableRows\"\n [ngClass]=\"getRowClasses(row)\"\n [ngStyle]=\"getRowStyles(row)\"\n >\n <div\n class=\"mobileTableCell\"\n *ngFor=\"let header of smartTable.customSmartTableHeaders; let i = index\"\n (click)=\"handleOnRowClick(row)\"\n (dblclick)=\"handleOnRowDoubleClick($event, row)\"\n >\n <div class=\"mobileTableCellHeader\">\n {{ header.label }}\n </div>\n\n <mat-checkbox\n *ngIf=\"\n smartTable.customSmartTableHeaders &&\n smartTable.customSmartTableHeaders[i].propertyName === 'select'\n \"\n (click)=\"$event.stopPropagation()\"\n (change)=\"\n $event\n ? setSelection(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\n : row\n )\n : null\n \"\n [disabled]=\"isDisabled(row)\"\n [checked]=\"\n smartTable.selection!.isSelected(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\n : row\n )\n \"\n [aria-label]=\"\n checkboxLabel(\n smartTable.selectionProperty\n ? smartTable.getValueDeeply(row, smartTable.selectionProperty)\n : row\n )\n \"\n >\n </mat-checkbox>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\n \"\n >\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\n {{\n getValue(row, header.propertyName)\n | smartDateTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\n {{\n getValue(row, header.propertyName)\n | smartDate : smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\n {{\n getValue(row, header.propertyName)\n | smartTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\n }}\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().CHECKBOX\">\n <mat-checkbox\n [disabled]=\"true\"\n [checked]=\"getValue(row, header.propertyName)\"\n ></mat-checkbox>\n </div>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\n \"\n >\n <smart-icon\n [smartTooltip]=\"getToolTip(row, i)\"\n [icon]=\"getIcon(getValue(row, header.propertyName), i)!\"\n [color]=\"getColor(getValue(row, header.propertyName), i)\"\n >\n </smart-icon>\n </div>\n </div>\n <div *ngIf=\"isImageResource(row, header.propertyName)\">\n <smart-icon\n [icon]=\"getImageResourceIcon(row, header.propertyName)\"\n [color]=\"getImageResourceColor(row, header.propertyName)\"\n >\n </smart-icon>\n </div>\n <div\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\n class=\"smart-table-buttons-col\"\n >\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\n <div *ngIf=\"showButton(button, row)\" [ngSwitch]=\"button.type\">\n <button\n (click)=\"customButtonClicked($event, button, row)\"\n *ngSwitchCase=\"smartTableButtonType.ICON\"\n mat-icon-button\n color=\"{{ button.color }}\"\n >\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\n </button>\n <button\n (click)=\"customButtonClicked($event, button, row)\"\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\n mat-button\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n {{ button.label }}\n </button>\n <button\n (click)=\"customButtonClicked($event, button, row)\"\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\n mat-raised-button\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n {{ button.label }}\n </button>\n <div *ngSwitchCase=\"smartTableButtonType.MENU\">\n <button\n *ngIf=\"showMenuButton(row, button)\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"customButtonClicked($event, button, row, undefined, true)\"\n color=\"{{ button.color }}\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\n {{ button.label }}\n </button>\n <mat-menu #menu=\"matMenu\">\n <div *ngIf=\"button.menuItemButtons\">\n <button\n *ngFor=\"let btn of button.menuItemButtons\"\n (click)=\"customButtonClicked($event, btn, row, undefined, true)\"\n mat-menu-item\n >\n <smart-icon *ngIf=\"btn.icon\" [icon]=\"btn.icon\"></smart-icon>\n {{ btn.label }}\n </button>\n </div>\n <div *ngIf=\"button.menuItemButtonsPropertyName\">\n <button\n *ngFor=\"let btn of getValue(row, button.menuItemButtonsPropertyName)\"\n (click)=\"customButtonClicked($event, button, row, btn, true)\"\n [disabled]=\"btn.disabled\"\n mat-menu-item\n >\n {{ button.translator!(btn) }}\n </button>\n </div>\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\n <smart-icon\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\n >\n </smart-icon>\n </div>\n <div\n *ngIf=\"\n smartTable.customSmartTableHeaders &&\n smartTable.customSmartTableHeaders[i].translator !== undefined\n \"\n >\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(row, header.propertyName)) }}\n </div>\n <div\n *ngIf=\"\n !smartTable.customSmartTableHeaders ||\n (smartTable.customSmartTableHeaders &&\n !smartTable.customSmartTableHeaders[i].properties &&\n !smartTable.customSmartTableHeaders[i].icon &&\n !smartTable.customSmartTableHeaders[i].buttons &&\n !smartTable.customSmartTableHeaders[i].translator &&\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\n \"\n >\n <smart-icon\n *ngIf=\"header.propertyName === 'icon'\"\n [icon]=\"getValue(row, header.propertyName)!\"\n >\n </smart-icon>\n <img\n *ngIf=\"header.propertyName === 'img'\"\n [src]=\"getValue(row, header.propertyName)\"\n alt=\"\"\n class=\"smarttableImg\"\n />\n <div\n *ngIf=\"\n header.propertyName !== 'icon' &&\n header.propertyName !== 'img' &&\n header.propertyName !== 'option' &&\n header.propertyName !== 'button'\n \"\n [innerHtml]=\"getValue(row, header.propertyName)\"\n ></div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".mobileTable{display:flex;flex-direction:column}.mobileTableRow{display:flex;flex-direction:column;border-bottom:1px solid #ccc;padding:.5rem;gap:.5rem}.mobileTableCell{display:flex;flex-direction:column;gap:.25rem}.mobileTableCellHeader{font-weight:700;color:var(--primary-color)}.selected{background-color:var(--primary-light-color)}.mat-mdc-menu-item[disabled]{cursor:default!important}\n"] }]
|
|
10975
10997
|
}], ctorParameters: () => [{ type: ComponentFactoryService }] });
|
|
10976
10998
|
|
|
10977
10999
|
class SmarttableComponent {
|
|
@@ -11049,11 +11071,11 @@ class SmarttableComponent {
|
|
|
11049
11071
|
this.componentRefTable?.instance.toggleAllRows();
|
|
11050
11072
|
}
|
|
11051
11073
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmarttableComponent, deps: [{ token: ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11052
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmarttableComponent, selector: "smarttable", inputs: { maxWidthForMobile: "maxWidthForMobile", smartTable: "smartTable" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "vcRefTable", first: true, predicate: ["table"], descendants: true, read: ViewContainerRef }], usesOnChanges: true, ngImport: i0, template: "<ng-template #table></ng-template>\
|
|
11074
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmarttableComponent, selector: "smarttable", inputs: { maxWidthForMobile: "maxWidthForMobile", smartTable: "smartTable" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "vcRefTable", first: true, predicate: ["table"], descendants: true, read: ViewContainerRef }], usesOnChanges: true, ngImport: i0, template: "<ng-template #table></ng-template>\n", styles: [""] }); }
|
|
11053
11075
|
}
|
|
11054
11076
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmarttableComponent, decorators: [{
|
|
11055
11077
|
type: Component,
|
|
11056
|
-
args: [{ selector: 'smarttable', template: "<ng-template #table></ng-template>\
|
|
11078
|
+
args: [{ selector: 'smarttable', template: "<ng-template #table></ng-template>\n" }]
|
|
11057
11079
|
}], ctorParameters: () => [{ type: ComponentFactoryService }], propDecorators: { maxWidthForMobile: [{
|
|
11058
11080
|
type: Input
|
|
11059
11081
|
}], onResize: [{
|
|
@@ -11095,11 +11117,11 @@ class SmartDialog {
|
|
|
11095
11117
|
this.dialogRef.close();
|
|
11096
11118
|
}
|
|
11097
11119
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDialog, deps: [{ token: i1$3.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11098
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartDialog, selector: "smartdialog", viewQueries: [{ propertyName: "smartFormComponent", first: true, predicate: SmartformComponent, descendants: true }, { propertyName: "vcRef", first: true, predicate: ["renderComponentHere"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div\
|
|
11120
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartDialog, selector: "smartdialog", viewQueries: [{ propertyName: "smartFormComponent", first: true, predicate: SmartformComponent, descendants: true }, { propertyName: "vcRef", first: true, predicate: ["renderComponentHere"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div\n class=\"dialog-container\"\n [ngClass]=\"data.size.fullScreen ? 'fullScreen' : ''\"\n [ngStyle]=\"{ width: data.size.width + 'px', height: data.size.height + 'px' }\"\n>\n <div class=\"dialog-title-container\" mat-dialog-title>\n <h1 class=\"dialog-title\">\n {{ data.content.title }}\n </h1>\n <button mat-icon-button [mat-dialog-close]=\"\">\n <smart-icon aria-hidden=\"false\" aria-label=\"Close\" [icon]=\"'close'\"></smart-icon>\n </button>\n </div>\n <div *ngIf=\"!data.customComponent\" mat-dialog-content class=\"content\">\n <p>\n {{ data.content.description }}\n </p>\n <smartform *ngIf=\"data.form\" [smartForm]=\"data.form!\"></smartform>\n <smarttable *ngIf=\"data.table\" [smartTable]=\"data.table!\"></smarttable>\n </div>\n <div *ngIf=\"!data.customComponent\" class=\"action-container\" mat-dialog-actions>\n <button\n class=\"action-button\"\n *ngIf=\"data.cancelCallback\"\n mat-button\n (click)=\"(data.cancelCallback)\"\n >\n Cancel\n </button>\n <button\n class=\"action-button\"\n *ngIf=\"data.okCallback\"\n mat-button\n (click)=\"(data.okCallback)\"\n cdkFocusInitial\n >\n Ok\n </button>\n <button\n class=\"action-button\"\n *ngIf=\"data.actionCallback\"\n mat-raised-button\n (click)=\"onActionClick()\"\n >\n {{ data.actionLabel }}\n </button>\n </div>\n <mat-dialog-content>\n <ng-template #renderComponentHere></ng-template>\n </mat-dialog-content>\n <div *ngIf=\"data.customComponent\"></div>\n</div>\n", styles: [".dialog-container{position:relative}.dialog-title-container{display:flex;flex-direction:row;width:100%}.dialog-title-container button{text-align:right!important}.dialog-title{flex:20}.action-container{position:absolute;bottom:0;width:100%;display:flex;flex-direction:row}.action-button{flex:1;max-width:200px;margin-left:auto;margin-right:auto}.content{height:calc(100% - 116px)}.fullScreen{width:100%}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: SmartformComponent, selector: "smartform", inputs: ["smartForm"] }, { kind: "component", type: SmarttableComponent, selector: "smarttable", inputs: ["maxWidthForMobile", "smartTable"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }] }); }
|
|
11099
11121
|
}
|
|
11100
11122
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDialog, decorators: [{
|
|
11101
11123
|
type: Component,
|
|
11102
|
-
args: [{ selector: 'smartdialog', template: "<div\
|
|
11124
|
+
args: [{ selector: 'smartdialog', template: "<div\n class=\"dialog-container\"\n [ngClass]=\"data.size.fullScreen ? 'fullScreen' : ''\"\n [ngStyle]=\"{ width: data.size.width + 'px', height: data.size.height + 'px' }\"\n>\n <div class=\"dialog-title-container\" mat-dialog-title>\n <h1 class=\"dialog-title\">\n {{ data.content.title }}\n </h1>\n <button mat-icon-button [mat-dialog-close]=\"\">\n <smart-icon aria-hidden=\"false\" aria-label=\"Close\" [icon]=\"'close'\"></smart-icon>\n </button>\n </div>\n <div *ngIf=\"!data.customComponent\" mat-dialog-content class=\"content\">\n <p>\n {{ data.content.description }}\n </p>\n <smartform *ngIf=\"data.form\" [smartForm]=\"data.form!\"></smartform>\n <smarttable *ngIf=\"data.table\" [smartTable]=\"data.table!\"></smarttable>\n </div>\n <div *ngIf=\"!data.customComponent\" class=\"action-container\" mat-dialog-actions>\n <button\n class=\"action-button\"\n *ngIf=\"data.cancelCallback\"\n mat-button\n (click)=\"(data.cancelCallback)\"\n >\n Cancel\n </button>\n <button\n class=\"action-button\"\n *ngIf=\"data.okCallback\"\n mat-button\n (click)=\"(data.okCallback)\"\n cdkFocusInitial\n >\n Ok\n </button>\n <button\n class=\"action-button\"\n *ngIf=\"data.actionCallback\"\n mat-raised-button\n (click)=\"onActionClick()\"\n >\n {{ data.actionLabel }}\n </button>\n </div>\n <mat-dialog-content>\n <ng-template #renderComponentHere></ng-template>\n </mat-dialog-content>\n <div *ngIf=\"data.customComponent\"></div>\n</div>\n", styles: [".dialog-container{position:relative}.dialog-title-container{display:flex;flex-direction:row;width:100%}.dialog-title-container button{text-align:right!important}.dialog-title{flex:20}.action-container{position:absolute;bottom:0;width:100%;display:flex;flex-direction:row}.action-button{flex:1;max-width:200px;margin-left:auto;margin-right:auto}.content{height:calc(100% - 116px)}.fullScreen{width:100%}\n"] }]
|
|
11103
11125
|
}], ctorParameters: () => [{ type: i1$3.MatDialogRef }, { type: undefined, decorators: [{
|
|
11104
11126
|
type: Inject,
|
|
11105
11127
|
args: [MAT_DIALOG_DATA]
|
|
@@ -11895,11 +11917,11 @@ class LargeFileSnackBarComponent {
|
|
|
11895
11917
|
ngOnInit() {
|
|
11896
11918
|
}
|
|
11897
11919
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: LargeFileSnackBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11898
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: LargeFileSnackBarComponent, selector: "lib-large-file-snack-bar", ngImport: i0, template: "<span class=\"largeFileSnakBarContainer\" matSnackBarLabel\
|
|
11920
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: LargeFileSnackBarComponent, selector: "lib-large-file-snack-bar", ngImport: i0, template: "<span class=\"largeFileSnakBarContainer\" matSnackBarLabel\n >A kiv\u00E1lasztott f\u00E1jl(ok) m\u00E9rete t\u00FAl nagy.</span\n>\n", styles: ["::ng-deep .mat-mdc-snack-bar-container{background-color:var(--warn-color)!important;text-align:center;border-radius:2rem}.largeFileSnakBarContainer{color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$4.MatSnackBarLabel, selector: "[matSnackBarLabel]" }] }); }
|
|
11899
11921
|
}
|
|
11900
11922
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: LargeFileSnackBarComponent, decorators: [{
|
|
11901
11923
|
type: Component,
|
|
11902
|
-
args: [{ selector: 'lib-large-file-snack-bar', template: "<span class=\"largeFileSnakBarContainer\" matSnackBarLabel\
|
|
11924
|
+
args: [{ selector: 'lib-large-file-snack-bar', template: "<span class=\"largeFileSnakBarContainer\" matSnackBarLabel\n >A kiv\u00E1lasztott f\u00E1jl(ok) m\u00E9rete t\u00FAl nagy.</span\n>\n", styles: ["::ng-deep .mat-mdc-snack-bar-container{background-color:var(--warn-color)!important;text-align:center;border-radius:2rem}.largeFileSnakBarContainer{color:#fff}\n"] }]
|
|
11903
11925
|
}], ctorParameters: () => [] });
|
|
11904
11926
|
|
|
11905
11927
|
class SmartEmbeddedSlotDirective {
|
|
@@ -12072,11 +12094,11 @@ class UiActionDialogButtonComponent {
|
|
|
12072
12094
|
this.buttonType === UiActionButtonType.FAB);
|
|
12073
12095
|
}
|
|
12074
12096
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionDialogButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12075
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: UiActionDialogButtonComponent, selector: "ui-action-dialog-button", inputs: { descriptor: "descriptor", buttonType: "buttonType" }, outputs: { click: "click" }, ngImport: i0, template: "<button\
|
|
12097
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: UiActionDialogButtonComponent, selector: "ui-action-dialog-button", inputs: { descriptor: "descriptor", buttonType: "buttonType" }, outputs: { click: "click" }, ngImport: i0, template: "<button\n mat-button\n [smartTooltip]=\"descriptor.tooltip\"\n [ngClass]=\"getButtonClass()\"\n color=\"accent\"\n [color]=\"descriptor.color\"\n class=\"{{ descriptor.cssClass }}\"\n (click)=\"onButtonClicked()\"\n>\n <div *ngIf=\"isOnlyIcon(); then iconOnly; else text\"></div>\n <ng-template #iconOnly>\n <smart-icon\n *ngIf=\"descriptor.icon\"\n [icon]=\"descriptor.icon\"\n [color]=\"descriptor.iconColor ?? descriptor.color\"\n ></smart-icon>\n </ng-template>\n <ng-template #text>\n <smart-icon\n *ngIf=\"descriptor.icon && descriptor.iconPosition === iconPosition().PRE\"\n [icon]=\"descriptor.icon\"\n [color]=\"descriptor.iconColor ?? descriptor.color\"\n ></smart-icon>\n {{ descriptor.caption }}\n <smart-icon\n *ngIf=\"descriptor.icon && descriptor.iconPosition === iconPosition().POST\"\n [icon]=\"descriptor.icon!\"\n [color]=\"descriptor.iconColor ?? descriptor.color\"\n ></smart-icon>\n </ng-template>\n</button>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "directive", type: SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }] }); }
|
|
12076
12098
|
}
|
|
12077
12099
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionDialogButtonComponent, decorators: [{
|
|
12078
12100
|
type: Component,
|
|
12079
|
-
args: [{ selector: 'ui-action-dialog-button', template: "<button\
|
|
12101
|
+
args: [{ selector: 'ui-action-dialog-button', template: "<button\n mat-button\n [smartTooltip]=\"descriptor.tooltip\"\n [ngClass]=\"getButtonClass()\"\n color=\"accent\"\n [color]=\"descriptor.color\"\n class=\"{{ descriptor.cssClass }}\"\n (click)=\"onButtonClicked()\"\n>\n <div *ngIf=\"isOnlyIcon(); then iconOnly; else text\"></div>\n <ng-template #iconOnly>\n <smart-icon\n *ngIf=\"descriptor.icon\"\n [icon]=\"descriptor.icon\"\n [color]=\"descriptor.iconColor ?? descriptor.color\"\n ></smart-icon>\n </ng-template>\n <ng-template #text>\n <smart-icon\n *ngIf=\"descriptor.icon && descriptor.iconPosition === iconPosition().PRE\"\n [icon]=\"descriptor.icon\"\n [color]=\"descriptor.iconColor ?? descriptor.color\"\n ></smart-icon>\n {{ descriptor.caption }}\n <smart-icon\n *ngIf=\"descriptor.icon && descriptor.iconPosition === iconPosition().POST\"\n [icon]=\"descriptor.icon!\"\n [color]=\"descriptor.iconColor ?? descriptor.color\"\n ></smart-icon>\n </ng-template>\n</button>\n" }]
|
|
12080
12102
|
}], ctorParameters: () => [], propDecorators: { descriptor: [{
|
|
12081
12103
|
type: Input
|
|
12082
12104
|
}], buttonType: [{
|
|
@@ -12185,11 +12207,11 @@ class UiActionInputDialogComponent {
|
|
|
12185
12207
|
return UiActionButtonType;
|
|
12186
12208
|
}
|
|
12187
12209
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionInputDialogComponent, deps: [{ token: 'textFieldDialogService' }, { token: COMPONENT_LIBRARY }, { token: UiActionDescriptorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12188
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionInputDialogComponent, selector: "smart-ui-action-input-dialog", viewQueries: [{ propertyName: "folderFormChild", first: true, predicate: ["form"], descendants: true }], ngImport: i0, template: "<div class=\"folderNameDialogContainer\">\
|
|
12210
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionInputDialogComponent, selector: "smart-ui-action-input-dialog", viewQueries: [{ propertyName: "folderFormChild", first: true, predicate: ["form"], descendants: true }], ngImport: i0, template: "<div class=\"folderNameDialogContainer\">\n <div class=\"headerContainer\">\n <h3 class=\"color-accent-700\">\n {{ getTitle() }}\n </h3>\n @if(compLib === componentLibrary.MATERIAL) {\n <button mat-icon-button (click)=\"cancel()\">\n <smart-icon [color]=\"'primary'\" [icon]=\"'X'\"></smart-icon>\n </button>\n }@else {\n <p-button icon=\"pi pi-times\" [rounded]=\"true\" [text]=\"true\" (click)=\"cancel()\" />\n }\n </div>\n <p>\n {{ getText() }}\n </p>\n <smartform #form [smartForm]=\"folderForm\"></smartform>\n <div class=\"folderNameDialogButtonsContainer\">\n <ui-action-dialog-button\n [descriptor]=\"getCancelButton()\"\n (click)=\"cancel()\"\n ></ui-action-dialog-button>\n <ui-action-dialog-button\n [descriptor]=\"getActionButton()\"\n [buttonType]=\"UiActionButtonType().RAISED\"\n (click)=\"save()\"\n ></ui-action-dialog-button>\n </div>\n</div>\n", styles: [".folderNameDialogContainer{width:25rem;display:flex;flex-direction:column;gap:1rem}.headerContainer{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding-top:1rem}.headerContainer h3{margin:0}.folderNameDialogButtonsContainer{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}\n"], dependencies: [{ kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: SmartformComponent, selector: "smartform", inputs: ["smartForm"] }, { kind: "component", type: UiActionDialogButtonComponent, selector: "ui-action-dialog-button", inputs: ["descriptor", "buttonType"], outputs: ["click"] }] }); }
|
|
12189
12211
|
}
|
|
12190
12212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionInputDialogComponent, decorators: [{
|
|
12191
12213
|
type: Component,
|
|
12192
|
-
args: [{ selector: 'smart-ui-action-input-dialog', template: "<div class=\"folderNameDialogContainer\">\
|
|
12214
|
+
args: [{ selector: 'smart-ui-action-input-dialog', template: "<div class=\"folderNameDialogContainer\">\n <div class=\"headerContainer\">\n <h3 class=\"color-accent-700\">\n {{ getTitle() }}\n </h3>\n @if(compLib === componentLibrary.MATERIAL) {\n <button mat-icon-button (click)=\"cancel()\">\n <smart-icon [color]=\"'primary'\" [icon]=\"'X'\"></smart-icon>\n </button>\n }@else {\n <p-button icon=\"pi pi-times\" [rounded]=\"true\" [text]=\"true\" (click)=\"cancel()\" />\n }\n </div>\n <p>\n {{ getText() }}\n </p>\n <smartform #form [smartForm]=\"folderForm\"></smartform>\n <div class=\"folderNameDialogButtonsContainer\">\n <ui-action-dialog-button\n [descriptor]=\"getCancelButton()\"\n (click)=\"cancel()\"\n ></ui-action-dialog-button>\n <ui-action-dialog-button\n [descriptor]=\"getActionButton()\"\n [buttonType]=\"UiActionButtonType().RAISED\"\n (click)=\"save()\"\n ></ui-action-dialog-button>\n </div>\n</div>\n", styles: [".folderNameDialogContainer{width:25rem;display:flex;flex-direction:column;gap:1rem}.headerContainer{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding-top:1rem}.headerContainer h3{margin:0}.folderNameDialogButtonsContainer{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}\n"] }]
|
|
12193
12215
|
}], ctorParameters: () => [{ type: UiActionInputDialogService, decorators: [{
|
|
12194
12216
|
type: Inject,
|
|
12195
12217
|
args: ['textFieldDialogService']
|
|
@@ -12306,11 +12328,11 @@ class UiActionConfirmDialogComponent {
|
|
|
12306
12328
|
this.service.cancel();
|
|
12307
12329
|
}
|
|
12308
12330
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionConfirmDialogComponent, deps: [{ token: 'confirmDialogService' }, { token: COMPONENT_LIBRARY }, { token: UiActionDescriptorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12309
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionConfirmDialogComponent, selector: "app-ui-action-confirm-dialog", ngImport: i0, template: "@if(descriptor){\
|
|
12331
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionConfirmDialogComponent, selector: "app-ui-action-confirm-dialog", ngImport: i0, template: "@if(descriptor){\n<div class=\"folderNameDialogContainer\">\n <div class=\"headerContainer\">\n <h3 class=\"color-accent-700\">\n {{ getTitle() }}\n </h3>\n @if(compLib === componentLibrary.MATERIAL) {\n <button mat-icon-button (click)=\"cancel()\">\n <smart-icon [color]=\"'primary'\" [icon]=\"'X'\"></smart-icon>\n </button>\n }@else {\n <p-button icon=\"pi pi-times\" [rounded]=\"true\" [text]=\"true\" (click)=\"cancel()\" />\n }\n </div>\n <p>\n {{ getText() }}\n </p>\n <div class=\"folderNameDialogButtonsContainer\">\n <ui-action-button\n [descriptor]=\"getCancelButton()\"\n [addedCssClass]=\"getCancelCssClass()\"\n (actionClick)=\"cancel()\"\n ></ui-action-button>\n <ui-action-button\n [descriptor]=\"getActionButton()\"\n [addedCssClass]=\"getActionCssClass()\"\n (actionClick)=\"doAction()\"\n >\n </ui-action-button>\n </div>\n</div>\n}\n", styles: [".folderNameDialogContainer{width:25rem;display:flex;flex-direction:column;gap:1rem}.headerContainer{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding-top:1rem}.headerContainer h3{margin:0}.folderNameDialogButtonsContainer{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}\n"], dependencies: [{ kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }] }); }
|
|
12310
12332
|
}
|
|
12311
12333
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionConfirmDialogComponent, decorators: [{
|
|
12312
12334
|
type: Component,
|
|
12313
|
-
args: [{ selector: 'app-ui-action-confirm-dialog', template: "@if(descriptor){\
|
|
12335
|
+
args: [{ selector: 'app-ui-action-confirm-dialog', template: "@if(descriptor){\n<div class=\"folderNameDialogContainer\">\n <div class=\"headerContainer\">\n <h3 class=\"color-accent-700\">\n {{ getTitle() }}\n </h3>\n @if(compLib === componentLibrary.MATERIAL) {\n <button mat-icon-button (click)=\"cancel()\">\n <smart-icon [color]=\"'primary'\" [icon]=\"'X'\"></smart-icon>\n </button>\n }@else {\n <p-button icon=\"pi pi-times\" [rounded]=\"true\" [text]=\"true\" (click)=\"cancel()\" />\n }\n </div>\n <p>\n {{ getText() }}\n </p>\n <div class=\"folderNameDialogButtonsContainer\">\n <ui-action-button\n [descriptor]=\"getCancelButton()\"\n [addedCssClass]=\"getCancelCssClass()\"\n (actionClick)=\"cancel()\"\n ></ui-action-button>\n <ui-action-button\n [descriptor]=\"getActionButton()\"\n [addedCssClass]=\"getActionCssClass()\"\n (actionClick)=\"doAction()\"\n >\n </ui-action-button>\n </div>\n</div>\n}\n", styles: [".folderNameDialogContainer{width:25rem;display:flex;flex-direction:column;gap:1rem}.headerContainer{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding-top:1rem}.headerContainer h3{margin:0}.folderNameDialogButtonsContainer{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}\n"] }]
|
|
12314
12336
|
}], ctorParameters: () => [{ type: UiActionConfirmDialogService, decorators: [{
|
|
12315
12337
|
type: Inject,
|
|
12316
12338
|
args: ['confirmDialogService']
|
|
@@ -12447,11 +12469,11 @@ class UiActionFileUploadDialogComponent {
|
|
|
12447
12469
|
this.service.cancel();
|
|
12448
12470
|
}
|
|
12449
12471
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionFileUploadDialogComponent, deps: [{ token: 'fileUploadDialogService' }, { token: COMPONENT_LIBRARY }, { token: UiActionDescriptorService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12450
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionFileUploadDialogComponent, selector: "lib-ui-action-file-upload-dialog", viewQueries: [{ propertyName: "fileUploadPrime", first: true, predicate: ["fileUploadPrimeNg"], descendants: true }, { propertyName: "fileUploadMaterial", first: true, predicate: ["fileUploadMaterial"], descendants: true }], ngImport: i0, template: "<div class=\"folderNameDialogContainer\">\
|
|
12472
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: UiActionFileUploadDialogComponent, selector: "lib-ui-action-file-upload-dialog", viewQueries: [{ propertyName: "fileUploadPrime", first: true, predicate: ["fileUploadPrimeNg"], descendants: true }, { propertyName: "fileUploadMaterial", first: true, predicate: ["fileUploadMaterial"], descendants: true }], ngImport: i0, template: "<div class=\"folderNameDialogContainer\">\n <div class=\"headerContainer\">\n <h3 class=\"color-accent-700\">\n {{ getTitle() }}\n </h3>\n </div>\n\n @if(getText()){\n <p>\n {{ getText() }}\n </p>\n } @if(descriptor){\n <smart-upload-widget\n [uploadDescriptor]=\"descriptor.upload\"\n [isMultiple]=\"isMultiple ?? true\"\n (uploadFilesEvent)=\"upload($event)\"\n />\n }\n\n <div class=\"folderNameDialogButtonsContainer\">\n <ui-action-button [descriptor]=\"cancelButton\" (actionClick)=\"cancel()\"></ui-action-button>\n </div>\n</div>\n", styles: [".folderNameDialogContainer{display:flex;flex-direction:column;justify-content:center;gap:1rem;min-width:30vw}photo-capture-widget{width:100%;max-width:100%;overflow:hidden;display:flex;flex-direction:column;align-items:center}.headerContainer{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding-top:.5rem}.headerContainer ::ng-deep button{color:var(--primary-color);border:unset}.headerContainer h3{margin:0;font-size:1.5rem}.folderNameDialogButtonsContainer{display:flex;flex-direction:row;justify-content:flex-start;gap:.5rem}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;gap:1rem}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-row>div{width:fit-content}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-content{padding:unset;align-content:center;text-align:center}.message{text-align:center;color:#6b7280}.uploadField{display:flex;flex-direction:row;justify-content:center;align-items:center;gap:1rem;padding:1rem}.folderNameDialogContainer ::ng-deep .p-fileupload-row{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.folderNameDialogContainer ::ng-deep .p-fileupload-choose,.folderNameDialogContainer ::ng-deep .p-fileupload-row ::ng-deep button,.folderNameDialogContainer ::ng-deep .p-fileupload-buttonbar ::ng-deep button{background-color:var(--primary-color);border-color:var(--primary-color)}.folderNameDialogContainer ::ng-deep .p-fileupload-choose:hover,.folderNameDialogContainer ::ng-deep .p-fileupload-row ::ng-deep button:hover,.folderNameDialogContainer ::ng-deep .p-fileupload-buttonbar ::ng-deep button:hover,.folderNameDialogButtonsContainer ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.8)}.headerContainer ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.1)}@media (max-width: 900px){.folderNameDialogContainer{width:100%}}.p-fileupload-file{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;border:1px solid #dee2e6}.p-file-data{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.fileSize{padding-left:1rem;display:flex;justify-content:flex-end}.fileData{display:flex;flex-direction:column;justify-content:flex-end;padding-right:1rem}\n"], dependencies: [{ kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }, { kind: "component", type: UploadWidgetComponent, selector: "smart-upload-widget", inputs: ["uploadDescriptor", "isMultiple", "isDisabled"], outputs: ["uploadFilesEvent"] }] }); }
|
|
12451
12473
|
}
|
|
12452
12474
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UiActionFileUploadDialogComponent, decorators: [{
|
|
12453
12475
|
type: Component,
|
|
12454
|
-
args: [{ selector: 'lib-ui-action-file-upload-dialog', template: "<div class=\"folderNameDialogContainer\">\
|
|
12476
|
+
args: [{ selector: 'lib-ui-action-file-upload-dialog', template: "<div class=\"folderNameDialogContainer\">\n <div class=\"headerContainer\">\n <h3 class=\"color-accent-700\">\n {{ getTitle() }}\n </h3>\n </div>\n\n @if(getText()){\n <p>\n {{ getText() }}\n </p>\n } @if(descriptor){\n <smart-upload-widget\n [uploadDescriptor]=\"descriptor.upload\"\n [isMultiple]=\"isMultiple ?? true\"\n (uploadFilesEvent)=\"upload($event)\"\n />\n }\n\n <div class=\"folderNameDialogButtonsContainer\">\n <ui-action-button [descriptor]=\"cancelButton\" (actionClick)=\"cancel()\"></ui-action-button>\n </div>\n</div>\n", styles: [".folderNameDialogContainer{display:flex;flex-direction:column;justify-content:center;gap:1rem;min-width:30vw}photo-capture-widget{width:100%;max-width:100%;overflow:hidden;display:flex;flex-direction:column;align-items:center}.headerContainer{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding-top:.5rem}.headerContainer ::ng-deep button{color:var(--primary-color);border:unset}.headerContainer h3{margin:0;font-size:1.5rem}.folderNameDialogButtonsContainer{display:flex;flex-direction:row;justify-content:flex-start;gap:.5rem}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-buttonbar{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;gap:1rem}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-row>div{width:fit-content}.folderNameDialogContainer ::ng-deep .p-fileupload .p-fileupload-content{padding:unset;align-content:center;text-align:center}.message{text-align:center;color:#6b7280}.uploadField{display:flex;flex-direction:row;justify-content:center;align-items:center;gap:1rem;padding:1rem}.folderNameDialogContainer ::ng-deep .p-fileupload-row{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.folderNameDialogContainer ::ng-deep .p-fileupload-choose,.folderNameDialogContainer ::ng-deep .p-fileupload-row ::ng-deep button,.folderNameDialogContainer ::ng-deep .p-fileupload-buttonbar ::ng-deep button{background-color:var(--primary-color);border-color:var(--primary-color)}.folderNameDialogContainer ::ng-deep .p-fileupload-choose:hover,.folderNameDialogContainer ::ng-deep .p-fileupload-row ::ng-deep button:hover,.folderNameDialogContainer ::ng-deep .p-fileupload-buttonbar ::ng-deep button:hover,.folderNameDialogButtonsContainer ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.8)}.headerContainer ::ng-deep button:hover{background-color:rgba(from var(--primary-color) r g b/.1)}@media (max-width: 900px){.folderNameDialogContainer{width:100%}}.p-fileupload-file{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;border:1px solid #dee2e6}.p-file-data{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.fileSize{padding-left:1rem;display:flex;justify-content:flex-end}.fileData{display:flex;flex-direction:column;justify-content:flex-end;padding-right:1rem}\n"] }]
|
|
12455
12477
|
}], ctorParameters: () => [{ type: UiActionFileUploadDialogService, decorators: [{
|
|
12456
12478
|
type: Inject,
|
|
12457
12479
|
args: ['fileUploadDialogService']
|
|
@@ -12552,11 +12574,11 @@ class SmartViewContextErrorDialogComponent {
|
|
|
12552
12574
|
this.service.closeDialog();
|
|
12553
12575
|
}
|
|
12554
12576
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartViewContextErrorDialogComponent, deps: [{ token: SmartViewContextErrorDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12555
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartViewContextErrorDialogComponent, selector: "lib-smart-view-context-error-dialog", ngImport: i0, template: "<div *ngIf=\"smartViewContextApiError\" class=\"container\">\
|
|
12577
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartViewContextErrorDialogComponent, selector: "lib-smart-view-context-error-dialog", ngImport: i0, template: "<div *ngIf=\"smartViewContextApiError\" class=\"container\">\n <h3 class=\"color-accent-700\">\n {{ smartViewContextApiError.dialogTitle }}\n </h3>\n <div class=\"content\">\n <p>\n {{ smartViewContextApiError.message }}\n </p>\n </div>\n <div class=\"buttonContainer\">\n <ui-action-button [descriptor]=\"buttonDescriptor\" (actionClick)=\"onActionClick()\">\n </ui-action-button>\n </div>\n</div>\n", styles: [".container{display:flex;flex-direction:column;gap:1em;min-width:25rem;max-width:50vw;height:auto;max-height:75vh}.content{flex:1;overflow:auto}.buttonContainer{display:flex;flex-direction:row;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "addedCssClass", "addBasicClasses"], outputs: ["actionClick", "actionDoubleClick"] }] }); }
|
|
12556
12578
|
}
|
|
12557
12579
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartViewContextErrorDialogComponent, decorators: [{
|
|
12558
12580
|
type: Component,
|
|
12559
|
-
args: [{ selector: 'lib-smart-view-context-error-dialog', template: "<div *ngIf=\"smartViewContextApiError\" class=\"container\">\
|
|
12581
|
+
args: [{ selector: 'lib-smart-view-context-error-dialog', template: "<div *ngIf=\"smartViewContextApiError\" class=\"container\">\n <h3 class=\"color-accent-700\">\n {{ smartViewContextApiError.dialogTitle }}\n </h3>\n <div class=\"content\">\n <p>\n {{ smartViewContextApiError.message }}\n </p>\n </div>\n <div class=\"buttonContainer\">\n <ui-action-button [descriptor]=\"buttonDescriptor\" (actionClick)=\"onActionClick()\">\n </ui-action-button>\n </div>\n</div>\n", styles: [".container{display:flex;flex-direction:column;gap:1em;min-width:25rem;max-width:50vw;height:auto;max-height:75vh}.content{flex:1;overflow:auto}.buttonContainer{display:flex;flex-direction:row;justify-content:flex-end}\n"] }]
|
|
12560
12582
|
}], ctorParameters: () => [{ type: SmartViewContextErrorDialogService }] });
|
|
12561
12583
|
|
|
12562
12584
|
class SmartViewContextInterceptor {
|
|
@@ -13154,11 +13176,11 @@ class SmartSessionTimerComponent {
|
|
|
13154
13176
|
return `${minutes}:${remainingSeconds < 10 ? '0' : ''}${remainingSeconds}`;
|
|
13155
13177
|
}
|
|
13156
13178
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionTimerComponent, deps: [{ token: SmartSessionTimerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13157
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartSessionTimerComponent, selector: "smart-session-timer", providers: [SmartSessionTimerService], ngImport: i0, template: "<div class=\"smart-session-timer-container\">\
|
|
13179
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartSessionTimerComponent, selector: "smart-session-timer", providers: [SmartSessionTimerService], ngImport: i0, template: "<div class=\"smart-session-timer-container\">\n <span class=\"smart-session-timer\" *ngIf=\"timeInSeconds\">\n {{ formatTime(timeInSeconds!) }}\n </span>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
13158
13180
|
}
|
|
13159
13181
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartSessionTimerComponent, decorators: [{
|
|
13160
13182
|
type: Component,
|
|
13161
|
-
args: [{ selector: 'smart-session-timer', providers: [SmartSessionTimerService], template: "<div class=\"smart-session-timer-container\">\
|
|
13183
|
+
args: [{ selector: 'smart-session-timer', providers: [SmartSessionTimerService], template: "<div class=\"smart-session-timer-container\">\n <span class=\"smart-session-timer\" *ngIf=\"timeInSeconds\">\n {{ formatTime(timeInSeconds!) }}\n </span>\n</div>\n" }]
|
|
13162
13184
|
}], ctorParameters: () => [{ type: SmartSessionTimerService }] });
|
|
13163
13185
|
|
|
13164
13186
|
class SmartBackendBootstrapService {
|
|
@@ -13195,13 +13217,32 @@ class SmartBackendBootstrapService {
|
|
|
13195
13217
|
if (!this.config) {
|
|
13196
13218
|
return Promise.reject(new Error('SmartBackendBootstrapService.configure() must be called before start().'));
|
|
13197
13219
|
}
|
|
13220
|
+
if (this.mode === 'bootstrapWith' && !this.lastInitFailed) {
|
|
13221
|
+
return Promise.reject(new Error('SmartBackendBootstrapService.bootstrapWith() was already called; start() is mutually exclusive with it. Call reset() first to switch entry points.'));
|
|
13222
|
+
}
|
|
13198
13223
|
if (this.runningInit && !this.lastInitFailed) {
|
|
13199
13224
|
return this.runningInit;
|
|
13200
13225
|
}
|
|
13226
|
+
this.mode = 'start';
|
|
13201
13227
|
this.lastInitFailed = false;
|
|
13202
13228
|
this.runningInit = this.runInit();
|
|
13203
13229
|
return this.runningInit;
|
|
13204
13230
|
}
|
|
13231
|
+
bootstrapWith(creds) {
|
|
13232
|
+
if (!this.config) {
|
|
13233
|
+
return Promise.reject(new Error('SmartBackendBootstrapService.configure() must be called before bootstrapWith().'));
|
|
13234
|
+
}
|
|
13235
|
+
if (this.mode === 'start' && !this.lastInitFailed) {
|
|
13236
|
+
return Promise.reject(new Error('SmartBackendBootstrapService.start() was already called; bootstrapWith() is mutually exclusive with it. Call reset() first to switch entry points.'));
|
|
13237
|
+
}
|
|
13238
|
+
if (this.runningInit && !this.lastInitFailed) {
|
|
13239
|
+
return this.runningInit;
|
|
13240
|
+
}
|
|
13241
|
+
this.mode = 'bootstrapWith';
|
|
13242
|
+
this.lastInitFailed = false;
|
|
13243
|
+
this.runningInit = this.runBootstrapWith(creds);
|
|
13244
|
+
return this.runningInit;
|
|
13245
|
+
}
|
|
13205
13246
|
whenReady() {
|
|
13206
13247
|
if (!this.runningInit) {
|
|
13207
13248
|
return Promise.reject(new Error('BootstrapNotStarted'));
|
|
@@ -13211,6 +13252,7 @@ class SmartBackendBootstrapService {
|
|
|
13211
13252
|
async reset() {
|
|
13212
13253
|
this.runningInit = undefined;
|
|
13213
13254
|
this.lastInitFailed = false;
|
|
13255
|
+
this.mode = undefined;
|
|
13214
13256
|
return this.start();
|
|
13215
13257
|
}
|
|
13216
13258
|
async runInit() {
|
|
@@ -13219,18 +13261,31 @@ class SmartBackendBootstrapService {
|
|
|
13219
13261
|
await this.viewContext.initViewContext();
|
|
13220
13262
|
}
|
|
13221
13263
|
catch (err) {
|
|
13222
|
-
this.
|
|
13223
|
-
|
|
13224
|
-
|
|
13225
|
-
|
|
13226
|
-
|
|
13227
|
-
|
|
13228
|
-
|
|
13229
|
-
|
|
13230
|
-
|
|
13264
|
+
await this.handleInitFailure(err);
|
|
13265
|
+
throw err;
|
|
13266
|
+
}
|
|
13267
|
+
}
|
|
13268
|
+
async runBootstrapWith(creds) {
|
|
13269
|
+
try {
|
|
13270
|
+
this.session.setSessionToken(creds.sessionToken);
|
|
13271
|
+
await this.viewContext.initFromExistingViewContext(creds.viewContextUuid);
|
|
13272
|
+
}
|
|
13273
|
+
catch (err) {
|
|
13274
|
+
await this.handleInitFailure(err);
|
|
13231
13275
|
throw err;
|
|
13232
13276
|
}
|
|
13233
13277
|
}
|
|
13278
|
+
async handleInitFailure(err) {
|
|
13279
|
+
this.lastInitFailed = true;
|
|
13280
|
+
if (this.config?.onStartError) {
|
|
13281
|
+
try {
|
|
13282
|
+
await this.config.onStartError(err);
|
|
13283
|
+
}
|
|
13284
|
+
catch (callbackErr) {
|
|
13285
|
+
console.error('SmartBackendBootstrapService.onStartError callback threw', callbackErr);
|
|
13286
|
+
}
|
|
13287
|
+
}
|
|
13288
|
+
}
|
|
13234
13289
|
async handleSessionError(err) {
|
|
13235
13290
|
if (this.config?.onSessionError) {
|
|
13236
13291
|
await this.config.onSessionError(err);
|
|
@@ -13489,11 +13544,11 @@ class SmartFileUploaderComponent {
|
|
|
13489
13544
|
this.uiActionService.execute(this.uiActionModel.uiAction, this.uiActionModel);
|
|
13490
13545
|
}
|
|
13491
13546
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFileUploaderComponent, deps: [{ token: UiActionService }, { token: UiActionDescriptorService }, { token: COMPONENT_LIBRARY }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13492
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartFileUploaderComponent, selector: "smart-file-uploader4sc", inputs: { config: "config" }, usesOnChanges: true, ngImport: i0, template: "@if (compLib === componentLibrary.PRIMENG) {\
|
|
13547
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartFileUploaderComponent, selector: "smart-file-uploader4sc", inputs: { config: "config" }, usesOnChanges: true, ngImport: i0, template: "@if (compLib === componentLibrary.PRIMENG) {\n <p-fileUpload\n name=\"files[]\"\n url=\"\"\n (onSend)=\"uploadFiles($event)\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n [multiple]=\"true\"\n [accept]=\"config?.fileFormats?.join(',')\"\n [maxFileSize]=\"config?.maxSizeMb\"\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\n cancelLabel=\"M\u00E9gsem\"\n chooseLabel=\"V\u00E1laszt\u00E1s\"\n >\n <ng-template pTemplate=\"content\"> </ng-template>\n </p-fileUpload>\n} @else {\n <smartfileuploader\n *ngIf=\"i18n\"\n [i18n]=\"i18n\"\n [fileFormats]=\"config?.fileFormats\"\n [isMultiple]=\"config?.isMultiple\"\n [maxSizeMb]=\"config?.maxSizeMb\"\n [uploadCallback]=\"executeUpload.bind(this)\"\n ></smartfileuploader>\n}\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SmartfileuploaderComponent, selector: "smartfileuploader", inputs: ["uploadCallback", "fileFormats", "maxSizeMb", "i18n", "useIconButton", "isMultiple", "autoUpload", "isDisabled"] }, { kind: "component", type: i4$1.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "directive", type: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] }); }
|
|
13493
13548
|
}
|
|
13494
13549
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFileUploaderComponent, decorators: [{
|
|
13495
13550
|
type: Component,
|
|
13496
|
-
args: [{ selector: 'smart-file-uploader4sc', template: "@if (compLib === componentLibrary.PRIMENG) {\
|
|
13551
|
+
args: [{ selector: 'smart-file-uploader4sc', template: "@if (compLib === componentLibrary.PRIMENG) {\n <p-fileUpload\n name=\"files[]\"\n url=\"\"\n (onSend)=\"uploadFiles($event)\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n [multiple]=\"true\"\n [accept]=\"config?.fileFormats?.join(',')\"\n [maxFileSize]=\"config?.maxSizeMb\"\n uploadLabel=\"Felt\u00F6lt\u00E9s\"\n cancelLabel=\"M\u00E9gsem\"\n chooseLabel=\"V\u00E1laszt\u00E1s\"\n >\n <ng-template pTemplate=\"content\"> </ng-template>\n </p-fileUpload>\n} @else {\n <smartfileuploader\n *ngIf=\"i18n\"\n [i18n]=\"i18n\"\n [fileFormats]=\"config?.fileFormats\"\n [isMultiple]=\"config?.isMultiple\"\n [maxSizeMb]=\"config?.maxSizeMb\"\n [uploadCallback]=\"executeUpload.bind(this)\"\n ></smartfileuploader>\n}\n" }]
|
|
13497
13552
|
}], ctorParameters: () => [{ type: UiActionService }, { type: UiActionDescriptorService }, { type: ComponentLibrary, decorators: [{
|
|
13498
13553
|
type: Inject,
|
|
13499
13554
|
args: [COMPONENT_LIBRARY]
|
|
@@ -13507,11 +13562,11 @@ class ExpandableGridComponent {
|
|
|
13507
13562
|
console.log(this.sectionData);
|
|
13508
13563
|
}
|
|
13509
13564
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ExpandableGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13510
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ExpandableGridComponent, selector: "app-expandable-grid", inputs: { sectionData: "sectionData" }, ngImport: i0, template: "<div\
|
|
13565
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ExpandableGridComponent, selector: "app-expandable-grid", inputs: { sectionData: "sectionData" }, ngImport: i0, template: "<div\n [ngClass]=\"\n sectionData[1].dataLayoutDef.gridLayout === 'ROW'\n ? 'expandable-container-list'\n : 'expandable-container'\n \"\n>\n <div\n [ngClass]=\"\n sectionData[0].background === undefined ? '' : 'expandable-background'\n \"\n [ngStyle]=\"{\n 'background-image':\n sectionData[0].background === undefined\n ? ''\n : 'url(' + sectionData[0].background + ')'\n }\"\n >\n <div *ngIf=\"sectionData[0].icons !== undefined\" class=\"expandable-icon\">\n <smart-icon icon=\"{{ sectionData[0].icons }}\"></smart-icon>\n </div>\n </div>\n\n <div\n [ngClass]=\"\n sectionData[1].dataLayoutDef.dataLayout === 'ROW'\n ? 'expandable-data-container-list'\n : 'expandable-data-container'\n \"\n >\n <div *ngFor=\"let value of values\">\n <div>{{ value }}</div>\n </div>\n </div>\n <div\n *ngIf=\"sectionData.button !== undefined\"\n [ngClass]=\"\n sectionData[1].dataLayoutDef.dataLayout === undefined\n ? ''\n : 'expandable-button'\n \"\n >\n <container-element [ngSwitch]=\"sectionData.button.type\">\n <button *ngSwitchCase=\"'RAISED'\" mat-raised-button>alma</button>\n\n <button *ngSwitchCase=\"'ICON'\" mat-icon-button>alma</button>\n </container-element>\n </div>\n</div>\n", styles: [".expandable-container-list{display:flex;flex-direction:row;padding:1.5rem;gap:1rem}.expandable-container{display:flex;flex-direction:column;gap:1rem;padding:1.5rem;align-items:center}.expandable-background{height:10rem;width:10rem}.expandable-data-container{display:flex;flex-direction:column;gap:.5rem}.expandable-data-container-list{display:grid;grid-template-columns:repeat(3,10rem);gap:.5rem}.expandable-button{display:flex;align-items:end}.expandable-icon{padding:.75rem}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }] }); }
|
|
13511
13566
|
}
|
|
13512
13567
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ExpandableGridComponent, decorators: [{
|
|
13513
13568
|
type: Component,
|
|
13514
|
-
args: [{ selector: 'app-expandable-grid', template: "<div\
|
|
13569
|
+
args: [{ selector: 'app-expandable-grid', template: "<div\n [ngClass]=\"\n sectionData[1].dataLayoutDef.gridLayout === 'ROW'\n ? 'expandable-container-list'\n : 'expandable-container'\n \"\n>\n <div\n [ngClass]=\"\n sectionData[0].background === undefined ? '' : 'expandable-background'\n \"\n [ngStyle]=\"{\n 'background-image':\n sectionData[0].background === undefined\n ? ''\n : 'url(' + sectionData[0].background + ')'\n }\"\n >\n <div *ngIf=\"sectionData[0].icons !== undefined\" class=\"expandable-icon\">\n <smart-icon icon=\"{{ sectionData[0].icons }}\"></smart-icon>\n </div>\n </div>\n\n <div\n [ngClass]=\"\n sectionData[1].dataLayoutDef.dataLayout === 'ROW'\n ? 'expandable-data-container-list'\n : 'expandable-data-container'\n \"\n >\n <div *ngFor=\"let value of values\">\n <div>{{ value }}</div>\n </div>\n </div>\n <div\n *ngIf=\"sectionData.button !== undefined\"\n [ngClass]=\"\n sectionData[1].dataLayoutDef.dataLayout === undefined\n ? ''\n : 'expandable-button'\n \"\n >\n <container-element [ngSwitch]=\"sectionData.button.type\">\n <button *ngSwitchCase=\"'RAISED'\" mat-raised-button>alma</button>\n\n <button *ngSwitchCase=\"'ICON'\" mat-icon-button>alma</button>\n </container-element>\n </div>\n</div>\n", styles: [".expandable-container-list{display:flex;flex-direction:row;padding:1.5rem;gap:1rem}.expandable-container{display:flex;flex-direction:column;gap:1rem;padding:1.5rem;align-items:center}.expandable-background{height:10rem;width:10rem}.expandable-data-container{display:flex;flex-direction:column;gap:.5rem}.expandable-data-container-list{display:grid;grid-template-columns:repeat(3,10rem);gap:.5rem}.expandable-button{display:flex;align-items:end}.expandable-icon{padding:.75rem}\n"] }]
|
|
13515
13570
|
}], ctorParameters: () => [], propDecorators: { sectionData: [{
|
|
13516
13571
|
type: Input
|
|
13517
13572
|
}] } });
|
|
@@ -13591,11 +13646,11 @@ class SmartGridCardComponent {
|
|
|
13591
13646
|
this.onSelect(this.item.id);
|
|
13592
13647
|
}
|
|
13593
13648
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartGridCardComponent, deps: [{ token: ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13594
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartGridCardComponent, selector: "app-smart-grid-card", inputs: { item: "item", smartGrid: "smartGrid", onSelect: "onSelect" }, viewQueries: [{ propertyName: "vcRef", first: true, predicate: ["customCardComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div (click)=\"select()\" class=\"smart-grid-card-template\">\
|
|
13649
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartGridCardComponent, selector: "app-smart-grid-card", inputs: { item: "item", smartGrid: "smartGrid", onSelect: "onSelect" }, viewQueries: [{ propertyName: "vcRef", first: true, predicate: ["customCardComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div (click)=\"select()\" class=\"smart-grid-card-template\">\n <ng-template #customCardComponent></ng-template>\n</div>\n<!-- <div [ngSwitch]=\"smartGrid.dataLayoutDef!.type\">\n <div\n *ngSwitchCase=\"'CARD1'\"\n [ngClass]=\"\n smartGrid.dataLayoutDef!.gridLayout === 'ROW'\n ? 'sm-card-container-list'\n : 'sm-card-container'\n \"\n >\n <smart-icon [icon]=\"item.data.icon\"></smart-icon>\n <div>{{ item.data.title }}</div>\n <div>\n <div>{{ item.data.state }}</div>\n <div>{{ item.data.stateDate }}</div>\n </div>\n <div>\n <div>{{ item.data.lastViewed }}</div>\n <div>{{ item.data.lastViewedDate }}</div>\n </div>\n </div>\n <div\n *ngSwitchCase=\"'CARD2'\"\n [ngClass]=\"\n smartGrid.dataLayoutDef!.gridLayout === 'COLUMN'\n ? 'sm-list-card-container'\n : 'sm-list-card-container-list'\n \"\n >\n <div\n [ngClass]=\"\n smartGrid.dataLayoutDef!.gridLayout === 'COLUMN'\n ? 'sm-list-card-image'\n : 'sm-list-card-image-list'\n \"\n [ngStyle]=\"{\n 'background-image': 'url(' + item.data.img + ')'\n }\"\n >\n <button mat-icon-button title=\"btn\">\n <smart-icon icon=\"favorite_border\"></smart-icon>\n </button>\n </div>\n <div\n [ngClass]=\"\n smartGrid.dataLayoutDef!.gridLayout === 'COLUMN'\n ? 'sm-list-card-data-container'\n : 'sm-list-card-data-container-list'\n \"\n >\n <div class=\"mat-caption color-primary\">\n <b>{{ item.data.title }}</b>\n </div>\n <div\n [ngClass]=\"\n item.data.availability === 'Rendelhet\u0151'\n ? 'sm-list-ordered'\n : '' || item.data.availability === 'K\u00E9szleten'\n ? 'sm-list-instock'\n : 'sm-list-comingsoon'\n \"\n >\n <smart-icon icon=\"{{ item.data.icon }}\"></smart-icon>\n <b>{{ item.data.availability }}</b>\n </div>\n <div>\n <div class=\"sm-list-font-size color-secondary\"></div>\n <div class=\"sm-list-font-size color-secondary\">\n {{ item.data.lastUpdate }}\n </div>\n </div>\n <div>\n <div class=\"sm-list-font-size color-primary\"></div>\n <div class=\"sm-list-price-container\">\n <div\n [ngClass]=\"\n smartGrid.dataLayoutDef!.gridLayout\n ? 'sm-list-card-price'\n : 'sm-list-card-price-list'\n \"\n >\n <div class=\"color-primary\">\n <b>{{ item.data.price }} Ft</b>\n </div>\n <div class=\"sm-list-font-size color-primary\"></div>\n </div>\n <button *ngIf=\"false\" mat-icon-button title=\"btn2\">\n <smart-icon icon=\"{{ item.data.icon }}\" class=\"color-primary\"></smart-icon>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div> -->\n", styles: [".sm-card-container{display:flex;flex-direction:column;padding:1rem}.sm-card-container-list{display:flex;flex-direction:row;padding:1rem;gap:.25rem}.sm-card-title{display:flex}.sm-card-data-fontsize{font-size:10px}.sm-card-data0{border-radius:32px;padding:.1rem .5rem;width:fit-content}.sm-list-card-container{display:flex;flex-direction:column;border-radius:.75rem}.sm-list-card-image{height:9rem;display:flex;flex-direction:column;padding:.75rem;align-items:flex-end;border-radius:.5rem .5rem 0rem 0rem}.sm-list-card-data-container{display:flex;flex-direction:column;text-align:left;padding:.5rem;border-radius:0rem 0rem .5rem .5rem;gap:.25rem}.sm-list-card-price{display:flex;flex-direction:column;border-radius:.25rem;padding:.25rem;width:100%}.sm-list-instock{display:flex;flex-direction:row;align-items:center;border-radius:.125rem;padding:.125rem;width:fit-content;font-size:8px}.sm-list-ordered{display:flex;align-items:center;flex-direction:row;border-radius:.125rem;padding:.25rem;width:fit-content;font-size:8px}.sm-list-comingsoon{align-items:center;display:flex;flex-direction:row;border-radius:.25rem;padding:.25rem;width:fit-content;font-size:8px}.sm-list-font-size{font-size:10px}.sm-list-card-container ::ng-deep .mat-mdc-icon-button{max-width:fit-content!important;max-height:30px!important}.sm-list-card-container-list{display:flex;flex-direction:row;height:10.75rem;padding:1rem;border-radius:.5rem}.sm-list-card-image-list{width:8.5rem;display:flex;flex-direction:column;padding:.75rem;align-items:flex-end;border-radius:.5rem}.sm-list-card-data-container-list{display:flex;flex-direction:column;text-align:left;padding-left:1rem;width:10.5rem}.sm-list-card-price-list{display:flex;flex-direction:column;border-radius:.25rem;padding:.25rem;height:2rem;width:100%}.sm-list-price-container{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:.5rem}.sm-list-card-container-list ::ng-deep .mat-mdc-icon-button{max-width:fit-content!important;max-height:30px!important}\n"] }); }
|
|
13595
13650
|
}
|
|
13596
13651
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartGridCardComponent, decorators: [{
|
|
13597
13652
|
type: Component,
|
|
13598
|
-
args: [{ selector: 'app-smart-grid-card', template: "<div (click)=\"select()\" class=\"smart-grid-card-template\">\
|
|
13653
|
+
args: [{ selector: 'app-smart-grid-card', template: "<div (click)=\"select()\" class=\"smart-grid-card-template\">\n <ng-template #customCardComponent></ng-template>\n</div>\n<!-- <div [ngSwitch]=\"smartGrid.dataLayoutDef!.type\">\n <div\n *ngSwitchCase=\"'CARD1'\"\n [ngClass]=\"\n smartGrid.dataLayoutDef!.gridLayout === 'ROW'\n ? 'sm-card-container-list'\n : 'sm-card-container'\n \"\n >\n <smart-icon [icon]=\"item.data.icon\"></smart-icon>\n <div>{{ item.data.title }}</div>\n <div>\n <div>{{ item.data.state }}</div>\n <div>{{ item.data.stateDate }}</div>\n </div>\n <div>\n <div>{{ item.data.lastViewed }}</div>\n <div>{{ item.data.lastViewedDate }}</div>\n </div>\n </div>\n <div\n *ngSwitchCase=\"'CARD2'\"\n [ngClass]=\"\n smartGrid.dataLayoutDef!.gridLayout === 'COLUMN'\n ? 'sm-list-card-container'\n : 'sm-list-card-container-list'\n \"\n >\n <div\n [ngClass]=\"\n smartGrid.dataLayoutDef!.gridLayout === 'COLUMN'\n ? 'sm-list-card-image'\n : 'sm-list-card-image-list'\n \"\n [ngStyle]=\"{\n 'background-image': 'url(' + item.data.img + ')'\n }\"\n >\n <button mat-icon-button title=\"btn\">\n <smart-icon icon=\"favorite_border\"></smart-icon>\n </button>\n </div>\n <div\n [ngClass]=\"\n smartGrid.dataLayoutDef!.gridLayout === 'COLUMN'\n ? 'sm-list-card-data-container'\n : 'sm-list-card-data-container-list'\n \"\n >\n <div class=\"mat-caption color-primary\">\n <b>{{ item.data.title }}</b>\n </div>\n <div\n [ngClass]=\"\n item.data.availability === 'Rendelhet\u0151'\n ? 'sm-list-ordered'\n : '' || item.data.availability === 'K\u00E9szleten'\n ? 'sm-list-instock'\n : 'sm-list-comingsoon'\n \"\n >\n <smart-icon icon=\"{{ item.data.icon }}\"></smart-icon>\n <b>{{ item.data.availability }}</b>\n </div>\n <div>\n <div class=\"sm-list-font-size color-secondary\"></div>\n <div class=\"sm-list-font-size color-secondary\">\n {{ item.data.lastUpdate }}\n </div>\n </div>\n <div>\n <div class=\"sm-list-font-size color-primary\"></div>\n <div class=\"sm-list-price-container\">\n <div\n [ngClass]=\"\n smartGrid.dataLayoutDef!.gridLayout\n ? 'sm-list-card-price'\n : 'sm-list-card-price-list'\n \"\n >\n <div class=\"color-primary\">\n <b>{{ item.data.price }} Ft</b>\n </div>\n <div class=\"sm-list-font-size color-primary\"></div>\n </div>\n <button *ngIf=\"false\" mat-icon-button title=\"btn2\">\n <smart-icon icon=\"{{ item.data.icon }}\" class=\"color-primary\"></smart-icon>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div> -->\n", styles: [".sm-card-container{display:flex;flex-direction:column;padding:1rem}.sm-card-container-list{display:flex;flex-direction:row;padding:1rem;gap:.25rem}.sm-card-title{display:flex}.sm-card-data-fontsize{font-size:10px}.sm-card-data0{border-radius:32px;padding:.1rem .5rem;width:fit-content}.sm-list-card-container{display:flex;flex-direction:column;border-radius:.75rem}.sm-list-card-image{height:9rem;display:flex;flex-direction:column;padding:.75rem;align-items:flex-end;border-radius:.5rem .5rem 0rem 0rem}.sm-list-card-data-container{display:flex;flex-direction:column;text-align:left;padding:.5rem;border-radius:0rem 0rem .5rem .5rem;gap:.25rem}.sm-list-card-price{display:flex;flex-direction:column;border-radius:.25rem;padding:.25rem;width:100%}.sm-list-instock{display:flex;flex-direction:row;align-items:center;border-radius:.125rem;padding:.125rem;width:fit-content;font-size:8px}.sm-list-ordered{display:flex;align-items:center;flex-direction:row;border-radius:.125rem;padding:.25rem;width:fit-content;font-size:8px}.sm-list-comingsoon{align-items:center;display:flex;flex-direction:row;border-radius:.25rem;padding:.25rem;width:fit-content;font-size:8px}.sm-list-font-size{font-size:10px}.sm-list-card-container ::ng-deep .mat-mdc-icon-button{max-width:fit-content!important;max-height:30px!important}.sm-list-card-container-list{display:flex;flex-direction:row;height:10.75rem;padding:1rem;border-radius:.5rem}.sm-list-card-image-list{width:8.5rem;display:flex;flex-direction:column;padding:.75rem;align-items:flex-end;border-radius:.5rem}.sm-list-card-data-container-list{display:flex;flex-direction:column;text-align:left;padding-left:1rem;width:10.5rem}.sm-list-card-price-list{display:flex;flex-direction:column;border-radius:.25rem;padding:.25rem;height:2rem;width:100%}.sm-list-price-container{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:.5rem}.sm-list-card-container-list ::ng-deep .mat-mdc-icon-button{max-width:fit-content!important;max-height:30px!important}\n"] }]
|
|
13599
13654
|
}], ctorParameters: () => [{ type: ComponentFactoryService }], propDecorators: { item: [{
|
|
13600
13655
|
type: Input
|
|
13601
13656
|
}], smartGrid: [{
|
|
@@ -14553,11 +14608,11 @@ class TableLayoutDefinerComponent {
|
|
|
14553
14608
|
return true;
|
|
14554
14609
|
}
|
|
14555
14610
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TableLayoutDefinerComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$3.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14556
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: TableLayoutDefinerComponent, selector: "app-table-layout-definer", viewQueries: [{ propertyName: "formChildren", predicate: ["forms"], descendants: true }], ngImport: i0, template: "<div class=\"edit-columns-container\">\
|
|
14611
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: TableLayoutDefinerComponent, selector: "app-table-layout-definer", viewQueries: [{ propertyName: "formChildren", predicate: ["forms"], descendants: true }], ngImport: i0, template: "<div class=\"edit-columns-container\">\n <div class=\"example-list\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <div class=\"column-meta-row\" *ngFor=\"let col of forms\" cdkDrag cdkDragLockAxis=\"y\">\n <smart-icon color=\"primary\" icon=\"drag_handle\"></smart-icon>\n <smartform class=\"form\" #forms [smartForm]=\"col\"></smartform>\n <button\n *ngIf=\"isAlwaysShow(col) && (view?.orderedColumnNames)!.length > 1\"\n (click)=\"removeColumn(col)\"\n mat-icon-button\n color=\"primary\"\n >\n <mat-icon>delete_outline</mat-icon>\n </button>\n </div>\n </div>\n <div class=\"add-btn\" *ngIf=\"showAddBtn\">\n <button mat-icon-button color=\"primary\" (click)=\"addColumn()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n <div class=\"button-toolbar\">\n <button mat-button color=\"primary\" (click)=\"cancel()\"> M\u00E9gsem </button>\n <button mat-raised-button color=\"primary\" [disabled]=\"disableSave\" (click)=\"submit()\">\n Ment\u00E9s\n </button>\n </div>\n</div>\n", styles: [".edit-columns-container{padding:1rem;display:flex;flex-direction:column;gap:1rem}.row{display:flex;flex-direction:row;gap:.5rem}.form{flex:1}.fields{padding:1rem 0;display:flex;flex-direction:column;gap:.5rem}.example-list{display:flex;flex-direction:column;gap:1rem;width:500px;max-width:100%;max-height:80vh;overflow:auto}.column-meta-row{display:flex;flex-direction:row;gap:1rem;justify-content:space-between;border:solid 1px #ccc;padding:1rem}.buttonsContainer{display:flex;flex-direction:row;justify-content:space-between}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}h2{margin:0}.button-toolbar{display:flex;flex-direction:row;justify-content:space-between;padding:.5rem}.add-btn{display:flex;flex-direction:column;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i3$2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3$2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: SmartformComponent, selector: "smartform", inputs: ["smartForm"] }] }); }
|
|
14557
14612
|
}
|
|
14558
14613
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TableLayoutDefinerComponent, decorators: [{
|
|
14559
14614
|
type: Component,
|
|
14560
|
-
args: [{ selector: 'app-table-layout-definer', template: "<div class=\"edit-columns-container\">\
|
|
14615
|
+
args: [{ selector: 'app-table-layout-definer', template: "<div class=\"edit-columns-container\">\n <div class=\"example-list\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <div class=\"column-meta-row\" *ngFor=\"let col of forms\" cdkDrag cdkDragLockAxis=\"y\">\n <smart-icon color=\"primary\" icon=\"drag_handle\"></smart-icon>\n <smartform class=\"form\" #forms [smartForm]=\"col\"></smartform>\n <button\n *ngIf=\"isAlwaysShow(col) && (view?.orderedColumnNames)!.length > 1\"\n (click)=\"removeColumn(col)\"\n mat-icon-button\n color=\"primary\"\n >\n <mat-icon>delete_outline</mat-icon>\n </button>\n </div>\n </div>\n <div class=\"add-btn\" *ngIf=\"showAddBtn\">\n <button mat-icon-button color=\"primary\" (click)=\"addColumn()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n <div class=\"button-toolbar\">\n <button mat-button color=\"primary\" (click)=\"cancel()\"> M\u00E9gsem </button>\n <button mat-raised-button color=\"primary\" [disabled]=\"disableSave\" (click)=\"submit()\">\n Ment\u00E9s\n </button>\n </div>\n</div>\n", styles: [".edit-columns-container{padding:1rem;display:flex;flex-direction:column;gap:1rem}.row{display:flex;flex-direction:row;gap:.5rem}.form{flex:1}.fields{padding:1rem 0;display:flex;flex-direction:column;gap:.5rem}.example-list{display:flex;flex-direction:column;gap:1rem;width:500px;max-width:100%;max-height:80vh;overflow:auto}.column-meta-row{display:flex;flex-direction:row;gap:1rem;justify-content:space-between;border:solid 1px #ccc;padding:1rem}.buttonsContainer{display:flex;flex-direction:row;justify-content:space-between}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}h2{margin:0}.button-toolbar{display:flex;flex-direction:row;justify-content:space-between;padding:.5rem}.add-btn{display:flex;flex-direction:column;align-items:center}\n"] }]
|
|
14561
14616
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
14562
14617
|
type: Inject,
|
|
14563
14618
|
args: [MAT_DIALOG_DATA]
|
|
@@ -14953,11 +15008,11 @@ class SmartFilterSimpleFieldComponent {
|
|
|
14953
15008
|
return option;
|
|
14954
15009
|
}
|
|
14955
15010
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterSimpleFieldComponent, deps: [{ token: SmartFilterService }, { token: ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14956
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterSimpleFieldComponent, selector: "smart-filter-simple-field", inputs: { operationTranslator: "operationTranslator", filterExpressionField: "filterExpressionField", showPossibleActions: "showPossibleActions" }, viewQueries: [{ propertyName: "vcRefForm", first: true, predicate: ["form"], descendants: true, read: ViewContainerRef }, { propertyName: "simpleFieldChildren", predicate: ["simpleField"], descendants: true }], ngImport: i0, template: "<div class=\"smart-filter-simple-field-container\">\
|
|
15011
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterSimpleFieldComponent, selector: "smart-filter-simple-field", inputs: { operationTranslator: "operationTranslator", filterExpressionField: "filterExpressionField", showPossibleActions: "showPossibleActions" }, viewQueries: [{ propertyName: "vcRefForm", first: true, predicate: ["form"], descendants: true, read: ViewContainerRef }, { propertyName: "simpleFieldChildren", predicate: ["simpleField"], descendants: true }], ngImport: i0, template: "<div class=\"smart-filter-simple-field-container\">\n <div class=\"smart-filter-simple-field-form-widget\">\n <div\n class=\"smart-filter-simple-field-form-widget-row\"\n *ngIf=\"showPossibleActions\"\n >\n <p>({{ currentOperation }})</p>\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n aria-label=\"Example icon-button with a menu\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let option of filterExpressionField.possibleOperations\"\n (click)=\"optionSelected(option)\"\n >\n <span>\n {{ getOptionLabel(option) }}\n </span>\n </button>\n </mat-menu>\n </div>\n <ng-template #form></ng-template>\n </div>\n</div>\n", styles: [".smart-filter-simple-field-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:1rem}.smart-filter-simple-field-form-widget{padding:1rem;border-radius:1rem;display:flex;flex-direction:column}.smart-filter-simple-field-form-widget-row{display:flex;flex-direction:row;justify-content:space-between}.smart-filter-simple-field-form-widget-row p{color:#00000042}.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-icon-button{height:24px;width:24px}.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-button .mat-button-wrapper>*,.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-unelevated-button .mat-button-wrapper>*,.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-outlined-button .mat-button-wrapper>*,.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-raised-button .mat-button-wrapper>*,.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-icon-button .mat-button-wrapper>*,.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-fab .mat-button-wrapper>*,.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-mini-fab .mat-button-wrapper>*{vertical-align:inherit!important}.smart-filter-simple-field-subfields-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:1rem}.smart-filter-simple-field-container ::ng-deep h4{margin:0}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }] }); }
|
|
14957
15012
|
}
|
|
14958
15013
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterSimpleFieldComponent, decorators: [{
|
|
14959
15014
|
type: Component,
|
|
14960
|
-
args: [{ selector: 'smart-filter-simple-field', template: "<div class=\"smart-filter-simple-field-container\">\
|
|
15015
|
+
args: [{ selector: 'smart-filter-simple-field', template: "<div class=\"smart-filter-simple-field-container\">\n <div class=\"smart-filter-simple-field-form-widget\">\n <div\n class=\"smart-filter-simple-field-form-widget-row\"\n *ngIf=\"showPossibleActions\"\n >\n <p>({{ currentOperation }})</p>\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n aria-label=\"Example icon-button with a menu\"\n >\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let option of filterExpressionField.possibleOperations\"\n (click)=\"optionSelected(option)\"\n >\n <span>\n {{ getOptionLabel(option) }}\n </span>\n </button>\n </mat-menu>\n </div>\n <ng-template #form></ng-template>\n </div>\n</div>\n", styles: [".smart-filter-simple-field-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:1rem}.smart-filter-simple-field-form-widget{padding:1rem;border-radius:1rem;display:flex;flex-direction:column}.smart-filter-simple-field-form-widget-row{display:flex;flex-direction:row;justify-content:space-between}.smart-filter-simple-field-form-widget-row p{color:#00000042}.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-icon-button{height:24px;width:24px}.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-button .mat-button-wrapper>*,.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-unelevated-button .mat-button-wrapper>*,.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-outlined-button .mat-button-wrapper>*,.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-raised-button .mat-button-wrapper>*,.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-icon-button .mat-button-wrapper>*,.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-fab .mat-button-wrapper>*,.smart-filter-simple-field-form-widget ::ng-deep .mat-mdc-mini-fab .mat-button-wrapper>*{vertical-align:inherit!important}.smart-filter-simple-field-subfields-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:1rem}.smart-filter-simple-field-container ::ng-deep h4{margin:0}\n"] }]
|
|
14961
15016
|
}], ctorParameters: () => [{ type: SmartFilterService }, { type: ComponentFactoryService }], propDecorators: { simpleFieldChildren: [{
|
|
14962
15017
|
type: ViewChildren,
|
|
14963
15018
|
args: ['simpleField']
|
|
@@ -15001,11 +15056,11 @@ class SmartFilterSimpleComponent {
|
|
|
15001
15056
|
this.service.shouldSubmit.complete();
|
|
15002
15057
|
}
|
|
15003
15058
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterSimpleComponent, deps: [{ token: SmartFilterService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15004
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterSimpleComponent, selector: "smart-filter-simple", viewQueries: [{ propertyName: "simpleFieldChildren", predicate: ["simpleField"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"smartFilter\" class=\"smart-simple-fields-container\">\
|
|
15059
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterSimpleComponent, selector: "smart-filter-simple", viewQueries: [{ propertyName: "simpleFieldChildren", predicate: ["simpleField"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"smartFilter\" class=\"smart-simple-fields-container\">\n <div *ngFor=\"let filterExpressionField of smartFilter.data; let i = index\">\n <smart-filter-simple-field\n #simpleField\n [filterExpressionField]=\"filterExpressionField\"\n [operationTranslator]=\"smartFilter.operationTranslator\"\n [showPossibleActions]=\"smartFilter.showPossibleActions\"\n ></smart-filter-simple-field>\n <div *ngFor=\"let subfilterExpressionField of filterExpressionField.subFieldList?.filters\">\n <smart-filter-simple-field\n #simpleField\n [filterExpressionField]=\"filterExpressionField\"\n [operationTranslator]=\"smartFilter.operationTranslator\"\n [showPossibleActions]=\"smartFilter.showPossibleActions\"\n ></smart-filter-simple-field>\n </div>\n </div>\n</div>\n", styles: [".smart-simple-fields-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:1rem;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SmartFilterSimpleFieldComponent, selector: "smart-filter-simple-field", inputs: ["operationTranslator", "filterExpressionField", "showPossibleActions"] }] }); }
|
|
15005
15060
|
}
|
|
15006
15061
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterSimpleComponent, decorators: [{
|
|
15007
15062
|
type: Component,
|
|
15008
|
-
args: [{ selector: "smart-filter-simple", template: "<div *ngIf=\"smartFilter\" class=\"smart-simple-fields-container\">\
|
|
15063
|
+
args: [{ selector: "smart-filter-simple", template: "<div *ngIf=\"smartFilter\" class=\"smart-simple-fields-container\">\n <div *ngFor=\"let filterExpressionField of smartFilter.data; let i = index\">\n <smart-filter-simple-field\n #simpleField\n [filterExpressionField]=\"filterExpressionField\"\n [operationTranslator]=\"smartFilter.operationTranslator\"\n [showPossibleActions]=\"smartFilter.showPossibleActions\"\n ></smart-filter-simple-field>\n <div *ngFor=\"let subfilterExpressionField of filterExpressionField.subFieldList?.filters\">\n <smart-filter-simple-field\n #simpleField\n [filterExpressionField]=\"filterExpressionField\"\n [operationTranslator]=\"smartFilter.operationTranslator\"\n [showPossibleActions]=\"smartFilter.showPossibleActions\"\n ></smart-filter-simple-field>\n </div>\n </div>\n</div>\n", styles: [".smart-simple-fields-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:1rem;justify-content:center}\n"] }]
|
|
15009
15064
|
}], ctorParameters: () => [{ type: SmartFilterService }], propDecorators: { simpleFieldChildren: [{
|
|
15010
15065
|
type: ViewChildren,
|
|
15011
15066
|
args: ["simpleField"]
|
|
@@ -15032,11 +15087,11 @@ class SmartFilterComponent {
|
|
|
15032
15087
|
return await this.service.submit();
|
|
15033
15088
|
}
|
|
15034
15089
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterComponent, deps: [{ token: SmartFilterService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15035
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterComponent, selector: "smart-filter", inputs: { filter: "filter" }, providers: [SmartFilterService], usesOnChanges: true, ngImport: i0, template: "<smart-filter-simple *ngIf=\"filter\" #simpleFilter></smart-filter-simple>\
|
|
15090
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterComponent, selector: "smart-filter", inputs: { filter: "filter" }, providers: [SmartFilterService], usesOnChanges: true, ngImport: i0, template: "<smart-filter-simple *ngIf=\"filter\" #simpleFilter></smart-filter-simple>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SmartFilterSimpleComponent, selector: "smart-filter-simple" }] }); }
|
|
15036
15091
|
}
|
|
15037
15092
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterComponent, decorators: [{
|
|
15038
15093
|
type: Component,
|
|
15039
|
-
args: [{ selector: 'smart-filter', providers: [SmartFilterService], template: "<smart-filter-simple *ngIf=\"filter\" #simpleFilter></smart-filter-simple>\
|
|
15094
|
+
args: [{ selector: 'smart-filter', providers: [SmartFilterService], template: "<smart-filter-simple *ngIf=\"filter\" #simpleFilter></smart-filter-simple>\n" }]
|
|
15040
15095
|
}], ctorParameters: () => [{ type: SmartFilterService }], propDecorators: { filter: [{
|
|
15041
15096
|
type: Input
|
|
15042
15097
|
}] } });
|
|
@@ -15118,11 +15173,11 @@ class ExpandedRowRendererComponent {
|
|
|
15118
15173
|
this.componentRef.setInput('smartGrid', this.smartGrid);
|
|
15119
15174
|
}
|
|
15120
15175
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ExpandedRowRendererComponent, deps: [{ token: ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15121
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ExpandedRowRendererComponent, selector: "lib-expanded-row-renderer-component", inputs: { rowId: "rowId", rowExpander: "rowExpander", expandedComponent: "expandedComponent", smartGrid: "smartGrid" }, viewQueries: [{ propertyName: "vcRef", first: true, predicate: ["component"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<ng-template #component></ng-template>\
|
|
15176
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ExpandedRowRendererComponent, selector: "lib-expanded-row-renderer-component", inputs: { rowId: "rowId", rowExpander: "rowExpander", expandedComponent: "expandedComponent", smartGrid: "smartGrid" }, viewQueries: [{ propertyName: "vcRef", first: true, predicate: ["component"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<ng-template #component></ng-template>\n", styles: [""] }); }
|
|
15122
15177
|
}
|
|
15123
15178
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ExpandedRowRendererComponent, decorators: [{
|
|
15124
15179
|
type: Component,
|
|
15125
|
-
args: [{ selector: 'lib-expanded-row-renderer-component', template: "<ng-template #component></ng-template>\
|
|
15180
|
+
args: [{ selector: 'lib-expanded-row-renderer-component', template: "<ng-template #component></ng-template>\n" }]
|
|
15126
15181
|
}], ctorParameters: () => [{ type: ComponentFactoryService }], propDecorators: { vcRef: [{
|
|
15127
15182
|
type: ViewChild,
|
|
15128
15183
|
args: ['component', { read: ViewContainerRef }]
|
|
@@ -15211,11 +15266,11 @@ class ExpandableSectionComponent {
|
|
|
15211
15266
|
button.callback(button.args, element);
|
|
15212
15267
|
}
|
|
15213
15268
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ExpandableSectionComponent, deps: [{ token: ComponentFactoryService }, { token: COMPONENT_LIBRARY }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15214
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: ExpandableSectionComponent, selector: "smart-expandable-section", inputs: { data: "data", index: "index" }, viewQueries: [{ propertyName: "vcRef", first: true, predicate: ["renderComponent"], descendants: true, read: ViewContainerRef }, { propertyName: "vcRefheader", first: true, predicate: ["headerComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"section-container\" [ngClass]=\"data.cssClass ?? ''\">\
|
|
15269
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: ExpandableSectionComponent, selector: "smart-expandable-section", inputs: { data: "data", index: "index" }, viewQueries: [{ propertyName: "vcRef", first: true, predicate: ["renderComponent"], descendants: true, read: ViewContainerRef }, { propertyName: "vcRefheader", first: true, predicate: ["headerComponent"], descendants: true, read: ViewContainerRef }, { propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }], ngImport: i0, template: "<div class=\"section-container\" [ngClass]=\"data.cssClass ?? ''\">\n @if (compLib === componentLibrary.PRIMENG) {\n <p-accordion *ngIf=\"!data.headerComponent\">\n <p-accordionTab>\n <ng-template pTemplate=\"header\">\n <div class=\"headerBar\">\n <span>{{ data.title }}</span>\n <smart-ui-action-toolbar #toolbar [id]=\"data.headerToolbarId\"></smart-ui-action-toolbar>\n </div>\n </ng-template>\n\n <ng-template #renderComponent></ng-template>\n </p-accordionTab>\n </p-accordion>\n } @else {\n <mat-expansion-panel\n [expanded]=\"data.isExpanded\"\n (opened)=\"onStateChange(true)\"\n (closed)=\"onStateChange(false)\"\n [disabled]=\"!!data.isDisabled\"\n >\n <mat-expansion-panel-header *ngIf=\"data.headerComponent\">\n <ng-template #headerComponent></ng-template>\n </mat-expansion-panel-header>\n <mat-expansion-panel-header *ngIf=\"!data.headerComponent\">\n <mat-panel-title>\n <div class=\"headerBar\">\n <span>{{ data.title }}</span>\n <smart-ui-action-toolbar #toolbar [id]=\"data.headerToolbarId\"></smart-ui-action-toolbar>\n </div>\n </mat-panel-title>\n <div class=\"btn-container\" *ngIf=\"data.button\">\n <button\n *ngIf=\"data.button.type === type().BUTTON\"\n class=\"btn\"\n (click)=\"action(data.button, $event)\"\n mat-stroked-button\n >\n <smart-icon\n *ngIf=\"\n data.button.icon &&\n (!data.button.iconPosition || data.button.iconPosition === position().PRE)\n \"\n [icon]=\"data.button.icon\"\n ></smart-icon>\n {{ data.button.label }}\n <smart-icon\n *ngIf=\"data.button.icon && data.button.iconPosition === position().POST\"\n [icon]=\"data.button.icon\"\n ></smart-icon>\n </button>\n <button\n *ngIf=\"data.button.type === type().MENU\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"$event.stopPropagation()\"\n color=\"{{ data.button.color }}\"\n >\n <smart-icon\n *ngIf=\"\n data.button.icon &&\n (!data.button.iconPosition || data.button.iconPosition === position().PRE)\n \"\n [icon]=\"data.button.icon\"\n ></smart-icon\n >{{ data.button.label }}\n <smart-icon\n *ngIf=\"data.button.icon && data.button.iconPosition === position().POST\"\n [icon]=\"data.button.icon\"\n ></smart-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button\n *ngFor=\"let button of data.button.menuItemButtons\"\n (click)=\"customButtonClicked($event, button, data.index)\"\n mat-menu-item\n >\n <smart-icon\n *ngIf=\"\n button.icon && (!button.iconPosition || button.iconPosition === position().PRE)\n \"\n [icon]=\"button.icon\"\n ></smart-icon\n >{{ button.label }}\n <smart-icon\n *ngIf=\"button.icon && button.iconPosition === position().POST\"\n [icon]=\"button.icon\"\n ></smart-icon>\n </button>\n </mat-menu>\n </div>\n </mat-expansion-panel-header>\n <ng-template #renderComponent></ng-template>\n </mat-expansion-panel>\n }\n</div>\n", styles: [":host::ng-deep .mat-expansion-panel-header{background:var(--primary-lighter-color)}:host::ng-deep .mat-expansion-panel-header-title{color:var(--primary-color)}:host::ng-deep .btn-container{margin:1em 3em 1em 1em}:host::ng-deep .btn{border-radius:24px}:host ::ng-deep .headerBar{flex:1;display:flex;justify-content:space-between;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i3$4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i3$4.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i7.Accordion, selector: "p-accordion", inputs: ["multiple", "style", "styleClass", "expandIcon", "collapseIcon", "activeIndex", "selectOnFocus", "headerAriaLevel"], outputs: ["onClose", "onOpen", "activeIndexChange"] }, { kind: "component", type: i7.AccordionTab, selector: "p-accordionTab", inputs: ["id", "header", "headerStyle", "tabStyle", "contentStyle", "tabStyleClass", "headerStyleClass", "contentStyleClass", "disabled", "cache", "transitionOptions", "iconPos", "selected", "headerAriaLevel"], outputs: ["selectedChange"] }, { kind: "directive", type: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }] }); }
|
|
15215
15270
|
}
|
|
15216
15271
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ExpandableSectionComponent, decorators: [{
|
|
15217
15272
|
type: Component,
|
|
15218
|
-
args: [{ selector: 'smart-expandable-section', template: "<div class=\"section-container\" [ngClass]=\"data.cssClass ?? ''\">\
|
|
15273
|
+
args: [{ selector: 'smart-expandable-section', template: "<div class=\"section-container\" [ngClass]=\"data.cssClass ?? ''\">\n @if (compLib === componentLibrary.PRIMENG) {\n <p-accordion *ngIf=\"!data.headerComponent\">\n <p-accordionTab>\n <ng-template pTemplate=\"header\">\n <div class=\"headerBar\">\n <span>{{ data.title }}</span>\n <smart-ui-action-toolbar #toolbar [id]=\"data.headerToolbarId\"></smart-ui-action-toolbar>\n </div>\n </ng-template>\n\n <ng-template #renderComponent></ng-template>\n </p-accordionTab>\n </p-accordion>\n } @else {\n <mat-expansion-panel\n [expanded]=\"data.isExpanded\"\n (opened)=\"onStateChange(true)\"\n (closed)=\"onStateChange(false)\"\n [disabled]=\"!!data.isDisabled\"\n >\n <mat-expansion-panel-header *ngIf=\"data.headerComponent\">\n <ng-template #headerComponent></ng-template>\n </mat-expansion-panel-header>\n <mat-expansion-panel-header *ngIf=\"!data.headerComponent\">\n <mat-panel-title>\n <div class=\"headerBar\">\n <span>{{ data.title }}</span>\n <smart-ui-action-toolbar #toolbar [id]=\"data.headerToolbarId\"></smart-ui-action-toolbar>\n </div>\n </mat-panel-title>\n <div class=\"btn-container\" *ngIf=\"data.button\">\n <button\n *ngIf=\"data.button.type === type().BUTTON\"\n class=\"btn\"\n (click)=\"action(data.button, $event)\"\n mat-stroked-button\n >\n <smart-icon\n *ngIf=\"\n data.button.icon &&\n (!data.button.iconPosition || data.button.iconPosition === position().PRE)\n \"\n [icon]=\"data.button.icon\"\n ></smart-icon>\n {{ data.button.label }}\n <smart-icon\n *ngIf=\"data.button.icon && data.button.iconPosition === position().POST\"\n [icon]=\"data.button.icon\"\n ></smart-icon>\n </button>\n <button\n *ngIf=\"data.button.type === type().MENU\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"$event.stopPropagation()\"\n color=\"{{ data.button.color }}\"\n >\n <smart-icon\n *ngIf=\"\n data.button.icon &&\n (!data.button.iconPosition || data.button.iconPosition === position().PRE)\n \"\n [icon]=\"data.button.icon\"\n ></smart-icon\n >{{ data.button.label }}\n <smart-icon\n *ngIf=\"data.button.icon && data.button.iconPosition === position().POST\"\n [icon]=\"data.button.icon\"\n ></smart-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button\n *ngFor=\"let button of data.button.menuItemButtons\"\n (click)=\"customButtonClicked($event, button, data.index)\"\n mat-menu-item\n >\n <smart-icon\n *ngIf=\"\n button.icon && (!button.iconPosition || button.iconPosition === position().PRE)\n \"\n [icon]=\"button.icon\"\n ></smart-icon\n >{{ button.label }}\n <smart-icon\n *ngIf=\"button.icon && button.iconPosition === position().POST\"\n [icon]=\"button.icon\"\n ></smart-icon>\n </button>\n </mat-menu>\n </div>\n </mat-expansion-panel-header>\n <ng-template #renderComponent></ng-template>\n </mat-expansion-panel>\n }\n</div>\n", styles: [":host::ng-deep .mat-expansion-panel-header{background:var(--primary-lighter-color)}:host::ng-deep .mat-expansion-panel-header-title{color:var(--primary-color)}:host::ng-deep .btn-container{margin:1em 3em 1em 1em}:host::ng-deep .btn{border-radius:24px}:host ::ng-deep .headerBar{flex:1;display:flex;justify-content:space-between;align-items:center}\n"] }]
|
|
15219
15274
|
}], ctorParameters: () => [{ type: ComponentFactoryService }, { type: ComponentLibrary, decorators: [{
|
|
15220
15275
|
type: Inject,
|
|
15221
15276
|
args: [COMPONENT_LIBRARY]
|
|
@@ -15229,6 +15284,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
15229
15284
|
}], vcRefheader: [{
|
|
15230
15285
|
type: ViewChild,
|
|
15231
15286
|
args: ['headerComponent', { read: ViewContainerRef }]
|
|
15287
|
+
}], toolbar: [{
|
|
15288
|
+
type: ViewChild,
|
|
15289
|
+
args: ['toolbar']
|
|
15232
15290
|
}] } });
|
|
15233
15291
|
|
|
15234
15292
|
class SmartGridComponent {
|
|
@@ -16186,11 +16244,11 @@ class SmartGridComponent {
|
|
|
16186
16244
|
return row.id;
|
|
16187
16245
|
}
|
|
16188
16246
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartGridComponent, deps: [{ token: SmartGridService }, { token: ComponentFactoryService }, { token: i1$3.MatDialog }, { token: i0.Injector }, { token: UiActionDescriptorService }, { token: SmartDatePipe }, { token: SmartDateTimePipe }, { token: SmartTimePipe }, { token: COMPONENT_LIBRARY }, { token: 'gridMenuIcon' }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16189
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartGridComponent, selector: "smart-grid", inputs: { smartGrid: "smartGrid", uuid: "uuid", dev: "dev" }, host: { properties: { "attr.data-testid": "this.testId" } }, providers: [SmartGridService, SmartDatePipe, SmartDateTimePipe, SmartTimePipe], viewQueries: [{ propertyName: "vcRefTable", first: true, predicate: ["table"], descendants: true, read: ViewContainerRef }, { propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "_headerToolbar", first: true, predicate: ["headerToolbar"], descendants: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true }, { propertyName: "expandedRowsComps", predicate: ExpandedRowRendererComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if(compLib === componentLibrary.PRIMENG) {\r\n\r\n<div *ngIf=\"smartGrid\" class=\"primeSmartGrid-container\">\r\n <div class=\"smart-grid-toolbar\">\r\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\r\n </div>\r\n <p-table\r\n *ngIf=\"!smartGrid.layoutDef || smartGrid.layoutDef === layoutDef().TABLE\"\r\n #pTable\r\n [value]=\"smartGrid.gridModel.page.rows!\"\r\n (onSort)=\"gridSort($event)\"\r\n [customSort]=\"true\"\r\n [sortMode]=\"'multiple'\"\r\n [lazy]=\"true\"\r\n (onLazyLoad)=\"lazyLoad($event)\"\r\n [reorderableColumns]=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\"\r\n [columns]=\"columns\"\r\n (onColReorder)=\"onColOrder($event)\"\r\n (onRowSelect)=\"onRowSelect($event)\"\r\n (onRowUnselect)=\"onRowUnselect($event)\"\r\n [selection]=\"selectedRows\"\r\n (onHeaderCheckboxToggle)=\"onSelectAllRow($event)\"\r\n dataKey=\"id\"\r\n [expandedRowKeys]=\"expandedRows\"\r\n [rowExpandMode]=\"'multiple'\"\r\n [rowTrackBy]=\"rowTrackByFn\"\r\n >\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"tableCaption\">\r\n <div *ngIf=\"smartGrid.gridModel.title\" class=\"captionTitle\">\r\n {{ smartGrid.gridModel.title }}\r\n </div>\r\n <div *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <p-multiSelect\r\n display=\"chip\"\r\n [options]=\"smartGrid.gridModel.view?.descriptor?.columns\"\r\n optionLabel=\"label\"\r\n [(ngModel)]=\"columns\"\r\n selectedItemsLabel=\"{0} columns selected\"\r\n [style]=\"{ 'min-width': '200px' }\"\r\n placeholder=\"Choose Columns\"\r\n (onChange)=\"headerChange($event)\"\r\n />\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n @if (smartGrid.gridModel.view?.descriptor?.showEditColumns) {\r\n <th\r\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n >\r\n <p-tableHeaderCheckbox />\r\n </th>\r\n <th\r\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n ></th>\r\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\" pReorderableColumn>\r\n <p-sortIcon [field]=\"col.propertyName\" />\r\n {{ col.label }}\r\n </th>\r\n } @else {\r\n <th\r\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n >\r\n <p-tableHeaderCheckbox />\r\n </th>\r\n <th\r\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n ></th>\r\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\">\r\n <p-sortIcon [field]=\"col.propertyName\" />\r\n {{ col.label }}\r\n </th>\r\n }\r\n\r\n <th>\r\n <smart-ui-action-toolbar\r\n class=\"headerToolbar\"\r\n #headerToolbar\r\n [id]=\"'header_not_initialized'\"\r\n ></smart-ui-action-toolbar>\r\n </th>\r\n <th *ngIf=\"smartGrid.expandable\"> </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row let-expanded=\"expanded\">\r\n <tr\r\n [ngClass]=\"getStyle(row)\"\r\n [class.rowExpanded]=\"expanded\"\r\n (dblclick)=\"onDoubleClick(row)\"\r\n *ngIf=\"row && row.data\"\r\n >\r\n <td *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\r\n <p-tableCheckbox *ngIf=\"row.selectable != false\" [value]=\"row\" />\r\n </td>\r\n <td *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\r\n <p-tableRadioButton [value]=\"row\" />\r\n </td>\r\n <td *ngFor=\"let col of smartGrid?.gridModel?.view?.orderedColumnNames\">\r\n <div *ngIf=\"row.icons[col]\">\r\n <div class=\"smart-table-icon-container\">\r\n <div *ngFor=\"let ir of getImageResourceIcons(row, col)\">\r\n <smart-icon [imageResource]=\"ir\"> </smart-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"showCellToolbar(row, col)\">\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowColumnAction(row, col)\"\r\n ></smart-ui-action-toolbar>\r\n </ng-container>\r\n\r\n <div *ngIf=\"!row.icons[col]\" [innerHtml]=\"getColValue(col, row)\"> </div>\r\n </td>\r\n <td>\r\n <div class=\"menu-button\">\r\n @if(showCellToolbar(row, defaultActionToolbarId)){\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowColumnAction(row, defaultActionToolbarId)\"\r\n ></smart-ui-action-toolbar>\r\n }\r\n <p-button\r\n [rounded]=\"true\"\r\n [text]=\"true\"\r\n *ngIf=\"shouldShowOptionsButton(row)\"\r\n (onClick)=\"onOptionsClick($event, row)\"\r\n >\r\n <smart-icon icon=\"ellipsis-v\"></smart-icon>\r\n </p-button>\r\n </div>\r\n </td>\r\n <td *ngIf=\"smartGrid.expandable\">\r\n <p-button\r\n type=\"button\"\r\n pRipple\r\n [pRowToggler]=\"row\"\r\n [text]=\"true\"\r\n severity=\"secondary\"\r\n [rounded]=\"true\"\r\n [icon]=\"expanded ? 'pi pi-chevron-up' : 'pi pi-chevron-down'\"\r\n />\r\n </td>\r\n </tr>\r\n </ng-template>\r\n @if(smartGrid.expandable){\r\n <ng-template pTemplate=\"rowexpansion\" let-row>\r\n <tr>\r\n <td colspan=\"100%\">\r\n <lib-expanded-row-renderer-component\r\n [rowId]=\"row.id\"\r\n [rowExpander]=\"this\"\r\n [expandedComponent]=\"smartGrid.expandedComponent\"\r\n [smartGrid]=\"this.smartGrid\"\r\n ></lib-expanded-row-renderer-component>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n }\r\n </p-table>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n [onSelect]=\"onSelect.bind(this)\"\r\n ></app-smart-grid-card>\r\n </div>\r\n<div *ngIf=\"smartGrid.paginator\" class=\"paginator-row\">\r\n <div class=\"paginator-wrap\">\r\n <p-paginator\r\n [first]=\"pageIndex!\"\r\n [totalRecords]=\"length!\"\r\n [rows]=\"pageSize\"\r\n [rowsPerPageOptions]=\"pageSizeOptions\"\r\n currentPageReportTemplate=\"{first} - {last} / {totalRecords}\"\r\n (onPageChange)=\"onPrimeChangePage($event)\"\r\n [showCurrentPageReport]=\"true\"\r\n dropdownAppendTo=\"body\"\r\n ></p-paginator>\r\n </div>\r\n\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-refresh\"\r\n class=\"p-button-text\"\r\n pTooltip=\"Friss\u00EDt\u00E9s\"\r\n (click)=\"refreshPartialResults()\"\r\n *ngIf=\"smartGrid.gridModel?.refreshEnabled\"\r\n ></button>\r\n</div>\r\n <p-menu #menu [model]=\"menuButtons\" [popup]=\"true\" appendTo=\"body\"> </p-menu>\r\n</div>\r\n}@else {\r\n<div *ngIf=\"smartGrid\" class=\"smartGrid-container\">\r\n <div class=\"smart-grid-toolbar\">\r\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\r\n <button\r\n (click)=\"editColumns()\"\r\n mat-mini-fab\r\n color=\"text-primary\"\r\n *ngIf=\"smartGrid.showEditColumns\"\r\n >\r\n <mat-icon aria-hidden=\"false\" aria-label=\"Columns\" class=\"smart-grid-edit-icon\"\r\n >view_columns</mat-icon\r\n >\r\n </button>\r\n </div>\r\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\r\n <div class=\"smartGridContent\">\r\n <div>\r\n <div *ngIf=\"smartGrid.showResultCount\">\r\n <div class=\"smartGrid-data-number\">\r\n {{ smartGrid.gridModel.totalRowCount }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"smart-grid-table-container\">\r\n <ng-template #table></ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"smartGrid.layoutDef === layoutDef().EXPANDABLE\">\r\n <smart-expandable-section\r\n #gridExpandableSection\r\n *ngFor=\"let expandableSection of expandableSections\"\r\n [data]=\"expandableSection\"\r\n ></smart-expandable-section>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n [onSelect]=\"onSelect.bind(this)\"\r\n ></app-smart-grid-card>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().TREE && treeControl\"\r\n class=\"tree-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodeToggle\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button mat-icon-button disabled class=\"tree-button\"></button>\r\n <mat-checkbox\r\n class=\"checklist-leaf-node\"\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChild\"\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button\r\n mat-icon-button\r\n matTreeNodeToggle\r\n class=\"tree-button\"\r\n [attr.aria-label]=\"'Toggle ' + node.item\"\r\n >\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n<div *ngIf=\"smartGrid.paginator\" class=\"paginator-row-material\">\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-refresh\"\r\n class=\"p-button-text\"\r\n pTooltip=\"Friss\u00EDt\u00E9s\"\r\n (click)=\"refreshPartialResults()\"\r\n *ngIf=\"smartGrid.gridModel?.refreshEnabled\"\r\n ></button>\r\n <mat-paginator\r\n *ngIf=\"smartGrid.paginator && !treeControl\"\r\n #paginator\r\n [length]=\"length\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onChangePage($event)\"\r\n ></mat-paginator>\r\n </div>\r\n</div>\r\n}\r\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.primeSmartGrid-container{display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-card-container{height:auto;border:1px solid black;border-radius:8px}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.menu-button{display:flex;flex-direction:row;justify-content:flex-end;text-align:-webkit-right;align-items:center}.headerToolbar ::ng-deep .uiActionButtonsContainer{justify-content:flex-end}.tableCaption{display:flex;flex-direction:row;justify-content:space-between}.tableCaption:has(*){padding:.5rem;border-top:1px solid #e9ecef;border-bottom:1px solid #e9ecef}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th,:host ::ng-deep .p-datatable .p-datatable-header{padding:.5rem}.captionTitle{font-size:1.5rem;align-content:center}:host ::ng-deep .p-datatable-header:has(.tableCaption){padding:0;border:unset}.paginator-row{display:flex;align-items:center;align-self:center;gap:.25rem}.paginator-row-material{display:flex;align-items:center;align-self:flex-end;gap:.25rem}.paginator-wrap{flex:0 0 auto;min-width:0}:host ::ng-deep .paginator-wrap .p-paginator{width:auto}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: i10$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "directive", type: i11$1.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i11$1.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i11$1.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i11$1.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i11$1.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "component", type: i4$3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "directive", type: ComparableMultiselectDirective, selector: "p-multiSelect", inputs: ["compareWith"] }, { kind: "component", type: i16$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i16$1.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i16$1.RowToggler, selector: "[pRowToggler]", inputs: ["pRowToggler", "pRowTogglerDisabled"] }, { kind: "directive", type: i16$1.ReorderableColumn, selector: "[pReorderableColumn]", inputs: ["pReorderableColumnDisabled"] }, { kind: "component", type: i16$1.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i16$1.TableRadioButton, selector: "p-tableRadioButton", inputs: ["disabled", "value", "index", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i16$1.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i16$1.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i19$1.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i20$1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i21$1.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$6.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: SmartGridCardComponent, selector: "app-smart-grid-card", inputs: ["item", "smartGrid", "onSelect"] }, { kind: "component", type: ExpandedRowRendererComponent, selector: "lib-expanded-row-renderer-component", inputs: ["rowId", "rowExpander", "expandedComponent", "smartGrid"] }] }); }
|
|
16247
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartGridComponent, selector: "smart-grid", inputs: { smartGrid: "smartGrid", uuid: "uuid", dev: "dev" }, host: { properties: { "attr.data-testid": "this.testId" } }, providers: [SmartGridService, SmartDatePipe, SmartDateTimePipe, SmartTimePipe], viewQueries: [{ propertyName: "vcRefTable", first: true, predicate: ["table"], descendants: true, read: ViewContainerRef }, { propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "_headerToolbar", first: true, predicate: ["headerToolbar"], descendants: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true }, { propertyName: "expandedRowsComps", predicate: ExpandedRowRendererComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if(compLib === componentLibrary.PRIMENG) {\n\n<div *ngIf=\"smartGrid\" class=\"primeSmartGrid-container\">\n <div class=\"smart-grid-toolbar\">\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\n </div>\n <p-table\n *ngIf=\"!smartGrid.layoutDef || smartGrid.layoutDef === layoutDef().TABLE\"\n #pTable\n [value]=\"smartGrid.gridModel.page.rows!\"\n (onSort)=\"gridSort($event)\"\n [customSort]=\"true\"\n [sortMode]=\"'multiple'\"\n [lazy]=\"true\"\n (onLazyLoad)=\"lazyLoad($event)\"\n [reorderableColumns]=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\"\n [columns]=\"columns\"\n (onColReorder)=\"onColOrder($event)\"\n (onRowSelect)=\"onRowSelect($event)\"\n (onRowUnselect)=\"onRowUnselect($event)\"\n [selection]=\"selectedRows\"\n (onHeaderCheckboxToggle)=\"onSelectAllRow($event)\"\n dataKey=\"id\"\n [expandedRowKeys]=\"expandedRows\"\n [rowExpandMode]=\"'multiple'\"\n [rowTrackBy]=\"rowTrackByFn\"\n >\n <ng-template pTemplate=\"caption\">\n <div class=\"tableCaption\">\n <div *ngIf=\"smartGrid.gridModel.title\" class=\"captionTitle\">\n {{ smartGrid.gridModel.title }}\n </div>\n <div *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\n <p-multiSelect\n display=\"chip\"\n [options]=\"smartGrid.gridModel.view?.descriptor?.columns\"\n optionLabel=\"label\"\n [(ngModel)]=\"columns\"\n selectedItemsLabel=\"{0} columns selected\"\n [style]=\"{ 'min-width': '200px' }\"\n placeholder=\"Choose Columns\"\n (onChange)=\"headerChange($event)\"\n />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n @if (smartGrid.gridModel.view?.descriptor?.showEditColumns) {\n <th\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\n style=\"width: 4rem\"\n >\n <p-tableHeaderCheckbox />\n </th>\n <th\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\n style=\"width: 4rem\"\n ></th>\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\" pReorderableColumn>\n <p-sortIcon [field]=\"col.propertyName\" />\n {{ col.label }}\n </th>\n } @else {\n <th\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\n style=\"width: 4rem\"\n >\n <p-tableHeaderCheckbox />\n </th>\n <th\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\n style=\"width: 4rem\"\n ></th>\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\">\n <p-sortIcon [field]=\"col.propertyName\" />\n {{ col.label }}\n </th>\n }\n\n <th>\n <smart-ui-action-toolbar\n class=\"headerToolbar\"\n #headerToolbar\n [id]=\"'header_not_initialized'\"\n ></smart-ui-action-toolbar>\n </th>\n <th *ngIf=\"smartGrid.expandable\"> </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-row let-expanded=\"expanded\">\n <tr\n [ngClass]=\"getStyle(row)\"\n [class.rowExpanded]=\"expanded\"\n (dblclick)=\"onDoubleClick(row)\"\n *ngIf=\"row && row.data\"\n >\n <td *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\n <p-tableCheckbox *ngIf=\"row.selectable != false\" [value]=\"row\" />\n </td>\n <td *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\n <p-tableRadioButton [value]=\"row\" />\n </td>\n <td *ngFor=\"let col of smartGrid?.gridModel?.view?.orderedColumnNames\">\n <div *ngIf=\"row.icons[col]\">\n <div class=\"smart-table-icon-container\">\n <div *ngFor=\"let ir of getImageResourceIcons(row, col)\">\n <smart-icon [imageResource]=\"ir\"> </smart-icon>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"showCellToolbar(row, col)\">\n <smart-ui-action-toolbar\n [uiActionModels]=\"getRowColumnAction(row, col)\"\n ></smart-ui-action-toolbar>\n </ng-container>\n\n <div *ngIf=\"!row.icons[col]\" [innerHtml]=\"getColValue(col, row)\"> </div>\n </td>\n <td>\n <div class=\"menu-button\">\n @if(showCellToolbar(row, defaultActionToolbarId)){\n <smart-ui-action-toolbar\n [uiActionModels]=\"getRowColumnAction(row, defaultActionToolbarId)\"\n ></smart-ui-action-toolbar>\n }\n <p-button\n [rounded]=\"true\"\n [text]=\"true\"\n *ngIf=\"shouldShowOptionsButton(row)\"\n (onClick)=\"onOptionsClick($event, row)\"\n >\n <smart-icon icon=\"ellipsis-v\"></smart-icon>\n </p-button>\n </div>\n </td>\n <td *ngIf=\"smartGrid.expandable\">\n <p-button\n type=\"button\"\n pRipple\n [pRowToggler]=\"row\"\n [text]=\"true\"\n severity=\"secondary\"\n [rounded]=\"true\"\n [icon]=\"expanded ? 'pi pi-chevron-up' : 'pi pi-chevron-down'\"\n />\n </td>\n </tr>\n </ng-template>\n @if(smartGrid.expandable){\n <ng-template pTemplate=\"rowexpansion\" let-row>\n <tr>\n <td colspan=\"100%\">\n <lib-expanded-row-renderer-component\n [rowId]=\"row.id\"\n [rowExpander]=\"this\"\n [expandedComponent]=\"smartGrid.expandedComponent\"\n [smartGrid]=\"this.smartGrid\"\n ></lib-expanded-row-renderer-component>\n </td>\n </tr>\n </ng-template>\n }\n </p-table>\n <div\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\n class=\"cards-container\"\n [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : ''\n }\"\n >\n <app-smart-grid-card\n class=\"smartGrid-card-container\"\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\n [item]=\"task\"\n [smartGrid]=\"smartGrid\"\n [onSelect]=\"onSelect.bind(this)\"\n ></app-smart-grid-card>\n </div>\n<div *ngIf=\"smartGrid.paginator\" class=\"paginator-row\">\n <div class=\"paginator-wrap\">\n <p-paginator\n [first]=\"pageIndex!\"\n [totalRecords]=\"length!\"\n [rows]=\"pageSize\"\n [rowsPerPageOptions]=\"pageSizeOptions\"\n currentPageReportTemplate=\"{first} - {last} / {totalRecords}\"\n (onPageChange)=\"onPrimeChangePage($event)\"\n [showCurrentPageReport]=\"true\"\n dropdownAppendTo=\"body\"\n ></p-paginator>\n </div>\n\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-refresh\"\n class=\"p-button-text\"\n pTooltip=\"Friss\u00EDt\u00E9s\"\n (click)=\"refreshPartialResults()\"\n *ngIf=\"smartGrid.gridModel?.refreshEnabled\"\n ></button>\n</div>\n <p-menu #menu [model]=\"menuButtons\" [popup]=\"true\" appendTo=\"body\"> </p-menu>\n</div>\n}@else {\n<div *ngIf=\"smartGrid\" class=\"smartGrid-container\">\n <div class=\"smart-grid-toolbar\">\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\n <button\n (click)=\"editColumns()\"\n mat-mini-fab\n color=\"text-primary\"\n *ngIf=\"smartGrid.showEditColumns\"\n >\n <mat-icon aria-hidden=\"false\" aria-label=\"Columns\" class=\"smart-grid-edit-icon\"\n >view_columns</mat-icon\n >\n </button>\n </div>\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\n <div class=\"smartGridContent\">\n <div>\n <div *ngIf=\"smartGrid.showResultCount\">\n <div class=\"smartGrid-data-number\">\n {{ smartGrid.gridModel.totalRowCount }}\n </div>\n </div>\n </div>\n\n <div class=\"smart-grid-table-container\">\n <ng-template #table></ng-template>\n </div>\n\n <div *ngIf=\"smartGrid.layoutDef === layoutDef().EXPANDABLE\">\n <smart-expandable-section\n #gridExpandableSection\n *ngFor=\"let expandableSection of expandableSections\"\n [data]=\"expandableSection\"\n ></smart-expandable-section>\n </div>\n <div\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\n class=\"cards-container\"\n [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : ''\n }\"\n >\n <app-smart-grid-card\n class=\"smartGrid-card-container\"\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\n [item]=\"task\"\n [smartGrid]=\"smartGrid\"\n [onSelect]=\"onSelect.bind(this)\"\n ></app-smart-grid-card>\n </div>\n <div\n *ngIf=\"smartGrid.layoutDef === layoutDef().TREE && treeControl\"\n class=\"tree-container\"\n [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : ''\n }\"\n >\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n matTreeNodePadding\n matTreeNodePaddingIndent=\"24\"\n >\n <button mat-icon-button disabled class=\"tree-button\"></button>\n <mat-checkbox\n class=\"checklist-leaf-node\"\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\n (change)=\"treeNodeSelectionToggle(node)\"\n >{{ getTreeItem(node) }}</mat-checkbox\n >\n </mat-tree-node>\n\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodePadding\n matTreeNodePaddingIndent=\"24\"\n >\n <button\n mat-icon-button\n matTreeNodeToggle\n class=\"tree-button\"\n [attr.aria-label]=\"'Toggle ' + node.item\"\n >\n <mat-icon class=\"mat-icon-rtl-mirror\">\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </button>\n <mat-checkbox\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\n [indeterminate]=\"descendantsPartiallySelected(node)\"\n (change)=\"treeNodeSelectionToggle(node)\"\n >{{ getTreeItem(node) }}</mat-checkbox\n >\n </mat-tree-node>\n </mat-tree>\n </div>\n </div>\n<div *ngIf=\"smartGrid.paginator\" class=\"paginator-row-material\">\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-refresh\"\n class=\"p-button-text\"\n pTooltip=\"Friss\u00EDt\u00E9s\"\n (click)=\"refreshPartialResults()\"\n *ngIf=\"smartGrid.gridModel?.refreshEnabled\"\n ></button>\n <mat-paginator\n *ngIf=\"smartGrid.paginator && !treeControl\"\n #paginator\n [length]=\"length\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onChangePage($event)\"\n ></mat-paginator>\n </div>\n</div>\n}\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.primeSmartGrid-container{display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-card-container{height:auto;border:1px solid black;border-radius:8px}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.menu-button{display:flex;flex-direction:row;justify-content:flex-end;text-align:-webkit-right;align-items:center}.headerToolbar ::ng-deep .uiActionButtonsContainer{justify-content:flex-end}.tableCaption{display:flex;flex-direction:row;justify-content:space-between}.tableCaption:has(*){padding:.5rem;border-top:1px solid #e9ecef;border-bottom:1px solid #e9ecef}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th,:host ::ng-deep .p-datatable .p-datatable-header{padding:.5rem}.captionTitle{font-size:1.5rem;align-content:center}:host ::ng-deep .p-datatable-header:has(.tableCaption){padding:0;border:unset}.paginator-row{display:flex;align-items:center;align-self:center;gap:.25rem}.paginator-row-material{display:flex;align-items:center;align-self:flex-end;gap:.25rem}.paginator-wrap{flex:0 0 auto;min-width:0}:host ::ng-deep .paginator-wrap .p-paginator{width:auto}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: i10$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "directive", type: i11$1.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i11$1.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i11$1.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i11$1.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i11$1.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "component", type: i4$3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "directive", type: ComparableMultiselectDirective, selector: "p-multiSelect", inputs: ["compareWith"] }, { kind: "component", type: i16$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i16$1.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i16$1.RowToggler, selector: "[pRowToggler]", inputs: ["pRowToggler", "pRowTogglerDisabled"] }, { kind: "directive", type: i16$1.ReorderableColumn, selector: "[pReorderableColumn]", inputs: ["pReorderableColumnDisabled"] }, { kind: "component", type: i16$1.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i16$1.TableRadioButton, selector: "p-tableRadioButton", inputs: ["disabled", "value", "index", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i16$1.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i16$1.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i19$1.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i20$1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i21$1.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$6.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: SmartGridCardComponent, selector: "app-smart-grid-card", inputs: ["item", "smartGrid", "onSelect"] }, { kind: "component", type: ExpandedRowRendererComponent, selector: "lib-expanded-row-renderer-component", inputs: ["rowId", "rowExpander", "expandedComponent", "smartGrid"] }] }); }
|
|
16190
16248
|
}
|
|
16191
16249
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartGridComponent, decorators: [{
|
|
16192
16250
|
type: Component,
|
|
16193
|
-
args: [{ selector: 'smart-grid', providers: [SmartGridService, SmartDatePipe, SmartDateTimePipe, SmartTimePipe], template: "@if(compLib === componentLibrary.PRIMENG) {\r\n\r\n<div *ngIf=\"smartGrid\" class=\"primeSmartGrid-container\">\r\n <div class=\"smart-grid-toolbar\">\r\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\r\n </div>\r\n <p-table\r\n *ngIf=\"!smartGrid.layoutDef || smartGrid.layoutDef === layoutDef().TABLE\"\r\n #pTable\r\n [value]=\"smartGrid.gridModel.page.rows!\"\r\n (onSort)=\"gridSort($event)\"\r\n [customSort]=\"true\"\r\n [sortMode]=\"'multiple'\"\r\n [lazy]=\"true\"\r\n (onLazyLoad)=\"lazyLoad($event)\"\r\n [reorderableColumns]=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\"\r\n [columns]=\"columns\"\r\n (onColReorder)=\"onColOrder($event)\"\r\n (onRowSelect)=\"onRowSelect($event)\"\r\n (onRowUnselect)=\"onRowUnselect($event)\"\r\n [selection]=\"selectedRows\"\r\n (onHeaderCheckboxToggle)=\"onSelectAllRow($event)\"\r\n dataKey=\"id\"\r\n [expandedRowKeys]=\"expandedRows\"\r\n [rowExpandMode]=\"'multiple'\"\r\n [rowTrackBy]=\"rowTrackByFn\"\r\n >\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"tableCaption\">\r\n <div *ngIf=\"smartGrid.gridModel.title\" class=\"captionTitle\">\r\n {{ smartGrid.gridModel.title }}\r\n </div>\r\n <div *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <p-multiSelect\r\n display=\"chip\"\r\n [options]=\"smartGrid.gridModel.view?.descriptor?.columns\"\r\n optionLabel=\"label\"\r\n [(ngModel)]=\"columns\"\r\n selectedItemsLabel=\"{0} columns selected\"\r\n [style]=\"{ 'min-width': '200px' }\"\r\n placeholder=\"Choose Columns\"\r\n (onChange)=\"headerChange($event)\"\r\n />\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n @if (smartGrid.gridModel.view?.descriptor?.showEditColumns) {\r\n <th\r\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n >\r\n <p-tableHeaderCheckbox />\r\n </th>\r\n <th\r\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n ></th>\r\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\" pReorderableColumn>\r\n <p-sortIcon [field]=\"col.propertyName\" />\r\n {{ col.label }}\r\n </th>\r\n } @else {\r\n <th\r\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n >\r\n <p-tableHeaderCheckbox />\r\n </th>\r\n <th\r\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n ></th>\r\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\">\r\n <p-sortIcon [field]=\"col.propertyName\" />\r\n {{ col.label }}\r\n </th>\r\n }\r\n\r\n <th>\r\n <smart-ui-action-toolbar\r\n class=\"headerToolbar\"\r\n #headerToolbar\r\n [id]=\"'header_not_initialized'\"\r\n ></smart-ui-action-toolbar>\r\n </th>\r\n <th *ngIf=\"smartGrid.expandable\"> </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row let-expanded=\"expanded\">\r\n <tr\r\n [ngClass]=\"getStyle(row)\"\r\n [class.rowExpanded]=\"expanded\"\r\n (dblclick)=\"onDoubleClick(row)\"\r\n *ngIf=\"row && row.data\"\r\n >\r\n <td *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\r\n <p-tableCheckbox *ngIf=\"row.selectable != false\" [value]=\"row\" />\r\n </td>\r\n <td *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\r\n <p-tableRadioButton [value]=\"row\" />\r\n </td>\r\n <td *ngFor=\"let col of smartGrid?.gridModel?.view?.orderedColumnNames\">\r\n <div *ngIf=\"row.icons[col]\">\r\n <div class=\"smart-table-icon-container\">\r\n <div *ngFor=\"let ir of getImageResourceIcons(row, col)\">\r\n <smart-icon [imageResource]=\"ir\"> </smart-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"showCellToolbar(row, col)\">\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowColumnAction(row, col)\"\r\n ></smart-ui-action-toolbar>\r\n </ng-container>\r\n\r\n <div *ngIf=\"!row.icons[col]\" [innerHtml]=\"getColValue(col, row)\"> </div>\r\n </td>\r\n <td>\r\n <div class=\"menu-button\">\r\n @if(showCellToolbar(row, defaultActionToolbarId)){\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowColumnAction(row, defaultActionToolbarId)\"\r\n ></smart-ui-action-toolbar>\r\n }\r\n <p-button\r\n [rounded]=\"true\"\r\n [text]=\"true\"\r\n *ngIf=\"shouldShowOptionsButton(row)\"\r\n (onClick)=\"onOptionsClick($event, row)\"\r\n >\r\n <smart-icon icon=\"ellipsis-v\"></smart-icon>\r\n </p-button>\r\n </div>\r\n </td>\r\n <td *ngIf=\"smartGrid.expandable\">\r\n <p-button\r\n type=\"button\"\r\n pRipple\r\n [pRowToggler]=\"row\"\r\n [text]=\"true\"\r\n severity=\"secondary\"\r\n [rounded]=\"true\"\r\n [icon]=\"expanded ? 'pi pi-chevron-up' : 'pi pi-chevron-down'\"\r\n />\r\n </td>\r\n </tr>\r\n </ng-template>\r\n @if(smartGrid.expandable){\r\n <ng-template pTemplate=\"rowexpansion\" let-row>\r\n <tr>\r\n <td colspan=\"100%\">\r\n <lib-expanded-row-renderer-component\r\n [rowId]=\"row.id\"\r\n [rowExpander]=\"this\"\r\n [expandedComponent]=\"smartGrid.expandedComponent\"\r\n [smartGrid]=\"this.smartGrid\"\r\n ></lib-expanded-row-renderer-component>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n }\r\n </p-table>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n [onSelect]=\"onSelect.bind(this)\"\r\n ></app-smart-grid-card>\r\n </div>\r\n<div *ngIf=\"smartGrid.paginator\" class=\"paginator-row\">\r\n <div class=\"paginator-wrap\">\r\n <p-paginator\r\n [first]=\"pageIndex!\"\r\n [totalRecords]=\"length!\"\r\n [rows]=\"pageSize\"\r\n [rowsPerPageOptions]=\"pageSizeOptions\"\r\n currentPageReportTemplate=\"{first} - {last} / {totalRecords}\"\r\n (onPageChange)=\"onPrimeChangePage($event)\"\r\n [showCurrentPageReport]=\"true\"\r\n dropdownAppendTo=\"body\"\r\n ></p-paginator>\r\n </div>\r\n\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-refresh\"\r\n class=\"p-button-text\"\r\n pTooltip=\"Friss\u00EDt\u00E9s\"\r\n (click)=\"refreshPartialResults()\"\r\n *ngIf=\"smartGrid.gridModel?.refreshEnabled\"\r\n ></button>\r\n</div>\r\n <p-menu #menu [model]=\"menuButtons\" [popup]=\"true\" appendTo=\"body\"> </p-menu>\r\n</div>\r\n}@else {\r\n<div *ngIf=\"smartGrid\" class=\"smartGrid-container\">\r\n <div class=\"smart-grid-toolbar\">\r\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\r\n <button\r\n (click)=\"editColumns()\"\r\n mat-mini-fab\r\n color=\"text-primary\"\r\n *ngIf=\"smartGrid.showEditColumns\"\r\n >\r\n <mat-icon aria-hidden=\"false\" aria-label=\"Columns\" class=\"smart-grid-edit-icon\"\r\n >view_columns</mat-icon\r\n >\r\n </button>\r\n </div>\r\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\r\n <div class=\"smartGridContent\">\r\n <div>\r\n <div *ngIf=\"smartGrid.showResultCount\">\r\n <div class=\"smartGrid-data-number\">\r\n {{ smartGrid.gridModel.totalRowCount }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"smart-grid-table-container\">\r\n <ng-template #table></ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"smartGrid.layoutDef === layoutDef().EXPANDABLE\">\r\n <smart-expandable-section\r\n #gridExpandableSection\r\n *ngFor=\"let expandableSection of expandableSections\"\r\n [data]=\"expandableSection\"\r\n ></smart-expandable-section>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n [onSelect]=\"onSelect.bind(this)\"\r\n ></app-smart-grid-card>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().TREE && treeControl\"\r\n class=\"tree-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodeToggle\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button mat-icon-button disabled class=\"tree-button\"></button>\r\n <mat-checkbox\r\n class=\"checklist-leaf-node\"\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChild\"\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button\r\n mat-icon-button\r\n matTreeNodeToggle\r\n class=\"tree-button\"\r\n [attr.aria-label]=\"'Toggle ' + node.item\"\r\n >\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n<div *ngIf=\"smartGrid.paginator\" class=\"paginator-row-material\">\r\n <button\r\n pButton\r\n type=\"button\"\r\n icon=\"pi pi-refresh\"\r\n class=\"p-button-text\"\r\n pTooltip=\"Friss\u00EDt\u00E9s\"\r\n (click)=\"refreshPartialResults()\"\r\n *ngIf=\"smartGrid.gridModel?.refreshEnabled\"\r\n ></button>\r\n <mat-paginator\r\n *ngIf=\"smartGrid.paginator && !treeControl\"\r\n #paginator\r\n [length]=\"length\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onChangePage($event)\"\r\n ></mat-paginator>\r\n </div>\r\n</div>\r\n}\r\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.primeSmartGrid-container{display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-card-container{height:auto;border:1px solid black;border-radius:8px}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.menu-button{display:flex;flex-direction:row;justify-content:flex-end;text-align:-webkit-right;align-items:center}.headerToolbar ::ng-deep .uiActionButtonsContainer{justify-content:flex-end}.tableCaption{display:flex;flex-direction:row;justify-content:space-between}.tableCaption:has(*){padding:.5rem;border-top:1px solid #e9ecef;border-bottom:1px solid #e9ecef}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th,:host ::ng-deep .p-datatable .p-datatable-header{padding:.5rem}.captionTitle{font-size:1.5rem;align-content:center}:host ::ng-deep .p-datatable-header:has(.tableCaption){padding:0;border:unset}.paginator-row{display:flex;align-items:center;align-self:center;gap:.25rem}.paginator-row-material{display:flex;align-items:center;align-self:flex-end;gap:.25rem}.paginator-wrap{flex:0 0 auto;min-width:0}:host ::ng-deep .paginator-wrap .p-paginator{width:auto}\n"] }]
|
|
16251
|
+
args: [{ selector: 'smart-grid', providers: [SmartGridService, SmartDatePipe, SmartDateTimePipe, SmartTimePipe], template: "@if(compLib === componentLibrary.PRIMENG) {\n\n<div *ngIf=\"smartGrid\" class=\"primeSmartGrid-container\">\n <div class=\"smart-grid-toolbar\">\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\n </div>\n <p-table\n *ngIf=\"!smartGrid.layoutDef || smartGrid.layoutDef === layoutDef().TABLE\"\n #pTable\n [value]=\"smartGrid.gridModel.page.rows!\"\n (onSort)=\"gridSort($event)\"\n [customSort]=\"true\"\n [sortMode]=\"'multiple'\"\n [lazy]=\"true\"\n (onLazyLoad)=\"lazyLoad($event)\"\n [reorderableColumns]=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\"\n [columns]=\"columns\"\n (onColReorder)=\"onColOrder($event)\"\n (onRowSelect)=\"onRowSelect($event)\"\n (onRowUnselect)=\"onRowUnselect($event)\"\n [selection]=\"selectedRows\"\n (onHeaderCheckboxToggle)=\"onSelectAllRow($event)\"\n dataKey=\"id\"\n [expandedRowKeys]=\"expandedRows\"\n [rowExpandMode]=\"'multiple'\"\n [rowTrackBy]=\"rowTrackByFn\"\n >\n <ng-template pTemplate=\"caption\">\n <div class=\"tableCaption\">\n <div *ngIf=\"smartGrid.gridModel.title\" class=\"captionTitle\">\n {{ smartGrid.gridModel.title }}\n </div>\n <div *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\n <p-multiSelect\n display=\"chip\"\n [options]=\"smartGrid.gridModel.view?.descriptor?.columns\"\n optionLabel=\"label\"\n [(ngModel)]=\"columns\"\n selectedItemsLabel=\"{0} columns selected\"\n [style]=\"{ 'min-width': '200px' }\"\n placeholder=\"Choose Columns\"\n (onChange)=\"headerChange($event)\"\n />\n </div>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n @if (smartGrid.gridModel.view?.descriptor?.showEditColumns) {\n <th\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\n style=\"width: 4rem\"\n >\n <p-tableHeaderCheckbox />\n </th>\n <th\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\n style=\"width: 4rem\"\n ></th>\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\" pReorderableColumn>\n <p-sortIcon [field]=\"col.propertyName\" />\n {{ col.label }}\n </th>\n } @else {\n <th\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\n style=\"width: 4rem\"\n >\n <p-tableHeaderCheckbox />\n </th>\n <th\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\n style=\"width: 4rem\"\n ></th>\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\">\n <p-sortIcon [field]=\"col.propertyName\" />\n {{ col.label }}\n </th>\n }\n\n <th>\n <smart-ui-action-toolbar\n class=\"headerToolbar\"\n #headerToolbar\n [id]=\"'header_not_initialized'\"\n ></smart-ui-action-toolbar>\n </th>\n <th *ngIf=\"smartGrid.expandable\"> </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-row let-expanded=\"expanded\">\n <tr\n [ngClass]=\"getStyle(row)\"\n [class.rowExpanded]=\"expanded\"\n (dblclick)=\"onDoubleClick(row)\"\n *ngIf=\"row && row.data\"\n >\n <td *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\n <p-tableCheckbox *ngIf=\"row.selectable != false\" [value]=\"row\" />\n </td>\n <td *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\n <p-tableRadioButton [value]=\"row\" />\n </td>\n <td *ngFor=\"let col of smartGrid?.gridModel?.view?.orderedColumnNames\">\n <div *ngIf=\"row.icons[col]\">\n <div class=\"smart-table-icon-container\">\n <div *ngFor=\"let ir of getImageResourceIcons(row, col)\">\n <smart-icon [imageResource]=\"ir\"> </smart-icon>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"showCellToolbar(row, col)\">\n <smart-ui-action-toolbar\n [uiActionModels]=\"getRowColumnAction(row, col)\"\n ></smart-ui-action-toolbar>\n </ng-container>\n\n <div *ngIf=\"!row.icons[col]\" [innerHtml]=\"getColValue(col, row)\"> </div>\n </td>\n <td>\n <div class=\"menu-button\">\n @if(showCellToolbar(row, defaultActionToolbarId)){\n <smart-ui-action-toolbar\n [uiActionModels]=\"getRowColumnAction(row, defaultActionToolbarId)\"\n ></smart-ui-action-toolbar>\n }\n <p-button\n [rounded]=\"true\"\n [text]=\"true\"\n *ngIf=\"shouldShowOptionsButton(row)\"\n (onClick)=\"onOptionsClick($event, row)\"\n >\n <smart-icon icon=\"ellipsis-v\"></smart-icon>\n </p-button>\n </div>\n </td>\n <td *ngIf=\"smartGrid.expandable\">\n <p-button\n type=\"button\"\n pRipple\n [pRowToggler]=\"row\"\n [text]=\"true\"\n severity=\"secondary\"\n [rounded]=\"true\"\n [icon]=\"expanded ? 'pi pi-chevron-up' : 'pi pi-chevron-down'\"\n />\n </td>\n </tr>\n </ng-template>\n @if(smartGrid.expandable){\n <ng-template pTemplate=\"rowexpansion\" let-row>\n <tr>\n <td colspan=\"100%\">\n <lib-expanded-row-renderer-component\n [rowId]=\"row.id\"\n [rowExpander]=\"this\"\n [expandedComponent]=\"smartGrid.expandedComponent\"\n [smartGrid]=\"this.smartGrid\"\n ></lib-expanded-row-renderer-component>\n </td>\n </tr>\n </ng-template>\n }\n </p-table>\n <div\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\n class=\"cards-container\"\n [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : ''\n }\"\n >\n <app-smart-grid-card\n class=\"smartGrid-card-container\"\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\n [item]=\"task\"\n [smartGrid]=\"smartGrid\"\n [onSelect]=\"onSelect.bind(this)\"\n ></app-smart-grid-card>\n </div>\n<div *ngIf=\"smartGrid.paginator\" class=\"paginator-row\">\n <div class=\"paginator-wrap\">\n <p-paginator\n [first]=\"pageIndex!\"\n [totalRecords]=\"length!\"\n [rows]=\"pageSize\"\n [rowsPerPageOptions]=\"pageSizeOptions\"\n currentPageReportTemplate=\"{first} - {last} / {totalRecords}\"\n (onPageChange)=\"onPrimeChangePage($event)\"\n [showCurrentPageReport]=\"true\"\n dropdownAppendTo=\"body\"\n ></p-paginator>\n </div>\n\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-refresh\"\n class=\"p-button-text\"\n pTooltip=\"Friss\u00EDt\u00E9s\"\n (click)=\"refreshPartialResults()\"\n *ngIf=\"smartGrid.gridModel?.refreshEnabled\"\n ></button>\n</div>\n <p-menu #menu [model]=\"menuButtons\" [popup]=\"true\" appendTo=\"body\"> </p-menu>\n</div>\n}@else {\n<div *ngIf=\"smartGrid\" class=\"smartGrid-container\">\n <div class=\"smart-grid-toolbar\">\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\n <button\n (click)=\"editColumns()\"\n mat-mini-fab\n color=\"text-primary\"\n *ngIf=\"smartGrid.showEditColumns\"\n >\n <mat-icon aria-hidden=\"false\" aria-label=\"Columns\" class=\"smart-grid-edit-icon\"\n >view_columns</mat-icon\n >\n </button>\n </div>\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\n <div class=\"smartGridContent\">\n <div>\n <div *ngIf=\"smartGrid.showResultCount\">\n <div class=\"smartGrid-data-number\">\n {{ smartGrid.gridModel.totalRowCount }}\n </div>\n </div>\n </div>\n\n <div class=\"smart-grid-table-container\">\n <ng-template #table></ng-template>\n </div>\n\n <div *ngIf=\"smartGrid.layoutDef === layoutDef().EXPANDABLE\">\n <smart-expandable-section\n #gridExpandableSection\n *ngFor=\"let expandableSection of expandableSections\"\n [data]=\"expandableSection\"\n ></smart-expandable-section>\n </div>\n <div\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\n class=\"cards-container\"\n [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : ''\n }\"\n >\n <app-smart-grid-card\n class=\"smartGrid-card-container\"\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\n [item]=\"task\"\n [smartGrid]=\"smartGrid\"\n [onSelect]=\"onSelect.bind(this)\"\n ></app-smart-grid-card>\n </div>\n <div\n *ngIf=\"smartGrid.layoutDef === layoutDef().TREE && treeControl\"\n class=\"tree-container\"\n [ngStyle]=\"{\n 'grid-template-columns':\n smartGrid.numberOfColumn !== undefined\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\n : ''\n }\"\n >\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n matTreeNodePadding\n matTreeNodePaddingIndent=\"24\"\n >\n <button mat-icon-button disabled class=\"tree-button\"></button>\n <mat-checkbox\n class=\"checklist-leaf-node\"\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\n (change)=\"treeNodeSelectionToggle(node)\"\n >{{ getTreeItem(node) }}</mat-checkbox\n >\n </mat-tree-node>\n\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodePadding\n matTreeNodePaddingIndent=\"24\"\n >\n <button\n mat-icon-button\n matTreeNodeToggle\n class=\"tree-button\"\n [attr.aria-label]=\"'Toggle ' + node.item\"\n >\n <mat-icon class=\"mat-icon-rtl-mirror\">\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n </button>\n <mat-checkbox\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\n [indeterminate]=\"descendantsPartiallySelected(node)\"\n (change)=\"treeNodeSelectionToggle(node)\"\n >{{ getTreeItem(node) }}</mat-checkbox\n >\n </mat-tree-node>\n </mat-tree>\n </div>\n </div>\n<div *ngIf=\"smartGrid.paginator\" class=\"paginator-row-material\">\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-refresh\"\n class=\"p-button-text\"\n pTooltip=\"Friss\u00EDt\u00E9s\"\n (click)=\"refreshPartialResults()\"\n *ngIf=\"smartGrid.gridModel?.refreshEnabled\"\n ></button>\n <mat-paginator\n *ngIf=\"smartGrid.paginator && !treeControl\"\n #paginator\n [length]=\"length\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onChangePage($event)\"\n ></mat-paginator>\n </div>\n</div>\n}\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.primeSmartGrid-container{display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-card-container{height:auto;border:1px solid black;border-radius:8px}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.menu-button{display:flex;flex-direction:row;justify-content:flex-end;text-align:-webkit-right;align-items:center}.headerToolbar ::ng-deep .uiActionButtonsContainer{justify-content:flex-end}.tableCaption{display:flex;flex-direction:row;justify-content:space-between}.tableCaption:has(*){padding:.5rem;border-top:1px solid #e9ecef;border-bottom:1px solid #e9ecef}:host ::ng-deep .p-datatable .p-datatable-thead>tr>th,:host ::ng-deep .p-datatable .p-datatable-header{padding:.5rem}.captionTitle{font-size:1.5rem;align-content:center}:host ::ng-deep .p-datatable-header:has(.tableCaption){padding:0;border:unset}.paginator-row{display:flex;align-items:center;align-self:center;gap:.25rem}.paginator-row-material{display:flex;align-items:center;align-self:flex-end;gap:.25rem}.paginator-wrap{flex:0 0 auto;min-width:0}:host ::ng-deep .paginator-wrap .p-paginator{width:auto}\n"] }]
|
|
16194
16252
|
}], ctorParameters: () => [{ type: SmartGridService }, { type: ComponentFactoryService }, { type: i1$3.MatDialog }, { type: i0.Injector }, { type: UiActionDescriptorService }, { type: SmartDatePipe }, { type: SmartDateTimePipe }, { type: SmartTimePipe }, { type: ComponentLibrary, decorators: [{
|
|
16195
16253
|
type: Inject,
|
|
16196
16254
|
args: [COMPONENT_LIBRARY]
|
|
@@ -16245,7 +16303,8 @@ class SmartExpandableSectionModule {
|
|
|
16245
16303
|
MatButtonModule,
|
|
16246
16304
|
MatMenuModule,
|
|
16247
16305
|
SmartIconModule,
|
|
16248
|
-
AccordionModule
|
|
16306
|
+
AccordionModule,
|
|
16307
|
+
SmartViewContextModule], exports: [ExpandableSectionComponent] }); }
|
|
16249
16308
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartExpandableSectionModule, imports: [BrowserModule,
|
|
16250
16309
|
MatCommonModule,
|
|
16251
16310
|
MatExpansionModule,
|
|
@@ -16254,7 +16313,8 @@ class SmartExpandableSectionModule {
|
|
|
16254
16313
|
MatButtonModule,
|
|
16255
16314
|
MatMenuModule,
|
|
16256
16315
|
SmartIconModule,
|
|
16257
|
-
AccordionModule
|
|
16316
|
+
AccordionModule,
|
|
16317
|
+
SmartViewContextModule] }); }
|
|
16258
16318
|
}
|
|
16259
16319
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartExpandableSectionModule, decorators: [{
|
|
16260
16320
|
type: NgModule,
|
|
@@ -16270,6 +16330,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
16270
16330
|
MatMenuModule,
|
|
16271
16331
|
SmartIconModule,
|
|
16272
16332
|
AccordionModule,
|
|
16333
|
+
SmartViewContextModule,
|
|
16273
16334
|
],
|
|
16274
16335
|
exports: [ExpandableSectionComponent],
|
|
16275
16336
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
@@ -18142,11 +18203,11 @@ class SmartTreeComponent {
|
|
|
18142
18203
|
return `${cssClass}-${plusProperty}`;
|
|
18143
18204
|
}
|
|
18144
18205
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartTreeComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18145
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartTreeComponent, selector: "smart-tree", inputs: { treeStyle: "treeStyle", treeService: "treeService" }, host: { properties: { "attr.data-testid": "this.testId" } }, viewQueries: [{ propertyName: "tree", first: true, predicate: ["tree"], descendants: true }, { propertyName: "trigger", predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<div class=\"smartTreeContainer\">\
|
|
18206
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartTreeComponent, selector: "smart-tree", inputs: { treeStyle: "treeStyle", treeService: "treeService" }, host: { properties: { "attr.data-testid": "this.testId" } }, viewQueries: [{ propertyName: "tree", first: true, predicate: ["tree"], descendants: true }, { propertyName: "trigger", predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<div class=\"smartTreeContainer\">\n <smart-ui-action-toolbar\n *ngIf=\"uiActionModels.length\"\n [uiActionModels]=\"uiActionModels\"\n ></smart-ui-action-toolbar>\n <mat-tree\n #tree\n *ngIf=\"treeData\"\n [dataSource]=\"dataSource\"\n [treeControl]=\"treeControl\"\n class=\"sm-tree\"\n >\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodeToggle=\"{{ getIfExpanded(node) }}\"\n [ngClass]=\"getClassesForTreeNode(node)\"\n [ngStyle]=\"getNodeStyle(node)\"\n >\n <div\n [ngStyle]=\"getNodePadding(node)\"\n [ngClass]=\"getInnerClassesForTreeNode(node)\"\n class=\"mat-tree-node sm-tree-node\"\n (click)=\"onNodeClick($event, node)\"\n >\n <button mat-icon-button [attr.aria-label]=\"'Toggle ' + node.name\">\n <mat-icon\n class=\"mat-icon-rtl-mirror\"\n matTreeNodeToggle\n (click)=\"onOpenNode($event, node)\"\n >\n <div *ngIf=\"hasChild(node.level, node)\">\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </div>\n </mat-icon>\n </button>\n <smart-icon [icon]=\"node.icon\"> </smart-icon>\n <div class=\"sm-tree-row\" [ngClass]=\"node.classes\">\n <div class=\"sm-tree-row-caption\">\n {{ node.caption }}\n </div>\n <div class=\"sm-shortDescription-spacer\"></div>\n <div class=\"sm-tree-row-shortDescription\">\n {{ node.shortDescription }}\n </div>\n <div class=\"sm-shortDescription-button-spacer\"></div>\n <div *ngIf=\"node.button\" class=\"sm-tree-node-button\" [ngSwitch]=\"node.button.type\">\n <button\n (click)=\"customButtonClicked($event, node.button)\"\n *ngSwitchCase=\"smartTreeNodeButtonType.ICON\"\n mat-icon-button\n >\n <smart-icon title=\"{{ node.button.icon }}\" [icon]=\"node.button.icon\"></smart-icon>\n </button>\n <div *ngSwitchCase=\"smartTreeNodeButtonType.MENU\">\n <button\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"customButtonClicked($event, node.button, true)\"\n >\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon\n >{{ node.button.label }}\n </button>\n <mat-menu #menu=\"matMenu\">\n <button\n *ngFor=\"let button of node.button.menuItemButtons\"\n (click)=\"customButtonClicked($event, button, true)\"\n mat-menu-item\n [attr.data-testid]=\"button.code ?? null\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon\n >{{ button.label }}\n </button>\n </mat-menu>\n </div>\n <button\n (click)=\"customButtonClicked($event, node.button)\"\n *ngSwitchCase=\"smartTreeNodeButtonType.NORMAL\"\n mat-raised-button\n >\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon>\n {{ node.button.icon }}\n </button>\n </div>\n </div>\n </div>\n <div\n [class.sm-tree-invisible]=\"!treeControl.isExpanded(node)\"\n [ngClass]=\"getClassesForTreeNodeChildren(node)\"\n role=\"group\"\n >\n <ng-container matTreeNodeOutlet></ng-container>\n </div>\n </mat-nested-tree-node>\n </mat-tree>\n <div *ngIf=\"!treeData\">\n <h3>\n {{ errorMessage }}\n </h3>\n </div>\n</div>\n", styles: [".smartTreeContainer{display:flex;flex-direction:column;gap:.5rem}.sm-tree-invisible{display:none}.sm-tree ul,.sm-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.sm-tree div[role=group]>.mat-tree-node{padding-left:40px}.sm-tee-node{padding-left:40px}.sm-tree-node-name{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tree-node-name-row{padding-left:15px;padding-top:15px;display:flex;flex-direction:row;justify-content:space-between}.sm-tree-node-name-col{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tee-node-id{font-weight:lighter}.mat-tree-node:hover{cursor:pointer}::ng-deep .mat-icon-rtl-mirror{display:flex;flex-direction:row}.sm-tree-row{display:flex;flex-direction:row;flex:1;align-items:center}.sm-shortDescription-spacer{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i11$1.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: i11$1.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i11$1.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i11$1.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i11$1.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "component", type: i5$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }] }); }
|
|
18146
18207
|
}
|
|
18147
18208
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartTreeComponent, decorators: [{
|
|
18148
18209
|
type: Component,
|
|
18149
|
-
args: [{ selector: 'smart-tree', template: "<div class=\"smartTreeContainer\">\
|
|
18210
|
+
args: [{ selector: 'smart-tree', template: "<div class=\"smartTreeContainer\">\n <smart-ui-action-toolbar\n *ngIf=\"uiActionModels.length\"\n [uiActionModels]=\"uiActionModels\"\n ></smart-ui-action-toolbar>\n <mat-tree\n #tree\n *ngIf=\"treeData\"\n [dataSource]=\"dataSource\"\n [treeControl]=\"treeControl\"\n class=\"sm-tree\"\n >\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild\"\n matTreeNodeToggle=\"{{ getIfExpanded(node) }}\"\n [ngClass]=\"getClassesForTreeNode(node)\"\n [ngStyle]=\"getNodeStyle(node)\"\n >\n <div\n [ngStyle]=\"getNodePadding(node)\"\n [ngClass]=\"getInnerClassesForTreeNode(node)\"\n class=\"mat-tree-node sm-tree-node\"\n (click)=\"onNodeClick($event, node)\"\n >\n <button mat-icon-button [attr.aria-label]=\"'Toggle ' + node.name\">\n <mat-icon\n class=\"mat-icon-rtl-mirror\"\n matTreeNodeToggle\n (click)=\"onOpenNode($event, node)\"\n >\n <div *ngIf=\"hasChild(node.level, node)\">\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </div>\n </mat-icon>\n </button>\n <smart-icon [icon]=\"node.icon\"> </smart-icon>\n <div class=\"sm-tree-row\" [ngClass]=\"node.classes\">\n <div class=\"sm-tree-row-caption\">\n {{ node.caption }}\n </div>\n <div class=\"sm-shortDescription-spacer\"></div>\n <div class=\"sm-tree-row-shortDescription\">\n {{ node.shortDescription }}\n </div>\n <div class=\"sm-shortDescription-button-spacer\"></div>\n <div *ngIf=\"node.button\" class=\"sm-tree-node-button\" [ngSwitch]=\"node.button.type\">\n <button\n (click)=\"customButtonClicked($event, node.button)\"\n *ngSwitchCase=\"smartTreeNodeButtonType.ICON\"\n mat-icon-button\n >\n <smart-icon title=\"{{ node.button.icon }}\" [icon]=\"node.button.icon\"></smart-icon>\n </button>\n <div *ngSwitchCase=\"smartTreeNodeButtonType.MENU\">\n <button\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"customButtonClicked($event, node.button, true)\"\n >\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon\n >{{ node.button.label }}\n </button>\n <mat-menu #menu=\"matMenu\">\n <button\n *ngFor=\"let button of node.button.menuItemButtons\"\n (click)=\"customButtonClicked($event, button, true)\"\n mat-menu-item\n [attr.data-testid]=\"button.code ?? null\"\n >\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon\n >{{ button.label }}\n </button>\n </mat-menu>\n </div>\n <button\n (click)=\"customButtonClicked($event, node.button)\"\n *ngSwitchCase=\"smartTreeNodeButtonType.NORMAL\"\n mat-raised-button\n >\n <smart-icon *ngIf=\"node.button.icon\" [icon]=\"node.button.icon\"></smart-icon>\n {{ node.button.icon }}\n </button>\n </div>\n </div>\n </div>\n <div\n [class.sm-tree-invisible]=\"!treeControl.isExpanded(node)\"\n [ngClass]=\"getClassesForTreeNodeChildren(node)\"\n role=\"group\"\n >\n <ng-container matTreeNodeOutlet></ng-container>\n </div>\n </mat-nested-tree-node>\n </mat-tree>\n <div *ngIf=\"!treeData\">\n <h3>\n {{ errorMessage }}\n </h3>\n </div>\n</div>\n", styles: [".smartTreeContainer{display:flex;flex-direction:column;gap:.5rem}.sm-tree-invisible{display:none}.sm-tree ul,.sm-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.sm-tree div[role=group]>.mat-tree-node{padding-left:40px}.sm-tee-node{padding-left:40px}.sm-tree-node-name{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tree-node-name-row{padding-left:15px;padding-top:15px;display:flex;flex-direction:row;justify-content:space-between}.sm-tree-node-name-col{padding-left:15px;padding-top:15px;display:flex;flex-direction:column}.sm-tee-node-id{font-weight:lighter}.mat-tree-node:hover{cursor:pointer}::ng-deep .mat-icon-rtl-mirror{display:flex;flex-direction:row}.sm-tree-row{display:flex;flex-direction:row;flex:1;align-items:center}.sm-shortDescription-spacer{flex:1}\n"] }]
|
|
18150
18211
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { trigger: [{
|
|
18151
18212
|
type: ViewChildren,
|
|
18152
18213
|
args: [MatMenuTrigger]
|
|
@@ -19728,11 +19789,11 @@ class SmartMapComponent {
|
|
|
19728
19789
|
return this.mapComponent.toBase64();
|
|
19729
19790
|
}
|
|
19730
19791
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartMapComponent, deps: [{ token: MAP_ENGINE }, { token: GeoMapService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19731
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartMapComponent, selector: "smart-map", inputs: { uuid: "uuid", identifier: "identifier", parent: "parent" }, viewQueries: [{ propertyName: "mapComponent", first: true, predicate: ["mapComponent"], descendants: true }], ngImport: i0, template: "@if (model()) { @if (mapEngine === MapEngine.GOOGLE) {\
|
|
19792
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartMapComponent, selector: "smart-map", inputs: { uuid: "uuid", identifier: "identifier", parent: "parent" }, viewQueries: [{ propertyName: "mapComponent", first: true, predicate: ["mapComponent"], descendants: true }], ngImport: i0, template: "@if (model()) { @if (mapEngine === MapEngine.GOOGLE) {\n<google-map\n #mapComponent\n [model]=\"model()!\"\n [items]=\"items()\"\n [style]=\"{ width: '100%', height: '320px' }\"\n (onMapDragEnd)=\"move($event.viewport)\"\n (onZoomChanged)=\"move($event.viewport)\"\n (onMapClick)=\"handleMapClick($event.coordinates)\"\n (onOverlayClick)=\"handleItemClick($event.itemId)\"\n (onEditingOverlayClick)=\"handleEditingItemClick($event.itemId, $event)\"\n>\n</google-map>\n} @else if (mapEngine === MapEngine.LEAFLET) {\n<leaflet-map\n #mapComponent\n [model]=\"model()!\"\n [items]=\"items()\"\n [editingSession]=\"editingSession()\"\n (onMapDragEnd)=\"move($event.viewport)\"\n (onZoomChanged)=\"move($event.viewport)\"\n (onMapClick)=\"handleMapClick($event.coordinates)\"\n (onOverlayClick)=\"handleItemClick($event.itemId)\"\n (onEditingOverlayClick)=\"handleEditingItemClick($event.itemId, $event)\"\n (onEditingOverlayDrag)=\"handleEditingItemDrag($event.itemId, $event)\"\n>\n</leaflet-map>\n} @else {\n<p>\n <strong>Not recognised map engine: [ {{ mapEngine }} ]</strong>\n</p>\n<p>Please provide a valid choice of map engine!</p>\n} }\n", styles: [""], dependencies: [{ kind: "component", type: GoogleMap, selector: "google-map", inputs: ["style", "styleClass"], outputs: ["onOverlayDblClick", "onOverlayDragStart", "onOverlayDrag", "onOverlayDragEnd", "onMapReady"] }, { kind: "component", type: LeafletMap, selector: "leaflet-map" }] }); }
|
|
19732
19793
|
}
|
|
19733
19794
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartMapComponent, decorators: [{
|
|
19734
19795
|
type: Component,
|
|
19735
|
-
args: [{ selector: 'smart-map', template: "@if (model()) { @if (mapEngine === MapEngine.GOOGLE) {\
|
|
19796
|
+
args: [{ selector: 'smart-map', template: "@if (model()) { @if (mapEngine === MapEngine.GOOGLE) {\n<google-map\n #mapComponent\n [model]=\"model()!\"\n [items]=\"items()\"\n [style]=\"{ width: '100%', height: '320px' }\"\n (onMapDragEnd)=\"move($event.viewport)\"\n (onZoomChanged)=\"move($event.viewport)\"\n (onMapClick)=\"handleMapClick($event.coordinates)\"\n (onOverlayClick)=\"handleItemClick($event.itemId)\"\n (onEditingOverlayClick)=\"handleEditingItemClick($event.itemId, $event)\"\n>\n</google-map>\n} @else if (mapEngine === MapEngine.LEAFLET) {\n<leaflet-map\n #mapComponent\n [model]=\"model()!\"\n [items]=\"items()\"\n [editingSession]=\"editingSession()\"\n (onMapDragEnd)=\"move($event.viewport)\"\n (onZoomChanged)=\"move($event.viewport)\"\n (onMapClick)=\"handleMapClick($event.coordinates)\"\n (onOverlayClick)=\"handleItemClick($event.itemId)\"\n (onEditingOverlayClick)=\"handleEditingItemClick($event.itemId, $event)\"\n (onEditingOverlayDrag)=\"handleEditingItemDrag($event.itemId, $event)\"\n>\n</leaflet-map>\n} @else {\n<p>\n <strong>Not recognised map engine: [ {{ mapEngine }} ]</strong>\n</p>\n<p>Please provide a valid choice of map engine!</p>\n} }\n" }]
|
|
19736
19797
|
}], ctorParameters: () => [{ type: MapEngine, decorators: [{
|
|
19737
19798
|
type: Inject,
|
|
19738
19799
|
args: [MAP_ENGINE]
|
|
@@ -20487,9 +20548,9 @@ class SmartDiagramComponent {
|
|
|
20487
20548
|
display: true,
|
|
20488
20549
|
text: descriptor.title.content ?? '',
|
|
20489
20550
|
color: descriptor.title.color
|
|
20490
|
-
? `rgba(${descriptor.title.color.red ?? 0},
|
|
20491
|
-
${descriptor.title.color.green ?? 0},
|
|
20492
|
-
${descriptor.title.color.blue ?? 0},
|
|
20551
|
+
? `rgba(${descriptor.title.color.red ?? 0},
|
|
20552
|
+
${descriptor.title.color.green ?? 0},
|
|
20553
|
+
${descriptor.title.color.blue ?? 0},
|
|
20493
20554
|
${descriptor.title.color.alpha ?? 1})`
|
|
20494
20555
|
: '#000000ff',
|
|
20495
20556
|
font: {
|
|
@@ -20541,20 +20602,20 @@ class SmartDiagramComponent {
|
|
|
20541
20602
|
descriptor.shapes.forEach((shape, index) => {
|
|
20542
20603
|
options.plugins.annotation = options.plugins.annotation || {};
|
|
20543
20604
|
options.plugins.annotation.annotations = options.plugins.annotation.annotations || {};
|
|
20544
|
-
let borderColor = `rgba(
|
|
20545
|
-
${shape.borderColor?.red ?? 0},
|
|
20546
|
-
${shape.borderColor?.green ?? 0},
|
|
20547
|
-
${shape.borderColor?.blue ?? 0},
|
|
20605
|
+
let borderColor = `rgba(
|
|
20606
|
+
${shape.borderColor?.red ?? 0},
|
|
20607
|
+
${shape.borderColor?.green ?? 0},
|
|
20608
|
+
${shape.borderColor?.blue ?? 0},
|
|
20548
20609
|
${shape.borderColor?.alpha ?? 1})`;
|
|
20549
|
-
let backgroundColor = `rgba(
|
|
20550
|
-
${shape.backgroundColor?.red ?? 0},
|
|
20551
|
-
${shape.backgroundColor?.green ?? 0},
|
|
20552
|
-
${shape.backgroundColor?.blue ?? 0},
|
|
20610
|
+
let backgroundColor = `rgba(
|
|
20611
|
+
${shape.backgroundColor?.red ?? 0},
|
|
20612
|
+
${shape.backgroundColor?.green ?? 0},
|
|
20613
|
+
${shape.backgroundColor?.blue ?? 0},
|
|
20553
20614
|
${shape.backgroundColor?.alpha ?? 1})`;
|
|
20554
|
-
let fontColor = `rgba(
|
|
20555
|
-
${shape.labelText?.color?.red ?? 0},
|
|
20556
|
-
${shape.labelText?.color?.green ?? 0},
|
|
20557
|
-
${shape.labelText?.color?.blue ?? 0},
|
|
20615
|
+
let fontColor = `rgba(
|
|
20616
|
+
${shape.labelText?.color?.red ?? 0},
|
|
20617
|
+
${shape.labelText?.color?.green ?? 0},
|
|
20618
|
+
${shape.labelText?.color?.blue ?? 0},
|
|
20558
20619
|
${shape.labelText?.color?.alpha ?? 1})`;
|
|
20559
20620
|
let borderDash;
|
|
20560
20621
|
if (shape.borderDashLength && shape.borderDashGap) {
|
|
@@ -20616,10 +20677,10 @@ class SmartDiagramComponent {
|
|
|
20616
20677
|
});
|
|
20617
20678
|
}
|
|
20618
20679
|
if (descriptor.backgroundColor) {
|
|
20619
|
-
let backgroundColor = `rgba(
|
|
20620
|
-
${descriptor.backgroundColor?.red ?? 0},
|
|
20621
|
-
${descriptor.backgroundColor?.green ?? 0},
|
|
20622
|
-
${descriptor.backgroundColor?.blue ?? 0},
|
|
20680
|
+
let backgroundColor = `rgba(
|
|
20681
|
+
${descriptor.backgroundColor?.red ?? 0},
|
|
20682
|
+
${descriptor.backgroundColor?.green ?? 0},
|
|
20683
|
+
${descriptor.backgroundColor?.blue ?? 0},
|
|
20623
20684
|
${descriptor.backgroundColor?.alpha ?? 1})`;
|
|
20624
20685
|
let id = 'customCanvasBackgroundColor';
|
|
20625
20686
|
const plugin = {
|
|
@@ -20727,11 +20788,11 @@ class SmartDiagramComponent {
|
|
|
20727
20788
|
return SmartStyleUtility.getNgStyles(style);
|
|
20728
20789
|
}
|
|
20729
20790
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramComponent, deps: [{ token: DiagramServiceService }, { token: DefaultChartOptionsProvider }, { token: COMPONENT_LIBRARY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20730
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartDiagramComponent, selector: "smart-diagram", inputs: { uuid: "uuid", identifier: "identifier", parent: "parent", diagramModel: "diagramModel", options: "options", plugins: "plugins" }, outputs: { elementSelect: "elementSelect", canvasClick: "canvasClick", dataClick: "dataClick" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["chartJSRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- @if(compLib === componentLibrary.PRIMENG) { -->\
|
|
20791
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartDiagramComponent, selector: "smart-diagram", inputs: { uuid: "uuid", identifier: "identifier", parent: "parent", diagramModel: "diagramModel", options: "options", plugins: "plugins" }, outputs: { elementSelect: "elementSelect", canvasClick: "canvasClick", dataClick: "dataClick" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["chartJSRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- @if(compLib === componentLibrary.PRIMENG) { -->\n<p-chart\n #chartJSRef\n [type]=\"type\"\n [data]=\"data\"\n [options]=\"options\"\n [plugins]=\"plugins\"\n [ngStyle]=\"calcStyle(diagramModel?.descriptor?.style)\"\n (onDataSelect)=\"onDataSelect($event)\"\n (click)=\"handleChartClick($event)\"\n (click)=\"handleOnDataClicked($event)\"\n/>\n\n<!-- } @else {\n<p>Only PrimeNg component library is supported</p>\n} -->\n", styles: [":host ::ng-deep .default-aspect-ratio div{width:100%;aspect-ratio:1.78}:host ::ng-deep .pie-aspect-ratio div{width:100%;aspect-ratio:1}:host ::ng-deep p-chart{display:flex}\n"], dependencies: [{ kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4$4.UIChart, selector: "p-chart", inputs: ["type", "plugins", "width", "height", "responsive", "ariaLabel", "ariaLabelledBy", "data", "options"], outputs: ["onDataSelect"] }] }); }
|
|
20731
20792
|
}
|
|
20732
20793
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramComponent, decorators: [{
|
|
20733
20794
|
type: Component,
|
|
20734
|
-
args: [{ selector: 'smart-diagram', template: "<!-- @if(compLib === componentLibrary.PRIMENG) { -->\
|
|
20795
|
+
args: [{ selector: 'smart-diagram', template: "<!-- @if(compLib === componentLibrary.PRIMENG) { -->\n<p-chart\n #chartJSRef\n [type]=\"type\"\n [data]=\"data\"\n [options]=\"options\"\n [plugins]=\"plugins\"\n [ngStyle]=\"calcStyle(diagramModel?.descriptor?.style)\"\n (onDataSelect)=\"onDataSelect($event)\"\n (click)=\"handleChartClick($event)\"\n (click)=\"handleOnDataClicked($event)\"\n/>\n\n<!-- } @else {\n<p>Only PrimeNg component library is supported</p>\n} -->\n", styles: [":host ::ng-deep .default-aspect-ratio div{width:100%;aspect-ratio:1.78}:host ::ng-deep .pie-aspect-ratio div{width:100%;aspect-ratio:1}:host ::ng-deep p-chart{display:flex}\n"] }]
|
|
20735
20796
|
}], ctorParameters: () => [{ type: DiagramServiceService }, { type: DefaultChartOptionsProvider }, { type: ComponentLibrary, decorators: [{
|
|
20736
20797
|
type: Inject,
|
|
20737
20798
|
args: [COMPONENT_LIBRARY]
|
|
@@ -20940,6 +21001,7 @@ class SmartComponentLayoutComponent {
|
|
|
20940
21001
|
['parentSmartComponent', this.parentSmartComponent],
|
|
20941
21002
|
['parentLayoutComponent', this.parentLayoutComponent],
|
|
20942
21003
|
]),
|
|
21004
|
+
headerToolbarId: this.smartComponentLayout?.expandableSectionHeaderToolbarId,
|
|
20943
21005
|
customComponent: SmartComponentLayoutComponent,
|
|
20944
21006
|
};
|
|
20945
21007
|
}
|
|
@@ -21114,11 +21176,11 @@ class SmartComponentLayoutComponent {
|
|
|
21114
21176
|
}
|
|
21115
21177
|
}
|
|
21116
21178
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartComponentLayoutComponent, deps: [{ token: SmartformLayoutDefinitionService }, { token: SmartViewContextService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21117
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartComponentLayoutComponent, selector: "smart-component-layout", inputs: { smartComponentLayout: "smartComponentLayout", parentLayoutComponent: "parentLayoutComponent", parentSmartComponent: "parentSmartComponent", gridRow: "gridRow" }, host: { properties: { "attr.data-testid": "this.testId", "class.horizontal": "this.isHorizontal", "class.vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "embeddedSlotVcRefSetter", first: true, predicate: ["embeddedSlot"], descendants: true, read: ViewContainerRef }, { propertyName: "smartFormList", predicate: ["form"], descendants: true }, { propertyName: "smartGridList", predicate: ["grid"], descendants: true }, { propertyName: "smartMapList", predicate: ["map"], descendants: true }, { propertyName: "smartDiagramList", predicate: ["diagram"], descendants: true }, { propertyName: "smartFilterList", predicate: ["filter"], descendants: true }, { propertyName: "toolbarList", predicate: ["toolbar"], descendants: true }, { propertyName: "expandableComponents", predicate: ExpandableSectionComponent, descendants: true }, { propertyName: "components", predicate: SmartComponentLayoutComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"smartComponentLayout?.expandable; then expandable; else normal\"> </div>\
|
|
21179
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartComponentLayoutComponent, selector: "smart-component-layout", inputs: { smartComponentLayout: "smartComponentLayout", parentLayoutComponent: "parentLayoutComponent", parentSmartComponent: "parentSmartComponent", gridRow: "gridRow" }, host: { properties: { "attr.data-testid": "this.testId", "class.horizontal": "this.isHorizontal", "class.vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "embeddedSlotVcRefSetter", first: true, predicate: ["embeddedSlot"], descendants: true, read: ViewContainerRef }, { propertyName: "smartFormList", predicate: ["form"], descendants: true }, { propertyName: "smartGridList", predicate: ["grid"], descendants: true }, { propertyName: "smartMapList", predicate: ["map"], descendants: true }, { propertyName: "smartDiagramList", predicate: ["diagram"], descendants: true }, { propertyName: "smartFilterList", predicate: ["filter"], descendants: true }, { propertyName: "toolbarList", predicate: ["toolbar"], descendants: true }, { propertyName: "expandableComponents", predicate: ExpandableSectionComponent, descendants: true }, { propertyName: "components", predicate: SmartComponentLayoutComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"smartComponentLayout?.expandable; then expandable; else normal\"> </div>\n\n<ng-template #expandable>\n <smart-expandable-section\n *ngIf=\"expandableSection\"\n [data]=\"expandableSection\"\n ></smart-expandable-section>\n</ng-template>\n\n<ng-template #normal>\n @if (smartComponentLayout?.type === type().CONTAINER) {\n <smart-component-layout\n *ngFor=\"let layout of smartComponentLayout?.components\"\n [parentSmartComponent]=\"parentSmartComponent\"\n [parentLayoutComponent]=\"this\"\n [smartComponentLayout]=\"layout\"\n [gridRow]=\"gridRow\"\n ></smart-component-layout>\n }\n <smartform *ngIf=\"smartForm\" #form [smartForm]=\"smartForm\"></smartform>\n <smart-grid *ngIf=\"smartGrid\" #grid [smartGrid]=\"smartGrid\" [uuid]=\"uuid!\"></smart-grid>\n <smart-map\n *ngIf=\"!!uuid && !!mapId\"\n #map\n [uuid]=\"uuid\"\n [identifier]=\"mapId\"\n [parent]=\"parentSmartComponent\"\n ></smart-map>\n <smart-diagram\n *ngIf=\"!!uuid && !!smartDiagramId\"\n #diagram\n [uuid]=\"uuid\"\n [identifier]=\"smartDiagramId\"\n [parent]=\"parentSmartComponent\"\n ></smart-diagram>\n <!-- <smart-filter #filter [filter]=\"smartFilter\"></smart-filter> -->\n <smart-tree *ngIf=\"treeService\" [treeService]=\"treeService!\"></smart-tree>\n <smart-ui-action-toolbar\n *ngIf=\"!!toolbarId\"\n #toolbar\n [id]=\"toolbarId\"\n [toolbarPropertes]=\"toolbarPropertes\"\n ></smart-ui-action-toolbar>\n <ng-container *ngIf=\"embeddedSlotActive\" #embeddedSlot></ng-container>\n</ng-template>\n", styles: [":host(.horizontal){display:flex;flex-direction:row}:host(.vertical){display:flex;flex-direction:column}:host(.horizontal) smart-component-layout{display:flex}:host(.horizontal) smartform{flex:1;display:flex}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SmartGridComponent, selector: "smart-grid", inputs: ["smartGrid", "uuid", "dev"] }, { kind: "component", type: ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }, { kind: "component", type: SmartTreeComponent, selector: "smart-tree", inputs: ["treeStyle", "treeService"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: SmartformComponent, selector: "smartform", inputs: ["smartForm"] }, { kind: "component", type: SmartMapComponent, selector: "smart-map", inputs: ["uuid", "identifier", "parent"] }, { kind: "component", type: SmartDiagramComponent, selector: "smart-diagram", inputs: ["uuid", "identifier", "parent", "diagramModel", "options", "plugins"], outputs: ["elementSelect", "canvasClick", "dataClick"] }, { kind: "component", type: SmartComponentLayoutComponent, selector: "smart-component-layout", inputs: ["smartComponentLayout", "parentLayoutComponent", "parentSmartComponent", "gridRow"] }] }); }
|
|
21118
21180
|
}
|
|
21119
21181
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartComponentLayoutComponent, decorators: [{
|
|
21120
21182
|
type: Component,
|
|
21121
|
-
args: [{ selector: 'smart-component-layout', template: "<div *ngIf=\"smartComponentLayout?.expandable; then expandable; else normal\"> </div>\
|
|
21183
|
+
args: [{ selector: 'smart-component-layout', template: "<div *ngIf=\"smartComponentLayout?.expandable; then expandable; else normal\"> </div>\n\n<ng-template #expandable>\n <smart-expandable-section\n *ngIf=\"expandableSection\"\n [data]=\"expandableSection\"\n ></smart-expandable-section>\n</ng-template>\n\n<ng-template #normal>\n @if (smartComponentLayout?.type === type().CONTAINER) {\n <smart-component-layout\n *ngFor=\"let layout of smartComponentLayout?.components\"\n [parentSmartComponent]=\"parentSmartComponent\"\n [parentLayoutComponent]=\"this\"\n [smartComponentLayout]=\"layout\"\n [gridRow]=\"gridRow\"\n ></smart-component-layout>\n }\n <smartform *ngIf=\"smartForm\" #form [smartForm]=\"smartForm\"></smartform>\n <smart-grid *ngIf=\"smartGrid\" #grid [smartGrid]=\"smartGrid\" [uuid]=\"uuid!\"></smart-grid>\n <smart-map\n *ngIf=\"!!uuid && !!mapId\"\n #map\n [uuid]=\"uuid\"\n [identifier]=\"mapId\"\n [parent]=\"parentSmartComponent\"\n ></smart-map>\n <smart-diagram\n *ngIf=\"!!uuid && !!smartDiagramId\"\n #diagram\n [uuid]=\"uuid\"\n [identifier]=\"smartDiagramId\"\n [parent]=\"parentSmartComponent\"\n ></smart-diagram>\n <!-- <smart-filter #filter [filter]=\"smartFilter\"></smart-filter> -->\n <smart-tree *ngIf=\"treeService\" [treeService]=\"treeService!\"></smart-tree>\n <smart-ui-action-toolbar\n *ngIf=\"!!toolbarId\"\n #toolbar\n [id]=\"toolbarId\"\n [toolbarPropertes]=\"toolbarPropertes\"\n ></smart-ui-action-toolbar>\n <ng-container *ngIf=\"embeddedSlotActive\" #embeddedSlot></ng-container>\n</ng-template>\n", styles: [":host(.horizontal){display:flex;flex-direction:row}:host(.vertical){display:flex;flex-direction:column}:host(.horizontal) smart-component-layout{display:flex}:host(.horizontal) smartform{flex:1;display:flex}\n"] }]
|
|
21122
21184
|
}], ctorParameters: () => [{ type: SmartformLayoutDefinitionService }, { type: SmartViewContextService }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { smartComponentLayout: [{
|
|
21123
21185
|
type: Input
|
|
21124
21186
|
}], parentLayoutComponent: [{
|
|
@@ -21254,11 +21316,11 @@ class SmartFilterParamComponent {
|
|
|
21254
21316
|
});
|
|
21255
21317
|
}
|
|
21256
21318
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterParamComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21257
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterParamComponent, selector: "app-target-group-filter-param", inputs: { data: "data" }, ngImport: i0, template: "<div class=\"targetGroupFilterParamContainer\">\
|
|
21319
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterParamComponent, selector: "app-target-group-filter-param", inputs: { data: "data" }, ngImport: i0, template: "<div class=\"targetGroupFilterParamContainer\">\n <div\n class=\"targetGroupFilterItem\"\n *ngFor=\"let data of data?.group\"\n (click)=\"onItemClick(data)\"\n >\n <smart-icon icon=\"Ic24_Chevron_Right\" color=\"gray\"></smart-icon>\n <div class=\"mat-caption\">\n {{ data.label }}\n </div>\n </div>\n</div>\n", styles: [".targetGroupFilterParamContainer{display:flex;flex-direction:column;gap:.25rem}.targetGroupFilterItem{padding:.75rem;border-radius:.25rem;display:flex;flex-direction:row;gap:.5rem;cursor:pointer}.targetGroupFilterItem .mat-caption{margin:auto 0}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }] }); }
|
|
21258
21320
|
}
|
|
21259
21321
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterParamComponent, decorators: [{
|
|
21260
21322
|
type: Component,
|
|
21261
|
-
args: [{ selector: 'app-target-group-filter-param', template: "<div class=\"targetGroupFilterParamContainer\">\
|
|
21323
|
+
args: [{ selector: 'app-target-group-filter-param', template: "<div class=\"targetGroupFilterParamContainer\">\n <div\n class=\"targetGroupFilterItem\"\n *ngFor=\"let data of data?.group\"\n (click)=\"onItemClick(data)\"\n >\n <smart-icon icon=\"Ic24_Chevron_Right\" color=\"gray\"></smart-icon>\n <div class=\"mat-caption\">\n {{ data.label }}\n </div>\n </div>\n</div>\n", styles: [".targetGroupFilterParamContainer{display:flex;flex-direction:column;gap:.25rem}.targetGroupFilterItem{padding:.75rem;border-radius:.25rem;display:flex;flex-direction:row;gap:.5rem;cursor:pointer}.targetGroupFilterItem .mat-caption{margin:auto 0}\n"] }]
|
|
21262
21324
|
}], ctorParameters: () => [], propDecorators: { data: [{
|
|
21263
21325
|
type: Input
|
|
21264
21326
|
}] } });
|
|
@@ -21302,11 +21364,11 @@ class SmartFilterParamsComponent {
|
|
|
21302
21364
|
}
|
|
21303
21365
|
}
|
|
21304
21366
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterParamsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21305
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterParamsComponent, selector: "smart-filter-group-params", inputs: { service: "service" }, viewQueries: [{ propertyName: "filterVcRef", first: true, predicate: ["smartFilter"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div\
|
|
21367
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterParamsComponent, selector: "smart-filter-group-params", inputs: { service: "service" }, viewQueries: [{ propertyName: "filterVcRef", first: true, predicate: ["smartFilter"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div\n class=\"targetGroupFilterParamsContainer\"\n *ngIf=\"service.model?.showGroups && !service.model?.readOnly\"\n>\n <!-- <ng-template #smartFilter></ng-template> -->\n <!-- <div class=\"dataSource-options\" *ngIf=\"service.model?.extarnalDatabase\">\n <div class=\"dataSource-btns\">\n <div class=\"dataSource-btn\">K\u00FCls\u0151 adatb\u00E1zis</div>\n <div class=\"dataSource-btn dataSource-btn-disabled\">Bels\u0151 adatb\u00E1zis</div>\n </div>\n <div class=\"dataSource-add-database\">\n <div class=\"dataSource-add-database-title\">\n <smart-icon icon=\"Ic24_View_Table\" color=\"sucess\"></smart-icon>\n Adatb\u00E1zis\n </div>\n <button title=\"add\" mat-icon-button (click)=\"addDataSource()\">\n <smart-icon icon=\"Ic24_Plus_Circle\" color=\"success\"></smart-icon>\n </button>\n </div>\n </div> -->\n <div class=\"sections\">\n <smart-expandable-section\n class=\"excel\"\n *ngIf=\"expandableSectionsFromExcel\"\n [data]=\"expandableSectionsFromExcel!\"\n ></smart-expandable-section>\n <smart-expandable-section\n [data]=\"data\"\n *ngFor=\"let data of expandableSections\"\n ></smart-expandable-section>\n </div>\n</div>\n", styles: [".targetGroupFilterParamsContainer{padding:1.5rem;display:flex;flex-direction:column;gap:2.5rem;height:calc(100% - 3rem);overflow:auto;border-right:2px solid var(--primary-dark-color)}.sections{display:flex;flex-direction:column;gap:.25rem}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-body{background-color:var(--success-lighter-color)}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--success-color)!important}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-body{padding:0 0 0 1rem!important;background-color:var(--light-blue-color)}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header{background-color:var(--primary-light-color);padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header-title{color:var(--primary-lighter-color);font-weight:600}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--accent-color)!important;padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded .mat-expansion-panel-header-title{color:#fff}.dataSource-btns{display:flex;flex-direction:row;justify-content:space-around;background-color:var(--success-lighter-color);height:44px;padding:8px 12px;align-items:center;border:1.5px solid var(--success-color);border-left:6px solid var(--success-color);border-radius:4px}.dataSource-btn{display:flex;padding:1rem 2rem;justify-content:center;align-items:center;background-color:var(--success-color);border-radius:4px;cursor:pointer}.dataSource-btn-disabled{background-color:var(--success-lighter-color);cursor:auto}.dataSource-add-database{display:flex;flex-direction:row;justify-content:space-between;background-color:var(--success-lighter-color);padding:8px;border-radius:4px}.dataSource-add-database-title{display:flex;flex-direction:row;gap:1rem;align-items:center}.dataSource-options{display:flex;flex-direction:column;gap:1rem}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }] }); }
|
|
21306
21368
|
}
|
|
21307
21369
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterParamsComponent, decorators: [{
|
|
21308
21370
|
type: Component,
|
|
21309
|
-
args: [{ selector: 'smart-filter-group-params', template: "<div\
|
|
21371
|
+
args: [{ selector: 'smart-filter-group-params', template: "<div\n class=\"targetGroupFilterParamsContainer\"\n *ngIf=\"service.model?.showGroups && !service.model?.readOnly\"\n>\n <!-- <ng-template #smartFilter></ng-template> -->\n <!-- <div class=\"dataSource-options\" *ngIf=\"service.model?.extarnalDatabase\">\n <div class=\"dataSource-btns\">\n <div class=\"dataSource-btn\">K\u00FCls\u0151 adatb\u00E1zis</div>\n <div class=\"dataSource-btn dataSource-btn-disabled\">Bels\u0151 adatb\u00E1zis</div>\n </div>\n <div class=\"dataSource-add-database\">\n <div class=\"dataSource-add-database-title\">\n <smart-icon icon=\"Ic24_View_Table\" color=\"sucess\"></smart-icon>\n Adatb\u00E1zis\n </div>\n <button title=\"add\" mat-icon-button (click)=\"addDataSource()\">\n <smart-icon icon=\"Ic24_Plus_Circle\" color=\"success\"></smart-icon>\n </button>\n </div>\n </div> -->\n <div class=\"sections\">\n <smart-expandable-section\n class=\"excel\"\n *ngIf=\"expandableSectionsFromExcel\"\n [data]=\"expandableSectionsFromExcel!\"\n ></smart-expandable-section>\n <smart-expandable-section\n [data]=\"data\"\n *ngFor=\"let data of expandableSections\"\n ></smart-expandable-section>\n </div>\n</div>\n", styles: [".targetGroupFilterParamsContainer{padding:1.5rem;display:flex;flex-direction:column;gap:2.5rem;height:calc(100% - 3rem);overflow:auto;border-right:2px solid var(--primary-dark-color)}.sections{display:flex;flex-direction:column;gap:.25rem}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-body{background-color:var(--success-lighter-color)}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--success-color)!important}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-body{padding:0 0 0 1rem!important;background-color:var(--light-blue-color)}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header{background-color:var(--primary-light-color);padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header-title{color:var(--primary-lighter-color);font-weight:600}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--accent-color)!important;padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded .mat-expansion-panel-header-title{color:#fff}.dataSource-btns{display:flex;flex-direction:row;justify-content:space-around;background-color:var(--success-lighter-color);height:44px;padding:8px 12px;align-items:center;border:1.5px solid var(--success-color);border-left:6px solid var(--success-color);border-radius:4px}.dataSource-btn{display:flex;padding:1rem 2rem;justify-content:center;align-items:center;background-color:var(--success-color);border-radius:4px;cursor:pointer}.dataSource-btn-disabled{background-color:var(--success-lighter-color);cursor:auto}.dataSource-add-database{display:flex;flex-direction:row;justify-content:space-between;background-color:var(--success-lighter-color);padding:8px;border-radius:4px}.dataSource-add-database-title{display:flex;flex-direction:row;gap:1rem;align-items:center}.dataSource-options{display:flex;flex-direction:column;gap:1rem}\n"] }]
|
|
21310
21372
|
}], ctorParameters: () => [], propDecorators: { service: [{
|
|
21311
21373
|
type: Input
|
|
21312
21374
|
}], filterVcRef: [{
|
|
@@ -21407,11 +21469,11 @@ class SmartFilterExpressionItemComponent {
|
|
|
21407
21469
|
}
|
|
21408
21470
|
}
|
|
21409
21471
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterExpressionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21410
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterExpressionItemComponent, selector: "app-expression-item", inputs: { item: "item", hasNext: "hasNext", service: "service" }, ngImport: i0, template: "<div class=\"expressionItemContainer\">\
|
|
21472
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterExpressionItemComponent, selector: "app-expression-item", inputs: { item: "item", hasNext: "hasNext", service: "service" }, ngImport: i0, template: "<div class=\"expressionItemContainer\">\n <div\n class=\"expressionItemInnerContainer\"\n [ngClass]=\"\n item.expressionData?.currentOperation === 'EXPRESSION'\n ? isSelected\n ? 'selectedExpressionContainer'\n : 'expressionContainer'\n : ''\n \"\n >\n <div\n *ngIf=\"\n item.expressionData?.currentOperation === 'EXPRESSION';\n then expression;\n else simpleItem\n \"\n ></div>\n <ng-template #expression>\n <div class=\"expressionItemBubble expression\" (click)=\"select($event, item)\">[</div>\n <app-expression-item\n [item]=\"subItem\"\n [service]=\"service\"\n [hasNext]=\"i < (item.subFieldList?.filters)!.length - 1\"\n *ngFor=\"let subItem of item.subFieldList?.filters; let i = index\"\n ></app-expression-item>\n <div class=\"expressionItemBubble expression\">]</div>\n </ng-template>\n <ng-template #simpleItem>\n <div\n (click)=\"select($event, item)\"\n class=\"expressionItemBubble simpleItem\"\n [ngClass]=\"isSelected ? 'selectedSimpleItem' : ''\"\n >\n {{ item.label }}:\n <div *ngIf=\"item.expressionData?.currentOperation !== 'BETWEEN'\">\n <div *ngIf=\"item.widgetType === 'DATE'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDate }}</b>\n </div>\n <div *ngIf=\"item.widgetType === 'DATE_TIME'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDateTime }}</b>\n </div>\n <div *ngIf=\"item.widgetType !== 'DATE_TIME' && item.widgetType !== 'DATE'\">\n <b>{{ getDisplayValue(item.expressionData!.operand2!.valueAsString!) }}</b>\n </div>\n </div>\n <div *ngIf=\"item.expressionData?.currentOperation === 'IN'\">\n <b *ngFor=\"let value of item.expressionData?.operand2?.selectedValues; let last = last\">\n {{ getDisplayValue(value) }} <b *ngIf=\"!last\">,</b>\n </b>\n </div>\n <div class=\"expressionValues\" *ngIf=\"item.expressionData?.currentOperation === 'BETWEEN'\">\n <div *ngIf=\"item.widgetType === 'DATE'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDate }}</b>\n </div>\n <div *ngIf=\"item.widgetType === 'DATE_TIME'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDateTime }}</b>\n </div>\n <div *ngIf=\"item.widgetType !== 'DATE_TIME' && item.widgetType !== 'DATE'\">\n <b>{{ item.expressionData?.operand2?.valueAsString }}</b>\n </div>\n <b>-</b>\n <div *ngIf=\"item.widgetType === 'DATE'\">\n <b>{{ item.expressionData!.operand3!.valueAsString! | smartDate }}</b>\n </div>\n <div *ngIf=\"item.widgetType === 'DATE_TIME'\">\n <b>{{ item.expressionData!.operand3!.valueAsString! | smartDateTime }}</b>\n </div>\n <div *ngIf=\"item.widgetType !== 'DATE_TIME' && item.widgetType !== 'DATE'\">\n <b>{{ item.expressionData?.operand3?.valueAsString }}</b>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n <div *ngIf=\"hasNext\" class=\"relationItemBubble\">\n <button\n mat-button\n (click)=\"setOperatorTo($event, boolOperatorType.AND)\"\n [ngClass]=\"\n item.expressionData?.boolOperator === boolOperatorType.AND\n ? 'mat-raised-button and-operator'\n : ''\n \"\n color=\"black\"\n >\n \u00C9S\n </button>\n <button\n mat-button\n (click)=\"setOperatorTo($event, boolOperatorType.OR)\"\n [ngClass]=\"\n item.expressionData?.boolOperator === boolOperatorType.OR\n ? 'mat-raised-button or-operator'\n : ''\n \"\n color=\"black\"\n >\n VAGY\n </button>\n </div>\n</div>\n", styles: [".expressionItemContainer{display:flex;flex-direction:row;gap:.75rem}.expressionItemInnerContainer{display:flex;flex-direction:row;grid-area:.75rem;padding:.25rem;border-radius:.25rem}.expressionContainer{border:1px dashed var(--primary-lighter-gray-color);cursor:pointer}.selectedExpressionContainer{border:2px dashed var(--primary-darker-color)}.expressionItemBubble,.relationItemBubble{display:flex;flex-direction:row;border-radius:1.5rem}.expressionItemBubble{padding:.75rem}.expression{background-color:var(--inner-container);font-weight:600;margin:auto 0}.simpleItem{background-color:#c6ddff;cursor:pointer}.selectedSimpleItem{border:2px solid var(--primary-color)}.relationItemBubble{border:1px solid #cdcdcd;padding:.25rem}.relationItemBubble .mat-mdc-button{border-radius:1.5rem;height:100%;margin:auto 0}.expressionValues{display:flex;flex-direction:row;gap:.5rem}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: SmartFilterExpressionItemComponent, selector: "app-expression-item", inputs: ["item", "hasNext", "service"] }, { kind: "pipe", type: SmartDateTimePipe, name: "smartDateTime" }, { kind: "pipe", type: SmartDatePipe, name: "smartDate" }] }); }
|
|
21411
21473
|
}
|
|
21412
21474
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterExpressionItemComponent, decorators: [{
|
|
21413
21475
|
type: Component,
|
|
21414
|
-
args: [{ selector: 'app-expression-item', template: "<div class=\"expressionItemContainer\">\
|
|
21476
|
+
args: [{ selector: 'app-expression-item', template: "<div class=\"expressionItemContainer\">\n <div\n class=\"expressionItemInnerContainer\"\n [ngClass]=\"\n item.expressionData?.currentOperation === 'EXPRESSION'\n ? isSelected\n ? 'selectedExpressionContainer'\n : 'expressionContainer'\n : ''\n \"\n >\n <div\n *ngIf=\"\n item.expressionData?.currentOperation === 'EXPRESSION';\n then expression;\n else simpleItem\n \"\n ></div>\n <ng-template #expression>\n <div class=\"expressionItemBubble expression\" (click)=\"select($event, item)\">[</div>\n <app-expression-item\n [item]=\"subItem\"\n [service]=\"service\"\n [hasNext]=\"i < (item.subFieldList?.filters)!.length - 1\"\n *ngFor=\"let subItem of item.subFieldList?.filters; let i = index\"\n ></app-expression-item>\n <div class=\"expressionItemBubble expression\">]</div>\n </ng-template>\n <ng-template #simpleItem>\n <div\n (click)=\"select($event, item)\"\n class=\"expressionItemBubble simpleItem\"\n [ngClass]=\"isSelected ? 'selectedSimpleItem' : ''\"\n >\n {{ item.label }}:\n <div *ngIf=\"item.expressionData?.currentOperation !== 'BETWEEN'\">\n <div *ngIf=\"item.widgetType === 'DATE'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDate }}</b>\n </div>\n <div *ngIf=\"item.widgetType === 'DATE_TIME'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDateTime }}</b>\n </div>\n <div *ngIf=\"item.widgetType !== 'DATE_TIME' && item.widgetType !== 'DATE'\">\n <b>{{ getDisplayValue(item.expressionData!.operand2!.valueAsString!) }}</b>\n </div>\n </div>\n <div *ngIf=\"item.expressionData?.currentOperation === 'IN'\">\n <b *ngFor=\"let value of item.expressionData?.operand2?.selectedValues; let last = last\">\n {{ getDisplayValue(value) }} <b *ngIf=\"!last\">,</b>\n </b>\n </div>\n <div class=\"expressionValues\" *ngIf=\"item.expressionData?.currentOperation === 'BETWEEN'\">\n <div *ngIf=\"item.widgetType === 'DATE'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDate }}</b>\n </div>\n <div *ngIf=\"item.widgetType === 'DATE_TIME'\">\n <b>{{ item.expressionData!.operand2!.valueAsString! | smartDateTime }}</b>\n </div>\n <div *ngIf=\"item.widgetType !== 'DATE_TIME' && item.widgetType !== 'DATE'\">\n <b>{{ item.expressionData?.operand2?.valueAsString }}</b>\n </div>\n <b>-</b>\n <div *ngIf=\"item.widgetType === 'DATE'\">\n <b>{{ item.expressionData!.operand3!.valueAsString! | smartDate }}</b>\n </div>\n <div *ngIf=\"item.widgetType === 'DATE_TIME'\">\n <b>{{ item.expressionData!.operand3!.valueAsString! | smartDateTime }}</b>\n </div>\n <div *ngIf=\"item.widgetType !== 'DATE_TIME' && item.widgetType !== 'DATE'\">\n <b>{{ item.expressionData?.operand3?.valueAsString }}</b>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n <div *ngIf=\"hasNext\" class=\"relationItemBubble\">\n <button\n mat-button\n (click)=\"setOperatorTo($event, boolOperatorType.AND)\"\n [ngClass]=\"\n item.expressionData?.boolOperator === boolOperatorType.AND\n ? 'mat-raised-button and-operator'\n : ''\n \"\n color=\"black\"\n >\n \u00C9S\n </button>\n <button\n mat-button\n (click)=\"setOperatorTo($event, boolOperatorType.OR)\"\n [ngClass]=\"\n item.expressionData?.boolOperator === boolOperatorType.OR\n ? 'mat-raised-button or-operator'\n : ''\n \"\n color=\"black\"\n >\n VAGY\n </button>\n </div>\n</div>\n", styles: [".expressionItemContainer{display:flex;flex-direction:row;gap:.75rem}.expressionItemInnerContainer{display:flex;flex-direction:row;grid-area:.75rem;padding:.25rem;border-radius:.25rem}.expressionContainer{border:1px dashed var(--primary-lighter-gray-color);cursor:pointer}.selectedExpressionContainer{border:2px dashed var(--primary-darker-color)}.expressionItemBubble,.relationItemBubble{display:flex;flex-direction:row;border-radius:1.5rem}.expressionItemBubble{padding:.75rem}.expression{background-color:var(--inner-container);font-weight:600;margin:auto 0}.simpleItem{background-color:#c6ddff;cursor:pointer}.selectedSimpleItem{border:2px solid var(--primary-color)}.relationItemBubble{border:1px solid #cdcdcd;padding:.25rem}.relationItemBubble .mat-mdc-button{border-radius:1.5rem;height:100%;margin:auto 0}.expressionValues{display:flex;flex-direction:row;gap:.5rem}\n"] }]
|
|
21415
21477
|
}], ctorParameters: () => [], propDecorators: { item: [{
|
|
21416
21478
|
type: Input
|
|
21417
21479
|
}], hasNext: [{
|
|
@@ -21443,11 +21505,11 @@ class SmartFilterExpressionItemsComponent {
|
|
|
21443
21505
|
moveItemInArray(this.items, event.previousIndex, event.currentIndex);
|
|
21444
21506
|
}
|
|
21445
21507
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterExpressionItemsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21446
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterExpressionItemsComponent, selector: "app-expression-items", inputs: { items: "items", service: "service" }, ngImport: i0, template: "<div\
|
|
21508
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterExpressionItemsComponent, selector: "app-expression-items", inputs: { items: "items", service: "service" }, ngImport: i0, template: "<div\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"expressionsContainer example-list\"\n [ngClass]=\"isSelected ? 'selected' : ''\"\n>\n <div cdkDrag class=\"expressionItem\" *ngFor=\"let item of items; let i = index\">\n <app-expression-item\n [item]=\"item\"\n [hasNext]=\"i < items.length - 1\"\n [service]=\"service\"\n ></app-expression-item>\n </div>\n</div>\n", styles: [".expressionsContainer{display:flex;flex-direction:row;flex-wrap:wrap;gap:.75rem;border:1px dashed var(--primary-lighter-gray-color);padding:.25rem;border-radius:.25rem}.selected{border:2px dashed var(--primary-darker-color)}.expressionItem{margin:auto 0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.example-custom-placeholder{background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SmartFilterExpressionItemComponent, selector: "app-expression-item", inputs: ["item", "hasNext", "service"] }] }); }
|
|
21447
21509
|
}
|
|
21448
21510
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterExpressionItemsComponent, decorators: [{
|
|
21449
21511
|
type: Component,
|
|
21450
|
-
args: [{ selector: 'app-expression-items', template: "<div\
|
|
21512
|
+
args: [{ selector: 'app-expression-items', template: "<div\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"drop($event)\"\n class=\"expressionsContainer example-list\"\n [ngClass]=\"isSelected ? 'selected' : ''\"\n>\n <div cdkDrag class=\"expressionItem\" *ngFor=\"let item of items; let i = index\">\n <app-expression-item\n [item]=\"item\"\n [hasNext]=\"i < items.length - 1\"\n [service]=\"service\"\n ></app-expression-item>\n </div>\n</div>\n", styles: [".expressionsContainer{display:flex;flex-direction:row;flex-wrap:wrap;gap:.75rem;border:1px dashed var(--primary-lighter-gray-color);padding:.25rem;border-radius:.25rem}.selected{border:2px dashed var(--primary-darker-color)}.expressionItem{margin:auto 0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.example-custom-placeholder{background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
|
|
21451
21513
|
}], ctorParameters: () => [], propDecorators: { items: [{
|
|
21452
21514
|
type: Input
|
|
21453
21515
|
}], service: [{
|
|
@@ -21710,11 +21772,11 @@ class SmartFilterEditorContentComponent {
|
|
|
21710
21772
|
return widget;
|
|
21711
21773
|
}
|
|
21712
21774
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterEditorContentComponent, deps: [{ token: SmartformLayoutDefinitionService }, { token: ComponentFactoryService }, { token: COMPONENT_LIBRARY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21713
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterEditorContentComponent, selector: "smart-filter-expression-editor", inputs: { service: "service" }, viewQueries: [{ propertyName: "vcRef", first: true, predicate: ["form"], descendants: true, read: ViewContainerRef }, { propertyName: "simpleFilterVcRef", first: true, predicate: ["simpleFilterFromChild"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"smart-filter-editor-container\" *ngIf=\"service.model\">\
|
|
21775
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterEditorContentComponent, selector: "smart-filter-expression-editor", inputs: { service: "service" }, viewQueries: [{ propertyName: "vcRef", first: true, predicate: ["form"], descendants: true, read: ViewContainerRef }, { propertyName: "simpleFilterVcRef", first: true, predicate: ["simpleFilterFromChild"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"smart-filter-editor-container\" *ngIf=\"service.model\">\n <h3 class=\"smart-filter-editor-title\">{{ service.model.model?.label }}</h3>\n\n <div *ngIf=\"service.model?.type === type.SIMPLE; then simpleFilter; else complexFilter\"></div>\n\n <ng-template #simpleFilter>\n <div class=\"smart-filter-editor-expressionsContainer\">\n <ng-template #simpleFilterFromChild></ng-template>\n <!-- #simpleFilterFromChild [smartForm]=\"simpleFilterForm\"></smartform> -->\n </div>\n </ng-template>\n <ng-template #complexFilter>\n <div class=\"smart-filter-editor-uiActionsBar\" *ngIf=\"!service.model?.readOnly\">\n <smart-ui-action-toolbar [uiActionModels]=\"uiActionModels\"></smart-ui-action-toolbar>\n </div>\n <div\n *ngIf=\"\n service?.model?.model?.workplaceList?.filters?.length;\n then withParameters;\n else withoutParameters\n \"\n ></div>\n <ng-template #withoutParameters>\n <div class=\"smart-filter-editor-withoutParametersContainer\">\n <span class=\"mat-body\"> M\u00E9g nincs megadva param\u00E9ter </span>\n </div>\n </ng-template>\n <ng-template #withParameters>\n <div class=\"smart-filter-editor-withParametersContainer\">\n <div\n class=\"smart-filter-editor-expressionsContainer\"\n *ngIf=\"service?.model?.model?.workplaceList?.filters?.length\"\n >\n <app-expression-items\n [items]=\"(service.model.model?.workplaceList)!.filters\"\n [service]=\"service\"\n ></app-expression-items>\n </div>\n <div class=\"smart-filter-editor-expressionEditorContainer\">\n <!-- <smartform #form [smartForm]=\"smartForm\"></smartform> -->\n <ng-template #form></ng-template>\n <div *ngIf=\"smartForm\">\n <button (click)=\"remove()\" mat-raised-button color=\"primary\">T\u00F6rl\u00E9s</button>\n </div>\n </div>\n </div>\n </ng-template>\n </ng-template>\n</div>\n", styles: [".smart-filter-editor-container{display:flex;flex-direction:column;overflow:auto;position:relative}.targetGroupContentContainer h3{margin:0;font-weight:600}.smart-filter-editor-uiActionsBar{padding:1.5rem;border-radius:.25rem;background-color:var(--container-color);display:flex;flex-direction:row;gap:1rem}.smart-filter-editor-withoutParametersContainer{display:flex;flex-direction:column;background-color:var(--container-color)}.withoutParametersContainer .mat-body{font-weight:600;text-align:center}.smart-filter-editor-withParametersContainer{display:flex;flex-direction:column;background-color:var(--container-color)}.smart-filter-editor-expressionEditorContainer{display:flex;flex-direction:column;gap:.75rem}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: SmartFilterExpressionItemsComponent, selector: "app-expression-items", inputs: ["items", "service"] }] }); }
|
|
21714
21776
|
}
|
|
21715
21777
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterEditorContentComponent, decorators: [{
|
|
21716
21778
|
type: Component,
|
|
21717
|
-
args: [{ selector: 'smart-filter-expression-editor', template: "<div class=\"smart-filter-editor-container\" *ngIf=\"service.model\">\
|
|
21779
|
+
args: [{ selector: 'smart-filter-expression-editor', template: "<div class=\"smart-filter-editor-container\" *ngIf=\"service.model\">\n <h3 class=\"smart-filter-editor-title\">{{ service.model.model?.label }}</h3>\n\n <div *ngIf=\"service.model?.type === type.SIMPLE; then simpleFilter; else complexFilter\"></div>\n\n <ng-template #simpleFilter>\n <div class=\"smart-filter-editor-expressionsContainer\">\n <ng-template #simpleFilterFromChild></ng-template>\n <!-- #simpleFilterFromChild [smartForm]=\"simpleFilterForm\"></smartform> -->\n </div>\n </ng-template>\n <ng-template #complexFilter>\n <div class=\"smart-filter-editor-uiActionsBar\" *ngIf=\"!service.model?.readOnly\">\n <smart-ui-action-toolbar [uiActionModels]=\"uiActionModels\"></smart-ui-action-toolbar>\n </div>\n <div\n *ngIf=\"\n service?.model?.model?.workplaceList?.filters?.length;\n then withParameters;\n else withoutParameters\n \"\n ></div>\n <ng-template #withoutParameters>\n <div class=\"smart-filter-editor-withoutParametersContainer\">\n <span class=\"mat-body\"> M\u00E9g nincs megadva param\u00E9ter </span>\n </div>\n </ng-template>\n <ng-template #withParameters>\n <div class=\"smart-filter-editor-withParametersContainer\">\n <div\n class=\"smart-filter-editor-expressionsContainer\"\n *ngIf=\"service?.model?.model?.workplaceList?.filters?.length\"\n >\n <app-expression-items\n [items]=\"(service.model.model?.workplaceList)!.filters\"\n [service]=\"service\"\n ></app-expression-items>\n </div>\n <div class=\"smart-filter-editor-expressionEditorContainer\">\n <!-- <smartform #form [smartForm]=\"smartForm\"></smartform> -->\n <ng-template #form></ng-template>\n <div *ngIf=\"smartForm\">\n <button (click)=\"remove()\" mat-raised-button color=\"primary\">T\u00F6rl\u00E9s</button>\n </div>\n </div>\n </div>\n </ng-template>\n </ng-template>\n</div>\n", styles: [".smart-filter-editor-container{display:flex;flex-direction:column;overflow:auto;position:relative}.targetGroupContentContainer h3{margin:0;font-weight:600}.smart-filter-editor-uiActionsBar{padding:1.5rem;border-radius:.25rem;background-color:var(--container-color);display:flex;flex-direction:row;gap:1rem}.smart-filter-editor-withoutParametersContainer{display:flex;flex-direction:column;background-color:var(--container-color)}.withoutParametersContainer .mat-body{font-weight:600;text-align:center}.smart-filter-editor-withParametersContainer{display:flex;flex-direction:column;background-color:var(--container-color)}.smart-filter-editor-expressionEditorContainer{display:flex;flex-direction:column;gap:.75rem}\n"] }]
|
|
21718
21780
|
}], ctorParameters: () => [{ type: SmartformLayoutDefinitionService }, { type: ComponentFactoryService }, { type: ComponentLibrary, decorators: [{
|
|
21719
21781
|
type: Inject,
|
|
21720
21782
|
args: [COMPONENT_LIBRARY]
|
|
@@ -21829,11 +21891,11 @@ class SmartNavbarComponent {
|
|
|
21829
21891
|
};
|
|
21830
21892
|
}
|
|
21831
21893
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21832
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartNavbarComponent, selector: "smart-navbar", inputs: { smartNavbar: "smartNavbar" }, viewQueries: [{ propertyName: "formComp", first: true, predicate: ["searchOption"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\
|
|
21894
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartNavbarComponent, selector: "smart-navbar", inputs: { smartNavbar: "smartNavbar" }, viewQueries: [{ propertyName: "formComp", first: true, predicate: ["searchOption"], descendants: true }], ngImport: i0, template: "<mat-toolbar>\n <img\n *ngIf=\"smartNavbar.icon\"\n class=\"title\"\n src=\"{{ smartNavbar.icon }}\"\n alt=\"\"\n (click)=\"onIconClick()\"\n />\n <ng-content select=\"[titleComponent]\" class=\"title\"></ng-content>\n <div *ngIf=\"smartNavbar.searchBar\" class=\"input\">\n <input\n type=\"text\"\n placeholder=\"{{ smartNavbar.searchBar.placeholder }}\"\n [(ngModel)]=\"searchText\"\n />\n <div\n *ngIf=\"smartNavbar.searchBar.quickFilterLabel && smartNavbar.searchBar.quickFilters.length\"\n class=\"drop_down_btn\"\n >\n <smartform #searchOption [smartForm]=\"filterForm\"></smartform>\n <button\n class=\"search_icon\"\n *ngIf=\"smartNavbar.searchBar.icon\"\n mat-icon-button\n (click)=\"onSearchButtonClick()\"\n >\n <mat-icon class=\"search_icon\">{{ smartNavbar.searchBar.icon }}</mat-icon>\n </button>\n </div>\n </div>\n <button\n *ngIf=\"smartNavbar.filterButtonCallback\"\n mat-raised-button\n color=\"primary\"\n class=\"filter-btn\"\n (click)=\"openFilters()\"\n >\n <div #customFilter class=\"custom-filter-holder\">\n <ng-content select=\"[filterComponent]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customFilter.hasChildNodes()\">\n <mat-icon>filter_list</mat-icon> {{ smartNavbar.filterButtonLabel }}\n </ng-container>\n </button>\n <div *ngIf=\"smartNavbar.userSettings\" class=\"account-content\">\n <button\n mat-button\n *ngIf=\"smartNavbar?.notification\"\n [color]=\"smartNavbar.notification?.iconColor\"\n (click)=\"onNotificationClick()\"\n class=\"notification-btn\"\n >\n <mat-icon>\n {{ smartNavbar.notification?.icon }}\n </mat-icon>\n </button>\n <button mat-button color=\"primary\" [matMenuTriggerFor]=\"menu\">\n <mat-icon *ngIf=\"smartNavbar.userSettings.icon\">\n {{ smartNavbar.userSettings.icon }}\n </mat-icon>\n <mat-icon *ngIf=\"!smartNavbar.userSettings.icon\"> person_outline </mat-icon>\n {{ smartNavbar.userSettings.label }}\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let btn of smartNavbar.userSettings.settings\"\n (click)=\"btn.callback()\"\n class=\"menuButton\"\n >\n <mat-icon class=\"menuIcon\" *ngIf=\"btn.icon && btn.iconPosition === buttonPosition().FRONT\">\n {{ btn.icon }}\n </mat-icon>\n <div class=\"menuLabel\">\n {{ btn.label }}\n </div>\n <mat-icon class=\"menuIcon\" *ngIf=\"btn.icon && btn.iconPosition === buttonPosition().POST\">\n {{ btn.icon }}\n </mat-icon>\n </button>\n </mat-menu>\n </div>\n</mat-toolbar>\n", styles: [".filter-btn{margin-left:20px}input[type=text]{flex:1;background:#fff;height:40px;border:none;outline:none;padding:0 25px;border-radius:25px 0 0 25px}.drop_down_btn{position:relative;left:-5;border-radius:0 25px 25px 0;height:40px;border:none;outline:none;cursor:pointer;background:#fff;color:#00a8da;display:flex;align-items:center;padding-right:20px}.input{flex:1;position:relative;font-size:20px;display:flex;flex-direction:row;align-items:center;padding-left:30px}mat-toolbar{height:var(--navbar-height)}::ng-deep .navbar-form .mat-form-field-appearance-outline .mat-form-field-outline,::ng-deep .navbar-form .mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-form-field-flex:hover .mat-form-field-outline,::ng-deep .navbar-form .mat-form-field-appearance-outline.mat-focused .mat-form-field-outline{opacity:.75!important;color:#fff}.account-content{margin-left:75px}.title{margin-right:75px}.account-content>*{margin-left:30px}.account-content>*:first-child{margin-left:0}.custom-filter-holder{display:flex;align-items:center}.menuButton{display:flex;flex-direction:row;gap:.5rem}.menuLabel{flex:1;text-align:left}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3$5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i10.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: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SmartformComponent, selector: "smartform", inputs: ["smartForm"] }] }); }
|
|
21833
21895
|
}
|
|
21834
21896
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartNavbarComponent, decorators: [{
|
|
21835
21897
|
type: Component,
|
|
21836
|
-
args: [{ selector: 'smart-navbar', encapsulation: ViewEncapsulation.Emulated, template: "<mat-toolbar>\
|
|
21898
|
+
args: [{ selector: 'smart-navbar', encapsulation: ViewEncapsulation.Emulated, template: "<mat-toolbar>\n <img\n *ngIf=\"smartNavbar.icon\"\n class=\"title\"\n src=\"{{ smartNavbar.icon }}\"\n alt=\"\"\n (click)=\"onIconClick()\"\n />\n <ng-content select=\"[titleComponent]\" class=\"title\"></ng-content>\n <div *ngIf=\"smartNavbar.searchBar\" class=\"input\">\n <input\n type=\"text\"\n placeholder=\"{{ smartNavbar.searchBar.placeholder }}\"\n [(ngModel)]=\"searchText\"\n />\n <div\n *ngIf=\"smartNavbar.searchBar.quickFilterLabel && smartNavbar.searchBar.quickFilters.length\"\n class=\"drop_down_btn\"\n >\n <smartform #searchOption [smartForm]=\"filterForm\"></smartform>\n <button\n class=\"search_icon\"\n *ngIf=\"smartNavbar.searchBar.icon\"\n mat-icon-button\n (click)=\"onSearchButtonClick()\"\n >\n <mat-icon class=\"search_icon\">{{ smartNavbar.searchBar.icon }}</mat-icon>\n </button>\n </div>\n </div>\n <button\n *ngIf=\"smartNavbar.filterButtonCallback\"\n mat-raised-button\n color=\"primary\"\n class=\"filter-btn\"\n (click)=\"openFilters()\"\n >\n <div #customFilter class=\"custom-filter-holder\">\n <ng-content select=\"[filterComponent]\"></ng-content>\n </div>\n <ng-container *ngIf=\"!customFilter.hasChildNodes()\">\n <mat-icon>filter_list</mat-icon> {{ smartNavbar.filterButtonLabel }}\n </ng-container>\n </button>\n <div *ngIf=\"smartNavbar.userSettings\" class=\"account-content\">\n <button\n mat-button\n *ngIf=\"smartNavbar?.notification\"\n [color]=\"smartNavbar.notification?.iconColor\"\n (click)=\"onNotificationClick()\"\n class=\"notification-btn\"\n >\n <mat-icon>\n {{ smartNavbar.notification?.icon }}\n </mat-icon>\n </button>\n <button mat-button color=\"primary\" [matMenuTriggerFor]=\"menu\">\n <mat-icon *ngIf=\"smartNavbar.userSettings.icon\">\n {{ smartNavbar.userSettings.icon }}\n </mat-icon>\n <mat-icon *ngIf=\"!smartNavbar.userSettings.icon\"> person_outline </mat-icon>\n {{ smartNavbar.userSettings.label }}\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let btn of smartNavbar.userSettings.settings\"\n (click)=\"btn.callback()\"\n class=\"menuButton\"\n >\n <mat-icon class=\"menuIcon\" *ngIf=\"btn.icon && btn.iconPosition === buttonPosition().FRONT\">\n {{ btn.icon }}\n </mat-icon>\n <div class=\"menuLabel\">\n {{ btn.label }}\n </div>\n <mat-icon class=\"menuIcon\" *ngIf=\"btn.icon && btn.iconPosition === buttonPosition().POST\">\n {{ btn.icon }}\n </mat-icon>\n </button>\n </mat-menu>\n </div>\n</mat-toolbar>\n", styles: [".filter-btn{margin-left:20px}input[type=text]{flex:1;background:#fff;height:40px;border:none;outline:none;padding:0 25px;border-radius:25px 0 0 25px}.drop_down_btn{position:relative;left:-5;border-radius:0 25px 25px 0;height:40px;border:none;outline:none;cursor:pointer;background:#fff;color:#00a8da;display:flex;align-items:center;padding-right:20px}.input{flex:1;position:relative;font-size:20px;display:flex;flex-direction:row;align-items:center;padding-left:30px}mat-toolbar{height:var(--navbar-height)}::ng-deep .navbar-form .mat-form-field-appearance-outline .mat-form-field-outline,::ng-deep .navbar-form .mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-form-field-flex:hover .mat-form-field-outline,::ng-deep .navbar-form .mat-form-field-appearance-outline.mat-focused .mat-form-field-outline{opacity:.75!important;color:#fff}.account-content{margin-left:75px}.title{margin-right:75px}.account-content>*{margin-left:30px}.account-content>*:first-child{margin-left:0}.custom-filter-holder{display:flex;align-items:center}.menuButton{display:flex;flex-direction:row;gap:.5rem}.menuLabel{flex:1;text-align:left}\n"] }]
|
|
21837
21899
|
}], ctorParameters: () => [], propDecorators: { smartNavbar: [{
|
|
21838
21900
|
type: Input
|
|
21839
21901
|
}], formComp: [{
|
|
@@ -21915,11 +21977,11 @@ class TabGroupComponent {
|
|
|
21915
21977
|
return undefined;
|
|
21916
21978
|
}
|
|
21917
21979
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TabGroupComponent, deps: [{ token: SmartNavigationService }, { token: i2$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21918
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: TabGroupComponent, selector: "smart-tab-group", inputs: { tabTiles: "tabTiles", handlers: "handlers" }, ngImport: i0, template: "<div class=\"sm-tab-group-container\">\
|
|
21980
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: TabGroupComponent, selector: "smart-tab-group", inputs: { tabTiles: "tabTiles", handlers: "handlers" }, ngImport: i0, template: "<div class=\"sm-tab-group-container\">\n <mat-tab-group\n class=\"sm-tab-group\"\n (selectedTabChange)=\"navigateTabContent($event)\"\n [(selectedIndex)]=\"selectedTabIndex\"\n >\n <mat-tab\n class=\"sm-tab\"\n appearance=\"outline\"\n *ngFor=\"let tabTile of tabTiles\"\n label=\"{{ tabTile.tileName }}\"\n >\n <ng-template mat-tab-label *ngIf=\"tabTile.extra\">\n <span class=\"row\"\n >{{ tabTile.tileName }}\n <div\n [ngClass]=\"\n tabTile.extra ? 'sm-tab-notification' : 'sm-tab-notification-none'\n \"\n >\n {{ tabTile.extra }}\n </div></span\n >\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n <div class=\"sm-tab-content-container\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sm-tab-group-container{margin:50px}.sm-tab-group ::ng-deep .mat-tab-label{background-color:#f9fafb;margin-left:10px;border-radius:10px;opacity:100!important}.mat-tab-body-content{border-radius:10px}.mat-mdc-tab-nav-bar,.mat-mdc-tab-header{border-bottom:0}.tab-content-container{padding:2em;border:1px solid #e6e6e6;box-shadow:0 4px 8px -4px #1a1a1a33;border-radius:4px;background-color:#fff}.mat-tab-label-active{background-color:#00a8da!important;opacity:1!important}.sm-tab-notification-none{display:none}.sm-tab-notification{background-color:red;width:20px;height:20px;border-radius:50%;color:#ff0}.sm-tab-group-container ::ng-deep .mat-tab-label-content{width:50%}.row{display:flex;flex-direction:row;width:100%;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$5.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i4$5.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i4$5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }] }); }
|
|
21919
21981
|
}
|
|
21920
21982
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TabGroupComponent, decorators: [{
|
|
21921
21983
|
type: Component,
|
|
21922
|
-
args: [{ selector: 'smart-tab-group', template: "<div class=\"sm-tab-group-container\">\
|
|
21984
|
+
args: [{ selector: 'smart-tab-group', template: "<div class=\"sm-tab-group-container\">\n <mat-tab-group\n class=\"sm-tab-group\"\n (selectedTabChange)=\"navigateTabContent($event)\"\n [(selectedIndex)]=\"selectedTabIndex\"\n >\n <mat-tab\n class=\"sm-tab\"\n appearance=\"outline\"\n *ngFor=\"let tabTile of tabTiles\"\n label=\"{{ tabTile.tileName }}\"\n >\n <ng-template mat-tab-label *ngIf=\"tabTile.extra\">\n <span class=\"row\"\n >{{ tabTile.tileName }}\n <div\n [ngClass]=\"\n tabTile.extra ? 'sm-tab-notification' : 'sm-tab-notification-none'\n \"\n >\n {{ tabTile.extra }}\n </div></span\n >\n </ng-template>\n </mat-tab>\n </mat-tab-group>\n <div class=\"sm-tab-content-container\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sm-tab-group-container{margin:50px}.sm-tab-group ::ng-deep .mat-tab-label{background-color:#f9fafb;margin-left:10px;border-radius:10px;opacity:100!important}.mat-tab-body-content{border-radius:10px}.mat-mdc-tab-nav-bar,.mat-mdc-tab-header{border-bottom:0}.tab-content-container{padding:2em;border:1px solid #e6e6e6;box-shadow:0 4px 8px -4px #1a1a1a33;border-radius:4px;background-color:#fff}.mat-tab-label-active{background-color:#00a8da!important;opacity:1!important}.sm-tab-notification-none{display:none}.sm-tab-notification{background-color:red;width:20px;height:20px;border-radius:50%;color:#ff0}.sm-tab-group-container ::ng-deep .mat-tab-label-content{width:50%}.row{display:flex;flex-direction:row;width:100%;justify-content:space-between}\n"] }]
|
|
21923
21985
|
}], ctorParameters: () => [{ type: SmartNavigationService }, { type: i2$1.ActivatedRoute }], propDecorators: { tabTiles: [{
|
|
21924
21986
|
type: Input
|
|
21925
21987
|
}], handlers: [{
|
|
@@ -21942,11 +22004,11 @@ class TabContentComponent {
|
|
|
21942
22004
|
}
|
|
21943
22005
|
}
|
|
21944
22006
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TabContentComponent, deps: [{ token: ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21945
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: TabContentComponent, selector: "tab-content", inputs: { component: "component" }, viewQueries: [{ propertyName: "vcRefExample", first: true, predicate: ["component"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"tab-content-container\">\
|
|
22007
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: TabContentComponent, selector: "tab-content", inputs: { component: "component" }, viewQueries: [{ propertyName: "vcRefExample", first: true, predicate: ["component"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"tab-content-container\">\n <ng-template #component></ng-template>\n</div>\n", styles: [""] }); }
|
|
21946
22008
|
}
|
|
21947
22009
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TabContentComponent, decorators: [{
|
|
21948
22010
|
type: Component,
|
|
21949
|
-
args: [{ selector: 'tab-content', template: "<div class=\"tab-content-container\">\
|
|
22011
|
+
args: [{ selector: 'tab-content', template: "<div class=\"tab-content-container\">\n <ng-template #component></ng-template>\n</div>\n" }]
|
|
21950
22012
|
}], ctorParameters: () => [{ type: ComponentFactoryService }], propDecorators: { component: [{
|
|
21951
22013
|
type: Input
|
|
21952
22014
|
}], vcRefExample: [{
|
|
@@ -21999,11 +22061,11 @@ class SimplifiedTabGroupComponent {
|
|
|
21999
22061
|
}
|
|
22000
22062
|
}
|
|
22001
22063
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SimplifiedTabGroupComponent, deps: [{ token: ComponentFactoryService }, { token: SmartNavigationService }, { token: i2$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22002
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SimplifiedTabGroupComponent, selector: "smart-simplified-tab-group", inputs: { tabGroupData: "tabGroupData", animationDuration: "animationDuration" }, viewQueries: [{ propertyName: "vcRefTabContentChildren", predicate: ["tabContent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"sm-tab-group-container\">\
|
|
22064
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SimplifiedTabGroupComponent, selector: "smart-simplified-tab-group", inputs: { tabGroupData: "tabGroupData", animationDuration: "animationDuration" }, viewQueries: [{ propertyName: "vcRefTabContentChildren", predicate: ["tabContent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"sm-tab-group-container\">\n\t<mat-tab-group\n\t\tclass=\"sm-tab-group\"\n\t\tmat-stretch-tab=\"false\"\n\t\tmat-align-tabs=\"start\"\n\t\t[selectedIndex]=\"selectedIndex\"\n\t\t(selectedIndexChange)=\"changeSelectedTab($event)\"\n\t\t[animationDuration]=\"0\"\n\t>\n\t\t<mat-tab class=\"sm-tab\" appearance=\"outline\" *ngFor=\"let tab of tabGroupData\" [label]=\"tab.label\">\n\t\t\t<ng-template #tabContent></ng-template>\n\t\t</mat-tab>\n\t</mat-tab-group>\n</div>\n", styles: [".sm-tab-group-container{margin:50px}.sm-tab-group ::ng-deep .mat-tab-label{background-color:#f9fafb;margin-left:10px;border-radius:10px;opacity:100!important}.mat-tab-body-content{border-radius:10px}.mat-mdc-tab-nav-bar,.mat-mdc-tab-header{border-bottom:0}.tab-content-container{padding:2em;border:1px solid #e6e6e6;box-shadow:0 4px 8px -4px #1a1a1a33;border-radius:4px;background-color:#fff}.mat-tab-label-active{background-color:#00a8da!important;opacity:1!important}\n"], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i4$5.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i4$5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }] }); }
|
|
22003
22065
|
}
|
|
22004
22066
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SimplifiedTabGroupComponent, decorators: [{
|
|
22005
22067
|
type: Component,
|
|
22006
|
-
args: [{ selector: 'smart-simplified-tab-group', template: "<div class=\"sm-tab-group-container\">\
|
|
22068
|
+
args: [{ selector: 'smart-simplified-tab-group', template: "<div class=\"sm-tab-group-container\">\n\t<mat-tab-group\n\t\tclass=\"sm-tab-group\"\n\t\tmat-stretch-tab=\"false\"\n\t\tmat-align-tabs=\"start\"\n\t\t[selectedIndex]=\"selectedIndex\"\n\t\t(selectedIndexChange)=\"changeSelectedTab($event)\"\n\t\t[animationDuration]=\"0\"\n\t>\n\t\t<mat-tab class=\"sm-tab\" appearance=\"outline\" *ngFor=\"let tab of tabGroupData\" [label]=\"tab.label\">\n\t\t\t<ng-template #tabContent></ng-template>\n\t\t</mat-tab>\n\t</mat-tab-group>\n</div>\n", styles: [".sm-tab-group-container{margin:50px}.sm-tab-group ::ng-deep .mat-tab-label{background-color:#f9fafb;margin-left:10px;border-radius:10px;opacity:100!important}.mat-tab-body-content{border-radius:10px}.mat-mdc-tab-nav-bar,.mat-mdc-tab-header{border-bottom:0}.tab-content-container{padding:2em;border:1px solid #e6e6e6;box-shadow:0 4px 8px -4px #1a1a1a33;border-radius:4px;background-color:#fff}.mat-tab-label-active{background-color:#00a8da!important;opacity:1!important}\n"] }]
|
|
22007
22069
|
}], ctorParameters: () => [{ type: ComponentFactoryService }, { type: SmartNavigationService }, { type: i2$1.ActivatedRoute }], propDecorators: { vcRefTabContentChildren: [{
|
|
22008
22070
|
type: ViewChildren,
|
|
22009
22071
|
args: ['tabContent', { read: ViewContainerRef }]
|
|
@@ -22235,6 +22297,11 @@ class SmartComponentLayoutUtility {
|
|
|
22235
22297
|
if (expandable) {
|
|
22236
22298
|
result.push(...this.getToolbars(expandable));
|
|
22237
22299
|
}
|
|
22300
|
+
let expandeableHeaderToolbar = comp.expandableComponents?.first?.toolbar;
|
|
22301
|
+
console.log(expandeableHeaderToolbar);
|
|
22302
|
+
if (expandeableHeaderToolbar) {
|
|
22303
|
+
result.push(expandeableHeaderToolbar);
|
|
22304
|
+
}
|
|
22238
22305
|
if (comp.toolbar) {
|
|
22239
22306
|
result.push(comp.toolbar);
|
|
22240
22307
|
}
|