UNPKG

maz-ui

Version:

A standalone components library for Vue.Js 3 & Nuxt.Js 3

1 lines 5.46 kB
import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper.ChmETRGw.js";import{useInstanceUniqId}from"../composables/useInstanceUniqId.js";import{t as MazInput_default}from"./MazInput.C8eCMnat.js";import{computed,createBlock,createCommentVNode,createElementBlock,createElementVNode,createVNode,defineAsyncComponent,defineComponent,mergeProps,normalizeClass,normalizeStyle,openBlock,toDisplayString,unref,withCtx,withKeys,withModifiers}from"vue";import{throttle}from"@maz-ui/utils/helpers/throttle";import{MazMinus}from"@maz-ui/icons/static/MazMinus";import{MazPlus}from"@maz-ui/icons/static/MazPlus";import '../assets/MazInputNumber.DUZcdtem.css';var _hoisted_1=[`for`];var _hoisted_2={class:`m-input-number__wrapper`};var MazInputNumber_default=_plugin_vue_export_helper_default(defineComponent({inheritAttrs:!1,__name:`MazInputNumber`,props:{id:{default:()=>void 0},style:{type:[Boolean,null,String,Object,Array],default:()=>void 0},class:{type:[Boolean,null,String,Object,Array],default:()=>void 0},modelValue:{default:()=>void 0},disabled:{type:Boolean,default:!1},max:{default:()=>1/0},min:{default:()=>-1/0},step:{default:1},size:{default:`md`},hideButtons:{type:Boolean},textCenter:{type:Boolean,default:!0},inputmode:{default:`numeric`},block:{type:Boolean},error:{type:Boolean,default:!1},hint:{},success:{type:Boolean,default:!1},warning:{type:Boolean,default:!1},inputProps:{},topLabel:{default:()=>void 0}},emits:[`update:model-value`,`focus`,`blur`,`click`,`change`],setup(__props,{emit:__emit}){let emits=__emit;let instanceId=useInstanceUniqId({componentName:`MazInput`,providedId:__props.id});let MazBtn=defineAsyncComponent(()=>import(`../components/MazBtn.js`));let currentValue=computed({get:()=>__props.modelValue,set:value=>emitValue(value)});function findClosestStep(number){return Math.round(number/__props.step)*__props.step}function checkValue(value){if(typeof value==`number`)return value<=__props.min?__props.min:value>=__props.max?__props.max:findClosestStep(value)}let emitThrottled=throttle(value=>emitValue(value),300);function emitValue(newValue){newValue=checkValue(newValue),currentValue.value!==newValue&&emits(`update:model-value`,newValue)}emitValue(currentValue.value);let incrementDisabled=computed(()=>__props.modelValue&&__props.modelValue>=__props.max);let decrementDisabled=computed(()=>__props.modelValue&&__props.modelValue<=__props.min);function increment(){if(!(__props.disabled||incrementDisabled.value)){if((currentValue.value===void 0||currentValue.value===null)&&Number.isFinite(__props.min)){currentValue.value=__props.min;return}currentValue.value=(currentValue.value??0)+1*__props.step}}function decrement(){if(!(__props.disabled||decrementDisabled.value)){if((currentValue.value===void 0||currentValue.value===null)&&Number.isFinite(__props.min)){currentValue.value=__props.min;return}currentValue.value=(currentValue.value??0)-1*__props.step}}let stateColor=computed(()=>{if(__props.error)return`!maz-text-destructive-600`;if(__props.success)return`!maz-text-success-600`;if(__props.warning)return`!maz-text-warning-600`});return(_ctx,_cache)=>(openBlock(),createElementBlock(`div`,{class:normalizeClass([`m-input-number m-reset-css`,[`m-input-number--${__props.size}`,__props.class,{"--block":__props.block}]]),style:normalizeStyle(__props.style)},[__props.topLabel?(openBlock(),createElementBlock(`label`,{key:0,for:unref(instanceId),class:normalizeClass([`m-input-number__top-label`,stateColor.value])},toDisplayString(__props.topLabel),11,_hoisted_1)):createCommentVNode(``,!0),createElementVNode(`div`,_hoisted_2,[__props.hideButtons?createCommentVNode(``,!0):(openBlock(),createBlock(unref(MazBtn),{key:0,color:`transparent`,size:__props.size,class:`m-input-number__button m-input-number__decrement-button`,disabled:decrementDisabled.value||__props.disabled,onClick:decrement},{default:withCtx(()=>[createVNode(unref(MazMinus),{class:`m-input-number__button__icon`})]),_:1},8,[`size`,`disabled`])),createVNode(MazInput_default,mergeProps({..._ctx.$attrs,...__props.inputProps},{id:unref(instanceId),"model-value":currentValue.value,type:`number`,class:[`m-input-number__input`,{"--no-buttons":__props.hideButtons,"--text-center":__props.textCenter}],disabled:__props.disabled,min:__props.min,max:__props.max,step:__props.step,error:__props.error,success:__props.success,warning:__props.warning,hint:__props.hint,inputmode:__props.inputmode,size:__props.size,block:``,onKeydown:[withKeys(withModifiers(increment,[`prevent`]),[`up`]),withKeys(withModifiers(decrement,[`prevent`]),[`down`])],onFocus:_cache[0]||=$event=>_ctx.$emit(`focus`,$event),onChange:_cache[1]||=$event=>_ctx.$emit(`change`,$event),onBlur:_cache[2]||=$event=>_ctx.$emit(`blur`,$event),onClick:_cache[3]||=$event=>_ctx.$emit(`click`,$event),"onUpdate:modelValue":_cache[4]||=$event=>unref(emitThrottled)($event)}),null,16,[`id`,`model-value`,`class`,`disabled`,`min`,`max`,`step`,`error`,`success`,`warning`,`hint`,`inputmode`,`size`,`onKeydown`]),__props.hideButtons?createCommentVNode(``,!0):(openBlock(),createBlock(unref(MazBtn),{key:1,color:`transparent`,size:__props.size,class:`m-input-number__button m-input-number__increment-button`,disabled:incrementDisabled.value||__props.disabled,onClick:increment},{default:withCtx(()=>[createVNode(unref(MazPlus),{class:`m-input-number__button__icon`})]),_:1},8,[`size`,`disabled`]))])],6))}}),[[`__scopeId`,`data-v-770e9b23`]]);export{MazInputNumber_default as t};