barsa-sap-ui 2.0.130 → 2.0.133
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/esm2022/lib/card-item/card-item.component.mjs +3 -3
- package/esm2022/lib/sap-ui-report-base.component.mjs +3 -3
- package/esm2022/lib/ui-pictures-info/ui-pictures-info.component.mjs +3 -3
- package/fesm2022/barsa-sap-ui.mjs +6 -6
- package/fesm2022/barsa-sap-ui.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1919,9 +1919,9 @@ class SapUiReportBaseComponent extends ReportBaseComponent {
|
|
|
1919
1919
|
// this.context.fireEvent('rowselect', this.context); // باعث میشود دوبار selectionchange گزارش فراخوانی شود
|
|
1920
1920
|
}
|
|
1921
1921
|
onRowCheck($event) {
|
|
1922
|
-
const { mo } = $event;
|
|
1922
|
+
const { mo, onlyCheck } = $event;
|
|
1923
1923
|
const moIndex = this._getIndex(mo);
|
|
1924
|
-
if (this._openOnClick) {
|
|
1924
|
+
if (!onlyCheck && this._openOnClick) {
|
|
1925
1925
|
this.onRowClick($event);
|
|
1926
1926
|
}
|
|
1927
1927
|
else {
|
|
@@ -5318,11 +5318,11 @@ class CardItemComponent extends BaseViewItemPropsComponent {
|
|
|
5318
5318
|
}
|
|
5319
5319
|
}
|
|
5320
5320
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CardItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
5321
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: CardItemComponent, selector: "bsu-card-item", inputs: { setting: "setting" }, providers: [FormPanelService], viewQueries: [{ propertyName: "_quickViewTemplate", first: true, predicate: ["quickViewTemplate"], descendants: true, static: true }, { propertyName: "_contentTemplate", first: true, predicate: ["contentTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<fd-card\n [cardType]=\"setting.CardType$Caption\"\n class=\"docs-flex-item-margin\"\n [class.openOnClick]=\"setting.openOnClick\"\n [style.width]=\"cardWidth\"\n [style.min-width]=\"minWidth\"\n [style.max-width]=\"maxWidth\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n setting.HeaderComponent ? renderHeaderComponent : renderHeader;\n context: {\n $implicit: mo,\n index: this.index\n }\n \"\n ></ng-container>\n\n @if (!noContent || contextMenuItems) {\n <fd-card-content (click)=\"onRowCheck()\" (dblclick)=\"onRowClick()\" ellipsify>\n <div #divEl [applyConditionalFormats]=\"conditionalFormats\" [styleIndex]=\"styleIndex\" [hostEl]=\"divEl\">\n <ng-container\n *ngTemplateOutlet=\"\n setting.ContentComponent ? contentTemplateComponent : contentTemplateRef;\n context: {\n $implicit: mo,\n index: this.index\n }\n \"\n ></ng-container>\n </div>\n </fd-card-content>\n } @if(detailsText || contextMenuEnabled){\n <fd-card-footer\n (click)=\"!isChecked && onRowCheck()\"\n (dblclick)=\"onRowClick()\"\n [class.hasDetailsAndContextMenu]=\"detailsText && contextMenuEnabled && contextMenuInFooter\"\n [class.!tw-border-y-0]=\"noContent\"\n >\n @if(detailsText){<button *fdCardFooterActionItem fd-button fdType=\"transparent\" [fdPopoverTrigger]=\"popover\">\n {{ detailsText }}\n </button>\n } @if(contextMenuInFooter){\n <div\n *fdCardFooterActionItem\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [footerMode]=\"false\"\n [menuItems]=\"contextMenuItems\"\n [styleIndex]=\"styleIndex\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></div>\n }\n <fd-popover #popover>\n @if (detailsColumns?.length) {\n <ng-container\n *ngTemplateOutlet=\"\n detailsColumnsTemplate;\n context: { mo: mo, inlineEditMode: inlineEditMode, layout94: layout$ | async }\n \"\n ></ng-container>\n }\n </fd-popover>\n </fd-card-footer>\n }\n</fd-card>\n<ng-template #detailsColumnsTemplate let-mo=\"mo\" let-inlineEditMode=\"inlineEditMode\" let-layout94=\"layout94\">\n <ng-container\n *ngTemplateOutlet=\"\n detailsFormItems;\n context: {\n $implicit: detailsColumns,\n mo: this.mo,\n inlineEditMode: this.inlineEditMode,\n layout94: layout94\n }\n \"\n ></ng-container>\n</ng-template>\n<ng-template\n #detailsFormItems\n let-detailsColumns\n let-mo=\"mo\"\n let-inlineEditMode=\"inlineEditMode\"\n let-layout94=\"layout94\"\n>\n <div class=\"form-items\" class=\"tw-p-2\">\n @for (column of detailsColumns; track column; let columnIndex = $index) {\n <div fd-form-item class=\"!tw-flex-row\">\n @if(!column.$CustomComponent?.HideColumnCaption) {<label fd-form-label for=\"input-2\"\n >{{ column.Caption }}<span>:</span></label\n >}\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout94\n }\n \"\n ></ng-container>\n </div>\n }\n </div>\n</ng-template>\n<ng-template\n #columnTemplate\n let-column\n let-mo=\"mo\"\n let-index=\"index\"\n let-layout94=\"layout94\"\n let-disableEllapsis=\"disableEllapsis\"\n let-fdTextMode=\"fdTextMode\"\n>\n @if (column) {\n <bsu-barsa-table-column\n [mo]=\"mo\"\n [allColumns]=\"allColumns\"\n [column]=\"column\"\n [isdirty]=\"false\"\n [value]=\"column | columnValue: mo\"\n [icon]=\"column | columnIcon: mo\"\n [customComponent]=\"column.$CustomComponent\"\n [column]=\"column\"\n [disableEllapsis]=\"disableEllapsis === false ? false : true\"\n [fdTextMode]=\"fdTextMode\"\n [editMode]=\"isChecked && inlineEditMode && allowInlineEdit\"\n [inlineEditMode]=\"inlineEditMode\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [formSetting]=\"formSetting\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [layout94]=\"layout94\"\n (save)=\"onEditFormPanelSave(null)\"\n (cancel)=\"onEditFormPanelCancel(null)\"\n (tab)=\"onTabKeyDown($event, index)\"\n (changeToEditMode)=\"onColumnChangeToEditMode($event, index)\"\n >\n </bsu-barsa-table-column>\n\n }\n</ng-template>\n<ng-template #quickViewTemplate let-mo let-index=\"index\">\n @if (!noContent) {\n <fd-quick-view [id]=\"'id'\">\n <fd-quick-view-group>\n @for (column of setting.FieldListMapped; track column) {\n <fd-quick-view-group-item [class.rowDirection]=\"column?.$CustomComponent?.IsRowDirection\">\n @if (column) { @if(!column.$CustomComponent?.HideColumnCaption) {<fd-quick-view-group-item-label>\n {{ column.Caption | bbbTranslate }} </fd-quick-view-group-item-label\n >}\n <fd-quick-view-group-item-content>\n <div fd-quick-view-group-item-content-element class=\"group-item-content\">\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n </fd-quick-view-group-item-content>\n }\n </fd-quick-view-group-item>\n } @if (setting.DescriptionField) {\n <fd-quick-view-group-item>\n <fd-quick-view-group-item-content>\n @if (inlineEditMode && allowInlineEdit) {\n <fd-quick-view-group-item-label>\n {{ setting.DescriptionField?.Alias | bbbTranslate }}\n </fd-quick-view-group-item-label>\n }\n <div fd-quick-view-group-item-content-element class=\"group-item-content\">\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.DescriptionField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n </fd-quick-view-group-item-content>\n @if (setting.ActionFieldNameField) {\n <fd-quick-view-group-item-content\n class=\"action\"\n (click)=\"onAction(setting.ActionFieldCommandField || '')\"\n >\n <a fd-link>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.ActionFieldNameField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </a>\n </fd-quick-view-group-item-content>\n }\n </fd-quick-view-group-item>\n }\n </fd-quick-view-group>\n </fd-quick-view>\n }\n</ng-template>\n<ng-template #contentTemplate let-mo let-index=\"index\">\n <fd-layout-grid>\n <div fdLayoutGridRow style=\"align-items: center\">\n <div [fdLayoutGridCol]=\"12\">\n @for (column of setting.FieldListMapped; track column) {\n <div style=\"display: flex\">\n <label fd-form-label [colon]=\"true\">{{ column.Caption | bbbTranslate }}</label>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n }\n </div>\n @if (setting.DescriptionField) {\n <div [fdLayoutGridCol]=\"12\">\n @if (inlineEditMode && allowInlineEdit) {\n <label>\n {{ setting.DescriptionField?.Alias | bbbTranslate }}\n </label>\n }\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.DescriptionField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n }\n </div>\n </fd-layout-grid>\n</ng-template>\n<ng-template #avatar let-avatar let-visible=\"visible\" let-circle=\"circle\" let-avatarField=\"avatarField\">\n @if (visible) {\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [circle]=\"circle\"\n [image]=\"avatarField ? (mo[avatarField.Name]?.FileId | picFieldSrc: 'ID':avatarField.FieldDefId) : ''\"\n [size]=\"\n deviceSize === 'xl' || deviceSize === 'l' ? setting.AvatarSizeDesktop$Caption : setting.AvatarSize$Caption\n \"\n [glyph]=\"avatar || (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\"\n >\n </fd-avatar>\n }\n</ng-template>\n\n<ng-template #contentTemplateComponent let-mo let-index=\"index\">\n <bnrc-dynamic-item-component\n [component]=\"setting.ContentComponent\"\n [mo]=\"mo\"\n [styleIndex]=\"mo.$StyleIndex\"\n [isChecked]=\"isChecked\"\n [setting]=\"setting\"\n [parameters]=\"setting.ContentComponent.Settings\"\n [editMode]=\"inlineEditMode\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n ></bnrc-dynamic-item-component>\n</ng-template>\n\n<ng-template #renderHeader let-mo let-index=\"index\">\n @if(!hideOpenIcon && (openOnClick || (canView && deviceName !== 'desktop'))){\n <ng-container\n *ngTemplateOutlet=\"\n renderHeaderMobileCanView;\n context: {\n $implicit: mo,\n index: index\n }\n \"\n ></ng-container>\n }@else{\n <ng-container\n *ngTemplateOutlet=\"\n renderHeaderDesktop;\n context: {\n $implicit: mo,\n index: index\n }\n \"\n ></ng-container>\n }\n</ng-template>\n<ng-template #renderHeaderDesktop let-mo let-index=\"index\">\n <fd-card-header class=\"HeaderDesktop\">\n <div>\n @if(isCheckList){\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onRowCheck()\"></fd-checkbox>\n }\n </div>\n <fd-card-main-header (click)=\"onRowCheck()\" (dblclick)=\"onRowClick()\">\n @if (setting.AvatarField || setting.Avatar) {\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [circle]=\"setting.CircleAvatar\"\n [image]=\"\n setting.AvatarField\n ? (mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId)\n : ''\n \"\n [size]=\"\n deviceSize === 'xl' || deviceSize === 'l'\n ? setting.AvatarSizeDesktop$Caption\n : setting.AvatarSize$Caption\n \"\n [glyph]=\"\n setting.Avatar ||\n (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\n \"\n ></fd-avatar>\n }\n <h2 fd-card-title>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.TitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index,\n disableEllapsis: false,\n fdTextMode: true\n }\n \"\n ></ng-container>\n </h2>\n <h3 fd-card-subtitle>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.SubtitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index,\n disableEllapsis: false\n }\n \"\n ></ng-container>\n </h3>\n @if (!contextMenuInFooter && (contextMenuItems && contextMenuItems.length > 0)) {\n <div\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [footerMode]=\"false\"\n [menuItems]=\"contextMenuItems\"\n [styleIndex]=\"styleIndex\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></div>\n }\n </fd-card-main-header>\n </fd-card-header>\n</ng-template>\n<ng-template #renderHeaderMobileCanView let-mo let-index=\"index\">\n <fd-card-header class=\"HeaderMobileCanView\">\n <div>\n @if(isCheckList){\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onRowCheck()\"></fd-checkbox>\n }\n </div>\n <fd-card-main-header (click)=\"onRowCheck()\" (dblclick)=\"onRowClick()\">\n @if (setting.AvatarField || setting.Avatar) {\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [circle]=\"setting.CircleAvatar\"\n [image]=\"\n setting.AvatarField\n ? (mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId)\n : ''\n \"\n [size]=\"\n deviceSize === 'xl' || deviceSize === 'l'\n ? setting.AvatarSizeDesktop$Caption\n : setting.AvatarSize$Caption\n \"\n [glyph]=\"\n setting.Avatar ||\n (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\n \"\n ></fd-avatar>\n }\n <h2 fd-card-title>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.TitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index,\n fdTextMode: true\n }\n \"\n ></ng-container>\n </h2>\n <h3 fd-card-subtitle>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.SubtitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </h3>\n <button\n fd-card-header-action\n fd-button\n class=\"view-btn\"\n (click)=\"onRowClick()\"\n [glyph]=\"navigationArrow\"\n fdType=\"transparent\"\n ></button>\n </fd-card-main-header>\n </fd-card-header>\n</ng-template>\n<ng-template #renderHeaderComponent let-mo let-index=\"index\">\n <bnrc-dynamic-item-component\n [component]=\"setting.HeaderComponent\"\n [mo]=\"mo\"\n [styleIndex]=\"mo.$StyleIndex\"\n [isChecked]=\"isChecked\"\n [setting]=\"setting\"\n [parameters]=\"setting.HeaderComponent.Settings\"\n [editMode]=\"inlineEditMode\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n [contextMenuItems]=\"contextMenuItems\"\n [canView]=\"canView\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [navigationArrow]=\"navigationArrow\"\n [isCheckList]=\"isCheckList\"\n (events)=\"onDynamicComponentEvents($event)\"\n ></bnrc-dynamic-item-component>\n</ng-template>\n", styles: ["fd-card:hover{box-shadow:0 0 0 .0625rem #2235487a,0 .625rem 1.875rem #22354840}fd-card div[ulvcontextmenu] ::ng-deep .fd-bar{background-color:transparent}fd-card ::ng-deep bsu-column-renderer div.renderGeneral{font-family:IranYekanDigits}fd-card fd-card-footer.hasDetailsAndContextMenu ::ng-deep .fd-card__footer-actions{justify-content:space-between!important}fd-card fd-card-content{padding:0!important}fd-card fd-card-content>div>fd-quick-view ::ng-deep .fd-quick-view__content{padding-top:0}fd-card fd-card-content>div>fd-quick-view fd-quick-view-group-item.rowDirection ::ng-deep .fd-form-item{flex-direction:row}fd-card fd-card-header{padding:.5rem}fd-card fd-card-header:hover{background:var(--fdCard_Background_Color)}fd-card fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card fd-card-header button,fd-card fd-card-header div[ulvcontextmenu]{z-index:6}fd-card fd-card-header:hover{background:inherit}fd-quick-view-subheader ::ng-deep div{background:inherit}.action{cursor:pointer;margin-top:6px;flex:1;display:flex;justify-content:end;flex-direction:column}.openOnClick{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "directive", type: i2.EllipsifyDirective, selector: "[ellipsify]", inputs: ["limitLine"] }, { kind: "component", type: i3$5.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i2$5.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i4$1.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5$2.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i5$2.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i5$2.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "directive", type: i5$2.CardHeaderActionDirective, selector: "[fd-card-header-action]" }, { kind: "component", type: i5$2.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i5$2.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i5$2.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i5$2.CardFooterComponent, selector: "fd-card-footer" }, { kind: "directive", type: i5$2.CardFooterActionItemDirective, selector: "[fdCardFooterActionItem]" }, { kind: "component", type: i5.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i2$1.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i2$1.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i4$3.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i4$3.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "directive", type: i4$3.LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "component", type: i7$3.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "directive", type: i7$3.PopoverTriggerDirective, selector: "[fdPopoverTrigger], [fd-popover-trigger]", inputs: ["fdPopoverTrigger"] }, { kind: "component", type: i12.QuickViewComponent, selector: "fd-quick-view", inputs: ["id"] }, { kind: "component", type: i12.QuickViewGroupComponent, selector: "fd-quick-view-group" }, { kind: "component", type: i12.QuickViewGroupItemComponent, selector: "fd-quick-view-group-item", inputs: ["id"] }, { kind: "component", type: i12.QuickViewGroupItemLabelComponent, selector: "fd-quick-view-group-item-label" }, { kind: "component", type: i12.QuickViewGroupItemContentComponent, selector: "fd-quick-view-group-item-content" }, { kind: "directive", type: i12.QuickViewGroupItemContentElementDirective, selector: "[fd-quick-view-group-item-content-element]" }, { kind: "component", type: UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "appendTo"], outputs: ["commandClick"] }, { kind: "component", type: BarsaTableColumnComponent, selector: "bsu-barsa-table-column", inputs: ["disableEllapsis", "fdTextMode"] }, { kind: "directive", type: ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i2.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i2.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5321
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: CardItemComponent, selector: "bsu-card-item", inputs: { setting: "setting" }, providers: [FormPanelService], viewQueries: [{ propertyName: "_quickViewTemplate", first: true, predicate: ["quickViewTemplate"], descendants: true, static: true }, { propertyName: "_contentTemplate", first: true, predicate: ["contentTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<fd-card\n [cardType]=\"setting.CardType$Caption\"\n class=\"docs-flex-item-margin\"\n [class.openOnClick]=\"setting.openOnClick\"\n [style.width]=\"cardWidth\"\n [style.min-width]=\"minWidth\"\n [style.max-width]=\"maxWidth\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n setting.HeaderComponent ? renderHeaderComponent : renderHeader;\n context: {\n $implicit: mo,\n index: this.index\n }\n \"\n ></ng-container>\n\n @if (!noContent || contextMenuItems) {\n <fd-card-content (click)=\"onRowCheck()\" (dblclick)=\"onRowClick()\" ellipsify>\n <div #divEl [applyConditionalFormats]=\"conditionalFormats\" [styleIndex]=\"styleIndex\" [hostEl]=\"divEl\">\n <ng-container\n *ngTemplateOutlet=\"\n setting.ContentComponent ? contentTemplateComponent : contentTemplateRef;\n context: {\n $implicit: mo,\n index: this.index\n }\n \"\n ></ng-container>\n </div>\n </fd-card-content>\n } @if(detailsText || contextMenuEnabled){\n <fd-card-footer\n (click)=\"!isChecked && onRowCheck(true)\"\n (dblclick)=\"onRowClick()\"\n [class.hasDetailsAndContextMenu]=\"detailsText && contextMenuEnabled && contextMenuInFooter\"\n [class.!tw-border-y-0]=\"noContent\"\n >\n @if(detailsText){<button *fdCardFooterActionItem fd-button fdType=\"transparent\" [fdPopoverTrigger]=\"popover\">\n {{ detailsText }}\n </button>\n } @if(contextMenuInFooter){\n <div\n *fdCardFooterActionItem\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [footerMode]=\"false\"\n [menuItems]=\"contextMenuItems\"\n [styleIndex]=\"styleIndex\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></div>\n }\n <fd-popover #popover>\n @if (detailsColumns?.length) {\n <ng-container\n *ngTemplateOutlet=\"\n detailsColumnsTemplate;\n context: { mo: mo, inlineEditMode: inlineEditMode, layout94: layout$ | async }\n \"\n ></ng-container>\n }\n </fd-popover>\n </fd-card-footer>\n }\n</fd-card>\n<ng-template #detailsColumnsTemplate let-mo=\"mo\" let-inlineEditMode=\"inlineEditMode\" let-layout94=\"layout94\">\n <ng-container\n *ngTemplateOutlet=\"\n detailsFormItems;\n context: {\n $implicit: detailsColumns,\n mo: this.mo,\n inlineEditMode: this.inlineEditMode,\n layout94: layout94\n }\n \"\n ></ng-container>\n</ng-template>\n<ng-template\n #detailsFormItems\n let-detailsColumns\n let-mo=\"mo\"\n let-inlineEditMode=\"inlineEditMode\"\n let-layout94=\"layout94\"\n>\n <div class=\"form-items\" class=\"tw-p-2\">\n @for (column of detailsColumns; track column; let columnIndex = $index) {\n <div fd-form-item class=\"!tw-flex-row\">\n @if(!column.$CustomComponent?.HideColumnCaption) {<label fd-form-label for=\"input-2\"\n >{{ column.Caption }}<span>:</span></label\n >}\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout94\n }\n \"\n ></ng-container>\n </div>\n }\n </div>\n</ng-template>\n<ng-template\n #columnTemplate\n let-column\n let-mo=\"mo\"\n let-index=\"index\"\n let-layout94=\"layout94\"\n let-disableEllapsis=\"disableEllapsis\"\n let-fdTextMode=\"fdTextMode\"\n>\n @if (column) {\n <bsu-barsa-table-column\n [mo]=\"mo\"\n [allColumns]=\"allColumns\"\n [column]=\"column\"\n [isdirty]=\"false\"\n [value]=\"column | columnValue: mo\"\n [icon]=\"column | columnIcon: mo\"\n [customComponent]=\"column.$CustomComponent\"\n [column]=\"column\"\n [disableEllapsis]=\"disableEllapsis === false ? false : true\"\n [fdTextMode]=\"fdTextMode\"\n [editMode]=\"isChecked && inlineEditMode && allowInlineEdit\"\n [inlineEditMode]=\"inlineEditMode\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [formSetting]=\"formSetting\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [layout94]=\"layout94\"\n (save)=\"onEditFormPanelSave(null)\"\n (cancel)=\"onEditFormPanelCancel(null)\"\n (tab)=\"onTabKeyDown($event, index)\"\n (changeToEditMode)=\"onColumnChangeToEditMode($event, index)\"\n >\n </bsu-barsa-table-column>\n\n }\n</ng-template>\n<ng-template #quickViewTemplate let-mo let-index=\"index\">\n @if (!noContent) {\n <fd-quick-view [id]=\"'id'\">\n <fd-quick-view-group>\n @for (column of setting.FieldListMapped; track column) {\n <fd-quick-view-group-item [class.rowDirection]=\"column?.$CustomComponent?.IsRowDirection\">\n @if (column) { @if(!column.$CustomComponent?.HideColumnCaption) {<fd-quick-view-group-item-label>\n {{ column.Caption | bbbTranslate }} </fd-quick-view-group-item-label\n >}\n <fd-quick-view-group-item-content>\n <div fd-quick-view-group-item-content-element class=\"group-item-content\">\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n </fd-quick-view-group-item-content>\n }\n </fd-quick-view-group-item>\n } @if (setting.DescriptionField) {\n <fd-quick-view-group-item>\n <fd-quick-view-group-item-content>\n @if (inlineEditMode && allowInlineEdit) {\n <fd-quick-view-group-item-label>\n {{ setting.DescriptionField?.Alias | bbbTranslate }}\n </fd-quick-view-group-item-label>\n }\n <div fd-quick-view-group-item-content-element class=\"group-item-content\">\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.DescriptionField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n </fd-quick-view-group-item-content>\n @if (setting.ActionFieldNameField) {\n <fd-quick-view-group-item-content\n class=\"action\"\n (click)=\"onAction(setting.ActionFieldCommandField || '')\"\n >\n <a fd-link>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.ActionFieldNameField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </a>\n </fd-quick-view-group-item-content>\n }\n </fd-quick-view-group-item>\n }\n </fd-quick-view-group>\n </fd-quick-view>\n }\n</ng-template>\n<ng-template #contentTemplate let-mo let-index=\"index\">\n <fd-layout-grid>\n <div fdLayoutGridRow style=\"align-items: center\">\n <div [fdLayoutGridCol]=\"12\">\n @for (column of setting.FieldListMapped; track column) {\n <div style=\"display: flex\">\n <label fd-form-label [colon]=\"true\">{{ column.Caption | bbbTranslate }}</label>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n }\n </div>\n @if (setting.DescriptionField) {\n <div [fdLayoutGridCol]=\"12\">\n @if (inlineEditMode && allowInlineEdit) {\n <label>\n {{ setting.DescriptionField?.Alias | bbbTranslate }}\n </label>\n }\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.DescriptionField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n }\n </div>\n </fd-layout-grid>\n</ng-template>\n<ng-template #avatar let-avatar let-visible=\"visible\" let-circle=\"circle\" let-avatarField=\"avatarField\">\n @if (visible) {\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [circle]=\"circle\"\n [image]=\"avatarField ? (mo[avatarField.Name]?.FileId | picFieldSrc: 'ID':avatarField.FieldDefId) : ''\"\n [size]=\"\n deviceSize === 'xl' || deviceSize === 'l' ? setting.AvatarSizeDesktop$Caption : setting.AvatarSize$Caption\n \"\n [glyph]=\"avatar || (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\"\n >\n </fd-avatar>\n }\n</ng-template>\n\n<ng-template #contentTemplateComponent let-mo let-index=\"index\">\n <bnrc-dynamic-item-component\n [component]=\"setting.ContentComponent\"\n [mo]=\"mo\"\n [styleIndex]=\"mo.$StyleIndex\"\n [isChecked]=\"isChecked\"\n [setting]=\"setting\"\n [parameters]=\"setting.ContentComponent.Settings\"\n [editMode]=\"inlineEditMode\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n ></bnrc-dynamic-item-component>\n</ng-template>\n\n<ng-template #renderHeader let-mo let-index=\"index\">\n @if(!hideOpenIcon && (openOnClick || (canView && deviceName !== 'desktop'))){\n <ng-container\n *ngTemplateOutlet=\"\n renderHeaderMobileCanView;\n context: {\n $implicit: mo,\n index: index\n }\n \"\n ></ng-container>\n }@else{\n <ng-container\n *ngTemplateOutlet=\"\n renderHeaderDesktop;\n context: {\n $implicit: mo,\n index: index\n }\n \"\n ></ng-container>\n }\n</ng-template>\n<ng-template #renderHeaderDesktop let-mo let-index=\"index\">\n <fd-card-header class=\"HeaderDesktop\">\n <div>\n @if(isCheckList){\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onRowCheck()\"></fd-checkbox>\n }\n </div>\n <fd-card-main-header (click)=\"onRowCheck()\" (dblclick)=\"onRowClick()\">\n @if (setting.AvatarField || setting.Avatar) {\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [circle]=\"setting.CircleAvatar\"\n [image]=\"\n setting.AvatarField\n ? (mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId)\n : ''\n \"\n [size]=\"\n deviceSize === 'xl' || deviceSize === 'l'\n ? setting.AvatarSizeDesktop$Caption\n : setting.AvatarSize$Caption\n \"\n [glyph]=\"\n setting.Avatar ||\n (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\n \"\n ></fd-avatar>\n }\n <h2 fd-card-title>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.TitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index,\n disableEllapsis: false,\n fdTextMode: true\n }\n \"\n ></ng-container>\n </h2>\n <h3 fd-card-subtitle>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.SubtitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index,\n disableEllapsis: false\n }\n \"\n ></ng-container>\n </h3>\n @if (!contextMenuInFooter && (contextMenuItems && contextMenuItems.length > 0)) {\n <div\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [footerMode]=\"false\"\n [menuItems]=\"contextMenuItems\"\n [styleIndex]=\"styleIndex\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></div>\n }\n </fd-card-main-header>\n </fd-card-header>\n</ng-template>\n<ng-template #renderHeaderMobileCanView let-mo let-index=\"index\">\n <fd-card-header class=\"HeaderMobileCanView\">\n <div>\n @if(isCheckList){\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onRowCheck()\"></fd-checkbox>\n }\n </div>\n <fd-card-main-header (click)=\"onRowCheck()\" (dblclick)=\"onRowClick()\">\n @if (setting.AvatarField || setting.Avatar) {\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [circle]=\"setting.CircleAvatar\"\n [image]=\"\n setting.AvatarField\n ? (mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId)\n : ''\n \"\n [size]=\"\n deviceSize === 'xl' || deviceSize === 'l'\n ? setting.AvatarSizeDesktop$Caption\n : setting.AvatarSize$Caption\n \"\n [glyph]=\"\n setting.Avatar ||\n (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\n \"\n ></fd-avatar>\n }\n <h2 fd-card-title>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.TitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index,\n fdTextMode: true\n }\n \"\n ></ng-container>\n </h2>\n <h3 fd-card-subtitle>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.SubtitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </h3>\n <button\n fd-card-header-action\n fd-button\n class=\"view-btn\"\n (click)=\"onRowClick()\"\n [glyph]=\"navigationArrow\"\n fdType=\"transparent\"\n ></button>\n </fd-card-main-header>\n </fd-card-header>\n</ng-template>\n<ng-template #renderHeaderComponent let-mo let-index=\"index\">\n <bnrc-dynamic-item-component\n [component]=\"setting.HeaderComponent\"\n [mo]=\"mo\"\n [styleIndex]=\"mo.$StyleIndex\"\n [isChecked]=\"isChecked\"\n [setting]=\"setting\"\n [parameters]=\"setting.HeaderComponent.Settings\"\n [editMode]=\"inlineEditMode\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n [contextMenuItems]=\"contextMenuItems\"\n [canView]=\"canView\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [navigationArrow]=\"navigationArrow\"\n [isCheckList]=\"isCheckList\"\n (events)=\"onDynamicComponentEvents($event)\"\n ></bnrc-dynamic-item-component>\n</ng-template>\n", styles: ["fd-card:hover{box-shadow:0 0 0 .0625rem #2235487a,0 .625rem 1.875rem #22354840}fd-card div[ulvcontextmenu] ::ng-deep .fd-bar{background-color:transparent}fd-card ::ng-deep bsu-column-renderer div.renderGeneral{font-family:IranYekanDigits}fd-card fd-card-footer.hasDetailsAndContextMenu ::ng-deep .fd-card__footer-actions{justify-content:space-between!important}fd-card fd-card-content{padding:0!important}fd-card fd-card-content>div>fd-quick-view ::ng-deep .fd-quick-view__content{padding-top:0}fd-card fd-card-content>div>fd-quick-view fd-quick-view-group-item.rowDirection ::ng-deep .fd-form-item{flex-direction:row}fd-card fd-card-header{padding:.5rem}fd-card fd-card-header:hover{background:var(--fdCard_Background_Color)}fd-card fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card fd-card-header button,fd-card fd-card-header div[ulvcontextmenu]{z-index:6}fd-card fd-card-header:hover{background:inherit}fd-quick-view-subheader ::ng-deep div{background:inherit}.action{cursor:pointer;margin-top:6px;flex:1;display:flex;justify-content:end;flex-direction:column}.openOnClick{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "directive", type: i2.EllipsifyDirective, selector: "[ellipsify]", inputs: ["limitLine"] }, { kind: "component", type: i3$5.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i2$5.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: i4$1.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5$2.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i5$2.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i5$2.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "directive", type: i5$2.CardHeaderActionDirective, selector: "[fd-card-header-action]" }, { kind: "component", type: i5$2.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i5$2.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i5$2.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i5$2.CardFooterComponent, selector: "fd-card-footer" }, { kind: "directive", type: i5$2.CardFooterActionItemDirective, selector: "[fdCardFooterActionItem]" }, { kind: "component", type: i5.CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "role", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: i2$1.FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: i2$1.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i4$3.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i4$3.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "directive", type: i4$3.LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "component", type: i7$3.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "directive", type: i7$3.PopoverTriggerDirective, selector: "[fdPopoverTrigger], [fd-popover-trigger]", inputs: ["fdPopoverTrigger"] }, { kind: "component", type: i12.QuickViewComponent, selector: "fd-quick-view", inputs: ["id"] }, { kind: "component", type: i12.QuickViewGroupComponent, selector: "fd-quick-view-group" }, { kind: "component", type: i12.QuickViewGroupItemComponent, selector: "fd-quick-view-group-item", inputs: ["id"] }, { kind: "component", type: i12.QuickViewGroupItemLabelComponent, selector: "fd-quick-view-group-item-label" }, { kind: "component", type: i12.QuickViewGroupItemContentComponent, selector: "fd-quick-view-group-item-content" }, { kind: "directive", type: i12.QuickViewGroupItemContentElementDirective, selector: "[fd-quick-view-group-item-content-element]" }, { kind: "component", type: UlvContextMenuComponent, selector: "bsu-ulv-context-menu,[ulvContextMenu]", inputs: ["onlyOverflow", "rightClickEnable", "deviceName", "menuItems", "allColumns", "index", "mo", "styleIndex", "conditionalFormats", "disableOverflowContextMenu", "footerMode", "appendTo"], outputs: ["commandClick"] }, { kind: "component", type: BarsaTableColumnComponent, selector: "bsu-barsa-table-column", inputs: ["disableEllapsis", "fdTextMode"] }, { kind: "directive", type: ApplyConditionalFormatsDirective, selector: "[applyConditionalFormats]", inputs: ["applyConditionalFormats", "styleIndex", "hostEl", "dbName"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.PictureFieldSourcePipe, name: "picFieldSrc" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i2.ColumnIconPipe, name: "columnIcon" }, { kind: "pipe", type: i2.ColumnValuePipe, name: "columnValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5322
5322
|
}
|
|
5323
5323
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: CardItemComponent, decorators: [{
|
|
5324
5324
|
type: Component,
|
|
5325
|
-
args: [{ selector: 'bsu-card-item', providers: [FormPanelService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card\n [cardType]=\"setting.CardType$Caption\"\n class=\"docs-flex-item-margin\"\n [class.openOnClick]=\"setting.openOnClick\"\n [style.width]=\"cardWidth\"\n [style.min-width]=\"minWidth\"\n [style.max-width]=\"maxWidth\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n setting.HeaderComponent ? renderHeaderComponent : renderHeader;\n context: {\n $implicit: mo,\n index: this.index\n }\n \"\n ></ng-container>\n\n @if (!noContent || contextMenuItems) {\n <fd-card-content (click)=\"onRowCheck()\" (dblclick)=\"onRowClick()\" ellipsify>\n <div #divEl [applyConditionalFormats]=\"conditionalFormats\" [styleIndex]=\"styleIndex\" [hostEl]=\"divEl\">\n <ng-container\n *ngTemplateOutlet=\"\n setting.ContentComponent ? contentTemplateComponent : contentTemplateRef;\n context: {\n $implicit: mo,\n index: this.index\n }\n \"\n ></ng-container>\n </div>\n </fd-card-content>\n } @if(detailsText || contextMenuEnabled){\n <fd-card-footer\n (click)=\"!isChecked && onRowCheck()\"\n (dblclick)=\"onRowClick()\"\n [class.hasDetailsAndContextMenu]=\"detailsText && contextMenuEnabled && contextMenuInFooter\"\n [class.!tw-border-y-0]=\"noContent\"\n >\n @if(detailsText){<button *fdCardFooterActionItem fd-button fdType=\"transparent\" [fdPopoverTrigger]=\"popover\">\n {{ detailsText }}\n </button>\n } @if(contextMenuInFooter){\n <div\n *fdCardFooterActionItem\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [footerMode]=\"false\"\n [menuItems]=\"contextMenuItems\"\n [styleIndex]=\"styleIndex\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></div>\n }\n <fd-popover #popover>\n @if (detailsColumns?.length) {\n <ng-container\n *ngTemplateOutlet=\"\n detailsColumnsTemplate;\n context: { mo: mo, inlineEditMode: inlineEditMode, layout94: layout$ | async }\n \"\n ></ng-container>\n }\n </fd-popover>\n </fd-card-footer>\n }\n</fd-card>\n<ng-template #detailsColumnsTemplate let-mo=\"mo\" let-inlineEditMode=\"inlineEditMode\" let-layout94=\"layout94\">\n <ng-container\n *ngTemplateOutlet=\"\n detailsFormItems;\n context: {\n $implicit: detailsColumns,\n mo: this.mo,\n inlineEditMode: this.inlineEditMode,\n layout94: layout94\n }\n \"\n ></ng-container>\n</ng-template>\n<ng-template\n #detailsFormItems\n let-detailsColumns\n let-mo=\"mo\"\n let-inlineEditMode=\"inlineEditMode\"\n let-layout94=\"layout94\"\n>\n <div class=\"form-items\" class=\"tw-p-2\">\n @for (column of detailsColumns; track column; let columnIndex = $index) {\n <div fd-form-item class=\"!tw-flex-row\">\n @if(!column.$CustomComponent?.HideColumnCaption) {<label fd-form-label for=\"input-2\"\n >{{ column.Caption }}<span>:</span></label\n >}\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout94\n }\n \"\n ></ng-container>\n </div>\n }\n </div>\n</ng-template>\n<ng-template\n #columnTemplate\n let-column\n let-mo=\"mo\"\n let-index=\"index\"\n let-layout94=\"layout94\"\n let-disableEllapsis=\"disableEllapsis\"\n let-fdTextMode=\"fdTextMode\"\n>\n @if (column) {\n <bsu-barsa-table-column\n [mo]=\"mo\"\n [allColumns]=\"allColumns\"\n [column]=\"column\"\n [isdirty]=\"false\"\n [value]=\"column | columnValue: mo\"\n [icon]=\"column | columnIcon: mo\"\n [customComponent]=\"column.$CustomComponent\"\n [column]=\"column\"\n [disableEllapsis]=\"disableEllapsis === false ? false : true\"\n [fdTextMode]=\"fdTextMode\"\n [editMode]=\"isChecked && inlineEditMode && allowInlineEdit\"\n [inlineEditMode]=\"inlineEditMode\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [formSetting]=\"formSetting\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [layout94]=\"layout94\"\n (save)=\"onEditFormPanelSave(null)\"\n (cancel)=\"onEditFormPanelCancel(null)\"\n (tab)=\"onTabKeyDown($event, index)\"\n (changeToEditMode)=\"onColumnChangeToEditMode($event, index)\"\n >\n </bsu-barsa-table-column>\n\n }\n</ng-template>\n<ng-template #quickViewTemplate let-mo let-index=\"index\">\n @if (!noContent) {\n <fd-quick-view [id]=\"'id'\">\n <fd-quick-view-group>\n @for (column of setting.FieldListMapped; track column) {\n <fd-quick-view-group-item [class.rowDirection]=\"column?.$CustomComponent?.IsRowDirection\">\n @if (column) { @if(!column.$CustomComponent?.HideColumnCaption) {<fd-quick-view-group-item-label>\n {{ column.Caption | bbbTranslate }} </fd-quick-view-group-item-label\n >}\n <fd-quick-view-group-item-content>\n <div fd-quick-view-group-item-content-element class=\"group-item-content\">\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n </fd-quick-view-group-item-content>\n }\n </fd-quick-view-group-item>\n } @if (setting.DescriptionField) {\n <fd-quick-view-group-item>\n <fd-quick-view-group-item-content>\n @if (inlineEditMode && allowInlineEdit) {\n <fd-quick-view-group-item-label>\n {{ setting.DescriptionField?.Alias | bbbTranslate }}\n </fd-quick-view-group-item-label>\n }\n <div fd-quick-view-group-item-content-element class=\"group-item-content\">\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.DescriptionField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n </fd-quick-view-group-item-content>\n @if (setting.ActionFieldNameField) {\n <fd-quick-view-group-item-content\n class=\"action\"\n (click)=\"onAction(setting.ActionFieldCommandField || '')\"\n >\n <a fd-link>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.ActionFieldNameField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </a>\n </fd-quick-view-group-item-content>\n }\n </fd-quick-view-group-item>\n }\n </fd-quick-view-group>\n </fd-quick-view>\n }\n</ng-template>\n<ng-template #contentTemplate let-mo let-index=\"index\">\n <fd-layout-grid>\n <div fdLayoutGridRow style=\"align-items: center\">\n <div [fdLayoutGridCol]=\"12\">\n @for (column of setting.FieldListMapped; track column) {\n <div style=\"display: flex\">\n <label fd-form-label [colon]=\"true\">{{ column.Caption | bbbTranslate }}</label>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n }\n </div>\n @if (setting.DescriptionField) {\n <div [fdLayoutGridCol]=\"12\">\n @if (inlineEditMode && allowInlineEdit) {\n <label>\n {{ setting.DescriptionField?.Alias | bbbTranslate }}\n </label>\n }\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.DescriptionField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n }\n </div>\n </fd-layout-grid>\n</ng-template>\n<ng-template #avatar let-avatar let-visible=\"visible\" let-circle=\"circle\" let-avatarField=\"avatarField\">\n @if (visible) {\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [circle]=\"circle\"\n [image]=\"avatarField ? (mo[avatarField.Name]?.FileId | picFieldSrc: 'ID':avatarField.FieldDefId) : ''\"\n [size]=\"\n deviceSize === 'xl' || deviceSize === 'l' ? setting.AvatarSizeDesktop$Caption : setting.AvatarSize$Caption\n \"\n [glyph]=\"avatar || (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\"\n >\n </fd-avatar>\n }\n</ng-template>\n\n<ng-template #contentTemplateComponent let-mo let-index=\"index\">\n <bnrc-dynamic-item-component\n [component]=\"setting.ContentComponent\"\n [mo]=\"mo\"\n [styleIndex]=\"mo.$StyleIndex\"\n [isChecked]=\"isChecked\"\n [setting]=\"setting\"\n [parameters]=\"setting.ContentComponent.Settings\"\n [editMode]=\"inlineEditMode\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n ></bnrc-dynamic-item-component>\n</ng-template>\n\n<ng-template #renderHeader let-mo let-index=\"index\">\n @if(!hideOpenIcon && (openOnClick || (canView && deviceName !== 'desktop'))){\n <ng-container\n *ngTemplateOutlet=\"\n renderHeaderMobileCanView;\n context: {\n $implicit: mo,\n index: index\n }\n \"\n ></ng-container>\n }@else{\n <ng-container\n *ngTemplateOutlet=\"\n renderHeaderDesktop;\n context: {\n $implicit: mo,\n index: index\n }\n \"\n ></ng-container>\n }\n</ng-template>\n<ng-template #renderHeaderDesktop let-mo let-index=\"index\">\n <fd-card-header class=\"HeaderDesktop\">\n <div>\n @if(isCheckList){\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onRowCheck()\"></fd-checkbox>\n }\n </div>\n <fd-card-main-header (click)=\"onRowCheck()\" (dblclick)=\"onRowClick()\">\n @if (setting.AvatarField || setting.Avatar) {\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [circle]=\"setting.CircleAvatar\"\n [image]=\"\n setting.AvatarField\n ? (mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId)\n : ''\n \"\n [size]=\"\n deviceSize === 'xl' || deviceSize === 'l'\n ? setting.AvatarSizeDesktop$Caption\n : setting.AvatarSize$Caption\n \"\n [glyph]=\"\n setting.Avatar ||\n (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\n \"\n ></fd-avatar>\n }\n <h2 fd-card-title>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.TitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index,\n disableEllapsis: false,\n fdTextMode: true\n }\n \"\n ></ng-container>\n </h2>\n <h3 fd-card-subtitle>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.SubtitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index,\n disableEllapsis: false\n }\n \"\n ></ng-container>\n </h3>\n @if (!contextMenuInFooter && (contextMenuItems && contextMenuItems.length > 0)) {\n <div\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [footerMode]=\"false\"\n [menuItems]=\"contextMenuItems\"\n [styleIndex]=\"styleIndex\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></div>\n }\n </fd-card-main-header>\n </fd-card-header>\n</ng-template>\n<ng-template #renderHeaderMobileCanView let-mo let-index=\"index\">\n <fd-card-header class=\"HeaderMobileCanView\">\n <div>\n @if(isCheckList){\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onRowCheck()\"></fd-checkbox>\n }\n </div>\n <fd-card-main-header (click)=\"onRowCheck()\" (dblclick)=\"onRowClick()\">\n @if (setting.AvatarField || setting.Avatar) {\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [circle]=\"setting.CircleAvatar\"\n [image]=\"\n setting.AvatarField\n ? (mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId)\n : ''\n \"\n [size]=\"\n deviceSize === 'xl' || deviceSize === 'l'\n ? setting.AvatarSizeDesktop$Caption\n : setting.AvatarSize$Caption\n \"\n [glyph]=\"\n setting.Avatar ||\n (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\n \"\n ></fd-avatar>\n }\n <h2 fd-card-title>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.TitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index,\n fdTextMode: true\n }\n \"\n ></ng-container>\n </h2>\n <h3 fd-card-subtitle>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.SubtitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </h3>\n <button\n fd-card-header-action\n fd-button\n class=\"view-btn\"\n (click)=\"onRowClick()\"\n [glyph]=\"navigationArrow\"\n fdType=\"transparent\"\n ></button>\n </fd-card-main-header>\n </fd-card-header>\n</ng-template>\n<ng-template #renderHeaderComponent let-mo let-index=\"index\">\n <bnrc-dynamic-item-component\n [component]=\"setting.HeaderComponent\"\n [mo]=\"mo\"\n [styleIndex]=\"mo.$StyleIndex\"\n [isChecked]=\"isChecked\"\n [setting]=\"setting\"\n [parameters]=\"setting.HeaderComponent.Settings\"\n [editMode]=\"inlineEditMode\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n [contextMenuItems]=\"contextMenuItems\"\n [canView]=\"canView\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [navigationArrow]=\"navigationArrow\"\n [isCheckList]=\"isCheckList\"\n (events)=\"onDynamicComponentEvents($event)\"\n ></bnrc-dynamic-item-component>\n</ng-template>\n", styles: ["fd-card:hover{box-shadow:0 0 0 .0625rem #2235487a,0 .625rem 1.875rem #22354840}fd-card div[ulvcontextmenu] ::ng-deep .fd-bar{background-color:transparent}fd-card ::ng-deep bsu-column-renderer div.renderGeneral{font-family:IranYekanDigits}fd-card fd-card-footer.hasDetailsAndContextMenu ::ng-deep .fd-card__footer-actions{justify-content:space-between!important}fd-card fd-card-content{padding:0!important}fd-card fd-card-content>div>fd-quick-view ::ng-deep .fd-quick-view__content{padding-top:0}fd-card fd-card-content>div>fd-quick-view fd-quick-view-group-item.rowDirection ::ng-deep .fd-form-item{flex-direction:row}fd-card fd-card-header{padding:.5rem}fd-card fd-card-header:hover{background:var(--fdCard_Background_Color)}fd-card fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card fd-card-header button,fd-card fd-card-header div[ulvcontextmenu]{z-index:6}fd-card fd-card-header:hover{background:inherit}fd-quick-view-subheader ::ng-deep div{background:inherit}.action{cursor:pointer;margin-top:6px;flex:1;display:flex;justify-content:end;flex-direction:column}.openOnClick{cursor:pointer}\n"] }]
|
|
5325
|
+
args: [{ selector: 'bsu-card-item', providers: [FormPanelService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-card\n [cardType]=\"setting.CardType$Caption\"\n class=\"docs-flex-item-margin\"\n [class.openOnClick]=\"setting.openOnClick\"\n [style.width]=\"cardWidth\"\n [style.min-width]=\"minWidth\"\n [style.max-width]=\"maxWidth\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n setting.HeaderComponent ? renderHeaderComponent : renderHeader;\n context: {\n $implicit: mo,\n index: this.index\n }\n \"\n ></ng-container>\n\n @if (!noContent || contextMenuItems) {\n <fd-card-content (click)=\"onRowCheck()\" (dblclick)=\"onRowClick()\" ellipsify>\n <div #divEl [applyConditionalFormats]=\"conditionalFormats\" [styleIndex]=\"styleIndex\" [hostEl]=\"divEl\">\n <ng-container\n *ngTemplateOutlet=\"\n setting.ContentComponent ? contentTemplateComponent : contentTemplateRef;\n context: {\n $implicit: mo,\n index: this.index\n }\n \"\n ></ng-container>\n </div>\n </fd-card-content>\n } @if(detailsText || contextMenuEnabled){\n <fd-card-footer\n (click)=\"!isChecked && onRowCheck(true)\"\n (dblclick)=\"onRowClick()\"\n [class.hasDetailsAndContextMenu]=\"detailsText && contextMenuEnabled && contextMenuInFooter\"\n [class.!tw-border-y-0]=\"noContent\"\n >\n @if(detailsText){<button *fdCardFooterActionItem fd-button fdType=\"transparent\" [fdPopoverTrigger]=\"popover\">\n {{ detailsText }}\n </button>\n } @if(contextMenuInFooter){\n <div\n *fdCardFooterActionItem\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [footerMode]=\"false\"\n [menuItems]=\"contextMenuItems\"\n [styleIndex]=\"styleIndex\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></div>\n }\n <fd-popover #popover>\n @if (detailsColumns?.length) {\n <ng-container\n *ngTemplateOutlet=\"\n detailsColumnsTemplate;\n context: { mo: mo, inlineEditMode: inlineEditMode, layout94: layout$ | async }\n \"\n ></ng-container>\n }\n </fd-popover>\n </fd-card-footer>\n }\n</fd-card>\n<ng-template #detailsColumnsTemplate let-mo=\"mo\" let-inlineEditMode=\"inlineEditMode\" let-layout94=\"layout94\">\n <ng-container\n *ngTemplateOutlet=\"\n detailsFormItems;\n context: {\n $implicit: detailsColumns,\n mo: this.mo,\n inlineEditMode: this.inlineEditMode,\n layout94: layout94\n }\n \"\n ></ng-container>\n</ng-template>\n<ng-template\n #detailsFormItems\n let-detailsColumns\n let-mo=\"mo\"\n let-inlineEditMode=\"inlineEditMode\"\n let-layout94=\"layout94\"\n>\n <div class=\"form-items\" class=\"tw-p-2\">\n @for (column of detailsColumns; track column; let columnIndex = $index) {\n <div fd-form-item class=\"!tw-flex-row\">\n @if(!column.$CustomComponent?.HideColumnCaption) {<label fd-form-label for=\"input-2\"\n >{{ column.Caption }}<span>:</span></label\n >}\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n mo: mo,\n index: columnIndex,\n inlineEditMode: inlineEditMode,\n layout94: layout94\n }\n \"\n ></ng-container>\n </div>\n }\n </div>\n</ng-template>\n<ng-template\n #columnTemplate\n let-column\n let-mo=\"mo\"\n let-index=\"index\"\n let-layout94=\"layout94\"\n let-disableEllapsis=\"disableEllapsis\"\n let-fdTextMode=\"fdTextMode\"\n>\n @if (column) {\n <bsu-barsa-table-column\n [mo]=\"mo\"\n [allColumns]=\"allColumns\"\n [column]=\"column\"\n [isdirty]=\"false\"\n [value]=\"column | columnValue: mo\"\n [icon]=\"column | columnIcon: mo\"\n [customComponent]=\"column.$CustomComponent\"\n [column]=\"column\"\n [disableEllapsis]=\"disableEllapsis === false ? false : true\"\n [fdTextMode]=\"fdTextMode\"\n [editMode]=\"isChecked && inlineEditMode && allowInlineEdit\"\n [inlineEditMode]=\"inlineEditMode\"\n [isChecked]=\"isChecked\"\n [index]=\"index\"\n [formSetting]=\"formSetting\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [layout94]=\"layout94\"\n (save)=\"onEditFormPanelSave(null)\"\n (cancel)=\"onEditFormPanelCancel(null)\"\n (tab)=\"onTabKeyDown($event, index)\"\n (changeToEditMode)=\"onColumnChangeToEditMode($event, index)\"\n >\n </bsu-barsa-table-column>\n\n }\n</ng-template>\n<ng-template #quickViewTemplate let-mo let-index=\"index\">\n @if (!noContent) {\n <fd-quick-view [id]=\"'id'\">\n <fd-quick-view-group>\n @for (column of setting.FieldListMapped; track column) {\n <fd-quick-view-group-item [class.rowDirection]=\"column?.$CustomComponent?.IsRowDirection\">\n @if (column) { @if(!column.$CustomComponent?.HideColumnCaption) {<fd-quick-view-group-item-label>\n {{ column.Caption | bbbTranslate }} </fd-quick-view-group-item-label\n >}\n <fd-quick-view-group-item-content>\n <div fd-quick-view-group-item-content-element class=\"group-item-content\">\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n </fd-quick-view-group-item-content>\n }\n </fd-quick-view-group-item>\n } @if (setting.DescriptionField) {\n <fd-quick-view-group-item>\n <fd-quick-view-group-item-content>\n @if (inlineEditMode && allowInlineEdit) {\n <fd-quick-view-group-item-label>\n {{ setting.DescriptionField?.Alias | bbbTranslate }}\n </fd-quick-view-group-item-label>\n }\n <div fd-quick-view-group-item-content-element class=\"group-item-content\">\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.DescriptionField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n </fd-quick-view-group-item-content>\n @if (setting.ActionFieldNameField) {\n <fd-quick-view-group-item-content\n class=\"action\"\n (click)=\"onAction(setting.ActionFieldCommandField || '')\"\n >\n <a fd-link>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.ActionFieldNameField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </a>\n </fd-quick-view-group-item-content>\n }\n </fd-quick-view-group-item>\n }\n </fd-quick-view-group>\n </fd-quick-view>\n }\n</ng-template>\n<ng-template #contentTemplate let-mo let-index=\"index\">\n <fd-layout-grid>\n <div fdLayoutGridRow style=\"align-items: center\">\n <div [fdLayoutGridCol]=\"12\">\n @for (column of setting.FieldListMapped; track column) {\n <div style=\"display: flex\">\n <label fd-form-label [colon]=\"true\">{{ column.Caption | bbbTranslate }}</label>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: column,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n }\n </div>\n @if (setting.DescriptionField) {\n <div [fdLayoutGridCol]=\"12\">\n @if (inlineEditMode && allowInlineEdit) {\n <label>\n {{ setting.DescriptionField?.Alias | bbbTranslate }}\n </label>\n }\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.DescriptionField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </div>\n }\n </div>\n </fd-layout-grid>\n</ng-template>\n<ng-template #avatar let-avatar let-visible=\"visible\" let-circle=\"circle\" let-avatarField=\"avatarField\">\n @if (visible) {\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [circle]=\"circle\"\n [image]=\"avatarField ? (mo[avatarField.Name]?.FileId | picFieldSrc: 'ID':avatarField.FieldDefId) : ''\"\n [size]=\"\n deviceSize === 'xl' || deviceSize === 'l' ? setting.AvatarSizeDesktop$Caption : setting.AvatarSize$Caption\n \"\n [glyph]=\"avatar || (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\"\n >\n </fd-avatar>\n }\n</ng-template>\n\n<ng-template #contentTemplateComponent let-mo let-index=\"index\">\n <bnrc-dynamic-item-component\n [component]=\"setting.ContentComponent\"\n [mo]=\"mo\"\n [styleIndex]=\"mo.$StyleIndex\"\n [isChecked]=\"isChecked\"\n [setting]=\"setting\"\n [parameters]=\"setting.ContentComponent.Settings\"\n [editMode]=\"inlineEditMode\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n ></bnrc-dynamic-item-component>\n</ng-template>\n\n<ng-template #renderHeader let-mo let-index=\"index\">\n @if(!hideOpenIcon && (openOnClick || (canView && deviceName !== 'desktop'))){\n <ng-container\n *ngTemplateOutlet=\"\n renderHeaderMobileCanView;\n context: {\n $implicit: mo,\n index: index\n }\n \"\n ></ng-container>\n }@else{\n <ng-container\n *ngTemplateOutlet=\"\n renderHeaderDesktop;\n context: {\n $implicit: mo,\n index: index\n }\n \"\n ></ng-container>\n }\n</ng-template>\n<ng-template #renderHeaderDesktop let-mo let-index=\"index\">\n <fd-card-header class=\"HeaderDesktop\">\n <div>\n @if(isCheckList){\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onRowCheck()\"></fd-checkbox>\n }\n </div>\n <fd-card-main-header (click)=\"onRowCheck()\" (dblclick)=\"onRowClick()\">\n @if (setting.AvatarField || setting.Avatar) {\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [circle]=\"setting.CircleAvatar\"\n [image]=\"\n setting.AvatarField\n ? (mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId)\n : ''\n \"\n [size]=\"\n deviceSize === 'xl' || deviceSize === 'l'\n ? setting.AvatarSizeDesktop$Caption\n : setting.AvatarSize$Caption\n \"\n [glyph]=\"\n setting.Avatar ||\n (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\n \"\n ></fd-avatar>\n }\n <h2 fd-card-title>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.TitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index,\n disableEllapsis: false,\n fdTextMode: true\n }\n \"\n ></ng-container>\n </h2>\n <h3 fd-card-subtitle>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.SubtitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index,\n disableEllapsis: false\n }\n \"\n ></ng-container>\n </h3>\n @if (!contextMenuInFooter && (contextMenuItems && contextMenuItems.length > 0)) {\n <div\n ulvContextMenu\n [allColumns]=\"allColumns\"\n [footerMode]=\"false\"\n [menuItems]=\"contextMenuItems\"\n [styleIndex]=\"styleIndex\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [mo]=\"mo\"\n (commandClick)=\"onUlvCommand()\"\n ></div>\n }\n </fd-card-main-header>\n </fd-card-header>\n</ng-template>\n<ng-template #renderHeaderMobileCanView let-mo let-index=\"index\">\n <fd-card-header class=\"HeaderMobileCanView\">\n <div>\n @if(isCheckList){\n <fd-checkbox [name]=\"mo.$Caption\" [ngModel]=\"isChecked\" (ngModelChange)=\"onRowCheck()\"></fd-checkbox>\n }\n </div>\n <fd-card-main-header (click)=\"onRowCheck()\" (dblclick)=\"onRowClick()\">\n @if (setting.AvatarField || setting.Avatar) {\n <fd-avatar\n alterIcon=\"alt|content|backup|default-icon\"\n [circle]=\"setting.CircleAvatar\"\n [image]=\"\n setting.AvatarField\n ? (mo[setting.AvatarField.Name]?.FileId | picFieldSrc: 'ID':setting.AvatarField.FieldDefId)\n : ''\n \"\n [size]=\"\n deviceSize === 'xl' || deviceSize === 'l'\n ? setting.AvatarSizeDesktop$Caption\n : setting.AvatarSize$Caption\n \"\n [glyph]=\"\n setting.Avatar ||\n (mo.$State === 'New' && !isChecked ? 'favorite' : inlineEditMode && isChecked ? 'edit' : '')\n \"\n ></fd-avatar>\n }\n <h2 fd-card-title>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.TitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index,\n fdTextMode: true\n }\n \"\n ></ng-container>\n </h2>\n <h3 fd-card-subtitle>\n <ng-container\n *ngTemplateOutlet=\"\n columnTemplate;\n context: {\n $implicit: setting.SubtitleField,\n layout94: layout$ | async,\n mo: mo,\n index: index\n }\n \"\n ></ng-container>\n </h3>\n <button\n fd-card-header-action\n fd-button\n class=\"view-btn\"\n (click)=\"onRowClick()\"\n [glyph]=\"navigationArrow\"\n fdType=\"transparent\"\n ></button>\n </fd-card-main-header>\n </fd-card-header>\n</ng-template>\n<ng-template #renderHeaderComponent let-mo let-index=\"index\">\n <bnrc-dynamic-item-component\n [component]=\"setting.HeaderComponent\"\n [mo]=\"mo\"\n [styleIndex]=\"mo.$StyleIndex\"\n [isChecked]=\"isChecked\"\n [setting]=\"setting\"\n [parameters]=\"setting.HeaderComponent.Settings\"\n [editMode]=\"inlineEditMode\"\n [rtl]=\"rtl\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [index]=\"index\"\n [allColumns]=\"allColumns\"\n [contextMenuItems]=\"contextMenuItems\"\n [canView]=\"canView\"\n [conditionalFormats]=\"conditionalFormats\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [navigationArrow]=\"navigationArrow\"\n [isCheckList]=\"isCheckList\"\n (events)=\"onDynamicComponentEvents($event)\"\n ></bnrc-dynamic-item-component>\n</ng-template>\n", styles: ["fd-card:hover{box-shadow:0 0 0 .0625rem #2235487a,0 .625rem 1.875rem #22354840}fd-card div[ulvcontextmenu] ::ng-deep .fd-bar{background-color:transparent}fd-card ::ng-deep bsu-column-renderer div.renderGeneral{font-family:IranYekanDigits}fd-card fd-card-footer.hasDetailsAndContextMenu ::ng-deep .fd-card__footer-actions{justify-content:space-between!important}fd-card fd-card-content{padding:0!important}fd-card fd-card-content>div>fd-quick-view ::ng-deep .fd-quick-view__content{padding-top:0}fd-card fd-card-content>div>fd-quick-view fd-quick-view-group-item.rowDirection ::ng-deep .fd-form-item{flex-direction:row}fd-card fd-card-header{padding:.5rem}fd-card fd-card-header:hover{background:var(--fdCard_Background_Color)}fd-card fd-card-header .fd-card__title{display:flex;justify-content:space-between;align-items:center;width:100%}fd-card fd-card-header button,fd-card fd-card-header div[ulvcontextmenu]{z-index:6}fd-card fd-card-header:hover{background:inherit}fd-quick-view-subheader ::ng-deep div{background:inherit}.action{cursor:pointer;margin-top:6px;flex:1;display:flex;justify-content:end;flex-direction:column}.openOnClick{cursor:pointer}\n"] }]
|
|
5326
5326
|
}], propDecorators: { setting: [{
|
|
5327
5327
|
type: Input
|
|
5328
5328
|
}], _quickViewTemplate: [{
|
|
@@ -10273,11 +10273,11 @@ class UiPicturesInfoComponent extends DeviceInfoFieldBaseComponent {
|
|
|
10273
10273
|
this.value = value;
|
|
10274
10274
|
}
|
|
10275
10275
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiPicturesInfoComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
10276
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: UiPicturesInfoComponent, selector: "bsu-ui-pictures-info", inputs: { value: "value" }, providers: [UploadService], viewQueries: [{ propertyName: "gallery", first: true, predicate: ["gallery"], descendants: true }, { propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n [id]=\"id\"\n [name]=\"'pictures_' + id\"\n [placeholder]=\"'AttachPicture' | bbbTranslate\"\n [buttonLabel]=\"'AttachPicture' | bbbTranslate\"\n [buttonAriaLabel]=\"'AttachPicture' | bbbTranslate\"\n accept=\".png,.jpg,.bpm,.jpeg,.gif,.png,.tif\"\n [fileLimit]=\"maxFileCount === 0 ? 100 : maxFileCount\"\n [multiple]=\"maxFileCount === 0 || maxFileCount > 1\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n></fd-file-uploader>\n\n<ng-container *ngTemplateOutlet=\"layoutGridTpl\"></ng-container>\n<ng-template #layoutGridTpl let-inDialog=\"inDialog\" let-gallery=\"gallery\">\n <fd-layout-grid>\n @if (mediaData$ | async; as mediaData) {\n <div fdLayoutGridRow>\n @for (media of mediaData; track media; let i = $index) {\n <div [fdLayoutGridCol]=\"6\" [colMd]=\"3\" [colLg]=\"2\" [colXl]=\"2\" (click)=\"onMedaiClick(gallery, media, i)\">\n <ng-container\n *ngTemplateOutlet=\"\n cardTpl;\n context: { $implicit: media, mediaData: this.mediaData, inDialog: this.inDialog, index: i }\n \"\n ></ng-container>\n </div>\n } @if (!inDialog && (disableOrReadonly$ | async) === true ? false : true) {\n <div [fdLayoutGridCol]=\"6\" [colMd]=\"3\" [colLg]=\"2\" [colXl]=\"2\">\n <ng-container *ngTemplateOutlet=\"newFile\"></ng-container>\n </div>\n }\n </div>\n }\n </fd-layout-grid>\n</ng-template>\n<ng-template #cardTpl let-media let-mediaData=\"mediaData\" let-inDialog=\"inDialog\" let-index=\"index\">\n <fd-card class=\"media\" [class.inDialog]=\"inDialog\">\n <fd-card-content style=\"text-align: center; height: 120px\">\n <img imgLazy [imgLazy]=\"media.thumbnailUrl\" [src]=\"media.thumbnailUrl\" #img />\n </fd-card-content>\n @if (!inDialog) {\n <fd-card-footer>\n <button\n glyph=\"message-information\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n [fd-inline-help]=\"media.title\"\n [triggers]=\"['click']\"\n [closeOnOutsideClick]=\"true\"\n ></button>\n <button *fdCardFooterActionItem fd-button glyph=\"rotate\" (click)=\"onRotate(img, media, index)\"></button>\n\n <button\n glyph=\"full-screen\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n (click)=\"onFullscreen(media, mediaData)\"\n ></button>\n @if ((disableOrReadonly$ | async) === true ? false : true) {\n <button\n glyph=\"delete\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n (click)=\"onDelete(index)\"\n ></button>\n }\n </fd-card-footer>\n }\n </fd-card>\n</ng-template>\n<ng-template #newFile>\n <div style=\"position: relative; height: 100%\">\n <fd-card>\n <fd-card-content style=\"display: flex; align-items: center; justify-content: center; min-height: 120px\">\n <button\n fd-button\n glyph=\"add-photo\"\n fdType=\"transparent\"\n [label]=\"'AttachFile' | bbbTranslate\"\n (click)=\"uploader.open()\"\n ></button>\n </fd-card-content>\n\n <fd-card-footer style=\"border-top: 1px solid #ccc\">\n <button fd-button [glyph]=\"'overflow'\" [fdType]=\"'transparent'\" [fdMenuTrigger]=\"menu\"></button>\n <fd-menu #menu>\n <li fd-menu-item (click)=\"onScan()\">\n <a fd-menu-interactive>\n <span fd-menu-title>{{ 'Scan' | bbbTranslate }}</span>\n </a>\n </li>\n <li fd-menu-item (click)=\"onAdvanceScan()\">\n <a fd-menu-interactive>\n <span fd-menu-title>{{ 'AdvancedScan' | bbbTranslate }}</span>\n </a>\n </li>\n </fd-menu>\n </fd-card-footer>\n </fd-card>\n @if ((uploadingState$ | async)?.uploading === true) {\n <bsu-mask></bsu-mask>\n }\n </div>\n</ng-template>\n<ng-template #dialogTemplate let-dialog let-dialogConfig=\"dialogConfig\">\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTpl class=\"vertical\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h1 fd-title>{{ Setting.ControlFieldCaptionTranslated }}</h1>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n @if (!dialogConfig.fullscreen) {\n <fd-button-bar\n ariaLabel=\"Fit image size\"\n [glyph]=\"'resize'\"\n [fdType]=\"fillWidth ? 'emphasized' : 'transparent'\"\n (click)=\"fillWidth = !fillWidth\"\n ></fd-button-bar>\n }\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.close()\"></fd-button-bar>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body #fdbody>\n <div #gallery class=\"gallery inDialog\" style=\"flex: 1\">\n @for (media of dialog.data.mediaData; track media.FileId; let i = $index) {\n <div\n class=\"column big-imgs-box\"\n [class.fill-width]=\"fillWidth\"\n [class.fill-all]=\"fillAll\"\n [class.fill-original]=\"fillOriginal\"\n [ngClass]=\"selectedZoom\"\n >\n <fd-toolbar fdType=\"solid\" fdType=\"transparent\" [clearBorder]=\"true\">\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <button fd-toolbar-item fd-button glyph=\"rotate\" (click)=\"onRotate(img, media, i)\"></button>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n </fd-toolbar>\n <div class=\"pics\" [id]=\"i\">\n <bsu-mask></bsu-mask>\n <img #img imgLazy [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\n </div>\n </div>\n }\n </div>\n @if ((deviceSize$ | async) !== 's') {\n <div class=\"thumbnail\" style=\"flex-shrink: 1\">\n <ng-cotainer\n *ngTemplateOutlet=\"layoutGridTpl; context: { inDialog: true, gallery: this.gallery }\"\n ></ng-cotainer>\n </div>\n }\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{position:relative}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}.big-imgs-box{position:relative}.big-imgs-box>fd-toolbar{position:absolute;z-index:5;opacity:.5}.big-imgs-box>fd-toolbar:hover{opacity:1}fd-toolbar{width:100%}fd-dialog-footer{justify-content:center}.hatchBackground{min-height:100px}.gallery{display:flex;width:100%;height:400px;column-gap:1px;background-color:var(--sapField_Background, #fff)}.gallery ::-webkit-scrollbar{width:7px;height:7px}.gallery ::-webkit-scrollbar-track{box-shadow:inset 0 0 5px gray;border-radius:4px}.gallery ::-webkit-scrollbar-thumb{background:#555454;border-radius:4px}.gallery ::-webkit-scrollbar-thumb:hover{background:#2c2b2b}.gallery .column{overflow-y:scroll;display:flex;flex-direction:column;row-gap:3%;align-items:center}.gallery .column .pics{width:100%;display:flex;justify-content:center}.gallery .column .pics img{border-radius:5px}.gallery .column.small-imgs-box{flex:10%}.gallery .column.big-imgs-box{flex:90%}.gallery .selected{background-color:#fff;border:3px solid #0294d8;padding:10px}.gallery .fill-all .pics{height:100%}.gallery .fill-all img{width:100%!important;height:100%!important;object-fit:fill!important}.gallery .fill-original img{width:unset;height:unset}.gallery .zoom1 img{zoom:1}.gallery .zoom1-5 img{zoom:1.5}.gallery .zoom2 img{zoom:2}fd-dialog .gallery{overflow:auto}fd-dialog .gallery .column{overflow:initial}fd-dialog .gallery .pics{position:relative}fd-dialog fd-dialog-body{display:flex}fd-dialog.horizontal fd-dialog-body{flex-direction:column}fd-dialog.horizontal .gallery{flex-direction:row}fd-dialog.horizontal .thumbnail{border-top:1px solid #ccc;overflow-x:auto}fd-dialog.vertical fd-dialog-body{flex-direction:row-reverse}fd-dialog.vertical .gallery{flex-direction:column;height:100%}fd-dialog.vertical .thumbnail{border-left:1px solid #ccc;height:100%;width:200px;overflow-y:auto}fd-dialog.vertical .thumbnail ::ng-deep .fd-row>div{width:100%;min-width:100%}fd-card.media fd-card-footer button{border:none}fd-card.inDialog fd-card-header{padding-top:5px;padding-bottom:5px}.fd-col{min-width:165px}\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.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "directive", type: i3$1.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i3$1.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i3$1.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: i3$1.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i4$1.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5$2.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i5$2.CardContentComponent, selector: "fd-card-content" }, { kind: "component", type: i5$2.CardFooterComponent, selector: "fd-card-footer" }, { kind: "directive", type: i5$2.CardFooterActionItemDirective, selector: "[fdCardFooterActionItem]" }, { kind: "component", type: i2$8.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "directive", type: i4.InlineHelpDirective, selector: "[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help"] }, { kind: "component", type: i4$3.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i4$3.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "directive", type: i4$3.LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "component", type: i6$2.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i6$2.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu", "parentSubmenu", "hasSeparator"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "component", type: i6$2.MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i6$2.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "directive", type: i6$2.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i4$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i4$2.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i4$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: i6$1.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i7$1.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i8.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i8.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i8.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10276
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: UiPicturesInfoComponent, selector: "bsu-ui-pictures-info", inputs: { value: "value" }, providers: [UploadService], viewQueries: [{ propertyName: "gallery", first: true, predicate: ["gallery"], descendants: true }, { propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n [id]=\"id\"\n [name]=\"'pictures_' + id\"\n [placeholder]=\"'AttachPicture' | bbbTranslate\"\n [buttonLabel]=\"'AttachPicture' | bbbTranslate\"\n [buttonAriaLabel]=\"'AttachPicture' | bbbTranslate\"\n accept=\".png,.jpg,.bpm,.jpeg,.gif,.png,.tif,.pdf\"\n [fileLimit]=\"maxFileCount === 0 ? 100 : maxFileCount\"\n [multiple]=\"maxFileCount === 0 || maxFileCount > 1\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n></fd-file-uploader>\n\n<ng-container *ngTemplateOutlet=\"layoutGridTpl\"></ng-container>\n<ng-template #layoutGridTpl let-inDialog=\"inDialog\" let-gallery=\"gallery\">\n <fd-layout-grid>\n @if (mediaData$ | async; as mediaData) {\n <div fdLayoutGridRow>\n @for (media of mediaData; track media; let i = $index) {\n <div [fdLayoutGridCol]=\"6\" [colMd]=\"3\" [colLg]=\"2\" [colXl]=\"2\" (click)=\"onMedaiClick(gallery, media, i)\">\n <ng-container\n *ngTemplateOutlet=\"\n cardTpl;\n context: { $implicit: media, mediaData: this.mediaData, inDialog: this.inDialog, index: i }\n \"\n ></ng-container>\n </div>\n } @if (!inDialog && (disableOrReadonly$ | async) === true ? false : true) {\n <div [fdLayoutGridCol]=\"6\" [colMd]=\"3\" [colLg]=\"2\" [colXl]=\"2\">\n <ng-container *ngTemplateOutlet=\"newFile\"></ng-container>\n </div>\n }\n </div>\n }\n </fd-layout-grid>\n</ng-template>\n<ng-template #cardTpl let-media let-mediaData=\"mediaData\" let-inDialog=\"inDialog\" let-index=\"index\">\n <fd-card class=\"media\" [class.inDialog]=\"inDialog\">\n <fd-card-content style=\"text-align: center; height: 120px\">\n <img imgLazy [imgLazy]=\"media.thumbnailUrl\" [src]=\"media.thumbnailUrl\" #img />\n </fd-card-content>\n @if (!inDialog) {\n <fd-card-footer>\n <button\n glyph=\"message-information\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n [fd-inline-help]=\"media.title\"\n [triggers]=\"['click']\"\n [closeOnOutsideClick]=\"true\"\n ></button>\n <button *fdCardFooterActionItem fd-button glyph=\"rotate\" (click)=\"onRotate(img, media, index)\"></button>\n\n <button\n glyph=\"full-screen\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n (click)=\"onFullscreen(media, mediaData)\"\n ></button>\n @if ((disableOrReadonly$ | async) === true ? false : true) {\n <button\n glyph=\"delete\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n (click)=\"onDelete(index)\"\n ></button>\n }\n </fd-card-footer>\n }\n </fd-card>\n</ng-template>\n<ng-template #newFile>\n <div style=\"position: relative; height: 100%\">\n <fd-card>\n <fd-card-content style=\"display: flex; align-items: center; justify-content: center; min-height: 120px\">\n <button\n fd-button\n glyph=\"add-photo\"\n fdType=\"transparent\"\n [label]=\"'AttachFile' | bbbTranslate\"\n (click)=\"uploader.open()\"\n ></button>\n </fd-card-content>\n\n <fd-card-footer style=\"border-top: 1px solid #ccc\">\n <button fd-button [glyph]=\"'overflow'\" [fdType]=\"'transparent'\" [fdMenuTrigger]=\"menu\"></button>\n <fd-menu #menu>\n <li fd-menu-item (click)=\"onScan()\">\n <a fd-menu-interactive>\n <span fd-menu-title>{{ 'Scan' | bbbTranslate }}</span>\n </a>\n </li>\n <li fd-menu-item (click)=\"onAdvanceScan()\">\n <a fd-menu-interactive>\n <span fd-menu-title>{{ 'AdvancedScan' | bbbTranslate }}</span>\n </a>\n </li>\n </fd-menu>\n </fd-card-footer>\n </fd-card>\n @if ((uploadingState$ | async)?.uploading === true) {\n <bsu-mask></bsu-mask>\n }\n </div>\n</ng-template>\n<ng-template #dialogTemplate let-dialog let-dialogConfig=\"dialogConfig\">\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTpl class=\"vertical\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h1 fd-title>{{ Setting.ControlFieldCaptionTranslated }}</h1>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n @if (!dialogConfig.fullscreen) {\n <fd-button-bar\n ariaLabel=\"Fit image size\"\n [glyph]=\"'resize'\"\n [fdType]=\"fillWidth ? 'emphasized' : 'transparent'\"\n (click)=\"fillWidth = !fillWidth\"\n ></fd-button-bar>\n }\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.close()\"></fd-button-bar>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body #fdbody>\n <div #gallery class=\"gallery inDialog\" style=\"flex: 1\">\n @for (media of dialog.data.mediaData; track media.FileId; let i = $index) {\n <div\n class=\"column big-imgs-box\"\n [class.fill-width]=\"fillWidth\"\n [class.fill-all]=\"fillAll\"\n [class.fill-original]=\"fillOriginal\"\n [ngClass]=\"selectedZoom\"\n >\n <fd-toolbar fdType=\"solid\" fdType=\"transparent\" [clearBorder]=\"true\">\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <button fd-toolbar-item fd-button glyph=\"rotate\" (click)=\"onRotate(img, media, i)\"></button>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n </fd-toolbar>\n <div class=\"pics\" [id]=\"i\">\n <bsu-mask></bsu-mask>\n <img #img imgLazy [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\n </div>\n </div>\n }\n </div>\n @if ((deviceSize$ | async) !== 's') {\n <div class=\"thumbnail\" style=\"flex-shrink: 1\">\n <ng-cotainer\n *ngTemplateOutlet=\"layoutGridTpl; context: { inDialog: true, gallery: this.gallery }\"\n ></ng-cotainer>\n </div>\n }\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{position:relative}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}.big-imgs-box{position:relative}.big-imgs-box>fd-toolbar{position:absolute;z-index:5;opacity:.5}.big-imgs-box>fd-toolbar:hover{opacity:1}fd-toolbar{width:100%}fd-dialog-footer{justify-content:center}.hatchBackground{min-height:100px}.gallery{display:flex;width:100%;height:400px;column-gap:1px;background-color:var(--sapField_Background, #fff)}.gallery ::-webkit-scrollbar{width:7px;height:7px}.gallery ::-webkit-scrollbar-track{box-shadow:inset 0 0 5px gray;border-radius:4px}.gallery ::-webkit-scrollbar-thumb{background:#555454;border-radius:4px}.gallery ::-webkit-scrollbar-thumb:hover{background:#2c2b2b}.gallery .column{overflow-y:scroll;display:flex;flex-direction:column;row-gap:3%;align-items:center}.gallery .column .pics{width:100%;display:flex;justify-content:center}.gallery .column .pics img{border-radius:5px}.gallery .column.small-imgs-box{flex:10%}.gallery .column.big-imgs-box{flex:90%}.gallery .selected{background-color:#fff;border:3px solid #0294d8;padding:10px}.gallery .fill-all .pics{height:100%}.gallery .fill-all img{width:100%!important;height:100%!important;object-fit:fill!important}.gallery .fill-original img{width:unset;height:unset}.gallery .zoom1 img{zoom:1}.gallery .zoom1-5 img{zoom:1.5}.gallery .zoom2 img{zoom:2}fd-dialog .gallery{overflow:auto}fd-dialog .gallery .column{overflow:initial}fd-dialog .gallery .pics{position:relative}fd-dialog fd-dialog-body{display:flex}fd-dialog.horizontal fd-dialog-body{flex-direction:column}fd-dialog.horizontal .gallery{flex-direction:row}fd-dialog.horizontal .thumbnail{border-top:1px solid #ccc;overflow-x:auto}fd-dialog.vertical fd-dialog-body{flex-direction:row-reverse}fd-dialog.vertical .gallery{flex-direction:column;height:100%}fd-dialog.vertical .thumbnail{border-left:1px solid #ccc;height:100%;width:200px;overflow-y:auto}fd-dialog.vertical .thumbnail ::ng-deep .fd-row>div{width:100%;min-width:100%}fd-card.media fd-card-footer button{border:none}fd-card.inDialog fd-card-header{padding-top:5px;padding-bottom:5px}.fd-col{min-width:165px}\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.ImageLazyDirective, selector: "[imgLazy]", inputs: ["auto", "threshold", "imgLazy"], outputs: ["imageLoaded"] }, { kind: "directive", type: i3$1.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i3$1.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i3$1.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: i3$1.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i4$1.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5$2.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i5$2.CardContentComponent, selector: "fd-card-content" }, { kind: "component", type: i5$2.CardFooterComponent, selector: "fd-card-footer" }, { kind: "directive", type: i5$2.CardFooterActionItemDirective, selector: "[fdCardFooterActionItem]" }, { kind: "component", type: i2$8.FileUploaderComponent, selector: "fd-file-uploader", inputs: ["disabled", "required", "multiple", "accept", "dragndrop", "maxFileSize", "minFileSize", "id", "ariaLabel", "ariaLabelledBy", "placeholder", "buttonLabel", "buttonAriaLabel", "state", "fileLimit", "inputHidden", "width"], outputs: ["selectedFilesChanged", "selectedInvalidFiles", "onDragEnter", "onDragLeave"] }, { kind: "directive", type: i4.InlineHelpDirective, selector: "[fd-inline-help]:not([fd-inline-help-template]), [fd-inline-help-template]:not([fd-inline-help])", inputs: ["triggers", "noArrow", "closeOnEscapeKey", "closeOnOutsideClick", "fd-inline-help"] }, { kind: "component", type: i4$3.LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["class", "noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: i4$3.LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl", "class"] }, { kind: "directive", type: i4$3.LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "component", type: i6$2.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i6$2.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu", "parentSubmenu", "hasSeparator"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "component", type: i6$2.MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i6$2.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "directive", type: i6$2.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i4$2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i4$2.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i4$2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: i6$1.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i7$1.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i8.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i8.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i8.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10277
10277
|
}
|
|
10278
10278
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiPicturesInfoComponent, decorators: [{
|
|
10279
10279
|
type: Component,
|
|
10280
|
-
args: [{ selector: 'bsu-ui-pictures-info', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n [id]=\"id\"\n [name]=\"'pictures_' + id\"\n [placeholder]=\"'AttachPicture' | bbbTranslate\"\n [buttonLabel]=\"'AttachPicture' | bbbTranslate\"\n [buttonAriaLabel]=\"'AttachPicture' | bbbTranslate\"\n accept=\".png,.jpg,.bpm,.jpeg,.gif,.png,.tif\"\n [fileLimit]=\"maxFileCount === 0 ? 100 : maxFileCount\"\n [multiple]=\"maxFileCount === 0 || maxFileCount > 1\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n></fd-file-uploader>\n\n<ng-container *ngTemplateOutlet=\"layoutGridTpl\"></ng-container>\n<ng-template #layoutGridTpl let-inDialog=\"inDialog\" let-gallery=\"gallery\">\n <fd-layout-grid>\n @if (mediaData$ | async; as mediaData) {\n <div fdLayoutGridRow>\n @for (media of mediaData; track media; let i = $index) {\n <div [fdLayoutGridCol]=\"6\" [colMd]=\"3\" [colLg]=\"2\" [colXl]=\"2\" (click)=\"onMedaiClick(gallery, media, i)\">\n <ng-container\n *ngTemplateOutlet=\"\n cardTpl;\n context: { $implicit: media, mediaData: this.mediaData, inDialog: this.inDialog, index: i }\n \"\n ></ng-container>\n </div>\n } @if (!inDialog && (disableOrReadonly$ | async) === true ? false : true) {\n <div [fdLayoutGridCol]=\"6\" [colMd]=\"3\" [colLg]=\"2\" [colXl]=\"2\">\n <ng-container *ngTemplateOutlet=\"newFile\"></ng-container>\n </div>\n }\n </div>\n }\n </fd-layout-grid>\n</ng-template>\n<ng-template #cardTpl let-media let-mediaData=\"mediaData\" let-inDialog=\"inDialog\" let-index=\"index\">\n <fd-card class=\"media\" [class.inDialog]=\"inDialog\">\n <fd-card-content style=\"text-align: center; height: 120px\">\n <img imgLazy [imgLazy]=\"media.thumbnailUrl\" [src]=\"media.thumbnailUrl\" #img />\n </fd-card-content>\n @if (!inDialog) {\n <fd-card-footer>\n <button\n glyph=\"message-information\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n [fd-inline-help]=\"media.title\"\n [triggers]=\"['click']\"\n [closeOnOutsideClick]=\"true\"\n ></button>\n <button *fdCardFooterActionItem fd-button glyph=\"rotate\" (click)=\"onRotate(img, media, index)\"></button>\n\n <button\n glyph=\"full-screen\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n (click)=\"onFullscreen(media, mediaData)\"\n ></button>\n @if ((disableOrReadonly$ | async) === true ? false : true) {\n <button\n glyph=\"delete\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n (click)=\"onDelete(index)\"\n ></button>\n }\n </fd-card-footer>\n }\n </fd-card>\n</ng-template>\n<ng-template #newFile>\n <div style=\"position: relative; height: 100%\">\n <fd-card>\n <fd-card-content style=\"display: flex; align-items: center; justify-content: center; min-height: 120px\">\n <button\n fd-button\n glyph=\"add-photo\"\n fdType=\"transparent\"\n [label]=\"'AttachFile' | bbbTranslate\"\n (click)=\"uploader.open()\"\n ></button>\n </fd-card-content>\n\n <fd-card-footer style=\"border-top: 1px solid #ccc\">\n <button fd-button [glyph]=\"'overflow'\" [fdType]=\"'transparent'\" [fdMenuTrigger]=\"menu\"></button>\n <fd-menu #menu>\n <li fd-menu-item (click)=\"onScan()\">\n <a fd-menu-interactive>\n <span fd-menu-title>{{ 'Scan' | bbbTranslate }}</span>\n </a>\n </li>\n <li fd-menu-item (click)=\"onAdvanceScan()\">\n <a fd-menu-interactive>\n <span fd-menu-title>{{ 'AdvancedScan' | bbbTranslate }}</span>\n </a>\n </li>\n </fd-menu>\n </fd-card-footer>\n </fd-card>\n @if ((uploadingState$ | async)?.uploading === true) {\n <bsu-mask></bsu-mask>\n }\n </div>\n</ng-template>\n<ng-template #dialogTemplate let-dialog let-dialogConfig=\"dialogConfig\">\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTpl class=\"vertical\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h1 fd-title>{{ Setting.ControlFieldCaptionTranslated }}</h1>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n @if (!dialogConfig.fullscreen) {\n <fd-button-bar\n ariaLabel=\"Fit image size\"\n [glyph]=\"'resize'\"\n [fdType]=\"fillWidth ? 'emphasized' : 'transparent'\"\n (click)=\"fillWidth = !fillWidth\"\n ></fd-button-bar>\n }\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.close()\"></fd-button-bar>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body #fdbody>\n <div #gallery class=\"gallery inDialog\" style=\"flex: 1\">\n @for (media of dialog.data.mediaData; track media.FileId; let i = $index) {\n <div\n class=\"column big-imgs-box\"\n [class.fill-width]=\"fillWidth\"\n [class.fill-all]=\"fillAll\"\n [class.fill-original]=\"fillOriginal\"\n [ngClass]=\"selectedZoom\"\n >\n <fd-toolbar fdType=\"solid\" fdType=\"transparent\" [clearBorder]=\"true\">\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <button fd-toolbar-item fd-button glyph=\"rotate\" (click)=\"onRotate(img, media, i)\"></button>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n </fd-toolbar>\n <div class=\"pics\" [id]=\"i\">\n <bsu-mask></bsu-mask>\n <img #img imgLazy [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\n </div>\n </div>\n }\n </div>\n @if ((deviceSize$ | async) !== 's') {\n <div class=\"thumbnail\" style=\"flex-shrink: 1\">\n <ng-cotainer\n *ngTemplateOutlet=\"layoutGridTpl; context: { inDialog: true, gallery: this.gallery }\"\n ></ng-cotainer>\n </div>\n }\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{position:relative}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}.big-imgs-box{position:relative}.big-imgs-box>fd-toolbar{position:absolute;z-index:5;opacity:.5}.big-imgs-box>fd-toolbar:hover{opacity:1}fd-toolbar{width:100%}fd-dialog-footer{justify-content:center}.hatchBackground{min-height:100px}.gallery{display:flex;width:100%;height:400px;column-gap:1px;background-color:var(--sapField_Background, #fff)}.gallery ::-webkit-scrollbar{width:7px;height:7px}.gallery ::-webkit-scrollbar-track{box-shadow:inset 0 0 5px gray;border-radius:4px}.gallery ::-webkit-scrollbar-thumb{background:#555454;border-radius:4px}.gallery ::-webkit-scrollbar-thumb:hover{background:#2c2b2b}.gallery .column{overflow-y:scroll;display:flex;flex-direction:column;row-gap:3%;align-items:center}.gallery .column .pics{width:100%;display:flex;justify-content:center}.gallery .column .pics img{border-radius:5px}.gallery .column.small-imgs-box{flex:10%}.gallery .column.big-imgs-box{flex:90%}.gallery .selected{background-color:#fff;border:3px solid #0294d8;padding:10px}.gallery .fill-all .pics{height:100%}.gallery .fill-all img{width:100%!important;height:100%!important;object-fit:fill!important}.gallery .fill-original img{width:unset;height:unset}.gallery .zoom1 img{zoom:1}.gallery .zoom1-5 img{zoom:1.5}.gallery .zoom2 img{zoom:2}fd-dialog .gallery{overflow:auto}fd-dialog .gallery .column{overflow:initial}fd-dialog .gallery .pics{position:relative}fd-dialog fd-dialog-body{display:flex}fd-dialog.horizontal fd-dialog-body{flex-direction:column}fd-dialog.horizontal .gallery{flex-direction:row}fd-dialog.horizontal .thumbnail{border-top:1px solid #ccc;overflow-x:auto}fd-dialog.vertical fd-dialog-body{flex-direction:row-reverse}fd-dialog.vertical .gallery{flex-direction:column;height:100%}fd-dialog.vertical .thumbnail{border-left:1px solid #ccc;height:100%;width:200px;overflow-y:auto}fd-dialog.vertical .thumbnail ::ng-deep .fd-row>div{width:100%;min-width:100%}fd-card.media fd-card-footer button{border:none}fd-card.inDialog fd-card-header{padding-top:5px;padding-bottom:5px}.fd-col{min-width:165px}\n"] }]
|
|
10280
|
+
args: [{ selector: 'bsu-ui-pictures-info', providers: [UploadService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-file-uploader\n #uploader\n [style.display]=\"'none'\"\n [id]=\"id\"\n [name]=\"'pictures_' + id\"\n [placeholder]=\"'AttachPicture' | bbbTranslate\"\n [buttonLabel]=\"'AttachPicture' | bbbTranslate\"\n [buttonAriaLabel]=\"'AttachPicture' | bbbTranslate\"\n accept=\".png,.jpg,.bpm,.jpeg,.gif,.png,.tif,.pdf\"\n [fileLimit]=\"maxFileCount === 0 ? 100 : maxFileCount\"\n [multiple]=\"maxFileCount === 0 || maxFileCount > 1\"\n (selectedFilesChanged)=\"onFileSelection($event)\"\n></fd-file-uploader>\n\n<ng-container *ngTemplateOutlet=\"layoutGridTpl\"></ng-container>\n<ng-template #layoutGridTpl let-inDialog=\"inDialog\" let-gallery=\"gallery\">\n <fd-layout-grid>\n @if (mediaData$ | async; as mediaData) {\n <div fdLayoutGridRow>\n @for (media of mediaData; track media; let i = $index) {\n <div [fdLayoutGridCol]=\"6\" [colMd]=\"3\" [colLg]=\"2\" [colXl]=\"2\" (click)=\"onMedaiClick(gallery, media, i)\">\n <ng-container\n *ngTemplateOutlet=\"\n cardTpl;\n context: { $implicit: media, mediaData: this.mediaData, inDialog: this.inDialog, index: i }\n \"\n ></ng-container>\n </div>\n } @if (!inDialog && (disableOrReadonly$ | async) === true ? false : true) {\n <div [fdLayoutGridCol]=\"6\" [colMd]=\"3\" [colLg]=\"2\" [colXl]=\"2\">\n <ng-container *ngTemplateOutlet=\"newFile\"></ng-container>\n </div>\n }\n </div>\n }\n </fd-layout-grid>\n</ng-template>\n<ng-template #cardTpl let-media let-mediaData=\"mediaData\" let-inDialog=\"inDialog\" let-index=\"index\">\n <fd-card class=\"media\" [class.inDialog]=\"inDialog\">\n <fd-card-content style=\"text-align: center; height: 120px\">\n <img imgLazy [imgLazy]=\"media.thumbnailUrl\" [src]=\"media.thumbnailUrl\" #img />\n </fd-card-content>\n @if (!inDialog) {\n <fd-card-footer>\n <button\n glyph=\"message-information\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n [fd-inline-help]=\"media.title\"\n [triggers]=\"['click']\"\n [closeOnOutsideClick]=\"true\"\n ></button>\n <button *fdCardFooterActionItem fd-button glyph=\"rotate\" (click)=\"onRotate(img, media, index)\"></button>\n\n <button\n glyph=\"full-screen\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n (click)=\"onFullscreen(media, mediaData)\"\n ></button>\n @if ((disableOrReadonly$ | async) === true ? false : true) {\n <button\n glyph=\"delete\"\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n (click)=\"onDelete(index)\"\n ></button>\n }\n </fd-card-footer>\n }\n </fd-card>\n</ng-template>\n<ng-template #newFile>\n <div style=\"position: relative; height: 100%\">\n <fd-card>\n <fd-card-content style=\"display: flex; align-items: center; justify-content: center; min-height: 120px\">\n <button\n fd-button\n glyph=\"add-photo\"\n fdType=\"transparent\"\n [label]=\"'AttachFile' | bbbTranslate\"\n (click)=\"uploader.open()\"\n ></button>\n </fd-card-content>\n\n <fd-card-footer style=\"border-top: 1px solid #ccc\">\n <button fd-button [glyph]=\"'overflow'\" [fdType]=\"'transparent'\" [fdMenuTrigger]=\"menu\"></button>\n <fd-menu #menu>\n <li fd-menu-item (click)=\"onScan()\">\n <a fd-menu-interactive>\n <span fd-menu-title>{{ 'Scan' | bbbTranslate }}</span>\n </a>\n </li>\n <li fd-menu-item (click)=\"onAdvanceScan()\">\n <a fd-menu-interactive>\n <span fd-menu-title>{{ 'AdvancedScan' | bbbTranslate }}</span>\n </a>\n </li>\n </fd-menu>\n </fd-card-footer>\n </fd-card>\n @if ((uploadingState$ | async)?.uploading === true) {\n <bsu-mask></bsu-mask>\n }\n </div>\n</ng-template>\n<ng-template #dialogTemplate let-dialog let-dialogConfig=\"dialogConfig\">\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\" #dialogTpl class=\"vertical\">\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n <fd-bar-element>\n <h1 fd-title>{{ Setting.ControlFieldCaptionTranslated }}</h1>\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n @if (!dialogConfig.fullscreen) {\n <fd-button-bar\n ariaLabel=\"Fit image size\"\n [glyph]=\"'resize'\"\n [fdType]=\"fillWidth ? 'emphasized' : 'transparent'\"\n (click)=\"fillWidth = !fillWidth\"\n ></fd-button-bar>\n }\n <fd-button-bar ariaLabel=\"close\" glyph=\"decline\" (click)=\"dialog.close()\"></fd-button-bar>\n </div>\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body #fdbody>\n <div #gallery class=\"gallery inDialog\" style=\"flex: 1\">\n @for (media of dialog.data.mediaData; track media.FileId; let i = $index) {\n <div\n class=\"column big-imgs-box\"\n [class.fill-width]=\"fillWidth\"\n [class.fill-all]=\"fillAll\"\n [class.fill-original]=\"fillOriginal\"\n [ngClass]=\"selectedZoom\"\n >\n <fd-toolbar fdType=\"solid\" fdType=\"transparent\" [clearBorder]=\"true\">\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <button fd-toolbar-item fd-button glyph=\"rotate\" (click)=\"onRotate(img, media, i)\"></button>\n <fd-toolbar-spacer></fd-toolbar-spacer>\n </fd-toolbar>\n <div class=\"pics\" [id]=\"i\">\n <bsu-mask></bsu-mask>\n <img #img imgLazy [imgLazy]=\"media.mediaUrl\" [src]=\"media.mediaUrl\" />\n </div>\n </div>\n }\n </div>\n @if ((deviceSize$ | async) !== 's') {\n <div class=\"thumbnail\" style=\"flex-shrink: 1\">\n <ng-cotainer\n *ngTemplateOutlet=\"layoutGridTpl; context: { inDialog: true, gallery: this.gallery }\"\n ></ng-cotainer>\n </div>\n }\n </fd-dialog-body>\n </fd-dialog>\n</ng-template>\n", styles: [":host{position:relative}:host ::ng-deep .delete button{border-color:transparent!important;background-color:transparent!important}.big-imgs-box{position:relative}.big-imgs-box>fd-toolbar{position:absolute;z-index:5;opacity:.5}.big-imgs-box>fd-toolbar:hover{opacity:1}fd-toolbar{width:100%}fd-dialog-footer{justify-content:center}.hatchBackground{min-height:100px}.gallery{display:flex;width:100%;height:400px;column-gap:1px;background-color:var(--sapField_Background, #fff)}.gallery ::-webkit-scrollbar{width:7px;height:7px}.gallery ::-webkit-scrollbar-track{box-shadow:inset 0 0 5px gray;border-radius:4px}.gallery ::-webkit-scrollbar-thumb{background:#555454;border-radius:4px}.gallery ::-webkit-scrollbar-thumb:hover{background:#2c2b2b}.gallery .column{overflow-y:scroll;display:flex;flex-direction:column;row-gap:3%;align-items:center}.gallery .column .pics{width:100%;display:flex;justify-content:center}.gallery .column .pics img{border-radius:5px}.gallery .column.small-imgs-box{flex:10%}.gallery .column.big-imgs-box{flex:90%}.gallery .selected{background-color:#fff;border:3px solid #0294d8;padding:10px}.gallery .fill-all .pics{height:100%}.gallery .fill-all img{width:100%!important;height:100%!important;object-fit:fill!important}.gallery .fill-original img{width:unset;height:unset}.gallery .zoom1 img{zoom:1}.gallery .zoom1-5 img{zoom:1.5}.gallery .zoom2 img{zoom:2}fd-dialog .gallery{overflow:auto}fd-dialog .gallery .column{overflow:initial}fd-dialog .gallery .pics{position:relative}fd-dialog fd-dialog-body{display:flex}fd-dialog.horizontal fd-dialog-body{flex-direction:column}fd-dialog.horizontal .gallery{flex-direction:row}fd-dialog.horizontal .thumbnail{border-top:1px solid #ccc;overflow-x:auto}fd-dialog.vertical fd-dialog-body{flex-direction:row-reverse}fd-dialog.vertical .gallery{flex-direction:column;height:100%}fd-dialog.vertical .thumbnail{border-left:1px solid #ccc;height:100%;width:200px;overflow-y:auto}fd-dialog.vertical .thumbnail ::ng-deep .fd-row>div{width:100%;min-width:100%}fd-card.media fd-card-footer button{border:none}fd-card.inDialog fd-card-header{padding-top:5px;padding-bottom:5px}.fd-col{min-width:165px}\n"] }]
|
|
10281
10281
|
}], propDecorators: { value: [{
|
|
10282
10282
|
type: Input
|
|
10283
10283
|
}], gallery: [{
|