{"version":3,"file":"index.mjs","sources":["../../../../../../projects/components/widgets/basic/progress/progress-bar/src/progress-bar.props.ts","../../../../../../projects/components/widgets/basic/progress/progress-bar/src/progress-bar.component.ts","../../../../../../projects/components/widgets/basic/progress/progress-bar/src/progress-bar.component.html","../../../../../../projects/components/widgets/basic/progress/progress-bar/src/index.ts"],"sourcesContent":["import {PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n    register(\n        'wm-progress-bar',\n        new Map(\n            [\n                ['captionplacement', {value: 'hidden', ...PROP_STRING}],\n                ['class', PROP_STRING],\n                ['dataset', PROP_ANY],\n                ['datavalue', PROP_STRING],\n                ['displayformat', PROP_STRING],\n                ['hint', PROP_STRING],\n                ['arialabel', PROP_STRING],\n                ['maxvalue', {value: 100, ...PROP_NUMBER}],\n                ['minvalue', {value: 0, ...PROP_NUMBER}],\n                ['name', PROP_STRING],\n                ['show', {value: true, ...PROP_BOOLEAN}],\n                ['tabindex', {value: 0, ...PROP_NUMBER}],\n                ['type', {value: 'default', ...PROP_STRING}]\n            ]\n        )\n    );\n};\n","import {Attribute, Component, Inject, Injector, Optional} from '@angular/core';\n\nimport {findValueOf, isDefined} from '@wm/core';\nimport {IWidgetConfig, provideAsWidgetRef, StylableComponent, styler} from '@wm/components/base';\n\nimport {registerProps} from './progress-bar.props';\nimport {getDecimalCount, isPercentageValue} from '@wm/components/basic/progress/progress-utils';\nimport {debounce, isArray} from \"lodash-es\";\n\nconst DEFAULT_CLS = 'progress app-progress';\nconst WIDGET_CONFIG: IWidgetConfig = {widgetType: 'wm-progress-bar', hostClass: DEFAULT_CLS};\n\n// map of progress-bar type and classes\nexport const TYPE_CLASS_MAP = {\n    'default': '',\n    'default-striped': 'progress-bar-striped',\n    'success': 'progress-bar-success',\n    'success-striped': 'progress-bar-success progress-bar-striped',\n    'info': 'progress-bar-info',\n    'info-striped': 'progress-bar-info progress-bar-striped',\n    'warning': 'progress-bar-warning',\n    'warning-striped': 'progress-bar-warning progress-bar-striped',\n    'danger': 'progress-bar-danger',\n    'danger-striped': 'progress-bar-danger progress-bar-striped'\n};\n\n\n// interface for the progress-bar info\ninterface IProgressInfo {\n    cls: string;\n    progressBarWidth: string;\n    displayValue: string;\n}\n\n@Component({\n    standalone: true,\n    selector: '[wmProgressBar]',\n    templateUrl: './progress-bar.component.html',\n    providers: [\n        provideAsWidgetRef(ProgressBarComponent)\n    ]\n})\nexport class ProgressBarComponent extends StylableComponent {\n    static initializeProps = registerProps();\n\n    public displayformat: string;\n    public datavalue: string;\n    public minvalue: number;\n    public maxvalue: number;\n    public type: string;\n    public dataset: Array<any>;\n    public hint: string;\n    public arialabel: string;\n    public tabindex: string;\n\n    private _prepareData: Function;\n    private readonly hasDataset: boolean;\n\n    // progress-bar data, ngFor in the template iterates on this\n    public data: Array<IProgressInfo> = [{\n        cls: TYPE_CLASS_MAP.default,\n        progressBarWidth: '0%',\n        displayValue: '0'\n    }];\n\n    constructor(inj: Injector, @Attribute('dataset') dataset: string, @Attribute('dataset.bind') boundDataset: string, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n        super(inj, WIDGET_CONFIG, explicitContext);\n\n        // flag which determines whether dataset is provided or not\n        this.hasDataset = !!(dataset || boundDataset);\n\n        styler(this.nativeElement, this);\n\n        this._prepareData = debounce(() => this.prepareData(), 50);\n    }\n\n    // update the proper classes when there is a change in type\n    protected onTypeChange() {\n        if (!this.hasDataset) {\n            if (this.data[0]) {\n                this.data[0].cls = TYPE_CLASS_MAP[this.type];\n            }\n        }\n    }\n\n    // returns the formatted display value based on the provided displayformat\n    protected getFormattedDisplayVal(val: string | number): string {\n        const format = this.displayformat || '9';\n\n        val = parseFloat('' + val);\n        val = (val.toFixed(getDecimalCount(format)));\n\n        if (format && format.includes('%')) {\n            val = `${val}%`;\n        }\n        return val;\n    }\n\n    protected prepareData() {\n        // when the dataset is provided, iterate over the dataset to set the proper values in the data\n        if (this.dataset && isArray(this.dataset) && this.type && this.datavalue) {\n            this.data = this.dataset.map((datum): IProgressInfo => {\n                const val: string = findValueOf(datum, this.datavalue).toString();\n                let percentVal = val;\n                if (val && !val.includes('%')) {\n                    percentVal = `${val}%`;\n                }\n                return {\n                    cls: TYPE_CLASS_MAP[findValueOf(datum, this.type)],\n                    progressBarWidth: percentVal,\n                    displayValue: this.getFormattedDisplayVal(val)\n                };\n            });\n        } else {\n            // if the dataset is not provided, update the values in the default data\n            let width: string | number = 0;\n            let displayVal: string | number = 0;\n            if (this.datavalue) {\n                if (isPercentageValue(this.datavalue)) {\n                    const val = (this.datavalue || '0%');\n                    width = displayVal = val;\n                } else {\n                    if (isDefined(this.datavalue)) {\n                        const denominator = (+this.maxvalue - +this.minvalue) || 1;\n                        const val = ((+this.datavalue - +this.minvalue) * 100) / denominator + '%';\n                        width = displayVal = val;\n                    }\n                }\n            }\n            this.data[0].displayValue = this.getFormattedDisplayVal(displayVal as string);\n            this.data[0].progressBarWidth = width as string;\n            this.data[0].cls = TYPE_CLASS_MAP[this.type];\n\n        }\n    }\n\n    onPropertyChange(key: string, nv: any, ov?: any) {\n        if (key === 'type') {\n            this.onTypeChange();\n        } else if (key === 'minvalue' || key === 'maxvalue' || key === 'datavalue' || key === 'dataset' || key === 'displayformat') {\n            this._prepareData();\n        } else if (key === 'tabindex') {\n            return;\n        } else {\n            super.onPropertyChange(key, nv, ov);\n        }\n    }\n}\n","@for (bar of data; track bar) {\n  <div class=\"multi-bar progress-bar {{bar.cls}}\" [style.width]=\"bar.progressBarWidth\"\n    role=\"progressbar\" [attr.aria-valuenow]=\"datavalue\" [attr.aria-valuemin]=\"minvalue\" [attr.aria-valuemax]=\"maxvalue\"\n    [attr.aria-label]=\"arialabel || 'Progress bar'\" [tabindex]=\"tabindex\">\n    <span class=\"app-progress-label\" [attr.data-caption-placement]=\"captionplacement\">{{bar.displayValue}}</span>\n  </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}