ms-design-system 0.0.31 → 0.0.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ms-design-system.mjs +155 -324
- package/fesm2022/ms-design-system.mjs.map +1 -1
- package/package.json +1 -1
- package/src/styles.scss +17 -10
- package/types/ms-design-system.d.ts +34 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ms-design-system.mjs","sources":["../../../projects/ui-library/src/lib/components/button/ms-button.component.ts","../../../projects/ui-library/src/lib/components/button/ms-button.component.html","../../../projects/ui-library/src/lib/components/ms-spinner/ms-spinner.ts","../../../projects/ui-library/src/lib/components/ms-spinner/ms-spinner.html","../../../projects/ui-library/src/lib/components/dropdown/dropdown.ts","../../../projects/ui-library/src/lib/components/dropdown/dropdown.html","../../../projects/ui-library/src/lib/components/ms-checkbox/ms-checkbox.ts","../../../projects/ui-library/src/lib/components/ms-checkbox/ms-checkbox.html","../../../projects/ui-library/src/lib/components/ms-badge/ms-badge.ts","../../../projects/ui-library/src/lib/components/ms-badge/ms-badge.html","../../../projects/ui-library/src/lib/components/ms-toggle/ms-toggle.ts","../../../projects/ui-library/src/lib/components/ms-toggle/ms-toggle.html","../../../projects/ui-library/src/lib/components/ms-radio-button/ms-radio-button.ts","../../../projects/ui-library/src/lib/components/ms-radio-button/ms-radio-button.html","../../../projects/ui-library/src/lib/components/ms-input-field/ms-input-field.ts","../../../projects/ui-library/src/lib/components/ms-input-field/ms-input-field.html","../../../projects/ui-library/src/lib/components/ms-text-area/ms-text-area.ts","../../../projects/ui-library/src/lib/components/ms-text-area/ms-text-area.html","../../../projects/ui-library/src/lib/components/ms-avatar/ms-avatar.ts","../../../projects/ui-library/src/lib/components/ms-avatar/ms-avatar.html","../../../projects/ui-library/src/lib/components/ms-pagination/ms-pagination.ts","../../../projects/ui-library/src/lib/components/ms-pagination/ms-pagination.html","../../../projects/ui-library/src/lib/components/ms-sidebar/ms-sidebar.ts","../../../projects/ui-library/src/lib/components/ms-sidebar/ms-sidebar.html","../../../projects/ui-library/src/lib/components/ms-tooltip/ms-tooltip.ts","../../../projects/ui-library/src/lib/components/ms-tooltip/ms-tooltip.html","../../../projects/ui-library/src/lib/components/ms-file-uploader/ms-file-uploader.ts","../../../projects/ui-library/src/lib/components/ms-file-uploader/ms-file-uploader.html","../../../projects/ui-library/src/shared/directives/ms-tooltip.directive.ts","../../../projects/ui-library/src/lib/ms-design-system.module.ts","../../../projects/ui-library/src/lib/providers/ms-design-system.ts","../../../projects/ui-library/src/lib/index.ts","../../../projects/ui-library/src/ms-design-system.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, ContentChild, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\n\n\ntype IconPosition = 'prefix' | 'suffix';\n\n@Component({\n selector: 'ms-button',\n imports: [CommonModule],\n templateUrl: './ms-button.component.html',\n styleUrls: ['./ms-button.component.scss']\n})\nexport class MsButton implements OnChanges, OnInit {\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Input() variant: string = '';\n @Input() size: string = '';\n @Input() radiussize: string = '';\n @Input() block: boolean = false;\n @Input() disabled: boolean = false;\n @Input() isBorder: boolean = false;\n @Input() textSrc: string = '';\n\n // Icon support\n @Input() icon: string | null = null; // e.g. 'fa fa-plus' or 'bi bi-search'\n @Input() iconPosition: IconPosition = 'prefix'; // 'prefix' or 'suffix'\n @Input() iconOnly: boolean = false; // icon-only mode (no text)\n\n @Input() class: string = '';\n @Input() buttonType: string = '';\n @Output() htmlChange = new EventEmitter<string>();\n @Output() click = new EventEmitter<Event>();\n @ContentChild('projectedContent', { static: false }) projectedContent: any;\n /** Dynamic class computation */\n get classes(): string {\n const radiusClass = this.radiussize !== 'none' ? `ms-rounded-${this.radiussize}` : '';\n const variant = this.variant !== 'default' ? `ms-btn-${this.variant}` : '';\n const link = this.variant !== 'link' ? `ms-btn` : '';\n const size = this.size !== '' ? `ms-btn-${this.size}` : '';\n const isBorder = this.isBorder ? `ms-border` : '';\n return [\n link,\n variant,\n size,\n radiusClass,\n this.block ? 'block' : '',\n isBorder,\n this.iconOnly ? 'icon-only' : ''\n ]\n .filter(Boolean)\n .join(' ')\n .trim();\n }\n\n get userClass() {\n return this.class;\n }\n\n /** Generate HTML string */\n getHtmlString(): string {\n const disabledAttr = this.disabled ? ' disabled' : '';\n const iconHtml = this.icon\n ? `<i class=\"${this.icon}\"></i>`\n : '';\n\n let innerHtml = '';\n\n if (this.iconOnly) {\n // Icon-only → just icon, centered\n innerHtml = `<i class=\"${this.icon} btn-icon\"></i>`;\n }\n else if (this.icon && this.iconPosition === 'prefix') {\n // Prefix → icon before text\n innerHtml = `<i class=\"${this.icon} btn-icon prefix\"></i> ${this.textSrc}`;\n }\n else if (this.icon && this.iconPosition === 'suffix') {\n // Suffix → icon after text\n innerHtml = `${this.textSrc} <i class=\"${this.icon} btn-icon suffix\"></i>`;\n }\n else {\n // Text only\n innerHtml = this.textSrc;\n }\n \n\n return `<ms-button type=\"${this.type}\" class=\"${this.classes}\"${disabledAttr}>${innerHtml}</ms-button>`;\n }\n\n\n constructor(private el: ElementRef) { }\n\n\n ngOnChanges(changes: SimpleChanges): void {\n this.htmlChange.emit(this.getHtmlString());\n // if(this.radiussize === 'none' || this.radiussize === 'xs' || this.radiussize === 'default'){\n // this.radiussize = ''\n // }\n // if(this.variant === 'default'){\n // this.variant = ''\n // }else{\n // this.variant = `-${this.variant}`\n // }\n }\n\n ngOnInit(): void {\n this.htmlChange.emit(this.getHtmlString());\n // if(this.radiussize === 'none' || this.radiussize === 'xs' || this.radiussize === 'default'){\n // this.radiussize = ''\n // }\n // if(this.variant === 'default'){\n // this.variant = ''\n // }else{\n // this.variant = `-${this.variant}`\n // }\n }\n\n ngAfterContentInit() {\n const inner = this.el.nativeElement.innerText.trim();\n if (inner && !this.textSrc) {\n this.textSrc = inner;\n }\n // if(this.radiussize === 'none' || this.radiussize === 'xs' || this.radiussize === 'default'){\n // this.radiussize = ''\n // }\n // if(this.variant === 'default'){\n // this.variant = ''\n // }else{\n // this.variant = `-${this.variant}`\n // }\n }\n\n onClick(event: Event) {\n if (!this.disabled) {\n this.click.emit(event);\n } else {\n event.preventDefault();\n }\n }\n\n}\n\n","@if (buttonType ==='Playground') {\n <a [type]=\"type\" [class.disabled]=\"disabled\" [class]=\"classes + ' ' + userClass\" (click)=\"onClick($event)\">\n\n <!-- @if (icon && iconPosition === 'prefix') {\n <i [ngClass]=\"iconOnly ? [icon, 'btn-icon'] : [icon, 'btn-icon', 'prefix']\"></i>\n } -->\n\n <!-- 👇 IMPORTANT: This shows <ms-button>Click Me</ms-button> -->\n @if (!iconOnly && !textSrc) {\n <span><ng-content></ng-content></span>\n }\n\n <!-- If textSrc is given -->\n @if (!iconOnly && textSrc) {\n <span>{{ textSrc }}</span>\n }\n\n <!-- @if (icon && iconPosition === 'suffix') {\n <i [ngClass]=\"iconOnly ? [icon, 'btn-icon'] : [icon, 'btn-icon', 'suffix']\"></i>\n } -->\n</a>\n}@else {\n <ng-content [type]=\"type\" [class.disabled]=\"disabled\" [class]=\"classes + ' ' + userClass\" (click)=\"onClick($event)\">\n\n <!-- @if (icon && iconPosition === 'prefix') {\n <i [ngClass]=\"iconOnly ? [icon, 'btn-icon'] : [icon, 'btn-icon', 'prefix']\"></i>\n } -->\n\n <!-- 👇 IMPORTANT: This shows <ms-button>Click Me</ms-button> -->\n @if (!iconOnly && !textSrc) {\n <span><ng-content></ng-content></span>\n }\n\n <!-- If textSrc is given -->\n @if (!iconOnly && textSrc) {\n <span>{{ textSrc }}</span>\n }\n\n <!-- @if (icon && iconPosition === 'suffix') {\n <i [ngClass]=\"iconOnly ? [icon, 'btn-icon'] : [icon, 'btn-icon', 'suffix']\"></i>\n } -->\n</ng-content>\n}","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'ms-spinner',\n imports: [CommonModule],\n templateUrl: './ms-spinner.html',\n styleUrl: './ms-spinner.scss',\n})\nexport class MsSpinner {\n @Input() color: any = 'primary';\n @Input() size: any = 'md';\n @Input() text?: boolean = false;\n @Output() htmlChange = new EventEmitter<string>();\n\n get spinnerSize(): string {\n return `ms-spinner-${this.size}`\n }\n get spinnerColor(): string {\n return `ms-spinner-${this.color}` ;\n }\n\n getHtmlString(): string {\n return `<ms-spinner [color]=\"${this.color}\" [size]=\"${this.size}\" [text]=\"${this.text}\"></ms-spinner>`;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngOnInit(): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n}\n","\n<div class=\"ms-spinner-container\" [class]=\"spinnerSize\">\n <div class=\"ms-spinner\" [class]=\"spinnerColor\"></div>\n @if(text){\n <p class=\"ms-spinner-text\">Loading...</p>\n }\n</div>\n\n\n<!-- <div class=\"ms-spinner-container\" [ngClass]=\"size\">\n <div class=\"ms-spinner\" [class]=\"spinnerColor\"></div>\n <p *ngIf=\"text\" class=\"ms-spinner-text\">Loading...</p>\n</div> -->\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MsButton } from '../button/ms-button.component';\n// import { InlineSVGModule } from 'ng-inline-svg/lib_commonjs/inline-svg.module';\nimport { InlineSVGModule } from 'ng-inline-svg-2';\nimport { MsSpinner } from '../ms-spinner/ms-spinner';\ninterface DropdownItem {\n label: string;\n icon?: string;\n value?: any;\n disabled?: boolean;\n divider?: boolean;\n dividerStyle?: string;\n selected?: boolean;\n countryCode?: string;\n dialCode?: string;\n}\n@Component({\n selector: 'ms-dropdown',\n standalone: true,\n imports: [CommonModule, FormsModule, MsButton,InlineSVGModule,MsSpinner],\n templateUrl: './dropdown.html',\n styleUrls: ['./dropdown.scss']\n})\nexport class MsDropdown {\n @Input() text: string = '';\n @Input() size: string = 'md';\n @Input() variant: string = 'primary';\n @Input() isDisabled: boolean = false;\n // @Input() items: DropdownItem[] = [];\n @Input() set items(value: DropdownItem[]) {\n this._items = value ? this.cloneItems(value) : [];\n }\n @Input() icon?: string;\n @Input() iconPosition: 'prefix' | 'suffix' = 'prefix';\n @Input() iconOnly: boolean = false;\n @Input() btnWidth: string = '';\n @Input() btnMinWidth: string = '';\n @Input() btnMaxWidth: string = '';\n @Input() closeOnSelect: boolean = true;\n @Input() closeOnClickOutside: boolean = true;\n @Input() selectedItem?: string;\n @Input() showSelected: boolean = true;\n @Input() allowMultiple: boolean = false;\n @Input() textColor: string = '#374151';\n @Input() maxHeight: string = '250px';\n @Input() scrollable: boolean = true;\n @Input() loading: boolean = false;\n @Input() error: boolean = false;\n @Input() ariaLabel: string = '';\n @Input() searchable: boolean = false;\n @Input() searchPlaceholder: string = 'Search...';\n @Input() noResultsText: string = 'No results';\n @Input() customClass: string = '';\n @Input() dropdownMenuClass: string = '';\n @Input() fontSize: string = '14px';\n @Input() fontWeight: string = '400';\n @Input() dropdownMenuWidth: string = '300px';\n @Input() showFlagImage: boolean = false;\n @Input() multiSelectDisplay: 'count' | 'text' | 'count+text' | 'tags' | 'none' = 'text';\n @Input() showTags: boolean = false;\n @Input() inputPlaceholder: string = 'Select...';\n @Input() inputLabel: string = '';\n @Input() inputErrorState: boolean = false;\n @Input() inputWarningState: boolean = false;\n @Input() inputFocusState: boolean = false;\n @Input() required: boolean = false;\n\n @Output() selectionChange = new EventEmitter<DropdownItem | DropdownItem[]>();\n validationTouched: boolean = false;\n selectedValues = new Set<any>();\n selectedItems: DropdownItem[] = [];\n selectedItemObj?: DropdownItem;\n get items(): DropdownItem[] {\n return this._items;\n }\n\nprivate _items: DropdownItem[] = [];\n\n constructor(private el: ElementRef) {}\n\n isOpen: boolean = false;\n searchTerm: string = '';\n\n onTriggerClick() {\n if (this.isDisabled) return;\n if (this.allowMultiple && this.multiSelectDisplay === 'tags') {\n this.isOpen = true;\n return;\n }\n this.toggleDropdown();\n }\n\n @ViewChild('tagInput') tagInput!: ElementRef<HTMLInputElement>;\n isFocused = false;\nhasError = false;\ndisabled = false;\n\nfocusInput() {\n this.tagInput?.nativeElement.focus();\n}\n\n toggleDropdown() {\n if (!this.isDisabled) this.isOpen = !this.isOpen;\n }\n\n private cloneItems(items: DropdownItem[]): DropdownItem[] {\n return items.map(item => ({\n ...item,\n selected: !!item.selected\n }));\n }\n\n selectItem(item: DropdownItem) {\n if (item.disabled || item.divider) return;\n\n if (this.allowMultiple) {\n this.toggleMultiSelect(item);\n this.selectionChange.emit(this.selectedItems);\n return;\n }\n\n this.selectSingle(item);\n this.selectionChange.emit(item);\n\n if (this.closeOnSelect) {\n this.close();\n }\n }\n\n toggleMultiSelect(item: DropdownItem) {\n item.selected = !item.selected;\n\n this.selectedItems = this.items.filter(i => i.selected);\n\n const count = this.selectedItems.length;\n\n switch (this.multiSelectDisplay) {\n case 'count':\n this.selectedItem = count ? `${count} Selected` : this.text;\n break;\n\n case 'text':\n this.selectedItem = this.selectedItems.map(i => i.label).join(', ') || this.text;\n break;\n \n case 'tags':\n this.selectedItem = this.selectedItems.map(i => i.label).join(', ') || this.text;\n break;\n\n case 'count+text':\n this.selectedItem = count\n ? `${count} Selected: ${this.selectedItems.map(i => i.label).join(', ')}`\n : this.text;\n break;\n\n case 'none':\n default:\n this.selectedItem = this.text;\n }\n }\n\n private selectSingle(item: DropdownItem) {\n this.items.forEach(i => (i.selected = false));\n item.selected = true;\n\n this.selectedItems = [item];\n this.selectedItem = item.label;\n this.selectedItemObj = item; // FLAG SUPPORT\n }\n\n get filteredItems() {\n if (!this.searchable || !this.searchTerm) return this.items;\n return this.items.filter(\n i => i.label.toLowerCase().includes(this.searchTerm.toLowerCase()) || i.divider\n );\n }\n\n isSelectionRequired(): boolean {\n return this.required && this.selectedItems.length === 0;\n }\n\n onBlur() {\n this.validationTouched = true;\n if (this.selectedItems.length === 0) {\n this.inputFocusState = false;\n }\n if (this.isSelectionRequired()) {\n this.inputErrorState = true;\n } else {\n this.inputErrorState = false;\n }\n }\n\n removeTag(item: DropdownItem, event: MouseEvent) {\n event.stopPropagation();\n\n item.selected = false;\n this.selectedItems = this.selectedItems.filter(i => i !== item);\n\n if (!this.selectedItems.length) {\n this.selectedItem = this.text;\n }\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n if (!this.isOpen || !this.closeOnClickOutside) return;\n\n const target = event.target;\n\n if (target instanceof HTMLElement &&\n !this.el.nativeElement.contains(target)) {\n this.close();\n }\n }\n\n maxVisibleTags = 2; // configurable\n\n get visibleTags(): DropdownItem[] {\n return this.selectedItems.slice(0, this.maxVisibleTags);\n }\n\n get hiddenTags(): DropdownItem[] {\n return this.selectedItems.slice(this.maxVisibleTags);\n }\n\n hiddenTagsCount(): number {\n return this.hiddenTags.length;\n }\n\n // toggle for hidden dropdown\n isHiddenTagsOpen = false;\n toggleHiddenTags() {\n this.isHiddenTagsOpen = !this.isHiddenTagsOpen;\n this.isOpen = false;\n }\n\n close() {\n this.isOpen = false;\n }\n}\n","<div class=\"ms-dropdown-wrapper\" [ngClass]=\"customClass\" [class.ms-disabled]=\"isDisabled\"\n (click)=\"onTriggerClick()\">\n <div class=\"ms-dropdown-field ms-d-flex ms-align-items-center\">\n <!-- allowMultiple && multiSelectDisplay === 'tags' -->\n <div class=\"ms-input-wrapper\"\n *ngIf=\"allowMultiple && multiSelectDisplay === 'tags'\"\n [style.width]=\"btnWidth\"\n [style.minWidth]=\"btnMinWidth\"\n [style.maxWidth]=\"btnMaxWidth\"\n [class.focused]=\"isFocused\"\n [class.error]=\"hasError\"\n [class.disabled]=\"disabled\"\n [class.ms-input-focus]=\"inputFocusState || isOpen || (selectedItems.length > 0)\"\n (click)=\"focusInput()\" [class.ms-dropdown-form-control]=\"visibleTags.length > 0\">\n\n <!-- TAGS -->\n <span class=\"ms-tag ms-me-1\" *ngFor=\"let item of visibleTags\">\n {{ item.label }}\n <span class=\"ms-tag-close ms-ms-1\" (click)=\"removeTag(item, $event)\">×</span>\n </span>\n\n <!-- +N MORE BUTTON -->\n <span class=\"ms-tag ms-more-btn\"\n *ngIf=\"hiddenTagsCount() > 0\"\n (click)=\"toggleHiddenTags(); $event.stopPropagation()\">\n +{{ hiddenTagsCount() }} more\n </span>\n\n <!-- DROPDOWN FOR HIDDEN TAGS -->\n <div class=\"ms-hidden-tags-dropdown\"\n *ngIf=\"isHiddenTagsOpen\"\n (click)=\"$event.stopPropagation()\">\n <span class=\"ms-tag\" *ngFor=\"let item of hiddenTags\">\n {{ item.label }}\n <span class=\"ms-tag-close ms-ms-1\" (click)=\"removeTag(item, $event)\">×</span>\n </span>\n </div>\n\n <input\n #tagInput\n class=\"ms-form-control ms-dropdown-input-field\"\n [disabled]=\"disabled\"\n (focus)=\"isFocused = true\"\n (blur)=\"isFocused = false\"\n placeholder=\"Select...\"\n *ngIf=\"selectedItems.length === 0\"\n />\n </div>\n\n <!-- Input Field Trigger -->\n <div *ngIf=\"multiSelectDisplay !== 'tags'\" \n class=\"ms-dropdown-input-wrapper\"\n [class.ms-input-error]=\"inputErrorState || isSelectionRequired()\"\n [class.ms-input-warning]=\"inputWarningState\"\n [class.ms-input-focus]=\"inputFocusState || isOpen || (selectedItems.length > 0)\">\n <label *ngIf=\"inputLabel\" [for]=\"inputLabel\" class=\"ms-dropdown-input-label\">{{ inputLabel }} <span *ngIf=\"required\" class=\"ms-required\">*</span></label>\n <input \n type=\"text\"\n class=\"ms-dropdown-input-field\"\n [placeholder]=\"inputPlaceholder\"\n [value]=\"selectedItem || text\"\n [disabled]=\"isDisabled\"\n [readonly]=\"true\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"ariaLabel\"\n [style.width]=\"btnWidth\" \n [style.minWidth]=\"btnMinWidth\" \n [style.maxWidth]=\"btnMaxWidth\"\n (click)=\"onTriggerClick(); $event.stopPropagation()\"\n (focus)=\"inputFocusState = true\"\n (blur)=\"onBlur()\" >\n </div>\n\n <!-- Input Field with Tags -->\n <!-- <div *ngIf=\"allowMultiple\" \n class=\"ms-dropdown-input-wrapper ms-dropdown-input-tags\"\n [class.ms-input-error]=\"inputErrorState || isSelectionRequired()\"\n [class.ms-input-warning]=\"inputWarningState\"\n [class.ms-input-focus]=\"inputFocusState || isOpen || (selectedItems.length > 0)\"\n [style.width]=\"btnWidth\" \n [style.minWidth]=\"btnMinWidth\" [style.maxWidth]=\"btnMaxWidth\"\n (blur)=\"onBlur()\">\n <label *ngIf=\"inputLabel\" [for]=\"inputLabel\" class=\"ms-dropdown-input-label\">{{ inputLabel }} <span *ngIf=\"required\" class=\"ms-required\">*</span></label>\n <div class=\"ms-input-tags-field\" (click)=\"onTriggerClick(); $event.stopPropagation()\">\n <span class=\"ms-tag ms-me-1\" *ngFor=\"let item of visibleTags\">\n {{ item.label }}\n <span class=\"ms-tag-close ms-ms-1\" (click)=\"removeTag(item, $event)\">×</span>\n </span>\n <span class=\"ms-tag ms-more-btn\"\n *ngIf=\"hiddenTagsCount() > 0\"\n (click)=\"toggleHiddenTags(); $event.stopPropagation()\">\n +{{ hiddenTagsCount() }} more\n </span>\n <div class=\"ms-hidden-tags-dropdown\"\n *ngIf=\"isHiddenTagsOpen\"\n (click)=\"$event.stopPropagation()\">\n <span class=\"ms-tag\" *ngFor=\"let item of hiddenTags\">\n {{ item.label }}\n <span class=\"ms-tag-close ms-ms-1\" (click)=\"removeTag(item, $event)\">×</span>\n </span>\n </div>\n <span *ngIf=\"selectedItems.length == 0\" class=\"ms-input-placeholder\">{{ inputPlaceholder || text }}</span>\n </div>\n </div> --> <!-- Button Trigger (Default) -->\n <!-- <ms-button class=\"ms-dropdown-trigger ms-d-flex ms-align-items-center ms-justify-content-center ms-p-2\"\n [ngClass]=\"['ms-rounded-' + radiussize, variant ? 'ms-btn ms-btn-' + variant : '', 'ms-btn-' + size, iconOnly ? 'ms-icon-btn' : '']\"\n [disabled]=\"isDisabled\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"ariaLabel\" [style.width]=\"btnWidth\" \n [style.minWidth]=\"btnMinWidth\" [style.maxWidth]=\"btnMaxWidth\" *ngIf=\"!useInputField && multiSelectDisplay != 'tags'\">\n \n <ng-container *ngIf=\"icon && iconPosition === 'prefix'\">\n <span [inlineSVG]=\"icon\" class=\"ms-dropdown-icon\"></span>\n </ng-container>\n\n <span class=\"selectionClass\" *ngIf=\"!iconOnly\">\n {{ selectedItem || text }}\n </span>\n\n <ng-container *ngIf=\"icon && iconPosition === 'suffix'\">\n <span [inlineSVG]=\"icon\" class=\"ms-dropdown-icon ms-ml-2\"></span>\n </ng-container>\n\n <span *ngIf=\"icon\" [inlineSVG]=\"'../../../../assets/data-grid/icons/' + icon + '.svg'\" class=\"ms-ml-2\"></span>\n </ms-button> -->\n </div>\n\n\n <div *ngIf=\"isOpen\" class=\"ms-dropdown-menu\" [ngClass]=\"dropdownMenuClass\"\n [style.maxHeight]=\"maxHeight\"\n [ngStyle]=\"{'overflowY': scrollable ? 'auto' : 'visible', 'overflowX': 'hidden', 'width': dropdownMenuWidth}\"\n (click)=\"$event.stopPropagation()\">\n \n <!-- Loader -->\n <div *ngIf=\"loading\" class=\"ms-dropdown-loader\">\n <ms-spinner [color]=\"'primary'\" [size]=\"'md'\"></ms-spinner>\n </div>\n\n <!-- Dropdown content -->\n <ng-container *ngIf=\"!loading\">\n <!-- Search input -->\n <div *ngIf=\"searchable\" class=\"ms-dropdown-search-container\">\n <input type=\"text\" [(ngModel)]=\"searchTerm\"\n [placeholder]=\"searchPlaceholder\" class=\"ms-dropdown-search\" />\n </div>\n\n <!-- Dropdown items -->\n <ng-container *ngIf=\"filteredItems.length > 0; else noResults\">\n <button *ngFor=\"let item of filteredItems; let i = index\"\n class=\"ms-dropdown-item ms-d-flex ms-align-items-center\"\n [disabled]=\"item.disabled\"\n [class.ms-selected]=\"item.selected\"\n [class.ms-p-0]=\"item.divider\"\n [ngStyle]=\"{\n 'font-size': fontSize, 'font-weight': fontWeight\n }\"\n (click)=\"selectItem(item)\">\n <!-- ✅ MULTI-SELECT CHECKBOX -->\n <input *ngIf=\"allowMultiple && !item.divider\"\n type=\"checkbox\"\n class=\"ms-me-2\"\n [checked]=\"item.selected\"/>\n <span *ngIf=\"item.icon\" [inlineSVG]=\"'https://ds-doc.sentrixbar.com/assets/data-grid/icons/' + item.icon\" class=\"ms-dropdown-item-icon ms-d-flex ms-me-2\">\n \n </span>\n\n <!-- COUNTRY FLAG -->\n <img *ngIf=\"item.icon && showFlagImage\"\n [src]=\"'https://ds-doc.sentrixbar.com/assets/data-grid/flags/' + (item.countryCode | lowercase) + '.svg'\"\n class=\"ms-country-flag ms-me-2\"\n alt=\"{{ item.label }}\" />\n\n <!-- COUNTRY NAME -->\n <span class=\"ms-country-label\">\n {{ item.label }}\n </span>\n\n <!-- {{ item.label }} -->\n </button>\n </ng-container>\n\n <ng-template #noResults>\n <div class=\"ms-dropdown-no-results\">{{ noResultsText }}</div>\n </ng-template>\n </ng-container>\n </div>\n</div>","import { AfterViewInit, booleanAttribute, Component, ElementRef, EventEmitter, forwardRef, Input, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\n\n@Component({\n selector: 'ms-checkbox',\n imports: [],\n templateUrl: './ms-checkbox.html',\n styleUrl: './ms-checkbox.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MsCheckbox),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MsCheckbox),\n multi: true\n }\n ]\n})\nexport class MsCheckbox implements ControlValueAccessor, Validator{\n\n @Input() label?: string;\n\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: booleanAttribute }) skeleton = false;\n @Input({ transform: booleanAttribute }) required = false;\n @Input({ transform: booleanAttribute }) indeterminate = false;\n @Input({ transform: booleanAttribute }) invalidBox = false;\n @Input({ transform: booleanAttribute }) checked = false;\n @Output() htmlChange = new EventEmitter<string>();\n\n /* ---------- Internal state ---------- */\n touched = false;\n\n /* ---------- CVA ---------- */\n private onChange = (_: boolean) => {};\n private onTouched = () => {};\n\n writeValue(value: boolean): void {\n this.checked = !!value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /* ---------- Validation ---------- */\n validate(control: AbstractControl): ValidationErrors | null {\n if (this.required && !this.checked) {\n return { required: true };\n }\n return null;\n }\n\n /* ---------- UI Logic ---------- */\n toggle(): void {\n if (this.disabled || this.skeleton) return;\n\n this.indeterminate = false; // ✅ FIX\n this.checked = !this.checked;\n\n this.onChange(this.checked);\n this.markTouched();\n }\n\n markTouched(): void {\n if (!this.touched) {\n this.touched = true;\n this.onTouched();\n }\n }\n\n get invalid(): boolean {\n if(this.invalidBox){\n return true\n }\n return this.required && this.touched && !this.checked;\n }\n\n get classes(): string {\n return ['ms-checkbox'].filter(Boolean).join(' ');\n }\n /** Generate HTML string */\n getHtmlString(): string {\n const disabledAttr = this.disabled ? ' disabled' : '';\n let innerHtml : any= '';\n innerHtml = this.label;\n return `<ms-checkbox label=\"${innerHtml}\" [checked]=\"${this.checked}\" [skeleton]=\"${this.skeleton}\" [indeterminate]=\"${this.indeterminate}\" [invalidBox]=\"${this.invalidBox}\" class=\"${this.classes}\"${disabledAttr}></ms-checkbox>`;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngOnInit(): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n}","<label\n class=\"ms-checkbox\"\n [class.disabled]=\"disabled\"\n [class.invalid]=\"invalid\"\n [class.checkbox-skeleton]=\"skeleton\"\n>\n @if (skeleton) {\n <div class=\"ms-checkbox-skeleton\"></div>\n } @else {\n\n <input style=\"width: 16px;height: 16px;\"\n type=\"checkbox\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"toggle()\"\n (blur)=\"markTouched()\"\n />\n\n <span class=\"ms-checkbox-box\">\n @if (indeterminate) {\n <span class=\"ms-indeterminate\"></span>\n } @else if (checked) {\n <span class=\"ms-checkmark\">✓</span>\n }\n </span>\n\n @if (label) {\n <span class=\"ms-label\">{{ label }}</span>\n }\n }\n</label>\n\n","import { Component, ContentChild, ElementRef, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\n\ntype IconPosition = 'prefix' | 'suffix';\n@Component({\n selector: 'ms-badge',\n imports: [],\n templateUrl: './ms-badge.html',\n styleUrl: './ms-badge.scss',\n})\nexport class MsBadge {\n @Input() color: string = '';\n @Input() radiussize: string = '';\n @Input() block: boolean = false;\n @Input() disabled: boolean = false;\n @Input() isDark: boolean = false;\n @Input() skeleton = false;\n @Input() text: string = '';\n\n // Icon support\n @Input() icon: string | null = null; // e.g. 'fa fa-plus' or 'bi bi-search'\n @Input() iconOnly: string | null = null; // e.g. 'fa fa-plus' or 'bi bi-search'\n @Input() iconPosition: IconPosition = 'prefix'; // 'prefix' or 'suffix'\n\n @Input() class: string = '';\n @Output() htmlChange = new EventEmitter<string>();\n @Output() click = new EventEmitter<Event>();\n @ContentChild('projectedContent', { static: false }) projectedContent: any;\n\n get classes(): string {\n const radiusClass = this.radiussize !== 'none' ? `ms-rounded-${this.radiussize}` : '';\n // const color = `ms-badge-${this.color}` ;\n const color = this.isDark ? `ms-badge-${this.color}-dark` : `ms-badge-${this.color}`;\n const badge = `ms-badge`;\n return [\n // link,\n color,\n badge,\n radiusClass,\n this.block ? 'block' : '',\n ]\n .filter(Boolean)\n .join(' ')\n .trim();\n }\n\n get userClass() {\n return this.class;\n }\n\n /** Generate HTML string */\n getHtmlString(): string {\n const disabledAttr = this.disabled ? ' disabled' : '';\n const iconHtml = this.icon\n ? `<i class=\"${this.icon}\"></i>`\n : '';\n\n let innerHtml = '';\n\n if (this.iconOnly) {\n // Icon-only → just icon, centered\n innerHtml = `<i class=\"${this.icon} btn-icon\"></i>`;\n }\n else if (this.icon && this.iconPosition === 'prefix') {\n // Prefix → icon before text\n innerHtml = `<i class=\"${this.icon} btn-icon prefix\"></i> ${this.text}`;\n }\n else if (this.icon && this.iconPosition === 'suffix') {\n // Suffix → icon after text\n innerHtml = `${this.text} <i class=\"${this.icon} btn-icon suffix\"></i>`;\n }\n else {\n // Text only\n innerHtml = this.text;\n }\n \n\n return `<ms-badge text=\"${innerHtml}\" class=\"${this.classes}\"${disabledAttr}></ms-badge>`;\n }\n\n\n constructor(private el: ElementRef) { }\n\n\n ngOnChanges(changes: SimpleChanges): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngOnInit(): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngAfterContentInit() {\n // const inner = this.el.nativeElement.innerText.trim();\n // if (inner && !this.text) {\n // this.text = inner;\n // }\n }\n\n onClick(event: Event) {\n if (!this.disabled) {\n this.click.emit(event);\n } else {\n event.preventDefault();\n }\n }\n}\n","@if(skeleton){\n <span [class.badge-skeleton]=\"skeleton\" [class]=\"classes + ' ' + userClass\" >\n </span>\n \n}@else{\n <span [class.disabled]=\"disabled\" [class.badge-skeleton]=\"skeleton\" [class]=\"classes + ' ' + userClass\" (click)=\"onClick($event)\">\n <span>{{ text }}</span>\n </span>\n\n}","import { booleanAttribute, Component, EventEmitter, forwardRef, Input, Output, SimpleChanges } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\n\n@Component({\n selector: 'ms-toggle',\n imports: [],\n templateUrl: './ms-toggle.html',\n styleUrl: './ms-toggle.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MsToggle),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MsToggle),\n multi: true\n }\n ]\n})\nexport class MsToggle implements ControlValueAccessor, Validator {\n @Input() label?: any;\n @Input() class: string = '';\n @Input() size: string = '';\n @Input() skeleton = false;\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: booleanAttribute }) required = false;\n @Input({ transform: booleanAttribute }) invalid = false;\n @Input({ transform: booleanAttribute }) checked = false;\n @Output() htmlChange = new EventEmitter<string>();\n /* ---------- Internal ---------- */\n touched = false;\n\n /* ---------- CVA ---------- */\n private onChange = (_: boolean) => { };\n private onTouched = () => { };\n\n writeValue(value: boolean): void {\n this.checked = !!value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /* ---------- Validation ---------- */\n validate(_: AbstractControl): ValidationErrors | null {\n if (this.required && !this.checked) {\n return { required: true };\n }\n return null;\n }\n\n /* ---------- UI ---------- */\n toggle(): void {\n if (this.disabled) return;\n\n this.checked = !this.checked;\n this.onChange(this.checked);\n this.markTouched();\n }\n\n markTouched(): void {\n if (!this.touched) {\n this.touched = true;\n this.onTouched();\n }\n }\n\n get userClass() {\n return this.class;\n }\n\n get classes(): string {\n return ['ms-toggle-' + this.size].filter(Boolean).join(' ');\n }\n /** Generate HTML string */\n getHtmlString(): string {\n const disabledAttr = this.disabled ? ' disabled' : '';\n let innerHtml = '';\n innerHtml = this.label;\n return `<ms-toggle label=\"${innerHtml}\" class=\"${this.classes}\"${disabledAttr}></ms-toggle>`;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngOnInit(): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n}\n","<label class=\"ms-toggle\" [class.disabled]=\"disabled\" [class]=\"classes + ' ' + userClass\" [class.invalid]=\"invalid\" [class.toggle-skeleton]=\"skeleton\">\n @if(!skeleton){\n <input type=\"checkbox\" [checked]=\"checked\" [disabled]=\"disabled\" (change)=\"toggle()\" (blur)=\"markTouched()\" />\n <span class=\"ms-toggle-track\">\n <span class=\"ms-toggle-thumb\"></span>\n </span>\n @if (label) {\n <span class=\"ms-label\">{{ label }}</span>\n }\n }@else{\n <div class=\"ms-radio-skeleton\"></div>\n }\n</label>\n\n\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n AbstractControl,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\n@Component({\n selector: 'ms-radio-button',\n templateUrl: './ms-radio-button.html',\n styleUrls: ['./ms-radio-button.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MsRadioButton),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MsRadioButton),\n multi: true\n }\n ]\n})\nexport class MsRadioButton implements ControlValueAccessor, Validator {\n @Input() label?: string;\n @Input() name!: string;\n @Input() value!: any;\n\n @Input() disabled = false;\n @Input() required = false;\n @Input() invalidBox = false;\n @Input() skeleton = false;\n @Input() checked = false;\n @Output() htmlChange = new EventEmitter<string>();\n\n touched = false;\n\n private onChange = (_: any) => {};\n private onTouched = () => {};\n\n // CVA Methods\n writeValue(value: any): void {\n this.checked = value === this.value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Validation\n validate(control: AbstractControl): ValidationErrors | null {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n // UI\n select(): void {\n if (this.disabled) return;\n\n this.checked = true;\n this.onChange(this.value);\n this.markTouched();\n }\n\n markTouched(): void {\n if (!this.touched) {\n this.touched = true;\n this.onTouched();\n }\n }\n\n get invalid(): boolean {\n return this.invalidBox; // 🔥 only rely on parent input for border\n }\n\n get classes(): string {\n return ['ms-radio'].filter(Boolean).join(' ');\n }\n /** Generate HTML string */\n getHtmlString(): string {\n const disabledAttr = this.disabled ? ' disabled' : '';\n let innerHtml: any = '';\n innerHtml = this.label;\n return `<ms-radio-button label=\"${innerHtml}\" [checked]=\"${this.checked}\" [skeleton]=\"${this.skeleton}\" [invalidBox]=\"${this.invalidBox}\"class=\"${this.classes}\"${disabledAttr}></ms-radio-button>`;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngOnInit(): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n}\n","<label class=\"ms-radio\"\n [class.checked]=\"checked\"\n [class.disabled]=\"disabled\"\n [class.radio-skeleton]=\"skeleton\"\n [class.invalid]=\"invalid\">\n \n @if (skeleton) {\n <div class=\"ms-radio-skeleton\"></div>\n } @else {\n <input\n type=\"radio\"\n [name]=\"name\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"select()\"\n (blur)=\"markTouched()\"\n />\n\n <span class=\"ms-radio-circle\">\n <span class=\"ms-radio-dot\"></span>\n </span>\n\n @if (label) {\n <span class=\"ms-label\">{{ label }}</span>\n }\n}\n</label>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, forwardRef, Input, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Component({\n selector: 'ms-input-field',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ms-input-field.html',\n styleUrls: ['./ms-input-field.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MsInputField),\n multi: true,\n },\n ],\n})\nexport class MsInputField implements ControlValueAccessor {\n @Input() type: 'text' | 'email' | 'password' | 'number' | 'date' | 'time' | 'tel' | 'url' | 'search' | 'color' | 'file' = 'text';\n @Input() id?: string;\n @Input() name?: string;\n @Input() placeholder?: string;\n @Input() state?: string;\n @Input() autocomplete?: string;\n @Input() readonly = false;\n @Input() disabled = false;\n @Input() required = false;\n @Input() skeleton = false;\n @Input() invalid = false;\n@Input() min?: number;\n@Input() max?: number;\n@Input() maxlength?: number;\n@Input() minlength?: number;\n\n @Input() step?: number | string;\n @Input() pattern?: string;\n @Input() inputmode?: 'text' | 'numeric' | 'decimal' | 'tel' | 'email' | 'url' | 'search';\n\n @Input() loading = false;\n\n value = signal<string>('');\n hasError = signal<boolean>(false);\n isSuccess = signal<boolean>(false);\n\n\n // Events\n change = new EventEmitter<Event>();\n focus = new EventEmitter<Event>();\n blur = new EventEmitter<Event>();\n keydown = new EventEmitter<KeyboardEvent>();\n keyup = new EventEmitter<KeyboardEvent>();\n\n // CVA hooks\n private onChange: (val: any) => void = () => {};\n private onTouched: () => void = () => {};\nconstructor(private el: ElementRef,) {\n }\n\n ngOnInit(): void {\n if(this.state === 'ms-success'){\n this.isSuccess.set(true); // ✅ border green\n }\n }\n\n \n writeValue(val: any): void {\n this.value.set(val ?? '');\n }\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleInput(event: Event) {\n const target = event.target as HTMLInputElement;\n const newVal = target.value;\n this.value.set(newVal);\n this.onChange(newVal);\n if (this.required && !newVal) {\n this.hasError.set(true);\n } else {\n this.hasError.set(false);\n }\n if ((this.type === 'email' || this.type === 'password') && this.pattern) {\n const regex = new RegExp(this.pattern);\n if (regex.test(newVal)) {\n this.isSuccess.set(true); // ✅ border green\n } else {\n this.hasError.set(true); // ❌ border red\n }\n if(this.state === 'ms-success'){\n this.isSuccess.set(true); // ✅ border green\n }\n }\n\n }\nhandleBlur(event: Event) {\n const val = this.value();\n this.blur.emit(event);\n\n // Required check\n if (this.required && !val) {\n this.hasError.set(true);\n return;\n }\n\n // Text length check\n if (['text','email','password','url','search'].includes(this.type)) {\n if ((this.minlength && val.length < this.minlength) ||\n (this.maxlength && val.length > this.maxlength)) {\n this.hasError.set(true);\n return;\n }\n }\n\n // Number/date/time check\n if (['number','date','time'].includes(this.type)) {\n const num = Number(val);\n if ((this.min !== undefined && num < this.min) ||\n (this.max !== undefined && num > this.max)) {\n this.hasError.set(true);\n return;\n }\n }\n\n // Pattern check\n if (this.pattern) {\n const regex = new RegExp(this.pattern);\n if (!regex.test(val)) {\n this.hasError.set(true);\n return;\n }\n }\n\n this.hasError.set(false);\n}\n\n\n// handleBlur(event: Event) {\n// this.blur.emit(event);\n// if (this.required && !this.value()) {\n// this.hasError.set(true);\n// } else {\n// this.hasError.set(false);\n// }\n// }\n}","<ng-container *ngIf=\"!loading; else skeleton\">\n <input\n class=\"ms-form-control\"\n [class.ms-error]=\"hasError()\"\n [class.ms-success]=\"isSuccess()\"\n [class]=\"state\"\n [attr.type]=\"type\"\n [attr.id]=\"id || null\"\n [attr.name]=\"name || null\"\n [attr.placeholder]=\"placeholder || null\"\n [attr.autocomplete]=\"autocomplete || null\"\n [attr.min]=\"min ?? null\"\n [attr.max]=\"max ?? null\"\n [attr.step]=\"step ?? null\"\n [attr.minlength]=\"minlength ?? null\"\n [attr.maxlength]=\"maxlength ?? null\"\n[class.invalid]=\"invalid\"\n [attr.pattern]=\"pattern || null\"\n [attr.inputmode]=\"inputmode || null\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n (change)=\"change.emit($event)\"\n (focus)=\"focus.emit($event)\"\n (blur)=\"handleBlur($event)\"\n (keydown)=\"keydown.emit($event)\"\n (keyup)=\"keyup.emit($event)\"\n />\n</ng-container>\n\n<ng-template #skeleton>\n <div class=\"ms-skeleton-input\"></div>\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, forwardRef, Input, signal, ViewChild } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InlineSVGModule } from 'ng-inline-svg-2';\nimport { MsButton } from './../button/ms-button.component';\nimport { MsDropdown } from './../dropdown/dropdown';\n@Component({\n selector: 'ms-text-area',\n imports: [CommonModule, FormsModule, InlineSVGModule,MsButton ,MsDropdown ],\n templateUrl: './ms-text-area.html',\n styleUrl: './ms-text-area.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MsTextArea),\n multi: true,\n },\n ],\n})\nexport class MsTextArea {\n @Input() id?: string;\n @Input() name?: string;\n @Input() placeholder?: string;\n @Input() autocomplete?: string;\n @Input() readonly = false;\n @Input() disabled = false;\n @Input() required = false;\n @Input() loading = false;\n @Input() invalid = false;\n @Input() skeleton = false;\n @Input() minlength?: any =1;\n @Input() maxlength?: number = 500;\n @Input() ms_rows: number = 1; // default rows\n @Input() ms_cols?: number = 80;\n @Input() autoResize = false; // auto expand/shrink height\n @Input() resize: 'none' | 'both' | 'horizontal' | 'vertical' = 'vertical';\n@Input() scrollable = true; // allow scrollbars\n@Input() showResizeIcon: boolean = false;\n @Input() state?: string;\n\n\n\n @Input() isDisabled: boolean = false;\n @Input() showFormatOptions: boolean = false;\n @Input() maxWidth!: number;\n @Input() maxHeight!: number;\n\n value = signal<string>('');\n hasError = signal<boolean>(false);\n paragraphType: string = 'paragraph';\n isBold: boolean = false;\n isItalic: boolean = false;\n isUnderline: boolean = false;\n textAlignment: string = 'left';\n fontSize: string = '16px';\n fontWeight: string = 'normal';\n listType: string = 'none';\n showLinkDropdown: boolean = false;\n showImageDropdown: boolean = false;\n @ViewChild('textArea') textArea!: ElementRef<HTMLTextAreaElement>;\n linkUrl: string = '';\n linkText: string = '';\n imageUrl: string = '';\n imageAlt: string = '';\n\n formattingItems: any[] = [\n { label: 'Left align', icon: 'align-left.svg', value: 'left' },\n { label: 'Center align', icon: 'align-center.svg', value: 'center' },\n { label: 'Right align', icon: 'align-right.svg', value: 'right' },\n ]\n\n listTypeItems: any[] = [\n { label: 'Bulleted List', icon: 'bullet-list.svg', value: 'bulleted' },\n { label: 'Numbered List', icon: 'number-list.svg', value: 'numbered' },\n { label: 'Lettered List', icon: 'letters-list.svg', value: 'lettered' },\n ]\n\n paraTypeItems: any[] = [\n { label: 'Paragraph', icon: '', value: 'paragraph' },\n { label: 'Heading 1', icon: '', value: 'h1' },\n { label: 'Heading 2', icon: '', value: 'h2' },\n { label: 'Heading 3', icon: '', value: 'h3' },\n ]\n // Events\n change = new EventEmitter<Event>();\n focus = new EventEmitter<Event>();\n blur = new EventEmitter<Event>();\n\n // CVA hooks\n private onChange: (val: any) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(val: any): void {\n this.value.set(val ?? '');\n }\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleInput(event: Event) {\n const target = event.target as HTMLTextAreaElement;\n const newVal = target.value;\n this.value.set(newVal);\n this.onChange(newVal);\n\n // Required check\n if (this.required && !newVal) {\n this.hasError.set(true);\n return;\n }\n\n // Length check\n if ((this.minlength && newVal.length < this.minlength) ||\n (this.maxlength && newVal.length > this.maxlength)) {\n this.hasError.set(true);\n return;\n }\n // Auto resize logic\n if (this.autoResize) {\n target.style.height = 'auto'; // reset\n target.style.overflowY = this.scrollable ? 'auto' : 'hidden';\n\n const lineHeight = 24; // adjust based on CSS\n const minHeight = this.minlength * lineHeight;\n const maxHeight = this.maxlength ? this.maxlength * lineHeight : Infinity;\n\n const newHeight = Math.min(Math.max(target.scrollHeight, minHeight), maxHeight);\n target.style.height = `${newHeight}px`;\n }\n\n\n \n\n this.hasError.set(false);\n }\n\n handleBlur(event: Event) {\n this.blur.emit(event);\n this.onTouched();\n const val = this.value();\n this.blur.emit(event);\n\n // Required check\n if (this.required && !val) {\n this.hasError.set(true);\n return;\n }\n this.hasError.set(false);\n }\n\n onSelectItem(event: any) {\n this.changeTextAlignment(event.value);\n }\n\n onSelectlistType(event: any) {\n this.changeListType(event.value);\n }\n\n onSelectPara(event: any) {\n this.changeParagraphType(event.value);\n }\n\n changeParagraphType(type: string) {\n this.paragraphType = type;\n // Set font size and weight based on paragraph type\n switch(type) {\n case 'h1':\n this.fontSize = '32px';\n this.fontWeight = '700';\n break;\n case 'h2':\n this.fontSize = '24px';\n this.fontWeight = '600';\n break;\n case 'h3':\n this.fontSize = '20px';\n this.fontWeight = '600';\n break;\n case 'paragraph':\n default:\n this.fontSize = '16px';\n this.fontWeight = '400';\n }\n }\n\n // List type method\n textValue = '';\n changeListType(type: string) {\n this.listType = type;\n\n if (!this.textValue) {\n this.textValue = this.getListPrefix(type);\n return;\n }\n\n const lines = this.textValue.split('\\n');\n\n this.textValue = lines\n .map((line, index) => {\n if (!line.trim()) return line;\n\n switch (type) {\n case 'bulleted':\n return `• ${line.replace(/^(\\•|\\d+\\.|[a-z]\\.)\\s*/, '')}`;\n\n case 'numbered':\n return `${index + 1}. ${line.replace(/^(\\•|\\d+\\.|[a-z]\\.)\\s*/, '')}`;\n\n case 'lettered':\n return `${String.fromCharCode(97 + index)}. ${line.replace(/^(\\•|\\d+\\.|[a-z]\\.)\\s*/, '')}`;\n\n default:\n return line.replace(/^(\\•|\\d+\\.|[a-z]\\.)\\s*/, '');\n }\n })\n .join('\\n');\n }\n\n getListPrefix(type: string): string {\n switch (type) {\n case 'bulleted': return '• ';\n case 'numbered': return '1. ';\n case 'lettered': return 'a. ';\n default: return '';\n }\n }\n\n handleEnter(event: Event) {\n const keyboardEvent = event as KeyboardEvent;\n\n if (this.listType === 'none') return;\n\n keyboardEvent.preventDefault();\n\n const textarea = keyboardEvent.target as HTMLTextAreaElement;\n const cursorPos = textarea.selectionStart;\n\n const beforeCursor = this.textValue.substring(0, cursorPos);\n const afterCursor = this.textValue.substring(cursorPos);\n\n const lines = beforeCursor.split('\\n');\n const currentLineIndex = lines.length - 1;\n\n let prefix = '';\n\n switch (this.listType) {\n case 'bulleted':\n prefix = '• ';\n break;\n\n case 'numbered':\n prefix = `${currentLineIndex + 2}. `;\n break;\n\n case 'lettered':\n prefix = `${String.fromCharCode(97 + currentLineIndex + 1)}. `;\n break;\n }\n\n this.textValue =\n beforeCursor + '\\n' + prefix + afterCursor;\n\n setTimeout(() => {\n textarea.selectionStart =\n textarea.selectionEnd =\n cursorPos + 1 + prefix.length;\n });\n }\n\n \n // Formatting methods\n toggleBold() {\n this.isBold = !this.isBold;\n }\n\n toggleItalic() {\n this.isItalic = !this.isItalic;\n }\n\n toggleUnderline() {\n this.isUnderline = !this.isUnderline;\n }\n\n changeTextAlignment(alignment: string) {\n this.textAlignment = alignment;\n }\n\n // Link insertion methods\n toggleLinkDropdown() {\n this.showLinkDropdown = !this.showLinkDropdown;\n if (this.showLinkDropdown) {\n this.showImageDropdown = false;\n }\n }\n\n closeLinkDropdown() {\n this.showLinkDropdown = false;\n }\n\ninsertLink() {\n if (!this.linkUrl || !this.linkText) {\n alert('Please enter both link text and URL');\n return;\n }\n\n const textarea = this.textArea.nativeElement;\n const start = textarea.selectionStart;\n const end = textarea.selectionEnd;\n\n const linkMarkdown = `[${this.linkText}](${this.linkUrl})`;\n\n // Insert at cursor position\n this.textValue =\n this.textValue.substring(0, start) +\n linkMarkdown +\n this.textValue.substring(end);\n\n // Restore cursor position after insertion\n setTimeout(() => {\n textarea.selectionStart =\n textarea.selectionEnd =\n start + linkMarkdown.length;\n textarea.focus();\n });\n\n // Reset dropdown state\n this.linkUrl = '';\n this.linkText = '';\n this.closeLinkDropdown();\n}\n\n\n // Image insertion methods\n toggleImageDropdown() {\n this.showImageDropdown = !this.showImageDropdown;\n if (this.showImageDropdown) {\n this.showLinkDropdown = false;\n }\n }\n\n closeImageDropdown() {\n this.showImageDropdown = false;\n }\n\n insertImage() {\n if (!this.imageUrl) {\n alert('Please enter image URL');\n return;\n }\n const imageMarkdown = ``;\n console.log('Insert image:', imageMarkdown);\n this.imageUrl = '';\n this.imageAlt = '';\n this.closeImageDropdown();\n }\n\n}\n","<ng-container *ngIf=\"!loading; else skeleton\">\n @if(!showFormatOptions){\n <textarea\n class=\"ms-textArea\"\n [class.ms-error]=\"hasError()\"\n [class.invalid]=\"invalid\"\n [class]=\"state\"\n [id]=\"id\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [autocomplete]=\"autocomplete\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [attr.minlength]=\"minlength ?? null\"\n [attr.maxlength]=\"maxlength ?? null\"\n [rows]=\"ms_rows\"\n [cols]=\"ms_cols\"\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n (blur)=\"handleBlur($event)\"\n [style.resize]=\"showResizeIcon ? 'vertical' : 'none'\"\n [style.overflowY]=\"scrollable ? 'auto' : 'hidden'\"\n \n ></textarea>\n }@else if(showFormatOptions){\n <div class=\"ms-position-relative textarea-container\" [class]=\"state\">\n <div class=\"formatting-toolbar ms-position-absolute ms-d-flex ms-gap-2 ms-align-items-center ms-mb-3 ms-border\" style=\"background-color: #f9fafb; padding: 12px; border-start-start-radius: 20px;\n border-start-end-radius: 20px;\" >\n <!-- Paragraph Type Dropdown -->\n\n <ms-dropdown [items]=\"paraTypeItems\" [dropdownMenuWidth]=\"'170px'\" [selectedItem]=\"'Paragraph'\" [closeOnClickOutside]=\"true\" [size]=\"''\" [btnMinWidth]=\"''\" [variant]=\"''\" [btnMaxWidth]=\"''\" (selectionChange)=\"onSelectPara($event)\"></ms-dropdown>\n\n <div class=\"formatting-divider\"></div>\n\n <!-- Bold Button -->\n <ms-button \n (click)=\"toggleBold()\" \n [class.active]=\"isBold\"\n class=\"formatting-btn ms-d-flex ms-align-items-center ms-justify-content-center\"\n title=\"Bold\">\n B\n </ms-button>\n\n <div class=\"formatting-divider\"></div>\n\n <!-- Italic Button -->\n <ms-button \n (click)=\"toggleItalic()\" \n [class.active]=\"isItalic\"\n class=\"formatting-btn ms-d-flex ms-align-items-center ms-justify-content-center\"\n title=\"Italic\">\n I\n </ms-button>\n\n <div class=\"formatting-divider\"></div>\n\n <!-- Underline Button -->\n <ms-button \n (click)=\"toggleUnderline()\" \n [class.active]=\"isUnderline\"\n class=\"formatting-btn ms-d-flex ms-align-items-center ms-justify-content-center\"\n title=\"Underline\">\n U\n </ms-button>\n\n <div class=\"formatting-divider\"></div>\n\n <!-- Text Alignment Dropdown -->\n <ms-dropdown [items]=\"formattingItems\" [dropdownMenuWidth]=\"'170px'\" [selectedItem]=\"'Left align'\" [closeOnClickOutside]=\"true\" [size]=\"''\" [btnMinWidth]=\"''\" [variant]=\"''\" [btnMaxWidth]=\"''\" (selectionChange)=\"onSelectItem($event)\"></ms-dropdown>\n\n <div class=\"formatting-divider\"></div>\n\n <ms-dropdown [items]=\"listTypeItems\" [dropdownMenuWidth]=\"'170px'\" [selectedItem]=\"'Bulleted List'\" [closeOnClickOutside]=\"true\" [size]=\"''\" [btnMinWidth]=\"''\" [variant]=\"''\" (selectionChange)=\"onSelectlistType($event)\"></ms-dropdown>\n\n <div class=\"formatting-divider\"></div>\n <!-- Link Button -->\n <div class=\"ms-position-relative\">\n <ms-button \n (click)=\"toggleLinkDropdown()\" \n class=\"formatting-btn ms-d-flex ms-align-items-center ms-justify-content-center\"\n title=\"Insert Link\"\n style=\"padding: 6px 10px;\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"></path>\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"></path>\n </svg>\n </ms-button>\n\n <!-- Link Dropdown -->\n <div *ngIf=\"showLinkDropdown\" class=\"insertion-dropdown link-dropdown\">\n <div class=\"dropdown-form-group\">\n <label>Link Text:</label>\n <input type=\"text\" [(ngModel)]=\"linkText\" placeholder=\"Enter link text\" />\n </div>\n <div class=\"dropdown-form-group\">\n <label>URL:</label>\n <input type=\"text\" [(ngModel)]=\"linkUrl\" placeholder=\"https://example.com\" />\n </div>\n <div class=\"dropdown-buttons\">\n <ms-button (click)=\"insertLink()\" class=\"btn-insert ms-d-flex ms-align-items-center ms-justify-content-center\">Insert</ms-button>\n <ms-button (click)=\"closeLinkDropdown()\" class=\"btn-cancel ms-d-flex ms-align-items-center ms-justify-content-center\">Cancel</ms-button>\n </div>\n </div>\n </div>\n\n <!-- Image Button -->\n <div class=\"ms-position-relative\">\n <ms-button \n (click)=\"toggleImageDropdown()\" \n class=\"formatting-btn ms-d-flex ms-align-items-center ms-justify-content-center\"\n title=\"Insert Image\"\n style=\"padding: 6px 10px;\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect>\n <circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"></circle>\n <polyline points=\"21 15 16 10 5 21\"></polyline>\n </svg>\n </ms-button>\n\n <!-- Image Dropdown -->\n <div *ngIf=\"showImageDropdown\" class=\"insertion-dropdown image-dropdown\">\n <div class=\"dropdown-form-group\">\n <label>Image URL:</label>\n <input type=\"text\" [(ngModel)]=\"imageUrl\" placeholder=\"https://example.com/image.jpg\" />\n </div>\n <div class=\"dropdown-form-group\">\n <label>Alt Text:</label>\n <input type=\"text\" [(ngModel)]=\"imageAlt\" placeholder=\"Image description\" />\n </div>\n <div class=\"dropdown-buttons\">\n <ms-button (click)=\"insertImage()\" class=\"btn-insert ms-d-flex ms-align-items-center ms-justify-content-center\">Insert</ms-button>\n <ms-button (click)=\"closeImageDropdown()\" class=\"btn-cancel ms-d-flex ms-align-items-center ms-justify-content-center\">Cancel</ms-button>\n </div>\n </div>\n </div>\n </div>\n <textarea\n #textArea\n placeholder=\"Enter name\"\n [(ngModel)]=\"textValue\"\n [attr.rows]=\"ms_rows\"\n [attr.cols]=\"ms_cols\"\n [attr.maxlength]=\"maxlength\"\n [attr.readonly]=\"readonly ? true : null\"\n [attr.disabled]=\"disabled ? true : null\"\n [style.resize]=\"autoResize ? 'both' : 'none'\"\n [style.overflow]=\"scrollable ? 'auto' : 'hidden'\"\n [style.textAlign]=\"textAlignment\"\n [style.fontSize]=\"fontSize\"\n [style.fontWeight]=\"isBold ? 'bold' : fontWeight\"\n [style.fontStyle]=\"isItalic ? 'italic' : 'normal'\"\n [style.textDecoration]=\"isUnderline ? 'underline' : 'none'\"\n [style.paddingLeft]=\"listType !== 'none' ? '32px' : '12px'\"\n [ngClass]=\"'list-' + listType\" (keydown.enter)=\"handleEnter($event)\"\n class=\"ms-textArea\" \n [ngStyle]=\"{ \n 'max-width': maxWidth ? maxWidth + 'px' : 'auto',\n 'max-height': maxHeight ? maxHeight + 'px' : 'auto',\n 'padding-top': showFormatOptions ? '70px' : '0', \n 'border-radius': '20px', 'overflowY': 'auto'\n }\"></textarea>\n</div>\n }\n\n</ng-container>\n\n<ng-template #skeleton>\n <div class=\"ms-skeleton-text\"></div>\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { Component, ContentChild, ElementRef, EventEmitter, HostListener, Input, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'ms-avatar',\n imports: [CommonModule],\n templateUrl: './ms-avatar.html',\n styleUrl: './ms-avatar.scss',\n})\nexport class MsAvatar {\n\n @Input() color: string = '';\n @Input() variant: any;\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\n @Input() text?: string = '';\n @Input() icon?: any;\n @Input() img?: string = '';\n @Input() shape: 'circle' | 'square' = 'circle';\n @Input() disabled: boolean = false;\n @Input() skeleton: boolean = false;\n @Input() isStatusShow: boolean = false;\n @Input() subType?: string;\n @Input() label?: any;\n @Input() label2?: any;\n @Input() status?: any;\n @Input() max?: number = 3;\n @Input() avatars: Array<{\n src?: string;\n initials?: string;\n text?: string;\n }> = [];\n\n\n\n\n\n\n\n\n @Input() block: boolean = false;\n\n\n @Input() class: string = '';\n @Output() htmlChange = new EventEmitter<string>();\n @Output() click = new EventEmitter<Event>();\n @ContentChild('projectedContent', { static: false }) projectedContent: any;\n @Output() avatarClick = new EventEmitter<void>();\n sizeClass: any\n get isSubType(): boolean {\n return ['primary', 'combine', 'secondory'].includes(this.subType ?? '');\n}\n get classes(): string {\n if (this.subType) {\n this.size = 'xl'\n }\n const sizeClass = this.size ? `ms-avatar-${this.size}` : '';\n this.sizeClass = this.size ? `ms-avatar-${this.size}` : '';\n const shapeClass = this.shape ? `ms-avatar-${this.shape}` : '';\n\n const disabledClass = this.disabled ? 'ms-avatar-disabled' : '';\n if (this.skeleton) {\n return [\n 'ms-avatar-skeleton', sizeClass,\n shapeClass,]\n .filter(Boolean)\n .join(' ')\n .trim();\n } else {\n return [\n 'ms-avatar',\n sizeClass,\n shapeClass,\n disabledClass,\n ]\n .filter(Boolean)\n .join(' ')\n .trim();\n }\n\n }\n\n get userClass() {\n return this.class;\n }\n\n /** Generate HTML string */\n // getHtmlString(): string {\n // const disabledAttr = this.disabled ? ' disabled' : '';\n // let innerHtml = '';\n // innerHtml = this.initials\n // return `<ms-avatar text=\"${innerHtml}\" class=\"${this.classes}\"${disabledAttr}></ms-avatar>`;\n // }\n\n getHtmlString(): any {\n const disabledAttr = this.disabled ? ' disabled' : '';\n \n // <option value=\"single_initials\">Single Initials</option>\n // <option value=\"single_image\">Single Image</option>\n // <option value=\"multi_initials\">Multi Initials</option>\n // <option value=\"multi_image\">Multi Image</option>\n let innerHtml = '';\n if(this.skeleton){\n this.variant = ''\n \n }\n\n if(this.variant === 'multi_initials'){\n return `<ms-avatar ${this.attr('variant', this.variant)} ${this.attr('subType', this.subType)} ${this.attr('size', this.size)} ${this.attr('text', this.text)} ${this.attr('label', this.label)}\n ${this.attr('label2', this.label2)} ${this.attr('img', this.img)} ${this.attr('shape', this.shape)} ${this.attr('skeleton', this.skeleton)} ${this.attr('disabled', this.disabled)} ${this.attr('isStatusShow', this.isStatusShow)}\n ${this.attr('status', this.status)} avatars=\"[{ initials:'Avatar text'},{ initials:'Avatar text'},{ initials:'Avatar text'}]\"></ms-avatar>`.replace(/\\s+/g, ' ')\n.replace('<ms-avatar ', '<ms-avatar ')\n.trim();\n }else if(this.variant === 'multi_image'){\n return `<ms-avatar ${this.attr('variant', this.variant)} ${this.attr('subType', this.subType)} ${this.attr('size', this.size)} ${this.attr('text', this.text)} ${this.attr('label', this.label)}\n ${this.attr('label2', this.label2)} ${this.attr('img', this.img)} ${this.attr('shape', this.shape)} ${this.attr('skeleton', this.skeleton)} ${this.attr('disabled', this.disabled)} ${this.attr('isStatusShow', this.isStatusShow)}\n ${this.attr('status', this.status)} avatars=\"[{ src: 'https://i.pravatar.cc/300' ,text:'Avatar text'},{ src: 'https://i.pravatar.cc/300',text:'Avatar text' },{ src: 'https://i.pravatar.cc/300',text:'Avatar text' }]\"></ms-avatar>`.replace(/\\s+/g, ' ')\n.replace('<ms-avatar ', '<ms-avatar ')\n.trim();\n }else {\n return `<ms-avatar ${this.attr('variant', this.variant)} ${this.attr('subType', this.subType)} ${this.attr('size', this.size)} ${this.attr('text', this.text)} ${this.attr('label', this.label)}\n ${this.attr('label2', this.label2)} ${this.attr('img', this.img)} ${this.attr('shape', this.shape)} ${this.attr('skeleton', this.skeleton)} ${this.attr('disabled', this.disabled)} ${this.attr('isStatusShow', this.isStatusShow)}\n ${this.attr('status', this.status)}></ms-avatar>`.replace(/\\s+/g, ' ')\n.replace('<ms-avatar ', '<ms-avatar ')\n.trim();\n }\n\n\n\n\n\n // if (this.variant === 'initials') {\n // // innerHtml = this.initials;\n // if (this.isStatusShow) {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [isStatusShow]=\"${this.isStatusShow}\" [disabled]=\"${this.disabled}\" [subType]=\"${this.subType}\" [text]=\"${innerHtml}\" [status]=\"${this.status}\" ${disabledAttr}> </ms-avatar>`.trim();\n // } else if (this.subType === 'primary' || this.subType === 'secondory') {\n // if (this.isStatusShow) {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [label]=\"${this.label}\" [isStatusShow]=\"${this.isStatusShow}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" [status]=\"${this.status}\" ${disabledAttr}> </ms-avatar>`.trim();\n // } else {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [label]=\"${this.label}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" ${disabledAttr}> </ms-avatar>`.trim();\n // }\n // } else if (this.subType === 'combine') {\n // if (this.isStatusShow) {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [label]=\"${this.label}\" [isStatusShow]=\"${this.isStatusShow}\" [status]=\"${this.status}\" [label2]=\"${this.label2}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" ${disabledAttr}> </ms-avatar>`.trim();\n // } else {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [label]=\"${this.label}\" [label2]=\"${this.label2}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" ${disabledAttr}> </ms-avatar>`.trim();\n // }\n // } else {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [disabled]=\"${this.disabled}\" [text]=\"'${this.text}'\" ${disabledAttr}> </ms-avatar>`.trim();\n // }\n // } else if (this.variant === 'image') {\n // if (this.isStatusShow) {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [isStatusShow]=\"${this.isStatusShow}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" [img]=\"${this.img}\" [status]=\"${this.status}\" ${disabledAttr}> </ms-avatar>`.trim();\n // } else if (this.subType === 'primary' || this.subType === 'secondory') {\n // if (this.isStatusShow) {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [img]=\"${this.img}\" [label]=\"${this.label}\" [isStatusShow]=\"${this.isStatusShow}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" [status]=\"${this.status}\" ${disabledAttr}> </ms-avatar>`.trim();\n // } else {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [img]=\"${this.img}\" [label]=\"${this.label}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" ${disabledAttr}> </ms-avatar>`.trim();\n // }\n // } else if (this.subType === 'combine') {\n // if (this.isStatusShow) {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [img]=\"${this.img}\" [label]=\"${this.label}\" [isStatusShow]=\"${this.isStatusShow}\" [status]=\"${this.status}\" [label2]=\"${this.label2}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" ${disabledAttr}> </ms-avatar>`.trim();\n // } else {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [img]=\"${this.img}\" [label]=\"${this.label}\" [label2]=\"${this.label2}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" ${disabledAttr}> </ms-avatar>`.trim();\n // }\n // } else {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [disabled]=\"${this.disabled}\" [img]=\"${this.img}\" ${disabledAttr}> </ms-avatar>`.trim();\n // }\n // } else if (this.skeleton) {\n // return `<ms-avatar class=\"${this.classes}\" [skeleton]=\"${this.skeleton}\"> </ms-avatar>`.trim();\n // } else if (this.group) {\n // if (this.variant === 'initials') {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [disabled]=\"${this.disabled}\" [group]=\"${this.group}\" [avatars]=\"[{ initials:'faheem Ashraf'},{ initials:'faheem Ashraf'},{ initials:'faheem Ashraf'}]\"> </ms-avatar>`.trim();\n // } else {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [disabled]=\"${this.disabled}\" [group]=\"${this.group}\" [avatars]=\"[{ src: 'https://i.pravatar.cc/300' ,text:'faheem Ashraf'},{ src: 'https://i.pravatar.cc/300',text:'faheem Ashraf' },{ src: 'https://i.pravatar.cc/300',text:'faheem Ashraf' }]\"> </ms-avatar>`.trim();\n // }\n // }\n }\n\n private attr(name: string, value: any): string {\n if (\n value === null ||\n value === undefined ||\n value === '' ||\n value === 'undefined'\n ) {\n return '';\n }\n return ` ${name}=\"${value}\"`;\n}\n\n get initials(): string {\n if (!this.text) return '';\n return this.text\n .split(' ')\n .map(n => n[0])\n .join('')\n .substring(0, 2)\n .toUpperCase();\n }\n getInitialName(name: any): string {\n if (!name) return '';\n return name\n .split(' ')\n .map((n: any) => n[0])\n .join('')\n .substring(0, 2)\n .toUpperCase();\n }\n\n\n constructor(private el: ElementRef,) { }\n\n\n ngOnChanges(changes: SimpleChanges): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngOnInit(): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngAfterContentInit() {\n // const inner = this.el.nativeElement.innerText.trim();\n // if (inner && !this.text) {\n // this.text = inner;\n // }\n }\n\n onClick(event: Event) {\n if (!this.disabled) {\n this.click.emit(event);\n } else {\n event.preventDefault();\n }\n }\n\n\n get visibleAvatars() {\n if (!this.max) return this.avatars;\n return this.avatars;\n }\n\n get extraCount(): number {\n if (!this.max) return 0;\n return this.avatars.length - this.max;\n }\n\n extraOpen = false;\n expanded = false;\n\n get extraAvatars() {\n return this.avatars.slice(this.max);\n }\n\n get visibleExtraCount() {\n return this.expanded ? this.extraAvatars.length : 3;\n }\n\n toggleExtra(event: MouseEvent) {\n event.stopPropagation();\n this.extraOpen = !this.extraOpen;\n this.expanded = false; // reset on reopen\n }\n\n // 👇 Listen for clicks anywhere in the document\n @HostListener('document:click', ['$event'])\n clickOutside(event: Event) {\n if (this.extraOpen && !this.el.nativeElement.contains(event.target)) {\n this.extraOpen = false;\n this.expanded = false;\n }\n }\n\n\n toggleExpand() {\n this.expanded = !this.expanded;\n }\n}\n","@if(skeleton){\n<div class=\"ms-avatar-skeleton\" [class]=\"shape\"></div>\n}@else{\n @if(!isSubType && (variant === 'single_image' || variant === 'single_initials') ){\n <div class=\"ms-avatar\" [class]=\"classes + ' ' + userClass\" [ngClass]=\"{'no-background': variant === 'single_image'}\" [class.disabled]=\"disabled\" (click)=\"onClick($event)\">\n <!-- IMAGE -->\n <img *ngIf=\"variant === 'single_image' && img\" [src]=\"img\" [title]=\"text\" [class]=\"sizeClass\" \n [class]=\"'ms-avatar-img-'+ shape\" />\n <!-- INITIALS -->\n <span *ngIf=\"variant === 'single_initials' && text\" [class]=\"sizeClass\" [title]=\"text\">\n {{ initials }}\n </span>\n <span *ngIf=\"isStatusShow\" class=\"ms-avatar-status\" [class.online]=\"status === 'online'\"\n [class.offline]=\"status === 'offline'\" [class.busy]=\"status === 'busy'\"></span>\n </div>\n } @else if(!isSubType && (variant === 'multi_initials' || variant === 'multi_image')) {\n <!-- AVATAR GROUP -->\n <div class=\"ms-avatar-group\">\n <ng-container *ngFor=\"let avatar of avatars | slice:0:max; let i = index;\">\n <div class=\"ms-avatar ms-ms\" [class]=\"classes + ' ' + userClass\" [class.disabled]=\"disabled\" [ngClass]=\"{'no-background': variant === 'multi_image'}\"\n (click)=\"onClick($event)\">\n <!-- IMAGE -->\n <img *ngIf=\"variant === 'multi_image' && avatar.src\" [src]=\"avatar.src\" [class]=\"'ms-avatar-img-'+ shape\"\n [title]=\"avatar?.text\" />\n <!-- INITIALS -->\n <span *ngIf=\"variant === 'multi_initials' && avatar.initials\" [class]=\"sizeClass\" [title]=\"avatar?.initials\">\n {{ getInitialName(avatar.initials) }}\n </span>\n </div>\n </ng-container>\n <div *ngIf=\"avatars.length > max\" (click)=\"toggleExtra($event)\" class=\"ms-avatar extra ms-ms\"\n [class]=\"classes + ' ' + userClass\">\n +{{ avatars.length - max }}\n </div>\n </div>\n <div *ngIf=\"extraOpen\" class=\"ms-avatar-dropdown\">\n <div class=\"ms-avatar-list ms-mt-2\" [class.scroll]=\"expanded\">\n <ng-container *ngFor=\"let avatar of expanded ? extraAvatars : (extraAvatars | slice:0:3)\">\n <div class=\"ms-ms ms-dropdown-data\">\n @if(variant === 'multi_image' && avatar.src){\n <div class=\"ms-d-flex ms-align-items-center ms-mx-2\">\n <img *ngIf=\"variant === 'multi_image' && avatar.src\" [src]=\"avatar.src\" class=\"ms-me-2\"\n [class]=\"'ms-avatar-img-'+ shape\" style=\"width: 24px;height: 24px;\" [title]=\"avatar.text\" />\n <span *ngIf=\"variant === 'multi_image' && avatar.text\" [title]=\"avatar.text\">{{ avatar.text }}</span>\n </div>\n }@else if(variant === 'multi_initials' && avatar.initials){\n <div class=\"ms-d-flex ms-align-items-center ms-mx-2\">\n <div class=\"ms-avatar-group\">\n <div class=\"ms-me-2\" [class]=\"classes + ' ' + userClass\">\n <span [class]=\"sizeClass\" [title]=\"avatar?.initials\">\n {{ getInitialName(avatar.initials) }}\n </span>\n </div>\n </div>\n <span *ngIf=\"variant === 'multi_initials'\" [title]=\"avatar.initials\">{{ avatar.initials }}</span>\n </div>\n }\n </div>\n </ng-container>\n </div>\n \n <!-- ACTION -->\n <div class=\"ms-avatar-action\" (click)=\"toggleExpand()\">\n {{ expanded ? 'Show less' : 'Show more' }}\n </div>\n \n </div>\n } @else if(isSubType && (variant === 'single_image' || variant === 'single_initials') ){\n <div class=\"ms-d-flex ms-align-items-center\">\n <div class=\"ms-avatar\" [class]=\"classes + ' ' + userClass\" [class.disabled]=\"disabled\" (click)=\"onClick($event)\">\n <!-- IMAGE -->\n <img *ngIf=\"variant === 'single_image' && img\" [src]=\"img\" [title]=\"text\" [class]=\"sizeClass\"\n [class]=\"'ms-avatar-img-'+ shape\" />\n <!-- INITIALS -->\n <span *ngIf=\"variant === 'single_initials'\" [class]=\"sizeClass\" [title]=\"text\">\n {{ initials }}\n </span>\n <span *ngIf=\"isStatusShow\" class=\"ms-avatar-status\" [class.online]=\"status === 'online'\"\n [class.offline]=\"status === 'offline'\" [class.busy]=\"status === 'busy'\"></span>\n </div>\n @if(subType != 'combine'){\n <div class=\"ms-d-flex ms-ms-2\">\n <div *ngIf=\"label\" [title]=\"label\">\n @if(subType === 'primary'){\n <span class=\"ms-label-primary\">{{ label }}</span>\n } @else if(subType === 'secondory'){\n <span class=\"ms-label-secondory\">{{ label }}</span>\n }\n </div>\n </div>\n }@else{\n <div *ngIf=\"label && label2 && subType === 'combine'\" [title]=\"label\" class=\"ms-d-flex ms-ms-2 ms-flex-column\">\n <span class=\"ms-label-primary\">{{ label }}</span>\n <span class=\"ms-label-secondory\">{{ label2 }}</span>\n </div>\n }\n \n </div>\n }\n}","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ms-pagination',\n imports: [],\n templateUrl: './ms-pagination.html',\n styleUrl: './ms-pagination.scss',\n})\nexport class MsPagination {\n\n}\n","<p>ms-pagination works!</p>\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\ninterface SidebarItem {\n id: string;\n label: string;\n count?: number;\n}\n\ninterface SidebarSection {\n title: string;\n id: string;\n icon: string;\n items: SidebarItem[];\n count?: number;\n}\nexport const MS_SVG_PATH = 'assets/ui-library/svg/';\n\n@Component({\n selector: 'ms-sidebar',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './ms-sidebar.html',\n styleUrl: './ms-sidebar.scss',\n})\nexport class MsSidebar {\n \nisCollapsed = false;\nopenSections: { [key: string]: boolean } = {};\nflyoutSectionId: string | null = null;\nflyoutItems: SidebarItem[] = [];\nflyoutTop: number = 0;\nprofileFlyoutVisible = false;\naccounts = [\n { name: 'John Doe', email: 'john@example.com', selected: true },\n { name: 'Jane Smith', email: 'jane@example.com', selected: false }\n];\n activeItem: string = '';\n userName: string = 'John Doe';\n isSearchVisible = true;\n private prevScrollTop = 0;\n\n get userInitials(): string {\n return this.userName.split(' ').map(n => n[0]).join('').toUpperCase().slice(0, 2);\n }\n\n getInitials(name: string): string {\n return name.split(' ').map(n => n[0]).join('').toUpperCase().slice(0, 2);\n }\n\n menuData: SidebarSection[] = [\n {\n title: 'Dashboard',\n id: 'dashboard',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Default Dashboard' },\n { id: 'employee', label: 'Employee Dashboard' },\n { id: 'hr', label: 'HR Dashboard',count: 3 },\n ],\n count: 3\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n },\n {\n title: 'Label',\n id: 'label',\n icon: 'sparkles.svg',\n items: [\n { id: 'default', label: 'Sub Label' },\n { id: 'employee', label: 'Sub Label' },\n { id: 'hr', label: 'Sub Label' },\n ],\n }\n \n // Add more sections as needed\n ];\n\n toggleSidebar() {\n this.isCollapsed = !this.isCollapsed;\n }\n\n toggleSection(id: string, event?: any) {\n\n // COLLAPSED MODE → flyout open / close\n if (this.isCollapsed) {\n if (this.flyoutSectionId === id) {\n this.flyoutSectionId = null;\n this.flyoutItems = [];\n } else {\n this.flyoutSectionId = id;\n const section = this.menuData.find(s => s.id === id);\n this.flyoutItems = section ? section.items : [];\n if (event) {\n const rect = event.target.getBoundingClientRect();\n this.flyoutTop = rect.top;\n }\n }\n return;\n }\n\n // EXPANDED MODE → normal accordion behavior\n this.openSections[id] = !this.openSections[id];\n}\n\n selectItem(id: string) {\n this.activeItem = id;\n this.flyoutSectionId = null;\n this.flyoutItems = [];\n }\n\n\n toggleProfileFlyout() {\n this.profileFlyoutVisible = !this.profileFlyoutVisible;\n }\n\n viewProfile() {\n this.profileFlyoutVisible = false;\n }\n\n accountSettings() {\n this.profileFlyoutVisible = false;\n }\n\n documentation() {\n this.profileFlyoutVisible = false;\n }\n\n selectAccount(index: number) {\n this.accounts.forEach((acc, i) => acc.selected = i === index);\n }\n}\n","<div class=\"sidebar\" [ngClass]=\"{'collapsed': isCollapsed, 'expanded': !isCollapsed}\">\n <div class=\"ms-d-flex ms-justify-content-between\">\n <img src=\"https://ds-doc.sentrixbar.com/logo.svg\" alt=\"Logo\" class=\"logo\" *ngIf=\"!isCollapsed\">\n <img src=\"https://ds-doc.sentrixbar.com/logo-small.svg\" alt=\"Logo\" class=\"logo\" *ngIf=\"isCollapsed\" (click)=\"toggleSidebar()\">\n <button class=\"toggle-btn\" (click)=\"toggleSidebar()\" *ngIf=\"!isCollapsed\">\n <img src=\"https://ds-doc.sentrixbar.com/assets/svg/sidebar-left-expand.svg\" alt=\"Toggle\" class=\"icon\">\n </button>\n </div>\n <div class=\"ms-d-flex ms-justify-content-between ms-mb-2\" [ngClass]=\"{'search-hidden': !isSearchVisible}\">\n <div class=\"search-wrapper\" *ngIf=\"!isCollapsed\">\n <input type=\"text\" placeholder=\"Search...\" class=\"search-input \">\n <img src=\"https://ds-doc.sentrixbar.com/assets/svg/search.svg\" alt=\"Search\" class=\"search-icon\">\n </div>\n </div>\n <div class=\"menu-container\" >\n <div *ngFor=\"let section of menuData\" class=\"menu-section\">\n <div class=\"menu-item \" (click)=\"toggleSection(section.id, $event)\"\n [ngClass]=\"{'active-section': openSections[section.id]}\">\n <img [src]=\"'https://ds-doc.sentrixbar.com/assets/svg/' + section.icon\" alt=\"Icon\" class=\"icon\">\n <span class=\"title ms-f-w-500\">{{ section.title }}</span>\n <span class=\"badge\" *ngIf=\"section.count && section.count > 0 && !isCollapsed\">{{ section.count }}</span>\n <img src=\"https://ds-doc.sentrixbar.com/assets/svg/chevron-right.svg\" alt=\"Chevron\" class=\"chevron\"\n [ngClass]=\"{'rotated': openSections[section.id]}\" *ngIf=\"!isCollapsed\">\n </div>\n <ul class=\"submenu\" *ngIf=\"openSections[section.id] && !isCollapsed\">\n <li class=\"submenu-item \" *ngFor=\"let item of section.items\"\n (click)=\"selectItem(item.id)\"\n [ngClass]=\"{'active-section': activeItem === item.id}\">\n {{ item.label }}\n </li>\n</ul>\n\n\n</div>\n </div>\n<div class=\"sidebar-footer\">\n <div class=\"Settings-section\">\n <img src=\"https://ds-doc.sentrixbar.com/assets/svg/sparkles.svg\" alt=\"Settings\" class=\"ms-me-4\">\n <span class=\"user-name ms-f-w-500\" *ngIf=\"!isCollapsed\">Settings</span>\n </div>\n <div class=\"profile-section\" (click)=\"toggleProfileFlyout()\">\n <div class=\"user-avatar\">{{ userInitials }}</div>\n <span class=\"user-name ms-f-w-500 \" *ngIf=\"!isCollapsed\">{{ userName || 'User Name' }}</span>\n <div class=\"profile-flyout\" *ngIf=\"profileFlyoutVisible\">\n <div class=\"flyout-item\" (click)=\"viewProfile()\">View Profile</div>\n <div class=\"flyout-item\" (click)=\"accountSettings()\">Account Settings</div>\n <div class=\"flyout-item\" (click)=\"documentation()\">Documentation</div>\n <hr class=\"flyout-divider\">\n <div class=\"flyout-section\">\n <div class=\"flyout-title\">Switch Account</div>\n <div *ngFor=\"let account of accounts; let i = index\" class=\"account-item\">\n <div class=\"account-info\">\n <div class=\"account-avatar\">{{ getInitials(account.name) }}</div>\n <div class=\"account-details\">\n <div class=\"account-name ms-f-w-500\">{{ account.name }}</div>\n <div class=\"account-email ms-fs-12\">{{ account.email }}</div>\n </div>\n </div>\n <input type=\"radio\" [checked]=\"account.selected\" (change)=\"selectAccount(i)\" name=\"account\">\n </div>\n </div>\n <button class=\"flyout-button\" >Add Account</button>\n <hr class=\"flyout-divider\">\n <div class=\"flyout-item sign-out\" >Sign Out</div>\n </div>\n </div>\n</div>\n</div>\n<ul class=\"submenu-flyout\"\n *ngIf=\"isCollapsed && flyoutSectionId\"\n [style.top.px]=\"flyoutTop\">\n <li *ngFor=\"let item of flyoutItems\"\n (click)=\"selectItem(item.id)\">\n {{ item.label }}\n </li>\n</ul>","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nexport type TooltipPosition =\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right';\n@Component({\n selector: 'ms-tooltip',\n imports: [CommonModule],\n templateUrl: './ms-tooltip.html',\n styleUrl: './ms-tooltip.scss',\n})\nexport class MsTooltip {\n @Input() text = '';\n @Input() position: TooltipPosition = 'top';\n @Input() bgColor = '#0E0F10';\n @Input() showArrow = true;\n\n get title(): string {\n return this.text.split('\\n')[0];\n }\n\n get paragraphLines(): string[] {\n return this.text.split('\\n').slice(1, 4); // max 3 lines\n }\n}\n","<div class=\"tooltip-container\" \n [ngClass]=\"[position, showArrow ? 'with-arrow' : 'no-arrow']\"\n [ngStyle]=\"{'background-color': bgColor}\">\n <div class=\"tooltip-title\">{{ title }}</div>\n <div class=\"tooltip-paragraph\">\n <div *ngFor=\"let line of paragraphLines\" class=\"tooltip-line\">\n {{ line }}\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InlineSVGModule } from 'ng-inline-svg-2';\nimport { MsSpinner } from '../ms-spinner/ms-spinner';\n\n@Component({\n selector: 'ms-file-uploader',\n imports: [CommonModule, FormsModule, ReactiveFormsModule, InlineSVGModule, MsSpinner],\n templateUrl: './ms-file-uploader.html',\n styleUrl: './ms-file-uploader.scss',\n})\nexport class MsFileUploader {\n @Input() label = \"\" \n @Input() required = false \n @Input() readonly = false \n @Input() disabled = false \n @Input() accept = \".pdf,.doc,.docx,.txt,.jpg,.jpeg,.png\" \n @Input() multiple = false\n @Input() maxFileSize = \"5MB\"\n @Input() variant: 'button' | 'dragdrop' = 'dragdrop' // 'button' or 'dragdrop'\n @Input() skeleton = false\n \n @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\n\n isDragOver = false;\n selectedFiles: File[] = [];\n uploadedFiles: { name: string; size: string; isLoading?: boolean; isSuccess?: boolean }[] = [];\n hasInteracted = false;\n showError = false;\n isFocused = false;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {\n }\n\n onDragOver(event: DragEvent) {\n // Only allow drag & drop for dragdrop variant\n if (this.variant !== 'dragdrop' || this.disabled) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = true;\n }\n\n onDragLeave(event: DragEvent) {\n // Only allow drag & drop for dragdrop variant\n if (this.variant !== 'dragdrop') {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = false;\n }\n\n onDropFiles(event: DragEvent) {\n // Only allow drag & drop for dragdrop variant\n if (this.variant !== 'dragdrop') {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = false;\n\n if (this.disabled) return;\n\n const files = event.dataTransfer?.files;\n if (files) {\n this.handleFiles(files);\n }\n }\n\n onFileInputChange(event: any) {\n const files = event.target.files;\n this.hasInteracted = true;\n \n // Only process if files were actually selected (length > 0)\n if (files && files.length > 0) {\n this.handleFiles(files);\n } else {\n this.updateErrorState();\n }\n \n // Reset file input value to allow selecting the same file again\n event.target.value = '';\n }\n\n private handleFiles(files: FileList) {\n const fileArray = Array.from(files);\n \n if (!this.multiple && fileArray.length > 1) {\n alert('Please select only one file');\n return;\n }\n\n // Only update if there are files to process\n if (fileArray.length > 0) {\n this.selectedFiles = fileArray;\n this.uploadedFiles = fileArray.map((file, index) => {\n const fileObj = {\n name: file.name,\n size: this.formatFileSize(file.size),\n isLoading: true,\n isSuccess: false\n };\n \n // Simulate upload delay (1-2 seconds)\n setTimeout(() => {\n this.onFileUploadComplete(index);\n }, 1500);\n \n return fileObj;\n });\n }\n \n this.updateErrorState();\n }\n\n onFileUploadComplete(index: number) {\n if (this.uploadedFiles[index]) {\n // Create new array with updated object to trigger change detection\n this.uploadedFiles = this.uploadedFiles.map((file, i) => \n i === index \n ? { ...file, isLoading: false, isSuccess: true }\n : file\n );\n this.cdr.markForCheck();\n \n // Show success tick for 1 second, then hide it\n setTimeout(() => {\n if (this.uploadedFiles[index]) {\n this.uploadedFiles = this.uploadedFiles.map((file, i) => \n i === index \n ? { ...file, isSuccess: false }\n : file\n );\n this.cdr.markForCheck();\n }\n }, 1000);\n }\n }\n\n private formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return Math.round((bytes / Math.pow(k, i)) * 100) / 100 + ' ' + sizes[i];\n }\n\n triggerFileInput() {\n if (!this.disabled) {\n this.hasInteracted = true;\n this.fileInput?.nativeElement.click();\n }\n }\n\n updateErrorState() {\n if (this.required && this.hasInteracted) {\n this.showError = this.uploadedFiles.length === 0;\n }\n }\n\n onFocus() {\n this.isFocused = true;\n if (this.required && this.uploadedFiles.length === 0) {\n this.showError = true;\n }\n }\n\n onBlur() {\n this.isFocused = false;\n this.updateErrorState();\n }\n\n removeFile(index: number) {\n this.uploadedFiles.splice(index, 1);\n this.selectedFiles.splice(index, 1);\n this.updateErrorState();\n \n // Reset file input value to allow re-uploading the same file\n if (this.fileInput?.nativeElement) {\n this.fileInput.nativeElement.value = '';\n }\n }\n\n getAcceptFormats(): string {\n return this.accept.split(',').map(ext => ext.trim().toUpperCase()).join(', ');\n }\n}\n","@if (skeleton) {\n <div class=\"ms-file-uploader-skeleton\" [class]=\"variant\"></div>\n} @else {\n<div class=\"file-uploader-wrapper\">\n <!-- <div *ngIf=\"label\" class=\"file-uploader-label\">\n <label>{{ label }} <span *ngIf=\"required\" class=\"required\">*</span></label>\n </div> -->\n\n <!-- ===================== BUTTON VARIANT ===================== -->\n <ng-container *ngIf=\"variant === 'button'\">\n <!-- Instructions -->\n <div class=\"file-uploader-instructions button-variant\">\n <p class=\"ms-mb-2\">Upload file</p>\n <p class=\"instruction-text\">\n <span>Max file size:</span> {{ maxFileSize }} | \n <span>Accepted formats:</span> {{ getAcceptFormats() }}\n </p>\n </div>\n\n <!-- Button Upload Area -->\n <div class=\"button-upload-area\">\n <button \n type=\"button\"\n class=\"upload-button\"\n (click)=\"triggerFileInput()\"\n [disabled]=\"disabled\">\n <span [inlineSVG]=\"'../../../../../../assets/data-grid/icons/upload.svg'\"></span>\n <span>Upload file</span>\n </button>\n \n <!-- <p class=\"button-hint\">or drag and drop</p> -->\n </div>\n\n <!-- Hidden File Input -->\n <input \n #fileInput\n type=\"file\" \n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (change)=\"onFileInputChange($event)\"\n style=\"display: none;\">\n </ng-container>\n\n <!-- ===================== DRAG & DROP VARIANT ===================== -->\n <ng-container *ngIf=\"variant === 'dragdrop'\">\n <!-- Instructions outside the border -->\n <div class=\"file-uploader-instructions dragdrop-variant\">\n <p class=\"instruction-text\">\n <span>Max file size:</span> {{ maxFileSize }} | \n <span>Accepted formats:</span> {{ getAcceptFormats() }}\n </p>\n </div>\n\n <!-- Drag and Drop Area with Dotted Border -->\n <div \n class=\"file-uploader-dropzone\"\n [class.dragover]=\"isDragOver\"\n [class.disabled]=\"disabled\"\n [class.error]=\"showError\"\n [class.focused]=\"isFocused\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDropFiles($event)\"\n (click)=\"triggerFileInput()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n tabindex=\"0\">\n \n <!-- Upload Icon and Text -->\n <div class=\"dropzone-content\">\n <span class=\"upload-icon\" [inlineSVG]=\"'../../../../../../assets/data-grid/icons/file-plus.svg'\"></span>\n <p class=\"upload-text\">Drag and drop your files here</p>\n <p class=\"upload-subtext\">or <span class=\"click-text\">click to browse</span></p>\n </div>\n\n <!-- Hidden File Input -->\n <input \n #fileInput\n type=\"file\" \n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (change)=\"onFileInputChange($event)\"\n style=\"display: none;\">\n </div>\n </ng-container>\n\n <!-- Error Message -->\n <div *ngIf=\"showError\" class=\"error-message\">\n <p>This field is required. Please select at least one file.</p>\n </div>\n\n <!-- Uploaded Files List (Shared for both variants) -->\n <div *ngIf=\"uploadedFiles.length > 0\" class=\"uploaded-files\">\n <div class=\"files-list\">\n <div *ngFor=\"let file of uploadedFiles; let i = index\" class=\"file-item\">\n <div class=\"file-info\">\n <span [inlineSVG]=\"'../../../../../../assets/data-grid/icons/File-pdf.svg'\"></span>\n <div class=\"file-details\">\n <p class=\"file-name\" [title]=\"file.name\">{{ file.name }}</p>\n <p class=\"file-size\">{{ file.size }}</p>\n </div>\n </div>\n\n <div class=\"file-actions\">\n <!-- Loader State -->\n <div *ngIf=\"file.isLoading\" class=\"loader\">\n <ms-spinner [color]=\"'primary'\" [size]=\"'sm'\"></ms-spinner>\n </div>\n\n <!-- Success Tick State -->\n <div *ngIf=\"file.isSuccess && !file.isLoading\" class=\"success-tick\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n </div>\n\n <!-- Remove Button State -->\n <button \n *ngIf=\"!file.isLoading && !file.isSuccess\"\n type=\"button\"\n class=\"remove-btn\"\n (click)=\"removeFile(i)\"\n [disabled]=\"disabled\">\n <span class=\"d-flex align-items-center\" [inlineSVG]=\"'../../../../../../assets/data-grid/icons/x.svg'\"></span>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n}","import { Directive, Input, HostListener, ElementRef, ComponentRef, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';\nimport { MsTooltip } from '../../lib/components/ms-tooltip/ms-tooltip';\n\n@Directive({\n selector: '[msTooltip]',\n standalone: true // ✅ must be standalone\n})\nexport class MsTooltipDirective {\n @Input() msTooltip!: string;\n @Input() position: 'top'| 'bottom'\n | 'left'\n | 'right'\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right' = 'top';\n @Input() bgColor: string = '#333';\n @Input() showArrow: boolean = true;\n\n private tooltipRef!: ComponentRef<MsTooltip>;\n\n constructor(\n private el: ElementRef,\n private vcr: ViewContainerRef,\n private cfr: ComponentFactoryResolver\n ) {}\n\n\n\n\n@HostListener('mouseenter')\nonMouseEnter() {\n const factory = this.cfr.resolveComponentFactory(MsTooltip);\n this.tooltipRef = this.vcr.createComponent(factory);\n\n this.tooltipRef.instance.text = this.msTooltip;\n this.tooltipRef.instance.position = this.position;\n this.tooltipRef.instance.bgColor = this.bgColor;\n this.tooltipRef.instance.showArrow = this.showArrow;\n\n const rect = this.el.nativeElement.getBoundingClientRect();\n const tooltipEl = this.tooltipRef.location.nativeElement as HTMLElement;\n\n tooltipEl.style.position = 'absolute';\n tooltipEl.style.zIndex = '1000';\n tooltipEl.style.display = 'block';\n\n // Wait for the tooltip to render to get its size\n setTimeout(() => {\n const tooltipRect = tooltipEl.getBoundingClientRect();\n\n switch (this.position) {\n case 'top':\n tooltipEl.style.top = rect.top - tooltipRect.height - 8 + 'px';\n tooltipEl.style.left = rect.left + rect.width / 2 - tooltipRect.width / 2 + 'px';\n break;\n\n case 'bottom':\n tooltipEl.style.top = rect.bottom + 8 + 'px';\n tooltipEl.style.left = rect.left + rect.width / 2 - tooltipRect.width / 2 + 'px';\n break;\n\n case 'left':\n tooltipEl.style.top = rect.top + rect.height / 2 - tooltipRect.height / 2 + 'px';\n tooltipEl.style.left = rect.left - tooltipRect.width - 8 + 'px';\n break;\n\n case 'right':\n tooltipEl.style.top = rect.top + rect.height / 2 - tooltipRect.height / 2 + 'px';\n tooltipEl.style.left = rect.right + 8 + 'px';\n break;\n\n case 'top-left':\n tooltipEl.style.top = rect.top - tooltipRect.height - 8 + 'px';\n tooltipEl.style.left = rect.left + 'px';\n break;\n\n case 'top-right':\n tooltipEl.style.top = rect.top - tooltipRect.height - 8 + 'px';\n tooltipEl.style.left = rect.right - tooltipRect.width + 'px';\n break;\n\n case 'bottom-left':\n tooltipEl.style.top = rect.bottom + 8 + 'px';\n tooltipEl.style.left = rect.left + 'px';\n break;\n\n case 'bottom-right':\n tooltipEl.style.top = rect.bottom + 8 + 'px';\n tooltipEl.style.left = rect.right - tooltipRect.width + 'px';\n break;\n\n default:\n // fallback to top\n tooltipEl.style.top = rect.top - tooltipRect.height - 8 + 'px';\n tooltipEl.style.left = rect.left + rect.width / 2 - tooltipRect.width / 2 + 'px';\n break;\n }\n });\n \n document.body.appendChild(tooltipEl);\n}\n\n\n \n\n @HostListener('mouseleave') onMouseLeave() {\n if (this.tooltipRef) {\n this.tooltipRef.destroy();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { MsButton } from './components/button/ms-button.component';\nimport { MsDropdown } from './components/dropdown/dropdown';\nimport { MsCheckbox } from './components/ms-checkbox/ms-checkbox';\nimport { MsBadge } from './components/ms-badge/ms-badge';\nimport { MsToggle } from './components/ms-toggle/ms-toggle';\nimport { MsRadioButton } from './components/ms-radio-button/ms-radio-button';\nimport { MsInputField } from './components/ms-input-field/ms-input-field';\nimport { MsTextArea } from './components/ms-text-area/ms-text-area';\nimport { MsAvatar } from './components/ms-avatar/ms-avatar';\nimport { InlineSVGModule } from 'ng-inline-svg';\nimport { MsSidebar } from './components/ms-sidebar/ms-sidebar';\nimport { MsTooltip } from './components/ms-tooltip/ms-tooltip';\nimport { MsPagination } from './components/ms-pagination/ms-pagination';\nimport { MsSpinner } from './components/ms-spinner/ms-spinner';\nimport { MsFileUploader } from './components/ms-file-uploader/ms-file-uploader';\nimport { MsTooltipDirective } from '../shared/directives/ms-tooltip.directive';\n@NgModule({\n imports: [InlineSVGModule.forRoot(), MsButton, MsDropdown,MsCheckbox,MsBadge,MsToggle, MsRadioButton,MsInputField,MsTextArea,MsAvatar,MsSidebar,MsTooltip, MsPagination, MsSpinner,MsFileUploader,MsTooltipDirective], // standalone components can be imported\n exports: [InlineSVGModule ,MsButton, MsDropdown,MsCheckbox,MsBadge,MsToggle,MsRadioButton,MsInputField,MsTextArea,MsAvatar,MsSidebar, MsTooltip, MsPagination,MsSpinner, MsFileUploader]\n})\nexport class MsDesignSystemModule {}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nexport function provideMsDesignSystem(): EnvironmentProviders {\n return makeEnvironmentProviders([]);\n}\n","// Components\nexport * from './components/button/ms-button.component';\nexport * from './components/dropdown/dropdown';\nexport * from './components/ms-checkbox/ms-checkbox';\nexport * from './components/ms-badge/ms-badge';\nexport * from './components/ms-toggle/ms-toggle';\nexport * from './components/ms-radio-button/ms-radio-button';\nexport * from './components/ms-input-field/ms-input-field';\nexport * from './components/ms-text-area/ms-text-area';\nexport * from './components/ms-avatar/ms-avatar';\nexport * from './components/ms-pagination/ms-pagination';\nexport * from './components/ms-sidebar/ms-sidebar';\nexport * from './components/ms-spinner/ms-spinner';\nexport * from './components/ms-tooltip/ms-tooltip';\nexport * from './components/ms-file-uploader/ms-file-uploader';\n\n\n// NgModule\nexport * from './ms-design-system.module';\n\n// Providers\nexport * from './providers/ms-design-system';\n\n// Directive\nexport * from '../shared/directives/ms-tooltip.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","InlineSVGModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ms-design-system.mjs","sources":["../../../projects/ui-library/src/lib/components/button/ms-button.component.ts","../../../projects/ui-library/src/lib/components/button/ms-button.component.html","../../../projects/ui-library/src/lib/components/ms-spinner/ms-spinner.ts","../../../projects/ui-library/src/lib/components/ms-spinner/ms-spinner.html","../../../projects/ui-library/src/lib/components/dropdown/dropdown.ts","../../../projects/ui-library/src/lib/components/dropdown/dropdown.html","../../../projects/ui-library/src/lib/components/ms-checkbox/ms-checkbox.ts","../../../projects/ui-library/src/lib/components/ms-checkbox/ms-checkbox.html","../../../projects/ui-library/src/lib/components/ms-badge/ms-badge.ts","../../../projects/ui-library/src/lib/components/ms-badge/ms-badge.html","../../../projects/ui-library/src/lib/components/ms-toggle/ms-toggle.ts","../../../projects/ui-library/src/lib/components/ms-toggle/ms-toggle.html","../../../projects/ui-library/src/lib/components/ms-radio-button/ms-radio-button.ts","../../../projects/ui-library/src/lib/components/ms-radio-button/ms-radio-button.html","../../../projects/ui-library/src/lib/components/ms-input-field/ms-input-field.ts","../../../projects/ui-library/src/lib/components/ms-input-field/ms-input-field.html","../../../projects/ui-library/src/lib/components/ms-text-area/ms-text-area.ts","../../../projects/ui-library/src/lib/components/ms-text-area/ms-text-area.html","../../../projects/ui-library/src/lib/components/ms-avatar/ms-avatar.ts","../../../projects/ui-library/src/lib/components/ms-avatar/ms-avatar.html","../../../projects/ui-library/src/lib/components/ms-pagination/ms-pagination.ts","../../../projects/ui-library/src/lib/components/ms-pagination/ms-pagination.html","../../../projects/ui-library/src/lib/components/ms-sidebar/ms-sidebar.ts","../../../projects/ui-library/src/lib/components/ms-sidebar/ms-sidebar.html","../../../projects/ui-library/src/lib/components/ms-tooltip/ms-tooltip.ts","../../../projects/ui-library/src/lib/components/ms-tooltip/ms-tooltip.html","../../../projects/ui-library/src/lib/components/ms-file-uploader/ms-file-uploader.ts","../../../projects/ui-library/src/lib/components/ms-file-uploader/ms-file-uploader.html","../../../projects/ui-library/src/shared/directives/ms-tooltip.directive.ts","../../../projects/ui-library/src/lib/ms-design-system.module.ts","../../../projects/ui-library/src/lib/providers/ms-design-system.ts","../../../projects/ui-library/src/lib/index.ts","../../../projects/ui-library/src/ms-design-system.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, ContentChild, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\n\n\ntype IconPosition = 'prefix' | 'suffix';\n\n@Component({\n selector: 'ms-button',\n imports: [CommonModule],\n templateUrl: './ms-button.component.html',\n styleUrls: ['./ms-button.component.scss']\n})\nexport class MsButton implements OnChanges, OnInit {\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Input() variant: string = '';\n @Input() size: string = '';\n @Input() radiussize: string = '';\n @Input() block: boolean = false;\n @Input() disabled: boolean = false;\n @Input() isBorder: boolean = false;\n @Input() textSrc: string = '';\n\n // Icon support\n @Input() icon: string | null = null; // e.g. 'fa fa-plus' or 'bi bi-search'\n @Input() iconPosition: IconPosition = 'prefix'; // 'prefix' or 'suffix'\n @Input() iconOnly: boolean = false; // icon-only mode (no text)\n\n @Input() class: string = '';\n @Input() buttonType: string = '';\n @Output() htmlChange = new EventEmitter<string>();\n @Output() click = new EventEmitter<Event>();\n @ContentChild('projectedContent', { static: false }) projectedContent: any;\n /** Dynamic class computation */\n get classes(): string {\n const radiusClass = this.radiussize !== 'none' ? `ms-rounded-${this.radiussize}` : '';\n const variant = this.variant !== 'default' ? `ms-btn-${this.variant}` : '';\n const link = this.variant !== 'link' ? `ms-btn` : '';\n const size = this.size !== '' ? `ms-btn-${this.size}` : '';\n const isBorder = this.isBorder ? `ms-border` : '';\n return [\n link,\n variant,\n size,\n radiusClass,\n this.block ? 'block' : '',\n isBorder,\n this.iconOnly ? 'icon-only' : ''\n ]\n .filter(Boolean)\n .join(' ')\n .trim();\n }\n\n get userClass() {\n return this.class;\n }\n\n /** Generate HTML string */\n getHtmlString(): string {\n const disabledAttr = this.disabled ? ' disabled' : '';\n const iconHtml = this.icon\n ? `<i class=\"${this.icon}\"></i>`\n : '';\n\n let innerHtml = '';\n\n if (this.iconOnly) {\n // Icon-only → just icon, centered\n innerHtml = `<i class=\"${this.icon} btn-icon\"></i>`;\n }\n else if (this.icon && this.iconPosition === 'prefix') {\n // Prefix → icon before text\n innerHtml = `<i class=\"${this.icon} btn-icon prefix\"></i> ${this.textSrc}`;\n }\n else if (this.icon && this.iconPosition === 'suffix') {\n // Suffix → icon after text\n innerHtml = `${this.textSrc} <i class=\"${this.icon} btn-icon suffix\"></i>`;\n }\n else {\n // Text only\n innerHtml = this.textSrc;\n }\n \n\n return `<ms-button type=\"${this.type}\" class=\"${this.classes}\"${disabledAttr}>${innerHtml}</ms-button>`;\n }\n\n\n constructor(private el: ElementRef) { }\n\n\n ngOnChanges(changes: SimpleChanges): void {\n this.htmlChange.emit(this.getHtmlString());\n // if(this.radiussize === 'none' || this.radiussize === 'xs' || this.radiussize === 'default'){\n // this.radiussize = ''\n // }\n // if(this.variant === 'default'){\n // this.variant = ''\n // }else{\n // this.variant = `-${this.variant}`\n // }\n }\n\n ngOnInit(): void {\n this.htmlChange.emit(this.getHtmlString());\n // if(this.radiussize === 'none' || this.radiussize === 'xs' || this.radiussize === 'default'){\n // this.radiussize = ''\n // }\n // if(this.variant === 'default'){\n // this.variant = ''\n // }else{\n // this.variant = `-${this.variant}`\n // }\n }\n\n ngAfterContentInit() {\n const inner = this.el.nativeElement.innerText.trim();\n if (inner && !this.textSrc) {\n this.textSrc = inner;\n }\n // if(this.radiussize === 'none' || this.radiussize === 'xs' || this.radiussize === 'default'){\n // this.radiussize = ''\n // }\n // if(this.variant === 'default'){\n // this.variant = ''\n // }else{\n // this.variant = `-${this.variant}`\n // }\n }\n\n onClick(event: Event) {\n if (!this.disabled) {\n this.click.emit(event);\n } else {\n event.preventDefault();\n }\n }\n\n}\n\n","@if (buttonType ==='Playground') {\n <a [type]=\"type\" [class.disabled]=\"disabled\" [class]=\"classes + ' ' + userClass\" (click)=\"onClick($event)\">\n\n <!-- @if (icon && iconPosition === 'prefix') {\n <i [ngClass]=\"iconOnly ? [icon, 'btn-icon'] : [icon, 'btn-icon', 'prefix']\"></i>\n } -->\n\n <!-- 👇 IMPORTANT: This shows <ms-button>Click Me</ms-button> -->\n @if (!iconOnly && !textSrc) {\n <span><ng-content></ng-content></span>\n }\n\n <!-- If textSrc is given -->\n @if (!iconOnly && textSrc) {\n <span>{{ textSrc }}</span>\n }\n\n <!-- @if (icon && iconPosition === 'suffix') {\n <i [ngClass]=\"iconOnly ? [icon, 'btn-icon'] : [icon, 'btn-icon', 'suffix']\"></i>\n } -->\n</a>\n}@else {\n <ng-content [type]=\"type\" [class.disabled]=\"disabled\" [class]=\"classes + ' ' + userClass\" (click)=\"onClick($event)\">\n\n <!-- @if (icon && iconPosition === 'prefix') {\n <i [ngClass]=\"iconOnly ? [icon, 'btn-icon'] : [icon, 'btn-icon', 'prefix']\"></i>\n } -->\n\n <!-- 👇 IMPORTANT: This shows <ms-button>Click Me</ms-button> -->\n @if (!iconOnly && !textSrc) {\n <span><ng-content></ng-content></span>\n }\n\n <!-- If textSrc is given -->\n @if (!iconOnly && textSrc) {\n <span>{{ textSrc }}</span>\n }\n\n <!-- @if (icon && iconPosition === 'suffix') {\n <i [ngClass]=\"iconOnly ? [icon, 'btn-icon'] : [icon, 'btn-icon', 'suffix']\"></i>\n } -->\n</ng-content>\n}","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'ms-spinner',\n imports: [CommonModule],\n templateUrl: './ms-spinner.html',\n styleUrl: './ms-spinner.scss',\n})\nexport class MsSpinner {\n @Input() color: any = 'primary';\n @Input() size: any = 'md';\n @Input() text?: boolean = false;\n @Output() htmlChange = new EventEmitter<string>();\n\n get spinnerSize(): string {\n return `ms-spinner-${this.size}`\n }\n get spinnerColor(): string {\n return `ms-spinner-${this.color}` ;\n }\n\n getHtmlString(): string {\n return `<ms-spinner [color]=\"${this.color}\" [size]=\"${this.size}\" [text]=\"${this.text}\"></ms-spinner>`;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngOnInit(): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n}\n","\n<div class=\"ms-spinner-container\" [class]=\"spinnerSize\">\n <div class=\"ms-spinner\" [class]=\"spinnerColor\"></div>\n @if(text){\n <p class=\"ms-spinner-text\">Loading...</p>\n }\n</div>\n\n\n<!-- <div class=\"ms-spinner-container\" [ngClass]=\"size\">\n <div class=\"ms-spinner\" [class]=\"spinnerColor\"></div>\n <p *ngIf=\"text\" class=\"ms-spinner-text\">Loading...</p>\n</div> -->\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MsButton } from '../button/ms-button.component';\n// import { InlineSVGModule } from 'ng-inline-svg/lib_commonjs/inline-svg.module';\nimport { InlineSVGModule } from 'ng-inline-svg-2';\nimport { MsSpinner } from '../ms-spinner/ms-spinner';\ninterface DropdownItem {\n label: string;\n icon?: string;\n value?: any;\n disabled?: boolean;\n divider?: boolean;\n dividerStyle?: string;\n selected?: boolean;\n countryCode?: string;\n dialCode?: string;\n}\n@Component({\n selector: 'ms-dropdown',\n standalone: true,\n imports: [CommonModule, FormsModule, MsButton,InlineSVGModule,MsSpinner],\n templateUrl: './dropdown.html',\n styleUrls: ['./dropdown.scss']\n})\nexport class MsDropdown {\n @Input() text: string = '';\n @Input() size: string = 'md';\n @Input() variant: string = 'primary';\n @Input() isDisabled: boolean = false;\n // @Input() items: DropdownItem[] = [];\n @Input() set items(value: DropdownItem[]) {\n this._items = value ? this.cloneItems(value) : [];\n }\n @Input() icon?: string;\n @Input() iconPosition: 'prefix' | 'suffix' = 'prefix';\n @Input() iconOnly: boolean = false;\n @Input() btnWidth: string = '';\n @Input() btnMinWidth: string = '';\n @Input() btnMaxWidth: string = '';\n @Input() closeOnSelect: boolean = true;\n @Input() closeOnClickOutside: boolean = true;\n @Input() selectedItem?: string;\n @Input() showSelected: boolean = true;\n @Input() allowMultiple: boolean = false;\n @Input() textColor: string = '#374151';\n @Input() maxHeight: string = '250px';\n @Input() scrollable: boolean = true;\n @Input() loading: boolean = false;\n @Input() error: boolean = false;\n @Input() ariaLabel: string = '';\n @Input() searchable: boolean = false;\n @Input() searchPlaceholder: string = 'Search...';\n @Input() noResultsText: string = 'No results';\n @Input() customClass: string = '';\n @Input() dropdownMenuClass: string = '';\n @Input() fontSize: string = '14px';\n @Input() fontWeight: string = '400';\n @Input() dropdownMenuWidth: string = '300px';\n @Input() showFlagImage: boolean = false;\n @Input() multiSelectDisplay: 'count' | 'text' | 'count+text' | 'tags' | 'none' = 'text';\n @Input() showTags: boolean = false;\n @Input() inputPlaceholder: string = 'Select...';\n @Input() inputLabel: string = '';\n @Input() inputErrorState: boolean = false;\n @Input() inputWarningState: boolean = false;\n @Input() inputFocusState: boolean = false;\n @Input() required: boolean = false;\n\n @Output() selectionChange = new EventEmitter<DropdownItem | DropdownItem[]>();\n validationTouched: boolean = false;\n selectedValues = new Set<any>();\n selectedItems: DropdownItem[] = [];\n selectedItemObj?: DropdownItem;\n get items(): DropdownItem[] {\n return this._items;\n }\n\nprivate _items: DropdownItem[] = [];\n\n constructor(private el: ElementRef) {}\n\n isOpen: boolean = false;\n searchTerm: string = '';\n\n onTriggerClick() {\n if (this.isDisabled) return;\n if (this.allowMultiple && this.multiSelectDisplay === 'tags') {\n this.isOpen = true;\n return;\n }\n this.toggleDropdown();\n }\n\n @ViewChild('tagInput') tagInput!: ElementRef<HTMLInputElement>;\n isFocused = false;\nhasError = false;\ndisabled = false;\n\nfocusInput() {\n this.tagInput?.nativeElement.focus();\n}\n\n toggleDropdown() {\n if (!this.isDisabled) this.isOpen = !this.isOpen;\n }\n\n private cloneItems(items: DropdownItem[]): DropdownItem[] {\n return items.map(item => ({\n ...item,\n selected: !!item.selected\n }));\n }\n\n selectItem(item: DropdownItem) {\n if (item.disabled || item.divider) return;\n\n if (this.allowMultiple) {\n this.toggleMultiSelect(item);\n this.selectionChange.emit(this.selectedItems);\n return;\n }\n\n this.selectSingle(item);\n this.selectionChange.emit(item);\n\n if (this.closeOnSelect) {\n this.close();\n }\n }\n\n toggleMultiSelect(item: DropdownItem) {\n item.selected = !item.selected;\n\n this.selectedItems = this.items.filter(i => i.selected);\n\n const count = this.selectedItems.length;\n\n switch (this.multiSelectDisplay) {\n case 'count':\n this.selectedItem = count ? `${count} Selected` : this.text;\n break;\n\n case 'text':\n this.selectedItem = this.selectedItems.map(i => i.label).join(', ') || this.text;\n break;\n \n case 'tags':\n this.selectedItem = this.selectedItems.map(i => i.label).join(', ') || this.text;\n break;\n\n case 'count+text':\n this.selectedItem = count\n ? `${count} Selected: ${this.selectedItems.map(i => i.label).join(', ')}`\n : this.text;\n break;\n\n case 'none':\n default:\n this.selectedItem = this.text;\n }\n }\n\n private selectSingle(item: DropdownItem) {\n this.items.forEach(i => (i.selected = false));\n item.selected = true;\n\n this.selectedItems = [item];\n this.selectedItem = item.label;\n this.selectedItemObj = item; // FLAG SUPPORT\n }\n\n get filteredItems() {\n if (!this.searchable || !this.searchTerm) return this.items;\n return this.items.filter(\n i => i.label.toLowerCase().includes(this.searchTerm.toLowerCase()) || i.divider\n );\n }\n\n isSelectionRequired(): boolean {\n return this.required && this.selectedItems.length === 0;\n }\n\n onBlur() {\n this.validationTouched = true;\n if (this.selectedItems.length === 0) {\n this.inputFocusState = false;\n }\n if (this.isSelectionRequired()) {\n this.inputErrorState = true;\n } else {\n this.inputErrorState = false;\n }\n }\n\n removeTag(item: DropdownItem, event: MouseEvent) {\n event.stopPropagation();\n\n item.selected = false;\n this.selectedItems = this.selectedItems.filter(i => i !== item);\n\n if (!this.selectedItems.length) {\n this.selectedItem = this.text;\n }\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n if (!this.isOpen || !this.closeOnClickOutside) return;\n\n const target = event.target;\n\n if (target instanceof HTMLElement &&\n !this.el.nativeElement.contains(target)) {\n this.close();\n }\n }\n\n maxVisibleTags = 2; // configurable\n\n get visibleTags(): DropdownItem[] {\n return this.selectedItems.slice(0, this.maxVisibleTags);\n }\n\n get hiddenTags(): DropdownItem[] {\n return this.selectedItems.slice(this.maxVisibleTags);\n }\n\n hiddenTagsCount(): number {\n return this.hiddenTags.length;\n }\n\n // toggle for hidden dropdown\n isHiddenTagsOpen = false;\n toggleHiddenTags() {\n this.isHiddenTagsOpen = !this.isHiddenTagsOpen;\n this.isOpen = false;\n }\n\n close() {\n this.isOpen = false;\n }\n}\n","<div class=\"ms-dropdown-wrapper\" [ngClass]=\"customClass\" [class.ms-disabled]=\"isDisabled\"\n (click)=\"onTriggerClick()\">\n <div class=\"ms-dropdown-field ms-d-flex ms-align-items-center\">\n <!-- allowMultiple && multiSelectDisplay === 'tags' -->\n <div class=\"ms-input-wrapper\"\n *ngIf=\"allowMultiple && multiSelectDisplay === 'tags'\"\n [style.width]=\"btnWidth\"\n [style.minWidth]=\"btnMinWidth\"\n [style.maxWidth]=\"btnMaxWidth\"\n [class.focused]=\"isFocused\"\n [class.error]=\"hasError\"\n [class.disabled]=\"disabled\"\n [class.ms-input-focus]=\"inputFocusState || isOpen || (selectedItems.length > 0)\"\n (click)=\"focusInput()\" [class.ms-dropdown-form-control]=\"visibleTags.length > 0\">\n\n <!-- TAGS -->\n <span class=\"ms-tag ms-me-1\" *ngFor=\"let item of visibleTags\">\n {{ item.label }}\n <span class=\"ms-tag-close ms-ms-1\" (click)=\"removeTag(item, $event)\">×</span>\n </span>\n\n <!-- +N MORE BUTTON -->\n <span class=\"ms-tag ms-more-btn\"\n *ngIf=\"hiddenTagsCount() > 0\"\n (click)=\"toggleHiddenTags(); $event.stopPropagation()\">\n +{{ hiddenTagsCount() }} more\n </span>\n\n <!-- DROPDOWN FOR HIDDEN TAGS -->\n <div class=\"ms-hidden-tags-dropdown\"\n *ngIf=\"isHiddenTagsOpen\"\n (click)=\"$event.stopPropagation()\">\n <span class=\"ms-tag\" *ngFor=\"let item of hiddenTags\">\n {{ item.label }}\n <span class=\"ms-tag-close ms-ms-1\" (click)=\"removeTag(item, $event)\">×</span>\n </span>\n </div>\n\n <input\n #tagInput\n class=\"ms-form-control ms-dropdown-input-field\"\n [disabled]=\"disabled\"\n (focus)=\"isFocused = true\"\n (blur)=\"isFocused = false\"\n placeholder=\"Select...\"\n *ngIf=\"selectedItems.length === 0\"\n />\n </div>\n\n <!-- Input Field Trigger -->\n <div *ngIf=\"multiSelectDisplay !== 'tags'\" \n class=\"ms-dropdown-input-wrapper\"\n [class.ms-input-error]=\"inputErrorState || isSelectionRequired()\"\n [class.ms-input-warning]=\"inputWarningState\"\n [class.ms-input-focus]=\"inputFocusState || isOpen || (selectedItems.length > 0)\">\n <label *ngIf=\"inputLabel\" [for]=\"inputLabel\" class=\"ms-dropdown-input-label\">{{ inputLabel }} <span *ngIf=\"required\" class=\"ms-required\">*</span></label>\n <input \n type=\"text\"\n class=\"ms-dropdown-input-field\"\n [placeholder]=\"inputPlaceholder\"\n [value]=\"selectedItem || text\"\n [disabled]=\"isDisabled\"\n [readonly]=\"true\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"ariaLabel\"\n [style.width]=\"btnWidth\" \n [style.minWidth]=\"btnMinWidth\" \n [style.maxWidth]=\"btnMaxWidth\"\n (click)=\"onTriggerClick(); $event.stopPropagation()\"\n (focus)=\"inputFocusState = true\"\n (blur)=\"onBlur()\" >\n </div>\n\n <!-- Input Field with Tags -->\n <!-- <div *ngIf=\"allowMultiple\" \n class=\"ms-dropdown-input-wrapper ms-dropdown-input-tags\"\n [class.ms-input-error]=\"inputErrorState || isSelectionRequired()\"\n [class.ms-input-warning]=\"inputWarningState\"\n [class.ms-input-focus]=\"inputFocusState || isOpen || (selectedItems.length > 0)\"\n [style.width]=\"btnWidth\" \n [style.minWidth]=\"btnMinWidth\" [style.maxWidth]=\"btnMaxWidth\"\n (blur)=\"onBlur()\">\n <label *ngIf=\"inputLabel\" [for]=\"inputLabel\" class=\"ms-dropdown-input-label\">{{ inputLabel }} <span *ngIf=\"required\" class=\"ms-required\">*</span></label>\n <div class=\"ms-input-tags-field\" (click)=\"onTriggerClick(); $event.stopPropagation()\">\n <span class=\"ms-tag ms-me-1\" *ngFor=\"let item of visibleTags\">\n {{ item.label }}\n <span class=\"ms-tag-close ms-ms-1\" (click)=\"removeTag(item, $event)\">×</span>\n </span>\n <span class=\"ms-tag ms-more-btn\"\n *ngIf=\"hiddenTagsCount() > 0\"\n (click)=\"toggleHiddenTags(); $event.stopPropagation()\">\n +{{ hiddenTagsCount() }} more\n </span>\n <div class=\"ms-hidden-tags-dropdown\"\n *ngIf=\"isHiddenTagsOpen\"\n (click)=\"$event.stopPropagation()\">\n <span class=\"ms-tag\" *ngFor=\"let item of hiddenTags\">\n {{ item.label }}\n <span class=\"ms-tag-close ms-ms-1\" (click)=\"removeTag(item, $event)\">×</span>\n </span>\n </div>\n <span *ngIf=\"selectedItems.length == 0\" class=\"ms-input-placeholder\">{{ inputPlaceholder || text }}</span>\n </div>\n </div> --> <!-- Button Trigger (Default) -->\n <!-- <ms-button class=\"ms-dropdown-trigger ms-d-flex ms-align-items-center ms-justify-content-center ms-p-2\"\n [ngClass]=\"['ms-rounded-' + radiussize, variant ? 'ms-btn ms-btn-' + variant : '', 'ms-btn-' + size, iconOnly ? 'ms-icon-btn' : '']\"\n [disabled]=\"isDisabled\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-label]=\"ariaLabel\" [style.width]=\"btnWidth\" \n [style.minWidth]=\"btnMinWidth\" [style.maxWidth]=\"btnMaxWidth\" *ngIf=\"!useInputField && multiSelectDisplay != 'tags'\">\n \n <ng-container *ngIf=\"icon && iconPosition === 'prefix'\">\n <span [inlineSVG]=\"icon\" class=\"ms-dropdown-icon\"></span>\n </ng-container>\n\n <span class=\"selectionClass\" *ngIf=\"!iconOnly\">\n {{ selectedItem || text }}\n </span>\n\n <ng-container *ngIf=\"icon && iconPosition === 'suffix'\">\n <span [inlineSVG]=\"icon\" class=\"ms-dropdown-icon ms-ml-2\"></span>\n </ng-container>\n\n <span *ngIf=\"icon\" [inlineSVG]=\"'../../../../assets/data-grid/icons/' + icon + '.svg'\" class=\"ms-ml-2\"></span>\n </ms-button> -->\n </div>\n\n\n <div *ngIf=\"isOpen\" class=\"ms-dropdown-menu\" [ngClass]=\"dropdownMenuClass\"\n [style.maxHeight]=\"maxHeight\"\n [ngStyle]=\"{'overflowY': scrollable ? 'auto' : 'visible', 'overflowX': 'hidden', 'width': dropdownMenuWidth}\"\n (click)=\"$event.stopPropagation()\">\n \n <!-- Loader -->\n <div *ngIf=\"loading\" class=\"ms-dropdown-loader\">\n <ms-spinner [color]=\"'primary'\" [size]=\"'md'\"></ms-spinner>\n </div>\n\n <!-- Dropdown content -->\n <ng-container *ngIf=\"!loading\">\n <!-- Search input -->\n <div *ngIf=\"searchable\" class=\"ms-dropdown-search-container\">\n <input type=\"text\" [(ngModel)]=\"searchTerm\"\n [placeholder]=\"searchPlaceholder\" class=\"ms-dropdown-search\" />\n </div>\n\n <!-- Dropdown items -->\n <ng-container *ngIf=\"filteredItems.length > 0; else noResults\">\n <button *ngFor=\"let item of filteredItems; let i = index\"\n class=\"ms-dropdown-item ms-d-flex ms-align-items-center\"\n [disabled]=\"item.disabled\"\n [class.ms-selected]=\"item.selected\"\n [class.ms-p-0]=\"item.divider\"\n [ngStyle]=\"{\n 'font-size': fontSize, 'font-weight': fontWeight\n }\"\n (click)=\"selectItem(item)\">\n <!-- ✅ MULTI-SELECT CHECKBOX -->\n <input *ngIf=\"allowMultiple && !item.divider\"\n type=\"checkbox\"\n class=\"ms-me-2\"\n [checked]=\"item.selected\"/>\n <span *ngIf=\"item.icon\" [inlineSVG]=\"'https://ds-doc.sentrixbar.com/assets/data-grid/icons/' + item.icon\" class=\"ms-dropdown-item-icon ms-d-flex ms-me-2\">\n \n </span>\n\n <!-- COUNTRY FLAG -->\n <img *ngIf=\"item.icon && showFlagImage\"\n [src]=\"'https://ds-doc.sentrixbar.com/assets/data-grid/flags/' + (item.countryCode | lowercase) + '.svg'\"\n class=\"ms-country-flag ms-me-2\"\n alt=\"{{ item.label }}\" />\n\n <!-- COUNTRY NAME -->\n <span class=\"ms-country-label\">\n {{ item.label }}\n </span>\n\n <!-- {{ item.label }} -->\n </button>\n </ng-container>\n\n <ng-template #noResults>\n <div class=\"ms-dropdown-no-results\">{{ noResultsText }}</div>\n </ng-template>\n </ng-container>\n </div>\n</div>","import { AfterViewInit, booleanAttribute, Component, ElementRef, EventEmitter, forwardRef, Input, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\n\n@Component({\n selector: 'ms-checkbox',\n imports: [],\n templateUrl: './ms-checkbox.html',\n styleUrl: './ms-checkbox.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MsCheckbox),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MsCheckbox),\n multi: true\n }\n ]\n})\nexport class MsCheckbox implements ControlValueAccessor, Validator{\n\n @Input() label?: string;\n\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: booleanAttribute }) skeleton = false;\n @Input({ transform: booleanAttribute }) required = false;\n @Input({ transform: booleanAttribute }) indeterminate = false;\n @Input({ transform: booleanAttribute }) invalidBox = false;\n @Input({ transform: booleanAttribute }) checked = false;\n @Output() htmlChange = new EventEmitter<string>();\n\n /* ---------- Internal state ---------- */\n touched = false;\n\n /* ---------- CVA ---------- */\n private onChange = (_: boolean) => {};\n private onTouched = () => {};\n\n writeValue(value: boolean): void {\n this.checked = !!value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /* ---------- Validation ---------- */\n validate(control: AbstractControl): ValidationErrors | null {\n if (this.required && !this.checked) {\n return { required: true };\n }\n return null;\n }\n\n /* ---------- UI Logic ---------- */\n toggle(): void {\n if (this.disabled || this.skeleton) return;\n\n this.indeterminate = false; // ✅ FIX\n this.checked = !this.checked;\n\n this.onChange(this.checked);\n this.markTouched();\n }\n\n markTouched(): void {\n if (!this.touched) {\n this.touched = true;\n this.onTouched();\n }\n }\n\n get invalid(): boolean {\n if(this.invalidBox){\n return true\n }\n return this.required && this.touched && !this.checked;\n }\n\n get classes(): string {\n return ['ms-checkbox'].filter(Boolean).join(' ');\n }\n /** Generate HTML string */\n getHtmlString(): string {\n const disabledAttr = this.disabled ? ' disabled' : '';\n let innerHtml : any= '';\n innerHtml = this.label;\n return `<ms-checkbox label=\"${innerHtml}\" [checked]=\"${this.checked}\" [skeleton]=\"${this.skeleton}\" [indeterminate]=\"${this.indeterminate}\" [invalidBox]=\"${this.invalidBox}\" class=\"${this.classes}\"${disabledAttr}></ms-checkbox>`;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngOnInit(): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n}","<label\n class=\"ms-checkbox\"\n [class.disabled]=\"disabled\"\n [class.invalid]=\"invalid\"\n [class.checkbox-skeleton]=\"skeleton\"\n>\n @if (skeleton) {\n <div class=\"ms-checkbox-skeleton\"></div>\n } @else {\n\n <input style=\"width: 16px;height: 16px;\"\n type=\"checkbox\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"toggle()\"\n (blur)=\"markTouched()\"\n />\n\n <span class=\"ms-checkbox-box\">\n @if (indeterminate) {\n <span class=\"ms-indeterminate\"></span>\n } @else if (checked) {\n <span class=\"ms-checkmark\">✓</span>\n }\n </span>\n\n @if (label) {\n <span class=\"ms-label\">{{ label }}</span>\n }\n }\n</label>\n\n","import { Component, ContentChild, ElementRef, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\n\ntype IconPosition = 'prefix' | 'suffix';\n@Component({\n selector: 'ms-badge',\n imports: [],\n templateUrl: './ms-badge.html',\n styleUrl: './ms-badge.scss',\n})\nexport class MsBadge {\n @Input() color: string = '';\n @Input() radiussize: string = '';\n @Input() block: boolean = false;\n @Input() disabled: boolean = false;\n @Input() isDark: boolean = false;\n @Input() skeleton = false;\n @Input() text: string = '';\n\n // Icon support\n @Input() icon: string | null = null; // e.g. 'fa fa-plus' or 'bi bi-search'\n @Input() iconOnly: string | null = null; // e.g. 'fa fa-plus' or 'bi bi-search'\n @Input() iconPosition: IconPosition = 'prefix'; // 'prefix' or 'suffix'\n\n @Input() class: string = '';\n @Output() htmlChange = new EventEmitter<string>();\n @Output() click = new EventEmitter<Event>();\n @ContentChild('projectedContent', { static: false }) projectedContent: any;\n\n get classes(): string {\n const radiusClass = this.radiussize !== 'none' ? `ms-rounded-${this.radiussize}` : '';\n // const color = `ms-badge-${this.color}` ;\n const color = this.isDark ? `ms-badge-${this.color}-dark` : `ms-badge-${this.color}`;\n const badge = `ms-badge`;\n return [\n // link,\n color,\n badge,\n radiusClass,\n this.block ? 'block' : '',\n ]\n .filter(Boolean)\n .join(' ')\n .trim();\n }\n\n get userClass() {\n return this.class;\n }\n\n /** Generate HTML string */\n getHtmlString(): string {\n const disabledAttr = this.disabled ? ' disabled' : '';\n const iconHtml = this.icon\n ? `<i class=\"${this.icon}\"></i>`\n : '';\n\n let innerHtml = '';\n\n if (this.iconOnly) {\n // Icon-only → just icon, centered\n innerHtml = `<i class=\"${this.icon} btn-icon\"></i>`;\n }\n else if (this.icon && this.iconPosition === 'prefix') {\n // Prefix → icon before text\n innerHtml = `<i class=\"${this.icon} btn-icon prefix\"></i> ${this.text}`;\n }\n else if (this.icon && this.iconPosition === 'suffix') {\n // Suffix → icon after text\n innerHtml = `${this.text} <i class=\"${this.icon} btn-icon suffix\"></i>`;\n }\n else {\n // Text only\n innerHtml = this.text;\n }\n \n\n return `<ms-badge text=\"${innerHtml}\" class=\"${this.classes}\"${disabledAttr}></ms-badge>`;\n }\n\n\n constructor(private el: ElementRef) { }\n\n\n ngOnChanges(changes: SimpleChanges): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngOnInit(): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngAfterContentInit() {\n // const inner = this.el.nativeElement.innerText.trim();\n // if (inner && !this.text) {\n // this.text = inner;\n // }\n }\n\n onClick(event: Event) {\n if (!this.disabled) {\n this.click.emit(event);\n } else {\n event.preventDefault();\n }\n }\n}\n","@if(skeleton){\n <span [class.badge-skeleton]=\"skeleton\" [class]=\"classes + ' ' + userClass\" >\n </span>\n \n}@else{\n <span [class.disabled]=\"disabled\" [class.badge-skeleton]=\"skeleton\" [class]=\"classes + ' ' + userClass\" (click)=\"onClick($event)\">\n <span>{{ text }}</span>\n </span>\n\n}","import { booleanAttribute, Component, EventEmitter, forwardRef, Input, Output, SimpleChanges } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\n\n@Component({\n selector: 'ms-toggle',\n imports: [],\n templateUrl: './ms-toggle.html',\n styleUrl: './ms-toggle.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MsToggle),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MsToggle),\n multi: true\n }\n ]\n})\nexport class MsToggle implements ControlValueAccessor, Validator {\n @Input() label?: any;\n @Input() class: string = '';\n @Input() size: string = '';\n @Input() skeleton = false;\n @Input({ transform: booleanAttribute }) disabled = false;\n @Input({ transform: booleanAttribute }) required = false;\n @Input({ transform: booleanAttribute }) invalid = false;\n @Input({ transform: booleanAttribute }) checked = false;\n @Output() htmlChange = new EventEmitter<string>();\n /* ---------- Internal ---------- */\n touched = false;\n\n /* ---------- CVA ---------- */\n private onChange = (_: boolean) => { };\n private onTouched = () => { };\n\n writeValue(value: boolean): void {\n this.checked = !!value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /* ---------- Validation ---------- */\n validate(_: AbstractControl): ValidationErrors | null {\n if (this.required && !this.checked) {\n return { required: true };\n }\n return null;\n }\n\n /* ---------- UI ---------- */\n toggle(): void {\n if (this.disabled) return;\n\n this.checked = !this.checked;\n this.onChange(this.checked);\n this.markTouched();\n }\n\n markTouched(): void {\n if (!this.touched) {\n this.touched = true;\n this.onTouched();\n }\n }\n\n get userClass() {\n return this.class;\n }\n\n get classes(): string {\n return ['ms-toggle-' + this.size].filter(Boolean).join(' ');\n }\n /** Generate HTML string */\n getHtmlString(): string {\n const disabledAttr = this.disabled ? ' disabled' : '';\n let innerHtml = '';\n innerHtml = this.label;\n return `<ms-toggle label=\"${innerHtml}\" class=\"${this.classes}\"${disabledAttr}></ms-toggle>`;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngOnInit(): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n}\n","<label class=\"ms-toggle\" [class.disabled]=\"disabled\" [class]=\"classes + ' ' + userClass\" [class.invalid]=\"invalid\" [class.toggle-skeleton]=\"skeleton\">\n @if(!skeleton){\n <input type=\"checkbox\" [checked]=\"checked\" [disabled]=\"disabled\" (change)=\"toggle()\" (blur)=\"markTouched()\" />\n <span class=\"ms-toggle-track\">\n <span class=\"ms-toggle-thumb\"></span>\n </span>\n @if (label) {\n <span class=\"ms-label\">{{ label }}</span>\n }\n }@else{\n <div class=\"ms-radio-skeleton\"></div>\n }\n</label>\n\n\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n AbstractControl,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\n@Component({\n selector: 'ms-radio-button',\n templateUrl: './ms-radio-button.html',\n styleUrls: ['./ms-radio-button.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MsRadioButton),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MsRadioButton),\n multi: true\n }\n ]\n})\nexport class MsRadioButton implements ControlValueAccessor, Validator {\n @Input() label?: string;\n @Input() name!: string;\n @Input() value!: any;\n\n @Input() disabled = false;\n @Input() required = false;\n @Input() invalidBox = false;\n @Input() skeleton = false;\n @Input() checked = false;\n @Output() htmlChange = new EventEmitter<string>();\n\n touched = false;\n\n private onChange = (_: any) => {};\n private onTouched = () => {};\n\n // CVA Methods\n writeValue(value: any): void {\n this.checked = value === this.value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Validation\n validate(control: AbstractControl): ValidationErrors | null {\n if (this.required && !control.value) {\n return { required: true };\n }\n return null;\n }\n\n // UI\n select(): void {\n if (this.disabled) return;\n\n this.checked = true;\n this.onChange(this.value);\n this.markTouched();\n }\n\n markTouched(): void {\n if (!this.touched) {\n this.touched = true;\n this.onTouched();\n }\n }\n\n get invalid(): boolean {\n return this.invalidBox; // 🔥 only rely on parent input for border\n }\n\n get classes(): string {\n return ['ms-radio'].filter(Boolean).join(' ');\n }\n /** Generate HTML string */\n getHtmlString(): string {\n const disabledAttr = this.disabled ? ' disabled' : '';\n let innerHtml: any = '';\n innerHtml = this.label;\n return `<ms-radio-button label=\"${innerHtml}\" [checked]=\"${this.checked}\" [skeleton]=\"${this.skeleton}\" [invalidBox]=\"${this.invalidBox}\"class=\"${this.classes}\"${disabledAttr}></ms-radio-button>`;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngOnInit(): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n}\n","<label class=\"ms-radio\"\n [class.checked]=\"checked\"\n [class.disabled]=\"disabled\"\n [class.radio-skeleton]=\"skeleton\"\n [class.invalid]=\"invalid\">\n \n @if (skeleton) {\n <div class=\"ms-radio-skeleton\"></div>\n } @else {\n <input\n type=\"radio\"\n [name]=\"name\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n (change)=\"select()\"\n (blur)=\"markTouched()\"\n />\n\n <span class=\"ms-radio-circle\">\n <span class=\"ms-radio-dot\"></span>\n </span>\n\n @if (label) {\n <span class=\"ms-label\">{{ label }}</span>\n }\n}\n</label>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, forwardRef, Input, signal } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor, FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'ms-input-field',\n standalone: true,\n imports: [CommonModule,FormsModule],\n templateUrl: './ms-input-field.html',\n styleUrls: ['./ms-input-field.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MsInputField),\n multi: true,\n },\n ],\n})\nexport class MsInputField implements ControlValueAccessor {\n @Input() type: 'text' | 'email' | 'password' | 'number' | 'date' | 'time' | 'tel' | 'url' | 'search' | 'color' | 'file' = 'text';\n @Input() id?: string;\n @Input() name?: string;\n @Input() placeholder?: string;\n @Input() state?: string;\n @Input() autocomplete?: string;\n @Input() readonly = false;\n @Input() disabled = false;\n @Input() required = false;\n @Input() skeleton = false;\n @Input() invalid = false;\n@Input() min?: number;\n@Input() max?: number;\n@Input() maxlength?: number;\n@Input() minlength?: number;\n\n @Input() step?: any | string;\n @Input() pattern?: string;\n @Input() inputmode?: 'text' | 'numeric' | 'decimal' | 'tel' | 'email' | 'url' | 'search';\n\n @Input() loading = false;\n\n // value = signal<string>('');\n hasError = signal<boolean>(false);\n isSuccess = signal<boolean>(false);\n\n@Input() fieldType: any = 'text'\n @Input() value = ''\n @Input() minValue: any = 0\n @Input() maxValue: any = 100\n @Input() prefix: string = ''\n // Events\n change = new EventEmitter<Event>();\n focus = new EventEmitter<Event>();\n blur = new EventEmitter<Event>();\n keydown = new EventEmitter<KeyboardEvent>();\n keyup = new EventEmitter<KeyboardEvent>();\n\n // CVA hooks\n private onChange: (val: any) => void = () => {};\n private onTouched: () => void = () => {};\nconstructor(private el: ElementRef,) {\n }\n\n ngOnInit(): void {\n if(this.state === 'ms-success'){\n this.isSuccess.set(true); // ✅ border green\n }\n if (this.fieldType === 'quantity' && this.value === '') {\n this.value = this.minValue;\n }\n }\n\n increment() {\n if (this.disabled || this.readonly) return;\n const numValue : any= typeof this.value === 'string' ? parseInt(this.value, 10) : this.value;\n if (numValue < this.maxValue) {\n let value : any= Math.min(numValue + this.step, this.maxValue)\n this.value = value;\n }\n }\n \n decrement() {\n if (this.disabled || this.readonly) return;\n const numValue: any = typeof this.value === 'string' ? parseInt(this.value, 10) : this.value;\n if (numValue > this.minValue) {\n let value : any=Math.max(numValue - this.step, this.minValue);\n this.value = value;\n }\n }\n \n onInputChange(event: any) {\n const val = parseInt(event.target.value, 10);\n if (!isNaN(val)) {\n let value : any = Math.max(this.minValue, Math.min(val, this.maxValue));\n this.value = value;\n }\n }\n \n getNumValue(): number {\n return typeof this.value === 'string' ? parseInt(this.value, 10) : this.value;\n }\n\n \n writeValue(val: any): void {\n this.value =(val ?? '');\n }\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleInput(event: Event) {\n const target = event.target as HTMLInputElement;\n const newVal = target.value;\n this.value = newVal;\n this.onChange(newVal);\n if (this.required && !newVal) {\n this.hasError.set(true);\n } else {\n this.hasError.set(false);\n }\n if ((this.type === 'email' || this.type === 'password') && this.pattern) {\n const regex = new RegExp(this.pattern);\n if (regex.test(newVal)) {\n this.isSuccess.set(true); // ✅ border green\n } else {\n this.hasError.set(true); // ❌ border red\n }\n if(this.state === 'ms-success'){\n this.isSuccess.set(true); // ✅ border green\n }\n }\n\n }\nhandleBlur(event: Event) {\n const val = this.value;\n this.blur.emit(event);\n\n // Required check\n if (this.required && !val) {\n this.hasError.set(true);\n return;\n }\n\n // Text length check\n if (['text','email','password','url','search'].includes(this.type)) {\n if ((this.minlength && val.length < this.minlength) ||\n (this.maxlength && val.length > this.maxlength)) {\n this.hasError.set(true);\n return;\n }\n }\n\n // Number/date/time check\n if (['number','date','time'].includes(this.type)) {\n const num = Number(val);\n if ((this.min !== undefined && num < this.min) ||\n (this.max !== undefined && num > this.max)) {\n this.hasError.set(true);\n return;\n }\n }\n\n // Pattern check\n if (this.pattern) {\n const regex = new RegExp(this.pattern);\n if (!regex.test(val)) {\n this.hasError.set(true);\n return;\n }\n }\n\n this.hasError.set(false);\n}\n\n\n// handleBlur(event: Event) {\n// this.blur.emit(event);\n// if (this.required && !this.value()) {\n// this.hasError.set(true);\n// } else {\n// this.hasError.set(false);\n// }\n// }\n}","<ng-container *ngIf=\"!loading; else skeleton\">\n @if(fieldType === 'quantity'){\n <div class=\"ms-quantity-field\"\n [class.ms-has-error]=\"invalid\"\n [class.ms-has-warning]=\"state === 'ms-warning'\"\n [class.ms-has-focus]=\"state === 'ms-focus'\">\n \n <input\n type=\"number\"\n class=\"ms-quantity-input ms-form-control\"\n [(ngModel)]=\"value\"\n [min]=\"minValue\"\n [max]=\"maxValue\"\n [step]=\"step\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [attr.aria-invalid]=\"invalid\"\n [attr.data-state]=\"state\"\n (change)=\"onInputChange($event)\"\n placeholder=\"{{placeholder}}\">\n \n <div class=\"ms-quantity-controls\">\n <button\n type=\"button\"\n class=\"ms-quantity-btn ms-quantity-plus\"\n [disabled]=\"disabled || (getNumValue() >= maxValue)\"\n (click)=\"increment()\"\n [attr.aria-label]=\"'Increase quantity'\">\n <span class=\"ms-quantity-icon\">+</span>\n </button>\n \n <button\n type=\"button\"\n class=\"ms-quantity-btn ms-quantity-minus\"\n [disabled]=\"disabled || (getNumValue() <= minValue)\"\n (click)=\"decrement()\"\n [attr.aria-label]=\"'Decrease quantity'\">\n <span class=\"ms-quantity-icon\">−</span>\n </button>\n </div>\n \n </div>\n }@else{\n <input\n class=\"ms-form-control\"\n [class.ms-error]=\"hasError()\"\n [class.ms-success]=\"isSuccess()\"\n [class]=\"state\"\n [attr.type]=\"type\"\n [attr.id]=\"id || null\"\n [attr.name]=\"name || null\"\n [attr.placeholder]=\"placeholder || null\"\n [attr.autocomplete]=\"autocomplete || null\"\n [attr.min]=\"min ?? null\"\n [attr.max]=\"max ?? null\"\n [attr.step]=\"step ?? null\"\n [attr.minlength]=\"minlength ?? null\"\n [attr.maxlength]=\"maxlength ?? null\"\n [class.invalid]=\"invalid\"\n [attr.pattern]=\"pattern || null\"\n [attr.inputmode]=\"inputmode || null\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [value]=\"value\"\n (input)=\"handleInput($event)\"\n (change)=\"change.emit($event)\"\n (focus)=\"focus.emit($event)\"\n (blur)=\"handleBlur($event)\"\n (keydown)=\"keydown.emit($event)\"\n (keyup)=\"keyup.emit($event)\"\n />\n }\n</ng-container>\n\n<ng-template #skeleton>\n <div class=\"ms-skeleton-input\"></div>\n</ng-template>\n\n<div class=\"ms-d-flex ms-flex-column ms-input-field-container\">\n <!-- <label [for]=\"label\" class=\"ms-mb-2\">{{label}}</label> -->\n \n \n \n <!-- Quantity Input -->\n \n</div>","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, forwardRef, Input, signal, ViewChild } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InlineSVGModule } from 'ng-inline-svg-2';\nimport { MsButton } from './../button/ms-button.component';\nimport { MsDropdown } from './../dropdown/dropdown';\n@Component({\n selector: 'ms-text-area',\n imports: [CommonModule, FormsModule, InlineSVGModule,MsButton ,MsDropdown ],\n templateUrl: './ms-text-area.html',\n styleUrl: './ms-text-area.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MsTextArea),\n multi: true,\n },\n ],\n})\nexport class MsTextArea {\n @Input() id?: string;\n @Input() name?: string;\n @Input() placeholder?: string;\n @Input() autocomplete?: string;\n @Input() readonly = false;\n @Input() disabled = false;\n @Input() required = false;\n @Input() loading = false;\n @Input() invalid = false;\n @Input() skeleton = false;\n @Input() minlength?: any =1;\n @Input() maxlength?: number = 500;\n @Input() ms_rows: number = 1; // default rows\n @Input() ms_cols?: number = 80;\n @Input() autoResize = false; // auto expand/shrink height\n @Input() resize: 'none' | 'both' | 'horizontal' | 'vertical' = 'vertical';\n@Input() scrollable = true; // allow scrollbars\n@Input() showResizeIcon: boolean = false;\n @Input() state?: string;\n\n\n\n @Input() isDisabled: boolean = false;\n @Input() showFormatOptions: boolean = false;\n @Input() maxWidth!: number;\n @Input() maxHeight!: number;\n\n value = signal<string>('');\n hasError = signal<boolean>(false);\n paragraphType: string = 'paragraph';\n isBold: boolean = false;\n isItalic: boolean = false;\n isUnderline: boolean = false;\n textAlignment: string = 'left';\n fontSize: string = '16px';\n fontWeight: string = 'normal';\n listType: string = 'none';\n showLinkDropdown: boolean = false;\n showImageDropdown: boolean = false;\n @ViewChild('textArea') textArea!: ElementRef<HTMLTextAreaElement>;\n linkUrl: string = '';\n linkText: string = '';\n imageUrl: string = '';\n imageAlt: string = '';\n\n formattingItems: any[] = [\n { label: 'Left align', icon: 'align-left.svg', value: 'left' },\n { label: 'Center align', icon: 'align-center.svg', value: 'center' },\n { label: 'Right align', icon: 'align-right.svg', value: 'right' },\n ]\n\n listTypeItems: any[] = [\n { label: 'Bulleted List', icon: 'bullet-list.svg', value: 'bulleted' },\n { label: 'Numbered List', icon: 'number-list.svg', value: 'numbered' },\n { label: 'Lettered List', icon: 'letters-list.svg', value: 'lettered' },\n ]\n\n paraTypeItems: any[] = [\n { label: 'Paragraph', icon: '', value: 'paragraph' },\n { label: 'Heading 1', icon: '', value: 'h1' },\n { label: 'Heading 2', icon: '', value: 'h2' },\n { label: 'Heading 3', icon: '', value: 'h3' },\n ]\n // Events\n change = new EventEmitter<Event>();\n focus = new EventEmitter<Event>();\n blur = new EventEmitter<Event>();\n\n // CVA hooks\n private onChange: (val: any) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(val: any): void {\n this.value.set(val ?? '');\n }\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleInput(event: Event) {\n const target = event.target as HTMLTextAreaElement;\n const newVal = target.value;\n this.value.set(newVal);\n this.onChange(newVal);\n\n // Required check\n if (this.required && !newVal) {\n this.hasError.set(true);\n return;\n }\n\n // Length check\n if ((this.minlength && newVal.length < this.minlength) ||\n (this.maxlength && newVal.length > this.maxlength)) {\n this.hasError.set(true);\n return;\n }\n // Auto resize logic\n if (this.autoResize) {\n target.style.height = 'auto'; // reset\n target.style.overflowY = this.scrollable ? 'auto' : 'hidden';\n\n const lineHeight = 24; // adjust based on CSS\n const minHeight = this.minlength * lineHeight;\n const maxHeight = this.maxlength ? this.maxlength * lineHeight : Infinity;\n\n const newHeight = Math.min(Math.max(target.scrollHeight, minHeight), maxHeight);\n target.style.height = `${newHeight}px`;\n }\n\n\n \n\n this.hasError.set(false);\n }\n\n handleBlur(event: Event) {\n this.blur.emit(event);\n this.onTouched();\n const val = this.value();\n this.blur.emit(event);\n\n // Required check\n if (this.required && !val) {\n this.hasError.set(true);\n return;\n }\n this.hasError.set(false);\n }\n\n onSelectItem(event: any) {\n this.changeTextAlignment(event.value);\n }\n\n onSelectlistType(event: any) {\n this.changeListType(event.value);\n }\n\n onSelectPara(event: any) {\n this.changeParagraphType(event.value);\n }\n\n changeParagraphType(type: string) {\n this.paragraphType = type;\n // Set font size and weight based on paragraph type\n switch(type) {\n case 'h1':\n this.fontSize = '32px';\n this.fontWeight = '700';\n break;\n case 'h2':\n this.fontSize = '24px';\n this.fontWeight = '600';\n break;\n case 'h3':\n this.fontSize = '20px';\n this.fontWeight = '600';\n break;\n case 'paragraph':\n default:\n this.fontSize = '16px';\n this.fontWeight = '400';\n }\n }\n\n // List type method\n textValue = '';\n changeListType(type: string) {\n this.listType = type;\n\n if (!this.textValue) {\n this.textValue = this.getListPrefix(type);\n return;\n }\n\n const lines = this.textValue.split('\\n');\n\n this.textValue = lines\n .map((line, index) => {\n if (!line.trim()) return line;\n\n switch (type) {\n case 'bulleted':\n return `• ${line.replace(/^(\\•|\\d+\\.|[a-z]\\.)\\s*/, '')}`;\n\n case 'numbered':\n return `${index + 1}. ${line.replace(/^(\\•|\\d+\\.|[a-z]\\.)\\s*/, '')}`;\n\n case 'lettered':\n return `${String.fromCharCode(97 + index)}. ${line.replace(/^(\\•|\\d+\\.|[a-z]\\.)\\s*/, '')}`;\n\n default:\n return line.replace(/^(\\•|\\d+\\.|[a-z]\\.)\\s*/, '');\n }\n })\n .join('\\n');\n }\n\n getListPrefix(type: string): string {\n switch (type) {\n case 'bulleted': return '• ';\n case 'numbered': return '1. ';\n case 'lettered': return 'a. ';\n default: return '';\n }\n }\n\n handleEnter(event: Event) {\n const keyboardEvent = event as KeyboardEvent;\n\n if (this.listType === 'none') return;\n\n keyboardEvent.preventDefault();\n\n const textarea = keyboardEvent.target as HTMLTextAreaElement;\n const cursorPos = textarea.selectionStart;\n\n const beforeCursor = this.textValue.substring(0, cursorPos);\n const afterCursor = this.textValue.substring(cursorPos);\n\n const lines = beforeCursor.split('\\n');\n const currentLineIndex = lines.length - 1;\n\n let prefix = '';\n\n switch (this.listType) {\n case 'bulleted':\n prefix = '• ';\n break;\n\n case 'numbered':\n prefix = `${currentLineIndex + 2}. `;\n break;\n\n case 'lettered':\n prefix = `${String.fromCharCode(97 + currentLineIndex + 1)}. `;\n break;\n }\n\n this.textValue =\n beforeCursor + '\\n' + prefix + afterCursor;\n\n setTimeout(() => {\n textarea.selectionStart =\n textarea.selectionEnd =\n cursorPos + 1 + prefix.length;\n });\n }\n\n \n // Formatting methods\n toggleBold() {\n this.isBold = !this.isBold;\n }\n\n toggleItalic() {\n this.isItalic = !this.isItalic;\n }\n\n toggleUnderline() {\n this.isUnderline = !this.isUnderline;\n }\n\n changeTextAlignment(alignment: string) {\n this.textAlignment = alignment;\n }\n\n // Link insertion methods\n toggleLinkDropdown() {\n this.showLinkDropdown = !this.showLinkDropdown;\n if (this.showLinkDropdown) {\n this.showImageDropdown = false;\n }\n }\n\n closeLinkDropdown() {\n this.showLinkDropdown = false;\n }\n\ninsertLink() {\n if (!this.linkUrl || !this.linkText) {\n alert('Please enter both link text and URL');\n return;\n }\n\n const textarea = this.textArea.nativeElement;\n const start = textarea.selectionStart;\n const end = textarea.selectionEnd;\n\n const linkMarkdown = `[${this.linkText}](${this.linkUrl})`;\n\n // Insert at cursor position\n this.textValue =\n this.textValue.substring(0, start) +\n linkMarkdown +\n this.textValue.substring(end);\n\n // Restore cursor position after insertion\n setTimeout(() => {\n textarea.selectionStart =\n textarea.selectionEnd =\n start + linkMarkdown.length;\n textarea.focus();\n });\n\n // Reset dropdown state\n this.linkUrl = '';\n this.linkText = '';\n this.closeLinkDropdown();\n}\n\n\n // Image insertion methods\n toggleImageDropdown() {\n this.showImageDropdown = !this.showImageDropdown;\n if (this.showImageDropdown) {\n this.showLinkDropdown = false;\n }\n }\n\n closeImageDropdown() {\n this.showImageDropdown = false;\n }\n\n insertImage() {\n if (!this.imageUrl) {\n alert('Please enter image URL');\n return;\n }\n const imageMarkdown = ``;\n console.log('Insert image:', imageMarkdown);\n this.imageUrl = '';\n this.imageAlt = '';\n this.closeImageDropdown();\n }\n\n}\n","<ng-container *ngIf=\"!loading; else skeleton\">\n @if(!showFormatOptions){\n <textarea\n class=\"ms-textArea\"\n [class.ms-error]=\"hasError()\"\n [class.invalid]=\"invalid\"\n [class]=\"state\"\n [id]=\"id\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [autocomplete]=\"autocomplete\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [attr.minlength]=\"minlength ?? null\"\n [attr.maxlength]=\"maxlength ?? null\"\n [rows]=\"ms_rows\"\n [cols]=\"ms_cols\"\n [value]=\"value()\"\n (input)=\"handleInput($event)\"\n (blur)=\"handleBlur($event)\"\n [style.resize]=\"showResizeIcon ? 'vertical' : 'none'\"\n [style.overflowY]=\"scrollable ? 'auto' : 'hidden'\"\n \n ></textarea>\n }@else if(showFormatOptions){\n <div class=\"ms-position-relative textarea-container\" [class]=\"state\">\n <div class=\"formatting-toolbar ms-position-absolute ms-d-flex ms-gap-2 ms-align-items-center ms-border\" style=\"background-color: #f9fafb; border-start-start-radius: 20px;\n border-start-end-radius: 20px;\" >\n <!-- Paragraph Type Dropdown -->\n\n <ms-dropdown [items]=\"paraTypeItems\" [dropdownMenuWidth]=\"'170px'\" [selectedItem]=\"'Paragraph'\" [closeOnClickOutside]=\"true\" [size]=\"''\" [btnMinWidth]=\"''\" [variant]=\"''\" [btnMaxWidth]=\"''\" (selectionChange)=\"onSelectPara($event)\"></ms-dropdown>\n\n <div class=\"formatting-divider\"></div>\n\n <!-- Bold Button -->\n <ms-button \n (click)=\"toggleBold()\" \n [class.active]=\"isBold\"\n class=\"formatting-btn ms-d-flex ms-align-items-center ms-justify-content-center\"\n title=\"Bold\">\n B\n </ms-button>\n\n <div class=\"formatting-divider\"></div>\n\n <!-- Italic Button -->\n <ms-button \n (click)=\"toggleItalic()\" \n [class.active]=\"isItalic\"\n class=\"formatting-btn ms-d-flex ms-align-items-center ms-justify-content-center\"\n title=\"Italic\">\n I\n </ms-button>\n\n <div class=\"formatting-divider\"></div>\n\n <!-- Underline Button -->\n <ms-button \n (click)=\"toggleUnderline()\" \n [class.active]=\"isUnderline\"\n class=\"formatting-btn ms-d-flex ms-align-items-center ms-justify-content-center\"\n title=\"Underline\">\n U\n </ms-button>\n\n <div class=\"formatting-divider\"></div>\n\n <!-- Text Alignment Dropdown -->\n <ms-dropdown [items]=\"formattingItems\" [dropdownMenuWidth]=\"'170px'\" [selectedItem]=\"'Left align'\" [closeOnClickOutside]=\"true\" [size]=\"''\" [btnMinWidth]=\"''\" [variant]=\"''\" [btnMaxWidth]=\"''\" (selectionChange)=\"onSelectItem($event)\"></ms-dropdown>\n\n <div class=\"formatting-divider\"></div>\n\n <ms-dropdown [items]=\"listTypeItems\" [dropdownMenuWidth]=\"'170px'\" [selectedItem]=\"'Bulleted List'\" [closeOnClickOutside]=\"true\" [size]=\"''\" [btnMinWidth]=\"''\" [variant]=\"''\" (selectionChange)=\"onSelectlistType($event)\"></ms-dropdown>\n\n <div class=\"formatting-divider\"></div>\n <!-- Link Button -->\n <div class=\"ms-position-relative\">\n <ms-button \n (click)=\"toggleLinkDropdown()\" \n class=\"formatting-btn ms-d-flex ms-align-items-center ms-justify-content-center\"\n title=\"Insert Link\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"></path>\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"></path>\n </svg>\n </ms-button>\n\n <!-- Link Dropdown -->\n <div *ngIf=\"showLinkDropdown\" class=\"insertion-dropdown link-dropdown\">\n <div class=\"dropdown-form-group\">\n <label>Link Text:</label>\n <input type=\"text\" [(ngModel)]=\"linkText\" placeholder=\"Enter link text\" />\n </div>\n <div class=\"dropdown-form-group\">\n <label>URL:</label>\n <input type=\"text\" [(ngModel)]=\"linkUrl\" placeholder=\"https://example.com\" />\n </div>\n <div class=\"dropdown-buttons\">\n <ms-button (click)=\"insertLink()\" class=\"btn-insert ms-d-flex ms-align-items-center ms-justify-content-center\">Insert</ms-button>\n <ms-button (click)=\"closeLinkDropdown()\" class=\"btn-cancel ms-d-flex ms-align-items-center ms-justify-content-center\">Cancel</ms-button>\n </div>\n </div>\n </div>\n\n <!-- Image Button -->\n <div class=\"ms-position-relative\">\n <ms-button \n (click)=\"toggleImageDropdown()\" \n class=\"formatting-btn ms-d-flex ms-align-items-center ms-justify-content-center\"\n title=\"Insert Image\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect>\n <circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"></circle>\n <polyline points=\"21 15 16 10 5 21\"></polyline>\n </svg>\n </ms-button>\n\n <!-- Image Dropdown -->\n <div *ngIf=\"showImageDropdown\" class=\"insertion-dropdown image-dropdown\">\n <div class=\"dropdown-form-group\">\n <label>Image URL:</label>\n <input type=\"text\" [(ngModel)]=\"imageUrl\" placeholder=\"https://example.com/image.jpg\" />\n </div>\n <div class=\"dropdown-form-group\">\n <label>Alt Text:</label>\n <input type=\"text\" [(ngModel)]=\"imageAlt\" placeholder=\"Image description\" />\n </div>\n <div class=\"dropdown-buttons\">\n <ms-button (click)=\"insertImage()\" class=\"btn-insert ms-d-flex ms-align-items-center ms-justify-content-center\">Insert</ms-button>\n <ms-button (click)=\"closeImageDropdown()\" class=\"btn-cancel ms-d-flex ms-align-items-center ms-justify-content-center\">Cancel</ms-button>\n </div>\n </div>\n </div>\n </div>\n <textarea\n #textArea\n placeholder=\"Enter name\"\n [(ngModel)]=\"textValue\"\n [attr.rows]=\"ms_rows\"\n [attr.cols]=\"ms_cols\"\n [attr.maxlength]=\"maxlength\"\n [attr.readonly]=\"readonly ? true : null\"\n [attr.disabled]=\"disabled ? true : null\"\n [style.resize]=\"autoResize ? 'both' : 'none'\"\n [style.overflow]=\"scrollable ? 'auto' : 'hidden'\"\n [style.textAlign]=\"textAlignment\"\n [style.fontSize]=\"fontSize\"\n [style.fontWeight]=\"isBold ? 'bold' : fontWeight\"\n [style.fontStyle]=\"isItalic ? 'italic' : 'normal'\"\n [style.textDecoration]=\"isUnderline ? 'underline' : 'none'\"\n [style.paddingLeft]=\"listType !== 'none' ? '32px' : '12px'\"\n [ngClass]=\"'list-' + listType\" (keydown.enter)=\"handleEnter($event)\"\n class=\"ms-textArea\" \n [ngStyle]=\"{ \n 'max-width': maxWidth ? maxWidth + 'px' : 'auto',\n 'max-height': maxHeight ? maxHeight + 'px' : 'auto',\n 'padding-top': showFormatOptions ? '70px' : '0', \n 'border-radius': '20px', 'overflowY': 'auto'\n }\"></textarea>\n</div>\n }\n\n</ng-container>\n\n<ng-template #skeleton>\n <div class=\"ms-skeleton-text\"></div>\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { Component, ContentChild, ElementRef, EventEmitter, HostListener, Input, Output, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'ms-avatar',\n imports: [CommonModule],\n templateUrl: './ms-avatar.html',\n styleUrl: './ms-avatar.scss',\n})\nexport class MsAvatar {\n\n @Input() color: string = '';\n @Input() variant: any;\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\n @Input() text?: string = '';\n @Input() icon?: any;\n @Input() img?: string = '';\n @Input() shape: 'circle' | 'square' = 'circle';\n @Input() disabled: boolean = false;\n @Input() skeleton: boolean = false;\n @Input() isStatusShow: boolean = false;\n @Input() subType?: string;\n @Input() label?: any;\n @Input() label2?: any;\n @Input() status?: any;\n @Input() max?: number = 3;\n @Input() avatars: Array<{\n src?: string;\n initials?: string;\n text?: string;\n }> = [];\n\n\n\n\n\n\n\n\n @Input() block: boolean = false;\n\n\n @Input() class: string = '';\n @Output() htmlChange = new EventEmitter<string>();\n @Output() click = new EventEmitter<Event>();\n @ContentChild('projectedContent', { static: false }) projectedContent: any;\n @Output() avatarClick = new EventEmitter<void>();\n sizeClass: any\n get isSubType(): boolean {\n return ['primary', 'combine', 'secondory'].includes(this.subType ?? '');\n}\n get classes(): string {\n if (this.subType) {\n this.size = 'xl'\n }\n const sizeClass = this.size ? `ms-avatar-${this.size}` : '';\n this.sizeClass = this.size ? `ms-avatar-${this.size}` : '';\n const shapeClass = this.shape ? `ms-avatar-${this.shape}` : '';\n\n const disabledClass = this.disabled ? 'ms-avatar-disabled' : '';\n if (this.skeleton) {\n return [\n 'ms-avatar-skeleton', sizeClass,\n shapeClass,]\n .filter(Boolean)\n .join(' ')\n .trim();\n } else {\n return [\n 'ms-avatar',\n sizeClass,\n shapeClass,\n disabledClass,\n ]\n .filter(Boolean)\n .join(' ')\n .trim();\n }\n\n }\n\n get userClass() {\n return this.class;\n }\n\n /** Generate HTML string */\n // getHtmlString(): string {\n // const disabledAttr = this.disabled ? ' disabled' : '';\n // let innerHtml = '';\n // innerHtml = this.initials\n // return `<ms-avatar text=\"${innerHtml}\" class=\"${this.classes}\"${disabledAttr}></ms-avatar>`;\n // }\n\n getHtmlString(): any {\n const disabledAttr = this.disabled ? ' disabled' : '';\n \n // <option value=\"single_initials\">Single Initials</option>\n // <option value=\"single_image\">Single Image</option>\n // <option value=\"multi_initials\">Multi Initials</option>\n // <option value=\"multi_image\">Multi Image</option>\n let innerHtml = '';\n if(this.skeleton){\n this.variant = ''\n \n }\n\n if(this.variant === 'multi_initials'){\n return `<ms-avatar ${this.attr('variant', this.variant)} ${this.attr('subType', this.subType)} ${this.attr('size', this.size)} ${this.attr('text', this.text)} ${this.attr('label', this.label)}\n ${this.attr('label2', this.label2)} ${this.attr('img', this.img)} ${this.attr('shape', this.shape)} ${this.attr('skeleton', this.skeleton)} ${this.attr('disabled', this.disabled)} ${this.attr('isStatusShow', this.isStatusShow)}\n ${this.attr('status', this.status)} avatars=\"[{ initials:'Avatar text'},{ initials:'Avatar text'},{ initials:'Avatar text'}]\"></ms-avatar>`.replace(/\\s+/g, ' ')\n.replace('<ms-avatar ', '<ms-avatar ')\n.trim();\n }else if(this.variant === 'multi_image'){\n return `<ms-avatar ${this.attr('variant', this.variant)} ${this.attr('subType', this.subType)} ${this.attr('size', this.size)} ${this.attr('text', this.text)} ${this.attr('label', this.label)}\n ${this.attr('label2', this.label2)} ${this.attr('img', this.img)} ${this.attr('shape', this.shape)} ${this.attr('skeleton', this.skeleton)} ${this.attr('disabled', this.disabled)} ${this.attr('isStatusShow', this.isStatusShow)}\n ${this.attr('status', this.status)} avatars=\"[{ src: 'https://i.pravatar.cc/300' ,text:'Avatar text'},{ src: 'https://i.pravatar.cc/300',text:'Avatar text' },{ src: 'https://i.pravatar.cc/300',text:'Avatar text' }]\"></ms-avatar>`.replace(/\\s+/g, ' ')\n.replace('<ms-avatar ', '<ms-avatar ')\n.trim();\n }else {\n return `<ms-avatar ${this.attr('variant', this.variant)} ${this.attr('subType', this.subType)} ${this.attr('size', this.size)} ${this.attr('text', this.text)} ${this.attr('label', this.label)}\n ${this.attr('label2', this.label2)} ${this.attr('img', this.img)} ${this.attr('shape', this.shape)} ${this.attr('skeleton', this.skeleton)} ${this.attr('disabled', this.disabled)} ${this.attr('isStatusShow', this.isStatusShow)}\n ${this.attr('status', this.status)}></ms-avatar>`.replace(/\\s+/g, ' ')\n.replace('<ms-avatar ', '<ms-avatar ')\n.trim();\n }\n\n\n\n\n\n // if (this.variant === 'initials') {\n // // innerHtml = this.initials;\n // if (this.isStatusShow) {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [isStatusShow]=\"${this.isStatusShow}\" [disabled]=\"${this.disabled}\" [subType]=\"${this.subType}\" [text]=\"${innerHtml}\" [status]=\"${this.status}\" ${disabledAttr}> </ms-avatar>`.trim();\n // } else if (this.subType === 'primary' || this.subType === 'secondory') {\n // if (this.isStatusShow) {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [label]=\"${this.label}\" [isStatusShow]=\"${this.isStatusShow}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" [status]=\"${this.status}\" ${disabledAttr}> </ms-avatar>`.trim();\n // } else {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [label]=\"${this.label}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" ${disabledAttr}> </ms-avatar>`.trim();\n // }\n // } else if (this.subType === 'combine') {\n // if (this.isStatusShow) {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [label]=\"${this.label}\" [isStatusShow]=\"${this.isStatusShow}\" [status]=\"${this.status}\" [label2]=\"${this.label2}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" ${disabledAttr}> </ms-avatar>`.trim();\n // } else {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [label]=\"${this.label}\" [label2]=\"${this.label2}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" ${disabledAttr}> </ms-avatar>`.trim();\n // }\n // } else {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [disabled]=\"${this.disabled}\" [text]=\"'${this.text}'\" ${disabledAttr}> </ms-avatar>`.trim();\n // }\n // } else if (this.variant === 'image') {\n // if (this.isStatusShow) {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [isStatusShow]=\"${this.isStatusShow}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" [img]=\"${this.img}\" [status]=\"${this.status}\" ${disabledAttr}> </ms-avatar>`.trim();\n // } else if (this.subType === 'primary' || this.subType === 'secondory') {\n // if (this.isStatusShow) {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [img]=\"${this.img}\" [label]=\"${this.label}\" [isStatusShow]=\"${this.isStatusShow}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" [status]=\"${this.status}\" ${disabledAttr}> </ms-avatar>`.trim();\n // } else {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [img]=\"${this.img}\" [label]=\"${this.label}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" ${disabledAttr}> </ms-avatar>`.trim();\n // }\n // } else if (this.subType === 'combine') {\n // if (this.isStatusShow) {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [img]=\"${this.img}\" [label]=\"${this.label}\" [isStatusShow]=\"${this.isStatusShow}\" [status]=\"${this.status}\" [label2]=\"${this.label2}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" ${disabledAttr}> </ms-avatar>`.trim();\n // } else {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [subType]=\"${this.subType}\" [img]=\"${this.img}\" [label]=\"${this.label}\" [label2]=\"${this.label2}\" [text]=\"'${this.text}'\" [disabled]=\"${this.disabled}\" ${disabledAttr}> </ms-avatar>`.trim();\n // }\n // } else {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [disabled]=\"${this.disabled}\" [img]=\"${this.img}\" ${disabledAttr}> </ms-avatar>`.trim();\n // }\n // } else if (this.skeleton) {\n // return `<ms-avatar class=\"${this.classes}\" [skeleton]=\"${this.skeleton}\"> </ms-avatar>`.trim();\n // } else if (this.group) {\n // if (this.variant === 'initials') {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [disabled]=\"${this.disabled}\" [group]=\"${this.group}\" [avatars]=\"[{ initials:'faheem Ashraf'},{ initials:'faheem Ashraf'},{ initials:'faheem Ashraf'}]\"> </ms-avatar>`.trim();\n // } else {\n // return `<ms-avatar class=\"${this.classes}\" [variant]=\"${this.variant}\" [disabled]=\"${this.disabled}\" [group]=\"${this.group}\" [avatars]=\"[{ src: 'https://i.pravatar.cc/300' ,text:'faheem Ashraf'},{ src: 'https://i.pravatar.cc/300',text:'faheem Ashraf' },{ src: 'https://i.pravatar.cc/300',text:'faheem Ashraf' }]\"> </ms-avatar>`.trim();\n // }\n // }\n }\n\n private attr(name: string, value: any): string {\n if (\n value === null ||\n value === undefined ||\n value === '' ||\n value === 'undefined'\n ) {\n return '';\n }\n return ` ${name}=\"${value}\"`;\n}\n\n get initials(): string {\n if (!this.text) return '';\n return this.text\n .split(' ')\n .map(n => n[0])\n .join('')\n .substring(0, 2)\n .toUpperCase();\n }\n getInitialName(name: any): string {\n if (!name) return '';\n return name\n .split(' ')\n .map((n: any) => n[0])\n .join('')\n .substring(0, 2)\n .toUpperCase();\n }\n\n\n constructor(private el: ElementRef,) { }\n\n\n ngOnChanges(changes: SimpleChanges): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngOnInit(): void {\n this.htmlChange.emit(this.getHtmlString());\n }\n\n ngAfterContentInit() {\n // const inner = this.el.nativeElement.innerText.trim();\n // if (inner && !this.text) {\n // this.text = inner;\n // }\n }\n\n onClick(event: Event) {\n if (!this.disabled) {\n this.click.emit(event);\n } else {\n event.preventDefault();\n }\n }\n\n\n get visibleAvatars() {\n if (!this.max) return this.avatars;\n return this.avatars;\n }\n\n get extraCount(): number {\n if (!this.max) return 0;\n return this.avatars.length - this.max;\n }\n\n extraOpen = false;\n expanded = false;\n\n get extraAvatars() {\n return this.avatars.slice(this.max);\n }\n\n get visibleExtraCount() {\n return this.expanded ? this.extraAvatars.length : 3;\n }\n\n toggleExtra(event: MouseEvent) {\n event.stopPropagation();\n this.extraOpen = !this.extraOpen;\n this.expanded = false; // reset on reopen\n }\n\n // 👇 Listen for clicks anywhere in the document\n @HostListener('document:click', ['$event'])\n clickOutside(event: Event) {\n if (this.extraOpen && !this.el.nativeElement.contains(event.target)) {\n this.extraOpen = false;\n this.expanded = false;\n }\n }\n\n\n toggleExpand() {\n this.expanded = !this.expanded;\n }\n}\n","@if(skeleton){\n<div class=\"ms-avatar-skeleton\" [class]=\"shape\"></div>\n}@else{\n @if(!isSubType && (variant === 'single_image' || variant === 'single_initials') ){\n <div class=\"ms-avatar\" [class]=\"classes + ' ' + userClass\" [ngClass]=\"{'no-background': variant === 'single_image'}\" [class.disabled]=\"disabled\" (click)=\"onClick($event)\">\n <!-- IMAGE -->\n <img *ngIf=\"variant === 'single_image' && img\" [src]=\"img\" [title]=\"text\" [class]=\"sizeClass\" \n [class]=\"'ms-avatar-img-'+ shape\" />\n <!-- INITIALS -->\n <span *ngIf=\"variant === 'single_initials' && text\" [class]=\"sizeClass\" [title]=\"text\">\n {{ initials }}\n </span>\n <span *ngIf=\"isStatusShow\" class=\"ms-avatar-status\" [class.online]=\"status === 'online'\"\n [class.offline]=\"status === 'offline'\" [class.busy]=\"status === 'busy'\"></span>\n </div>\n } @else if(!isSubType && (variant === 'multi_initials' || variant === 'multi_image')) {\n <!-- AVATAR GROUP -->\n <div class=\"ms-avatar-group\">\n <ng-container *ngFor=\"let avatar of avatars | slice:0:max; let i = index;\">\n <div class=\"ms-avatar ms-ms\" [class]=\"classes + ' ' + userClass\" [class.disabled]=\"disabled\" [ngClass]=\"{'no-background': variant === 'multi_image'}\"\n (click)=\"onClick($event)\">\n <!-- IMAGE -->\n <img *ngIf=\"variant === 'multi_image' && avatar.src\" [src]=\"avatar.src\" [class]=\"'ms-avatar-img-'+ shape\"\n [title]=\"avatar?.text\" />\n <!-- INITIALS -->\n <span *ngIf=\"variant === 'multi_initials' && avatar.initials\" [class]=\"sizeClass\" [title]=\"avatar?.initials\">\n {{ getInitialName(avatar.initials) }}\n </span>\n </div>\n </ng-container>\n <div *ngIf=\"avatars.length > max\" (click)=\"toggleExtra($event)\" class=\"ms-avatar extra ms-ms\"\n [class]=\"classes + ' ' + userClass\">\n +{{ avatars.length - max }}\n </div>\n </div>\n <div *ngIf=\"extraOpen\" class=\"ms-avatar-dropdown\">\n <div class=\"ms-avatar-list ms-mt-2\" [class.scroll]=\"expanded\">\n <ng-container *ngFor=\"let avatar of expanded ? extraAvatars : (extraAvatars | slice:0:3)\">\n <div class=\"ms-ms ms-dropdown-data\">\n @if(variant === 'multi_image' && avatar.src){\n <div class=\"ms-d-flex ms-align-items-center ms-mx-2\">\n <img *ngIf=\"variant === 'multi_image' && avatar.src\" [src]=\"avatar.src\" class=\"ms-me-2\"\n [class]=\"'ms-avatar-img-'+ shape\" style=\"width: 24px;height: 24px;\" [title]=\"avatar.text\" />\n <span *ngIf=\"variant === 'multi_image' && avatar.text\" [title]=\"avatar.text\">{{ avatar.text }}</span>\n </div>\n }@else if(variant === 'multi_initials' && avatar.initials){\n <div class=\"ms-d-flex ms-align-items-center ms-mx-2\">\n <div class=\"ms-avatar-group\">\n <div class=\"ms-me-2\" [class]=\"classes + ' ' + userClass\">\n <span [class]=\"sizeClass\" [title]=\"avatar?.initials\">\n {{ getInitialName(avatar.initials) }}\n </span>\n </div>\n </div>\n <span *ngIf=\"variant === 'multi_initials'\" [title]=\"avatar.initials\">{{ avatar.initials }}</span>\n </div>\n }\n </div>\n </ng-container>\n </div>\n \n <!-- ACTION -->\n <div class=\"ms-avatar-action\" (click)=\"toggleExpand()\">\n {{ expanded ? 'Show less' : 'Show more' }}\n </div>\n \n </div>\n } @else if(isSubType && (variant === 'single_image' || variant === 'single_initials') ){\n <div class=\"ms-d-flex ms-align-items-center\">\n <div class=\"ms-avatar\" [class]=\"classes + ' ' + userClass\" [class.disabled]=\"disabled\" (click)=\"onClick($event)\">\n <!-- IMAGE -->\n <img *ngIf=\"variant === 'single_image' && img\" [src]=\"img\" [title]=\"text\" [class]=\"sizeClass\"\n [class]=\"'ms-avatar-img-'+ shape\" />\n <!-- INITIALS -->\n <span *ngIf=\"variant === 'single_initials'\" [class]=\"sizeClass\" [title]=\"text\">\n {{ initials }}\n </span>\n <span *ngIf=\"isStatusShow\" class=\"ms-avatar-status\" [class.online]=\"status === 'online'\"\n [class.offline]=\"status === 'offline'\" [class.busy]=\"status === 'busy'\"></span>\n </div>\n @if(subType != 'combine'){\n <div class=\"ms-d-flex ms-ms-2\">\n <div *ngIf=\"label\" [title]=\"label\">\n @if(subType === 'primary'){\n <span class=\"ms-label-primary\">{{ label }}</span>\n } @else if(subType === 'secondory'){\n <span class=\"ms-label-secondory\">{{ label }}</span>\n }\n </div>\n </div>\n }@else{\n <div *ngIf=\"label && label2 && subType === 'combine'\" [title]=\"label\" class=\"ms-d-flex ms-ms-2 ms-flex-column\">\n <span class=\"ms-label-primary\">{{ label }}</span>\n <span class=\"ms-label-secondory\">{{ label2 }}</span>\n </div>\n }\n \n </div>\n }\n}","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ms-pagination',\n imports: [],\n templateUrl: './ms-pagination.html',\n styleUrl: './ms-pagination.scss',\n})\nexport class MsPagination {\n\n}\n","<p>ms-pagination works!</p>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\ninterface SidebarItem {\n id: string;\n label: string;\n router: string;\n}\n\ninterface SidebarSection {\n title: string;\n id: string;\n icon: string;\n router?: string;\n sub_menu: SidebarItem[];\n}\nexport const MS_SVG_PATH = 'assets/ui-library/svg/';\n\n@Component({\n selector: 'ms-sidebar',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './ms-sidebar.html',\n styleUrl: './ms-sidebar.scss',\n})\nexport class MsSidebar {\n @Input() id?: string;\n @Input() search = false;\n @Input() setting = false;\n @Input() userDetail = false;\n @Input() badge = false;\n @Input() details: any;\n @Output() select = new EventEmitter<Event>();\n\n\nsearchText: string = '';\nfilteredMenuData: any[] = [];\n\n isCollapsed = false;\n // openSections: any;\n // openSections: { [key: string]: boolean } = {};\n flyoutSectionId: string | null = null;\n flyoutItems: SidebarItem[] = [];\n flyoutTop: number = 0;\n profileFlyoutVisible = false;\n accounts = [\n { name: 'John Doe', email: 'john@example.com', selected: true },\n { name: 'Jane Smith', email: 'jane@example.com', selected: false }\n ];\n activeItem: string = '';\n userName: string = 'John Doe';\n isSearchVisible = true;\n private prevScrollTop = 0;\n\n get userInitials(): string {\n return this.userName.split(' ').map(n => n[0]).join('').toUpperCase().slice(0, 2);\n }\n\n getInitials(name: string): string {\n return name.split(' ').map(n => n[0]).join('').toUpperCase().slice(0, 2);\n }\n\n\nselectedSectionId: any = null;\n\n ngOnInit() {\n this.filteredMenuData = JSON.parse(JSON.stringify(this.details));\n}\n\n toggleSidebar() {\n this.isCollapsed = !this.isCollapsed;\n }\n\n toggleSection(item: any, event?: any) {\n let detailFull: any = {\n fullDetail: '',\n activeItem: item\n }\n this.select.emit(detailFull);\n this.selectedSectionId = item.id;\n // COLLAPSED MODE → flyout open / close\n if (this.isCollapsed) {\n if (this.flyoutSectionId === item?.id) {\n this.flyoutSectionId = null;\n this.flyoutItems = [];\n } else {\n this.flyoutSectionId = item?.id;\n const section = this.details.find((s: any) => s.id === item?.id);\n this.flyoutItems = section ? section.sub_menu : [];\n if (event) {\n const rect = event.target.getBoundingClientRect();\n this.flyoutTop = rect.top;\n }\n }\n return;\n }\nconsole.log(item?.id,'item?.id');\n\n // EXPANDED MODE → normal accordion behavior\n // this.openSections = item?.id;\n // this.openSections[item?.id] = !this.openSections[item?.id];\n this.openSections[item.id] = !this.openSections[item.id];\n this.rotate[item.id] = this.openSections[item.id];\n }\n\n selectItem(item: any , detail: any) {\n this.activeItem = item?.id;\n this.flyoutSectionId = null;\n this.flyoutItems = [];\n let detailFull: any = {\n fullDetail: detail,\n activeItem: item\n }\n this.select.emit(detailFull);\n\n }\n\n\n toggleProfileFlyout() {\n this.profileFlyoutVisible = !this.profileFlyoutVisible;\n }\n\n viewProfile() {\n this.profileFlyoutVisible = false;\n }\n\n accountSettings() {\n this.profileFlyoutVisible = false;\n }\n\n documentation() {\n this.profileFlyoutVisible = false;\n }\n\n selectAccount(index: number) {\n this.accounts.forEach((acc, i) => acc.selected = i === index);\n }\n\n filterMenu() {\n if (!this.searchText || this.searchText.trim() === '') {\n this.filteredMenuData = JSON.parse(JSON.stringify(this.details));\n return;\n }\n\n const search = this.searchText.toLowerCase();\n\n this.filteredMenuData = this.details\n .map((section: any) => {\n const matchedSub = section.sub_menu?.filter((item: any) =>\n item.label.toLowerCase().includes(search)\n );\n\n if (\n section.title.toLowerCase().includes(search) ||\n matchedSub?.length\n ) {\n return {\n ...section,\n sub_menu: matchedSub\n };\n }\n return null;\n })\n .filter(Boolean);\n}\n\nrotate: { [id: string]: boolean } = {};\nopenSections: { [id: string]: boolean } = {};\nrotating(data: any) {\n console.log(data)\n this.rotate[data.id] = !this.rotate[data.id]\n}\n}\n","<div class=\"sidebar\" [ngClass]=\"{'collapsed': isCollapsed, 'expanded': !isCollapsed}\">\n <div class=\"ms-d-flex ms-justify-content-between\">\n <img src=\"https://ds-doc.sentrixbar.com/logo.svg\" alt=\"Logo\" class=\"logo\" *ngIf=\"!isCollapsed\">\n <img src=\"https://ds-doc.sentrixbar.com/logo-small.svg\" alt=\"Logo\" class=\"logo\" *ngIf=\"isCollapsed\" (click)=\"toggleSidebar()\">\n <button class=\"toggle-btn\" (click)=\"toggleSidebar()\" *ngIf=\"!isCollapsed\">\n <img src=\"https://ds-doc.sentrixbar.com/assets/svg/sidebar-left-expand.svg\" alt=\"Toggle\" class=\"icon\">\n </button>\n </div>\n @if(search){\n <div class=\"ms-d-flex ms-justify-content-between ms-mb-2\" [ngClass]=\"{'search-hidden': !isSearchVisible}\" >\n <div class=\"search-wrapper\" *ngIf=\"!isCollapsed\">\n <input type=\"text\" placeholder=\"Search...\" class=\"search-input \" [(ngModel)]=\"searchText\"\n (input)=\"filterMenu()\">\n <img src=\"https://ds-doc.sentrixbar.com/assets/svg/search.svg\" alt=\"Search\" class=\"search-icon\">\n </div>\n </div>\n }\n <div class=\"menu-container\" >\n <div *ngFor=\"let section of filteredMenuData\" class=\"menu-section\">\n <div class=\"menu-item \" (click)=\"toggleSection(section, $event)\"\n [ngClass]=\"{'active-section':selectedSectionId === section.id}\">\n <img [src]=\"'https://ds-doc.sentrixbar.com/assets/svg/' + section.icon\" alt=\"Icon\" class=\"ms-me-2 icon\">\n <span class=\"title ms-f-w-500\">{{ section.title }}</span>\n <span class=\"badge\" *ngIf=\"section?.sub_menu?.length > 0 && section?.sub_menu?.length > 0 && !isCollapsed\">{{ section?.sub_menu?.length }}</span>\n <img src=\"https://ds-doc.sentrixbar.com/assets/svg/chevron-right.svg\" alt=\"Chevron\" class=\"chevron\" (click)=\"rotating(section)\"\n [ngClass]=\"{'rotated': rotate[section.id]}\" *ngIf=\"!isCollapsed && section.sub_menu?.length > 0\">\n </div>\n <ul class=\"submenu\" *ngIf=\"openSections[section.id] && !isCollapsed\">\n <li class=\"submenu-item \" *ngFor=\"let item of section.sub_menu\"\n (click)=\"selectItem(item , section)\"\n [ngClass]=\"{'active-section': activeItem === item.id}\">\n {{ item.label }}\n </li>\n</ul>\n\n\n</div>\n </div>\n<div class=\"\" [ngClass]=\"{'sidebar-footer': userDetail || setting}\">\n @if(setting){\n <div class=\"Settings-section menu-item \" >\n <img src=\"https://ds-doc.sentrixbar.com/assets/svg/sparkles.svg\" alt=\"Settings\" class=\"ms-me-2 icon\">\n <span class=\"user-name ms-f-w-500\" *ngIf=\"!isCollapsed\">Settings</span>\n </div>\n }\n @if(userDetail){\n <div class=\"profile-section menu-item\" #profileSection [ngClass]=\"{'active-section': profileFlyoutVisible}\" (click)=\"toggleProfileFlyout()\">\n <div class=\"user-avatar\">{{ userInitials }}</div>\n <span class=\"user-name ms-f-w-500 \" *ngIf=\"!isCollapsed\">{{ userName || 'User Name' }}</span>\n <div class=\"profile-flyout\" *ngIf=\"profileFlyoutVisible\">\n <div class=\"flyout-item\" (click)=\"viewProfile()\">View Profile</div>\n <div class=\"flyout-item\" (click)=\"accountSettings()\">Account Settings</div>\n <div class=\"flyout-item\" (click)=\"documentation()\">Documentation</div>\n <hr class=\"flyout-divider\">\n <div class=\"flyout-section\">\n <div class=\"flyout-title\">Switch Account</div>\n <div *ngFor=\"let account of accounts; let i = index\" class=\"account-item\">\n <div class=\"account-info\">\n <div class=\"account-avatar\">{{ getInitials(account.name) }}</div>\n <div class=\"account-details\">\n <div class=\"account-name ms-f-w-500\">{{ account.name }}</div>\n <div class=\"account-email ms-fs-12\">{{ account.email }}</div>\n </div>\n </div>\n <input type=\"radio\" [checked]=\"account.selected\" (change)=\"selectAccount(i)\" name=\"account\">\n </div>\n </div>\n <button class=\"flyout-button\" >Add Account</button>\n <hr class=\"flyout-divider\">\n <div class=\"flyout-item sign-out\" >Sign Out</div>\n </div>\n </div>\n }\n</div>\n</div>\n<ul class=\"submenu-flyout\"\n *ngIf=\"isCollapsed && flyoutSectionId\"\n [style.top.px]=\"flyoutTop\">\n <li *ngFor=\"let item of flyoutItems\"\n (click)=\"selectItem(item, flyoutItems)\">\n {{ item.label }}\n </li>\n</ul>","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nexport type TooltipPosition =\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right';\n@Component({\n selector: 'ms-tooltip',\n imports: [CommonModule],\n templateUrl: './ms-tooltip.html',\n styleUrl: './ms-tooltip.scss',\n})\nexport class MsTooltip {\n @Input() text = '';\n @Input() position: TooltipPosition = 'top';\n @Input() bgColor = '#0E0F10';\n @Input() showArrow = true;\n\n get title(): string {\n return this.text.split('\\n')[0];\n }\n\n get paragraphLines(): string[] {\n return this.text.split('\\n').slice(1, 4); // max 3 lines\n }\n}\n","<div class=\"tooltip-container\" \n [ngClass]=\"[position, showArrow ? 'with-arrow' : 'no-arrow']\"\n [ngStyle]=\"{'background-color': bgColor}\">\n <div class=\"tooltip-title\">{{ title }}</div>\n <div class=\"tooltip-paragraph\">\n <div *ngFor=\"let line of paragraphLines\" class=\"tooltip-line\">\n {{ line }}\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InlineSVGModule } from 'ng-inline-svg-2';\nimport { MsSpinner } from '../ms-spinner/ms-spinner';\n\n@Component({\n selector: 'ms-file-uploader',\n imports: [CommonModule, FormsModule, ReactiveFormsModule, InlineSVGModule, MsSpinner],\n templateUrl: './ms-file-uploader.html',\n styleUrl: './ms-file-uploader.scss',\n})\nexport class MsFileUploader {\n @Input() label = \"\" \n @Input() required = false \n @Input() readonly = false \n @Input() disabled = false \n @Input() accept = \".pdf,.doc,.docx,.txt,.jpg,.jpeg,.png\" \n @Input() multiple = false\n @Input() maxFileSize = \"5MB\"\n @Input() variant: 'button' | 'dragdrop' = 'dragdrop' // 'button' or 'dragdrop'\n @Input() skeleton = false\n \n @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\n\n isDragOver = false;\n selectedFiles: File[] = [];\n uploadedFiles: { name: string; size: string; isLoading?: boolean; isSuccess?: boolean }[] = [];\n hasInteracted = false;\n showError = false;\n isFocused = false;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {\n }\n\n onDragOver(event: DragEvent) {\n // Only allow drag & drop for dragdrop variant\n if (this.variant !== 'dragdrop' || this.disabled) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = true;\n }\n\n onDragLeave(event: DragEvent) {\n // Only allow drag & drop for dragdrop variant\n if (this.variant !== 'dragdrop') {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = false;\n }\n\n onDropFiles(event: DragEvent) {\n // Only allow drag & drop for dragdrop variant\n if (this.variant !== 'dragdrop') {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = false;\n\n if (this.disabled) return;\n\n const files = event.dataTransfer?.files;\n if (files) {\n this.handleFiles(files);\n }\n }\n\n onFileInputChange(event: any) {\n const files = event.target.files;\n this.hasInteracted = true;\n \n // Only process if files were actually selected (length > 0)\n if (files && files.length > 0) {\n this.handleFiles(files);\n } else {\n this.updateErrorState();\n }\n \n // Reset file input value to allow selecting the same file again\n event.target.value = '';\n }\n\n private handleFiles(files: FileList) {\n const fileArray = Array.from(files);\n \n if (!this.multiple && fileArray.length > 1) {\n alert('Please select only one file');\n return;\n }\n\n // Only update if there are files to process\n if (fileArray.length > 0) {\n this.selectedFiles = fileArray;\n this.uploadedFiles = fileArray.map((file, index) => {\n const fileObj = {\n name: file.name,\n size: this.formatFileSize(file.size),\n isLoading: true,\n isSuccess: false\n };\n \n // Simulate upload delay (1-2 seconds)\n setTimeout(() => {\n this.onFileUploadComplete(index);\n }, 1500);\n \n return fileObj;\n });\n }\n \n this.updateErrorState();\n }\n\n onFileUploadComplete(index: number) {\n if (this.uploadedFiles[index]) {\n // Create new array with updated object to trigger change detection\n this.uploadedFiles = this.uploadedFiles.map((file, i) => \n i === index \n ? { ...file, isLoading: false, isSuccess: true }\n : file\n );\n this.cdr.markForCheck();\n \n // Show success tick for 1 second, then hide it\n setTimeout(() => {\n if (this.uploadedFiles[index]) {\n this.uploadedFiles = this.uploadedFiles.map((file, i) => \n i === index \n ? { ...file, isSuccess: false }\n : file\n );\n this.cdr.markForCheck();\n }\n }, 1000);\n }\n }\n\n private formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return Math.round((bytes / Math.pow(k, i)) * 100) / 100 + ' ' + sizes[i];\n }\n\n triggerFileInput() {\n if (!this.disabled) {\n this.hasInteracted = true;\n this.fileInput?.nativeElement.click();\n }\n }\n\n updateErrorState() {\n if (this.required && this.hasInteracted) {\n this.showError = this.uploadedFiles.length === 0;\n }\n }\n\n onFocus() {\n this.isFocused = true;\n if (this.required && this.uploadedFiles.length === 0) {\n this.showError = true;\n }\n }\n\n onBlur() {\n this.isFocused = false;\n this.updateErrorState();\n }\n\n removeFile(index: number) {\n this.uploadedFiles.splice(index, 1);\n this.selectedFiles.splice(index, 1);\n this.updateErrorState();\n \n // Reset file input value to allow re-uploading the same file\n if (this.fileInput?.nativeElement) {\n this.fileInput.nativeElement.value = '';\n }\n }\n\n getAcceptFormats(): string {\n return this.accept.split(',').map(ext => ext.trim().toUpperCase()).join(', ');\n }\n}\n","@if (skeleton) {\n <div class=\"ms-file-uploader-skeleton\" [class]=\"variant\"></div>\n} @else {\n<div class=\"file-uploader-wrapper\">\n <!-- <div *ngIf=\"label\" class=\"file-uploader-label\">\n <label>{{ label }} <span *ngIf=\"required\" class=\"required\">*</span></label>\n </div> -->\n\n <!-- ===================== BUTTON VARIANT ===================== -->\n <ng-container *ngIf=\"variant === 'button'\">\n <!-- Instructions -->\n <div class=\"file-uploader-instructions button-variant\">\n <p class=\"ms-mb-2\">Upload file</p>\n <p class=\"instruction-text\">\n <span>Max file size:</span> {{ maxFileSize }} | \n <span>Accepted formats:</span> {{ getAcceptFormats() }}\n </p>\n </div>\n\n <!-- Button Upload Area -->\n <div class=\"button-upload-area\">\n <button \n type=\"button\"\n class=\"upload-button\"\n (click)=\"triggerFileInput()\"\n [disabled]=\"disabled\">\n <span [inlineSVG]=\"'../../../../../../assets/data-grid/icons/upload.svg'\"></span>\n <span>Upload file</span>\n </button>\n \n <!-- <p class=\"button-hint\">or drag and drop</p> -->\n </div>\n\n <!-- Hidden File Input -->\n <input \n #fileInput\n type=\"file\" \n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (change)=\"onFileInputChange($event)\"\n style=\"display: none;\">\n </ng-container>\n\n <!-- ===================== DRAG & DROP VARIANT ===================== -->\n <ng-container *ngIf=\"variant === 'dragdrop'\">\n <!-- Instructions outside the border -->\n <div class=\"file-uploader-instructions dragdrop-variant\">\n <p class=\"instruction-text\">\n <span>Max file size:</span> {{ maxFileSize }} | \n <span>Accepted formats:</span> {{ getAcceptFormats() }}\n </p>\n </div>\n\n <!-- Drag and Drop Area with Dotted Border -->\n <div \n class=\"file-uploader-dropzone\"\n [class.dragover]=\"isDragOver\"\n [class.disabled]=\"disabled\"\n [class.error]=\"showError\"\n [class.focused]=\"isFocused\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDropFiles($event)\"\n (click)=\"triggerFileInput()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n tabindex=\"0\">\n \n <!-- Upload Icon and Text -->\n <div class=\"dropzone-content\">\n <span class=\"upload-icon\" [inlineSVG]=\"'../../../../../../assets/data-grid/icons/file-plus.svg'\"></span>\n <p class=\"upload-text\">Drag and drop your files here</p>\n <p class=\"upload-subtext\">or <span class=\"click-text\">click to browse</span></p>\n </div>\n\n <!-- Hidden File Input -->\n <input \n #fileInput\n type=\"file\" \n [accept]=\"accept\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (change)=\"onFileInputChange($event)\"\n style=\"display: none;\">\n </div>\n </ng-container>\n\n <!-- Error Message -->\n <div *ngIf=\"showError\" class=\"error-message\">\n <p>This field is required. Please select at least one file.</p>\n </div>\n\n <!-- Uploaded Files List (Shared for both variants) -->\n <div *ngIf=\"uploadedFiles.length > 0\" class=\"uploaded-files\">\n <div class=\"files-list\">\n <div *ngFor=\"let file of uploadedFiles; let i = index\" class=\"file-item\">\n <div class=\"file-info\">\n <span [inlineSVG]=\"'../../../../../../assets/data-grid/icons/File-pdf.svg'\"></span>\n <div class=\"file-details\">\n <p class=\"file-name\" [title]=\"file.name\">{{ file.name }}</p>\n <p class=\"file-size\">{{ file.size }}</p>\n </div>\n </div>\n\n <div class=\"file-actions\">\n <!-- Loader State -->\n <div *ngIf=\"file.isLoading\" class=\"loader\">\n <ms-spinner [color]=\"'primary'\" [size]=\"'sm'\"></ms-spinner>\n </div>\n\n <!-- Success Tick State -->\n <div *ngIf=\"file.isSuccess && !file.isLoading\" class=\"success-tick\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n </div>\n\n <!-- Remove Button State -->\n <button \n *ngIf=\"!file.isLoading && !file.isSuccess\"\n type=\"button\"\n class=\"remove-btn\"\n (click)=\"removeFile(i)\"\n [disabled]=\"disabled\">\n <span class=\"d-flex align-items-center\" [inlineSVG]=\"'../../../../../../assets/data-grid/icons/x.svg'\"></span>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n}","import { Directive, Input, HostListener, ElementRef, ComponentRef, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';\nimport { MsTooltip } from '../../lib/components/ms-tooltip/ms-tooltip';\n\n@Directive({\n selector: '[msTooltip]',\n standalone: true // ✅ must be standalone\n})\nexport class MsTooltipDirective {\n @Input() msTooltip!: string;\n @Input() position: 'top'| 'bottom'\n | 'left'\n | 'right'\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right' = 'top';\n @Input() bgColor: string = '#333';\n @Input() showArrow: boolean = true;\n\n private tooltipRef!: ComponentRef<MsTooltip>;\n\n constructor(\n private el: ElementRef,\n private vcr: ViewContainerRef,\n private cfr: ComponentFactoryResolver\n ) {}\n\n\n\n\n@HostListener('mouseenter')\nonMouseEnter() {\n const factory = this.cfr.resolveComponentFactory(MsTooltip);\n this.tooltipRef = this.vcr.createComponent(factory);\n\n this.tooltipRef.instance.text = this.msTooltip;\n this.tooltipRef.instance.position = this.position;\n this.tooltipRef.instance.bgColor = this.bgColor;\n this.tooltipRef.instance.showArrow = this.showArrow;\n\n const rect = this.el.nativeElement.getBoundingClientRect();\n const tooltipEl = this.tooltipRef.location.nativeElement as HTMLElement;\n\n tooltipEl.style.position = 'absolute';\n tooltipEl.style.zIndex = '1000';\n tooltipEl.style.display = 'block';\n\n // Wait for the tooltip to render to get its size\n setTimeout(() => {\n const tooltipRect = tooltipEl.getBoundingClientRect();\n\n switch (this.position) {\n case 'top':\n tooltipEl.style.top = rect.top - tooltipRect.height - 8 + 'px';\n tooltipEl.style.left = rect.left + rect.width / 2 - tooltipRect.width / 2 + 'px';\n break;\n\n case 'bottom':\n tooltipEl.style.top = rect.bottom + 8 + 'px';\n tooltipEl.style.left = rect.left + rect.width / 2 - tooltipRect.width / 2 + 'px';\n break;\n\n case 'left':\n tooltipEl.style.top = rect.top + rect.height / 2 - tooltipRect.height / 2 + 'px';\n tooltipEl.style.left = rect.left - tooltipRect.width - 8 + 'px';\n break;\n\n case 'right':\n tooltipEl.style.top = rect.top + rect.height / 2 - tooltipRect.height / 2 + 'px';\n tooltipEl.style.left = rect.right + 8 + 'px';\n break;\n\n case 'top-left':\n tooltipEl.style.top = rect.top - tooltipRect.height - 8 + 'px';\n tooltipEl.style.left = rect.left + 'px';\n break;\n\n case 'top-right':\n tooltipEl.style.top = rect.top - tooltipRect.height - 8 + 'px';\n tooltipEl.style.left = rect.right - tooltipRect.width + 'px';\n break;\n\n case 'bottom-left':\n tooltipEl.style.top = rect.bottom + 8 + 'px';\n tooltipEl.style.left = rect.left + 'px';\n break;\n\n case 'bottom-right':\n tooltipEl.style.top = rect.bottom + 8 + 'px';\n tooltipEl.style.left = rect.right - tooltipRect.width + 'px';\n break;\n\n default:\n // fallback to top\n tooltipEl.style.top = rect.top - tooltipRect.height - 8 + 'px';\n tooltipEl.style.left = rect.left + rect.width / 2 - tooltipRect.width / 2 + 'px';\n break;\n }\n });\n \n document.body.appendChild(tooltipEl);\n}\n\n\n \n\n @HostListener('mouseleave') onMouseLeave() {\n if (this.tooltipRef) {\n this.tooltipRef.destroy();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { MsButton } from './components/button/ms-button.component';\nimport { MsDropdown } from './components/dropdown/dropdown';\nimport { MsCheckbox } from './components/ms-checkbox/ms-checkbox';\nimport { MsBadge } from './components/ms-badge/ms-badge';\nimport { MsToggle } from './components/ms-toggle/ms-toggle';\nimport { MsRadioButton } from './components/ms-radio-button/ms-radio-button';\nimport { MsInputField } from './components/ms-input-field/ms-input-field';\nimport { MsTextArea } from './components/ms-text-area/ms-text-area';\nimport { MsAvatar } from './components/ms-avatar/ms-avatar';\nimport { InlineSVGModule } from 'ng-inline-svg';\nimport { MsSidebar } from './components/ms-sidebar/ms-sidebar';\nimport { MsTooltip } from './components/ms-tooltip/ms-tooltip';\nimport { MsPagination } from './components/ms-pagination/ms-pagination';\nimport { MsSpinner } from './components/ms-spinner/ms-spinner';\nimport { MsFileUploader } from './components/ms-file-uploader/ms-file-uploader';\nimport { MsTooltipDirective } from '../shared/directives/ms-tooltip.directive';\n@NgModule({\n imports: [InlineSVGModule.forRoot(), MsButton, MsDropdown,MsCheckbox,MsBadge,MsToggle, MsRadioButton,MsInputField,MsTextArea,MsAvatar,MsSidebar,MsTooltip, MsPagination, MsSpinner,MsFileUploader,MsTooltipDirective], // standalone components can be imported\n exports: [InlineSVGModule ,MsButton, MsDropdown,MsCheckbox,MsBadge,MsToggle,MsRadioButton,MsInputField,MsTextArea,MsAvatar,MsSidebar, MsTooltip, MsPagination,MsSpinner, MsFileUploader]\n})\nexport class MsDesignSystemModule {}\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\nexport function provideMsDesignSystem(): EnvironmentProviders {\n return makeEnvironmentProviders([]);\n}\n","// Components\nexport * from './components/button/ms-button.component';\nexport * from './components/dropdown/dropdown';\nexport * from './components/ms-checkbox/ms-checkbox';\nexport * from './components/ms-badge/ms-badge';\nexport * from './components/ms-toggle/ms-toggle';\nexport * from './components/ms-radio-button/ms-radio-button';\nexport * from './components/ms-input-field/ms-input-field';\nexport * from './components/ms-text-area/ms-text-area';\nexport * from './components/ms-avatar/ms-avatar';\nexport * from './components/ms-pagination/ms-pagination';\nexport * from './components/ms-sidebar/ms-sidebar';\nexport * from './components/ms-spinner/ms-spinner';\nexport * from './components/ms-tooltip/ms-tooltip';\nexport * from './components/ms-file-uploader/ms-file-uploader';\n\n\n// NgModule\nexport * from './ms-design-system.module';\n\n// Providers\nexport * from './providers/ms-design-system';\n\n// Directive\nexport * from '../shared/directives/ms-tooltip.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","InlineSVGModule"],"mappings":"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"}
|