1import{a as rt}from"./chunk-XFRONP2L.js";import{a as it}from"./chunk-NU6XWWAE.js";import{a as ot}from"./chunk-45VPI5WI.js";import"./chunk-GUDERNVR.js";import{B as K,D as X,Mb as tt,Ob as et,c as G,da as Y,f as z,fa as Z,g as s,i as H,j as q,n as $,q as Q,r as W,t as J}from"./chunk-YAVLGDQ7.js";import{w as R}from"./chunk-OG4J2SQG.js";import{Aa as T,Db as u,Eb as m,Gb as L,Hb as A,Ib as j,Jb as a,Kb as n,Lb as r,Mb as f,Nb as h,Ob as b,Oc as M,Pb as S,Tb as v,Ub as P,Xa as U,Yb as w,Zb as N,_a as o,_b as c,a as F,db as D,fa as x,ic as B,ka as g,la as C,ma as I,mc as l,nc as k,oc as O,qb as y}from"./chunk-BZS2X2XL.js";function st(i,e){if(i&1){let t=v();h(0,"div",3),S(1,"img",6),h(2,"button",7),N("click",function(){g(t);let p=c();return C(p.onDelete())}),I(),h(3,"svg",8),S(4,"path",9)(5,"path",10)(6,"path",11)(7,"path",12)(8,"path",13)(9,"path",14),b()()()}if(i&2){let t=c();o(),P("src",t.previewUrl,U)}}function dt(i,e){if(i&1&&(h(0,"div",4)(1,"div",15),l(2),b(),h(3,"p",16),l(4),b()()),i&2){let t=c();o(2),k(t.title),o(2),O(" ",t.supportedText," ")}}function ct(i,e){if(i&1&&(h(0,"div",5),l(1),b()),i&2){let t=c();o(),k(t.error)}}var E=class i{acceptExtensions=[".jpg",".jpeg",".png"];maxSizeBytes=3*1024*1024;title="Upload photo";fileChange=new D;url="";fileName="";error="";previewUrl=null;get acceptAttr(){return this.acceptExtensions.join(",")}ngOnChanges(){this.url&&(this.previewUrl=this.url);let e=this.getExtension(this.url)}ngOnDestroy(){this.revokePreview()}getExtension(e){return(e.split("?")[0].split("/").pop()||"").split(".").pop()?.toLowerCase()||""}revokePreview(){this.previewUrl&&this.previewUrl.startsWith("blob:")&&URL.revokeObjectURL(this.previewUrl),this.previewUrl=null}onSelect(e){if(this.error="",this.fileName="",this.revokePreview(),!e){this.fileChange.emit(null);return}if(e.size>this.maxSizeBytes){this.error="Maximum size exceeded",this.fileChange.emit(null);return}let t=`.${e.name.split(".").pop()?.toLowerCase()??""}`;if(!this.acceptExtensions.includes(t)){this.error="Unsupported format",this.fileChange.emit(null);return}this.previewUrl=URL.createObjectURL(e),this.fileName=e.name,this.fileChange.emit(e)}onDelete(){this.error="",this.fileName="",this.revokePreview(),this.previewUrl="",this.fileChange.emit(null)}get supportedText(){return`Supported format: ${this.acceptExtensions.map(t=>t.substring(1)).join(", ").toString()}`}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=y({type:i,selectors:[["app-product-image-upload"]],inputs:{acceptExtensions:"acceptExtensions",maxSizeBytes:"maxSizeBytes",title:"title",url:"url"},outputs:{fileChange:"fileChange"},features:[T],decls:6,vars:3,consts:[["filePicker",""],[1,"block","w-full","rounded-2xl","border","border-grey-900"],["type","file",1,"hidden",3,"change","accept"],[1,"relative","w-full"],[1,"flex","flex-col","items-center","justify-center","gap-2","p-10","text-center","cursor-pointer"],[1,"text-xs","text-red-600"],["alt","preview","draggable","false",1,"rounded-lg","object-cover","w-full",3,"src"],["type","button",1,"absolute","top-2","right-2","flex","h-8","w-8","items-center","justify-center","hover:bg-black/80","rounded-full",3,"click"],["width","16","height","16","viewBox","0 0 16 16","fill","none","xmlns","http://www.w3.org/2000/svg"],["d","M14 3.98568C11.78 3.76568 9.54667 3.65234 7.32 3.65234C6 3.65234 4.68 3.71901 3.36 3.85234L2 3.98568","fill","#F04438"],["d","M14 3.98568C11.78 3.76568 9.54667 3.65234 7.32 3.65234C6 3.65234 4.68 3.71901 3.36 3.85234L2 3.98568","stroke","#F04438","stroke-width","1.5","stroke-linecap","round","stroke-linejoin","round"],["d","M5.66406 3.31203L5.81073 2.4387C5.9174 1.80536 5.9974 1.33203 7.12406 1.33203H8.87073C9.9974 1.33203 10.0841 1.83203 10.1841 2.44536L10.3307 3.31203","stroke","#F04438","stroke-width","1.5","stroke-linecap","round","stroke-linejoin","round"],["d","M12.563 6.09375L12.1297 12.8071C12.0564 13.8537 11.9964 14.6671 10.1364 14.6671H5.85635C3.99635 14.6671 3.93635 13.8537 3.86302 12.8071L3.42969 6.09375","stroke","#F04438","stroke-width","1.5","stroke-linecap","round","stroke-linejoin","round"],["d","M6.88281 11H9.10281","stroke","#F04438","stroke-width","1.5","stroke-linecap","round","stroke-linejoin","round"],["d","M6.33594 8.33203H9.66927","stroke","#F04438","stroke-width","1.5","stroke-linecap","round","stroke-linejoin","round"],[1,"font-semibold","text-primary"],[1,"text-sm","text-grey-400"]],template:function(t,d){
1if(t&1){let p=v();h(0,"label",1)(1,"input",2,0),N("change",function(){g(p);let _=B(2);return C(d.onSelect((_.files==null?null:_.files.item(0))??null))}),b(),u(3,st,10,1,"div",3)(4,dt,5,2,"div",4),u(5,ct,2,1,"div",5),b()}t&2&&(o(),P("accept",d.acceptAttr),o(2),m(d.previewUrl?3:4),o(2),m(d.error?5:-1))},encapsulation:2})};function pt(i,e){i&1&&(n(0,"div",2)(1,"div")(2,"div",4),f(3,"span",5),r(),n(4,"p",6),l(5,"Please wait..."),r()()())}function ut(i,e){i&1&&(n(0,"p",13),l(1," Product description is required "),r())}function mt(i,e){i&1&&l(0," NGN (Naira) ")}function ft(i,e){i&1&&l(0," Percentage(%) ")}function ht(i,e){if(i&1){let t=v();n(0,"app-product-image-upload",25),w("fileChange",function(p){let V=g(t).$index,_=c(2);return C(_.onSelectImage(p,V))}),r()}}function gt(i,e){if(i&1){let t=v();n(0,"app-button",26),w("buttonClick",function(){g(t);let p=c(2);return C(p.onUpdate())}),l(1," Next "),r()}if(i&2){let t=c(2);a("buttonDisabled",t.productStore.creatingProduct())("loading",t.productStore.creatingProduct())}}function Ct(i,e){if(i&1){let t=v();n(0,"app-button",26),w("buttonClick",function(){g(t);let p=c(2);return C(p.onSave())}),l(1," Next "),r()}if(i&2){let t=c(2);a("buttonDisabled",t.productStore.creatingProduct())("loading",t.productStore.creatingProduct())}}function bt(i,e){if(i&1&&(n(0,"form",3)(1,"div",7),f(2,"app-input",8)(3,"app-select",9),r(),n(4,"div",10)(5,"label",11),l(6,"Describe your product"),r(),f(7,"textarea",12),u(8,ut,2,0,"p",13),r(),n(9,"div",14),f(10,"app-select",9),n(11,"app-input",15)(12,"span",16),l(13," NGN (Naira) "),r()(),f(14,"app-input",17)(15,"app-select",18),n(16,"app-input",19)(17,"span",16),u(18,mt,1,0)(19,ft,1,0),r()(),f(20,"app-input",20),r(),n(21,"div",10)(22,"label",11),l(23,"Upload Media"),r(),n(24,"div",21),A(25,ht,1,0,"app-product-image-upload",22,L),r()(),n(27,"div",23),u(28,gt,2,2,"app-button",24)(29,Ct,2,2,"app-button",24),r()()),i&2){let t=c();a("formGroup",t.form),o(2),a("inputClass","!h-14 !w-full !border-[#E6E6E6]")("control",t.productName)("label","Product Name"),o(),a("value","id")("displayName","name")("options",t.productStore.categoryList())("inputClass","!h-14 !w-full !border-[#E6E6E6] !bg-white")("control",t.categoryId)("label","Product Category"),o(4),a("formControl",t.description),o(),m((t.description.touched||t.description.dirty)&&t.description.invalid?8:-1),o(2),a("value","id")("displayName","name")("options",t.productStore.brandList())("inputClass","!h-14 !w-full !border-[#E6E6E6]")("control",t.brandId)("label","Product Brand"),o(),a("showPrefix",!0)("inputClass","!h-14 !w-full !border-[#E6E6E6]")("amount",!0)("control",t.price)("label","Price"),o(3),a("inputClass","!h-14 !w-full !border-[#E6E6E6]")("digitsOnly",!0)("control",t.productStockLevel)("label","Quantity"),o(),a("options",t.productStore.discountTypeArray)("inputClass","!h-14 !w-full !border-[#E6E6E6]")("control",t.discountType)("label","Discount Type (Optional)"),o(),a("showPrefix",!0)("inputClass","!h-14 !w-full !border-[#E6E6E6]")("control",t.discount)("digitsOnly",!0)("label","Discount Amount"),o(2),m(t.discountType.value===0?18:19),o(2),a("inputClass","!h-14 !w-full !border-[#E6E6E6]")("control",t.reorderLevel)("digitsOnly",!0)("label","Restock Notification"),o(5),j(t.imagesArray.controls),o(3),m(t.mode==="edit"?28:29)}}var nt=class i{productStore=x(it);notification=x(tt);helper=x(et);route=x(R);fb=x(K);form;imagesArray=this.fb.array([]);init=M(()=>{this.form&&this.productStore.entityToEdit()&&this.form.patchValue(F({},this.productStore.entityToEdit()))});mode="create";ngOnInit(){this.productStore.getBrandList(),this.productStore.getCategoryList(),this.form=this.fb.group({id:this.fb.nonNullable.control(""),description:this.fb.nonNullable.control("",[s.required]),productImages:this.fb.nonNullable.control([]),productName:this.fb.nonNullable.control("",[s.required]),categoryId:this.fb.nonNullable.control(""),brandId:this.fb.nonNullable.control(""),price:this.fb.nonNullable.control("",[s.min(0)]),discount:this.fb.nonNullable.control("",[s.min(0)]),discountType:this.fb.nonNullable.control(0),hasVariants:this.fb.nonNullable.control(!0),productStockLevel:this.fb.nonNullable.control("",[s.min(0)]),reorderLevel:this.fb.nonNullable.control("",[s.min(0)]),imagesArray:this.fb.nonNullable.array([])});for(let e=0;e<4;e++)this.imagesArray.push(this.fb.control(""));this.route.paramMap.subscribe(e=>{let t=e.get("productId");t&&(this.mode="edit",this.productStore.getProductById(t))}),this.price.valueChanges.subscribe(e=>{e&&this.discountType.getRawValue()===0&&(this.discount.clearValidators(),this.discount.setValidators([s.max(Number(e)),s.min(0)]),this.discount.updateValueAndValidity())}),this.discountType.valueChanges.subscribe(e=>{this.discount.clearValidators(),e===1?this.discount.setValidators([s.max(100),s.min(0)]):this.discount.setValidators([s.max(this.price.getRawValue()),s.min(0)]),this.discount.updateValueAndValidity()})}get description(){return this.form.get("description")}get productName(){return this.form.get("productName")}get categoryId(){return this.form.get("categoryId")}get brandId(){return this.form.get("brandId")}get price(){return this.form.get("price")}get discount(){return this.form.get("discount")}get discountType(){return this.form.get("discountType")}get hasVariants(){return this.form.get("hasVariants")}get productStockLevel(){return this.form.get("productStockLevel")}get reorderLevel(){return this.form.get("reorderLevel")}get productImages(){return this.form.get("productImages")}onSelectImage(e,t){if(!e){this.imagesArray.controls[t].patchValue(null);return}this.imagesArray.controls[t].patchValue(e),this.imagesArray.controls[t].updateV
1alueAndValidity()}onSave(){if(this.form.invalid){this.helper.validateAllFormFields(this.form);return}this.productImages.patchValue(this.imagesArray.getRawValue()),this.productImages.updateValueAndValidity(),this.productStore.onCreateProduct(this.form.getRawValue())}onUpdate(){if(this.form.invalid){this.helper.validateAllFormFields(this.form);return}this.productStore.onUpdateProduct(this.form.getRawValue())}static \u0275fac=function(t){return new(t||i)};static \u0275cmp=y({type:i,selectors:[["app-create-product"]],decls:4,vars:4,consts:[[3,"showBackBtn","inputClass"],[3,"activeTabIndex"],[1,"min-h-[40vh]","sm:min-h-[50vh]","flex","justify-center","items-center","px-4"],[3,"formGroup"],[1,"flex","items-center","justify-center"],[1,"table-spinner"],[1,"text-center","mt-8"],[1,"grid","grid-cols-1","lg:grid-cols-2","w-full","gap-4","my-6"],["placeholder","Input product Name",3,"inputClass","control","label"],["placeholder","Select Option",3,"value","displayName","options","inputClass","control","label"],[1,"mb-6"],[1,"text-[#6B6B6B]","font-medium"],["placeholder","Give detailed description about your product ","rows","4",1,"w-full","rounded-lg","border","border-[#E6E6E6]","mt-2","p-4","placeholder:text-[#D8D8D8]",3,"formControl"],[1,"text-red-500","text-xs","mt-1"],[1,"grid","grid-cols-1","lg:grid-cols-2","w-full","gap-4","gap-y-6","mb-6"],[3,"showPrefix","inputClass","amount","control","label"],["prefix","",1,"text-gray-800","font-medium","whitespace-nowrap","bg-[#f5f5f5]","p-2","rounded-sm"],["placeholder","Input Quantity",3,"inputClass","digitsOnly","control","label"],["placeholder","Select Option",3,"options","inputClass","control","label"],["placeholder","0.00",3,"showPrefix","inputClass","control","digitsOnly","label"],["placeholder","What quantity would you like to be notified that you are Low on stock",3,"inputClass","control","digitsOnly","label"],["formArrayName","imagesArray",1,"w-full","grid-cols-1","sm:grid","grid-cols-4","justify-between","items-center","gap-4"],[1,"m-4"],[1,"w-full","flex","justify-end","items-center","mt-6"],[3,"buttonDisabled","loading"],[1,"m-4",3,"fileChange"],[3,"buttonClick","buttonDisabled","loading"]],template:function(t,d){t&1&&(n(0,"lib-dashboard-base-alt",0),f(1,"app-product-tabs",1),u(2,pt,6,0,"div",2)(3,bt,30,42,"form",3),r()),t&2&&(a("showBackBtn",!0)("inputClass","!bg-white"),o(),a("activeTabIndex",0),o(),m(d.productStore.isLoading()||d.productStore.loadingBrands()||d.productStore.loadingCategories()?2:3))},dependencies:[ot,G,Y,Z,E,rt,X,$,z,H,q,Q,W,J],encapsulation:2})};export{nt as CreateProduct};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.