maz-ui
Version:
A standalone components library for Vue.Js 3 & Nuxt.Js 3
1 lines • 2.88 kB
JavaScript
import{t as MazInput_default}from"./MazInput.C8eCMnat.js";import{computed,createBlock,defineComponent,nextTick,onMounted,openBlock,ref,unref,watch,withKeys}from"vue";import{MazBanknotes}from"@maz-ui/icons/lazy/MazBanknotes";import{formatCurrency}from"@maz-ui/utils/helpers/formatCurrency";var MazInputPrice_default=defineComponent({__name:`MazInputPrice`,props:{modelValue:{default:void 0},currency:{default:`EUR`},locale:{default:`fr-FR`},min:{default:-1/0},max:{default:1/0},noIcon:{type:Boolean,default:!1},block:{type:Boolean},error:{type:Boolean},hint:{},success:{type:Boolean},warning:{type:Boolean},currencyOptions:{}},emits:[`update:model-value`,`input`,`formatted`,`blur`,`focus`],setup(__props,{emit:__emit}){let props=__props;let emits=__emit;let internalValue=ref(getAdjustedPrice(props.modelValue));watch(()=>props.modelValue,updateInternalValue);let isActive=ref(!1);let valueString=computed(()=>props.modelValue?.toString());let valueNumber=computed(()=>props.modelValue);let priceFormatted=computed(()=>typeof valueNumber.value==`number`?formatCurrency(valueNumber.value,props.locale,{...props.currencyOptions,currency:props.currency}):void 0);let isLetterRegex=/[^\d.]/g;function getAdjustedPrice(value){let isNegative=typeof value==`string`&&value.startsWith(`-`);let newValue=typeof value==`string`?Number.parseFloat(value.replace(`,`,`.`).replaceAll(isLetterRegex,``)):value;return newValue=isNegative&&newValue?-newValue:newValue,(typeof newValue!=`number`||Number.isNaN(newValue))&&(newValue=void 0),newValue&&newValue<props.min&&(newValue=props.min),newValue&&newValue>props.max&&(newValue=props.max),newValue}let displayPrice=computed(()=>{if(isActive.value)return valueString.value;if(typeof props.modelValue==`number`)return priceFormatted.value});async function emitValues(newValue){emits(`update:model-value`,getAdjustedPrice(newValue)),await nextTick(),emits(`formatted`,priceFormatted.value)}onMounted(()=>{emitValues(props.modelValue)});function onBlur(event){isActive.value=!1,emitValues(internalValue.value),emits(`blur`,event)}function onFocus(event){isActive.value=!0,emits(`focus`,event)}function onInput(){emits(`input`,internalValue.value),emitValues(internalValue.value)}function updateInternalValue(value){internalValue.value=getAdjustedPrice(value)}return(_ctx,_cache)=>(openBlock(),createBlock(MazInput_default,{"model-value":displayPrice.value,class:`maz-input-price m-reset-css`,block:__props.block,error:__props.error,success:__props.success,warning:__props.warning,hint:__props.hint,"left-icon":__props.noIcon?void 0:unref(MazBanknotes),onFocus,onBlur,onInput,onKeydown:_cache[0]||=withKeys($event=>emitValues(internalValue.value),[`enter`]),"onUpdate:modelValue":_cache[1]||=$event=>updateInternalValue($event)},null,8,[`model-value`,`block`,`error`,`success`,`warning`,`hint`,`left-icon`]))}});export{MazInputPrice_default as t};