UNPKG

primeng

Version:

PrimeNG is an open source UI library for Angular featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeB

1 lines 3.92 kB
{"version":3,"file":"primeng-classnames.mjs","sources":["../../src/classnames/classnames.ts","../../src/classnames/primeng-classnames.ts"],"sourcesContent":["import { Directive, ElementRef, NgModule, Renderer2, effect, input } from '@angular/core';\nimport { cn } from '@primeuix/utils';\n/**\n * Represents the suitable value types of pClass directive.\n * @group Types\n */\nexport type PClassValue = string | number | boolean | undefined | null | { [key: string]: boolean | undefined | null } | any;\n\n/**\n * PClass directive provides extends class binding functionality.\n * Supports strings, arrays, objects, and mixed combinations.\n * @group Components\n */\n@Directive({\n selector: '[pClass]',\n standalone: true\n})\nexport class ClassNames {\n /**\n * Class value(s) to be applied. Can be a string, array, object, or combination.\n * @group Props\n */\n pClass = input<PClassValue>();\n\n private initialClasses = '';\n private isInitialized = false;\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2\n ) {\n effect(() => {\n this.updateClasses();\n });\n }\n\n private updateClasses(): void {\n if (this.el?.nativeElement) {\n // Store initial classes only once\n if (!this.isInitialized) {\n this.initialClasses = this.el.nativeElement.className;\n this.isInitialized = true;\n }\n\n // Combine initial classes with pClass\n const classString = cn(this.initialClasses, this.pClass());\n\n // Apply the class to the element\n if (classString) {\n this.renderer.setAttribute(this.el.nativeElement, 'class', classString);\n } else {\n this.renderer.removeAttribute(this.el.nativeElement, 'class');\n }\n }\n }\n}\n\n@NgModule({\n imports: [ClassNames],\n exports: [ClassNames]\n})\nexport class ClassNamesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;AAQA;;;;AAIG;MAKU,UAAU,CAAA;AAWP,IAAA,EAAA;AACA,IAAA,QAAA;AAXZ;;;AAGG;IACH,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAe;IAErB,cAAc,GAAG,EAAE;IACnB,aAAa,GAAG,KAAK;IAE7B,WAAA,CACY,EAAc,EACd,QAAmB,EAAA;QADnB,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAEhB,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,aAAa,EAAE;AACxB,QAAA,CAAC,CAAC;IACN;IAEQ,aAAa,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE;;AAExB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS;AACrD,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;YAC7B;;AAGA,YAAA,MAAM,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;;YAG1D,IAAI,WAAW,EAAE;AACb,gBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,WAAW,CAAC;YAC3E;iBAAO;AACH,gBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC;YACjE;QACJ;IACJ;uGArCS,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE;AACf,iBAAA;;MA6CY,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAhB,gBAAgB,EAAA,OAAA,EAAA,CA5ChB,UAAU,CAAA,EAAA,OAAA,EAAA,CAAV,UAAU,CAAA,EAAA,CAAA;wGA4CV,gBAAgB,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,UAAU,CAAC;oBACrB,OAAO,EAAE,CAAC,UAAU;AACvB,iBAAA;;;AC5DD;;AAEG;;;;"}