{"version":3,"file":"UListItem.mjs","names":["makeComponentProps","computed","ref","makeRouterProps","useLink","makeTagProps","UIcon","UBadge","genericComponent","propsFactory","useRender","useEventListener","makeUListItemProps","_objectSpread","disabled","type","Boolean","key","Number","badge","itemId","String","required","isActive","prependIcon","subTitle","nav","UListItem","name","props","emits","click","e","currentItemId","value","keydownEnter","setup","_ref","emit","slots","attrs","link","isHover","isFocused","navItemTextClasses","listItemClasses","prependIconColor","onClick","_link$navigate","navigate","call","changeCurrentIndex","id","handleKeyDown","event","preventDefault","_slots$default","Tag","isLink","tag","_createVNode","href","onMouseover","onMouseleave","onFocus","onBlur","_default","concat"],"sources":["../../../src/components/UListItemGroup/UListItem.tsx"],"sourcesContent":["import { makeComponentProps } from '@/composables/component'\nimport { computed, ref } from 'vue'\nimport { makeRouterProps, useLink } from '@/composables/router'\n\nimport { makeTagProps } from '@/composables/tag'\nimport { UIcon } from '@/components/UIcon/UIcon'\nimport { UBadge } from '@/components/UBadge/UBadge'\n\nimport { genericComponent, propsFactory, useRender } from '@/utils'\nimport { useEventListener } from '@vueuse/core'\n\nexport const makeUListItemProps = propsFactory(\n  {\n    disabled: {\n      type: Boolean,\n      default: false,\n    },\n    key: Number,\n    badge: Number,\n    itemId: {\n      type: String,\n      required: true,\n    },\n    isActive: Boolean,\n    prependIcon: String,\n    type: {\n      type: String,\n      default: 'default',\n    },\n    subTitle: String,\n    nav: Boolean,\n    ...makeComponentProps(),\n    ...makeTagProps(),\n    ...makeRouterProps(),\n  },\n  'UListItem'\n)\n\nexport type UListItemSlots = {\n  default: never\n  header: never\n}\n\nexport const UListItem = genericComponent<UListItemSlots>()({\n  name: 'UListItem',\n\n  props: makeUListItemProps(),\n\n  emits: {\n    click: (e: MouseEvent) => true,\n    currentItemId: (value: string) => true,\n    'keydown:enter': () => true,\n  },\n\n  setup(props, { emit, slots, attrs }) {\n    const link = useLink(props, attrs)\n    const isHover = ref(false)\n    const isFocused = ref(false)\n\n    const navItemTextClasses = computed(() => ({\n      'text-text-md font-semibold select-none whitespace-nowrap': true,\n      ...(isHover.value === false && {\n        'text-gray-700': true,\n      }),\n      ...(isHover.value === true &&\n        !props.disabled && {\n          'text-gray-700': true,\n        }),\n      ...(props.isActive === true &&\n        !props.disabled && {\n          'text-gray-700': true,\n        }),\n    }))\n\n    const listItemClasses = computed(() => ({\n      // eslint-disable-next-line max-len\n      'flex items-center shrink-0 text-text-md font-semibold select-none text-gray-700 py-3 w-full rounded-md overflow-hidden':\n        true,\n      ...(!props.disabled && {\n        'active:shadow-xs-btn active:shadow-gray-100 cursor-pointer': true,\n      }),\n      ...(props.disabled && {\n        'cursor-not-allowed': true,\n      }),\n      ...(props.prependIcon != '' && {\n        'px-3': true,\n      }),\n      ...(props.prependIcon === '' && {\n        'pr-3 pl-[48px]': true,\n      }),\n      ...(props.isActive === false &&\n        !props.disabled && {\n          'active:bg-transparent hover:bg-gray-50': true,\n        }),\n      ...(props.isActive === true && {\n        'bg-gray-200 hover:bg-gray-100 active:bg-gray-50': true,\n      }),\n      ...(props.type !== 'small' && {\n        'justify-between': true,\n      }),\n      ...(props.type === 'small' && {\n        'h-48 max-w-[48px] shrink-0 justify-center': true,\n      }),\n    }))\n\n    const prependIconColor = () => {\n      if (\n        (props.isActive === true || isHover.value === true) &&\n        !props.disabled\n      ) {\n        return 'gray-500'\n      }\n      return 'gray-500'\n    }\n\n    function onClick(e: MouseEvent) {\n      if (props.disabled) return\n      emit('click', e)\n      link.navigate?.(e)\n    }\n\n    function changeCurrentIndex(id: string) {\n      if (props.disabled) return\n      emit('currentItemId', id)\n    }\n\n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (isFocused.value && event.key === 'Enter') {\n        emit('keydown:enter')\n        changeCurrentIndex(props.itemId)\n        event.preventDefault()\n      }\n    }\n\n    useEventListener('keydown', handleKeyDown)\n\n    useRender(() => {\n      const Tag = link.isLink.value ? 'a' : props.tag\n\n      return (\n        <Tag\n          class={listItemClasses.value}\n          href={link.href.value}\n          onClick={(event: MouseEvent) => {\n            changeCurrentIndex(props.itemId)\n            if (onClick && typeof onClick === 'function') {\n              onClick(event)\n            }\n          }}\n          onMouseover={() => (isHover.value = true)}\n          onMouseleave={() => (isHover.value = false)}\n          onFocus={() => (isFocused.value = true)}\n          onBlur={() => (isFocused.value = false)}\n          onKeydown={handleKeyDown}\n        >\n          <div class=\"flex items-center gap-3\">\n            {props.prependIcon ? (\n              <UIcon\n                color={prependIconColor()}\n                size=\"24\"\n                icon={`$${props.prependIcon}`}\n              ></UIcon>\n            ) : null}\n            {slots.default && props.type !== 'small' ? (\n              <div class={navItemTextClasses.value}>{slots.default?.()}</div>\n            ) : null}\n          </div>\n          {props.badge && props.type !== 'small' ? (\n            <div>\n              <UBadge color=\"gray\">{props.badge}</UBadge>\n            </div>\n          ) : null}\n        </Tag>\n      )\n    })\n    return {\n      changeCurrentIndex,\n      isHover,\n    }\n  },\n})\n\nexport type UListItem = InstanceType<typeof UListItem>\n"],"mappings":";;;;;;;SAASA,kBAAkB;AAC3B,SAASC,QAAQ,EAAEC,GAAG,QAAQ,KAAK;AAAA,SAC1BC,eAAe,EAAEC,OAAO;AAAA,SAExBC,YAAY;AAAA,SACZC,KAAK;AAAA,SACLC,MAAM;AAAA,SAENC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS;AAClD,SAASC,gBAAgB,QAAQ,cAAc;AAE/C,OAAO,IAAMC,kBAAkB,GAAGH,YAAY,CAAAI,aAAA,CAAAA,aAAA,CAAAA,aAAA;EAE1CC,QAAQ,EAAE;IACRC,IAAI,EAAEC,OAAO;IACb,WAAS;EACX,CAAC;EACDC,GAAG,EAAEC,MAAM;EACXC,KAAK,EAAED,MAAM;EACbE,MAAM,EAAE;IACNL,IAAI,EAAEM,MAAM;IACZC,QAAQ,EAAE;EACZ,CAAC;EACDC,QAAQ,EAAEP,OAAO;EACjBQ,WAAW,EAAEH,MAAM;EACnBN,IAAI,EAAE;IACJA,IAAI,EAAEM,MAAM;IACZ,WAAS;EACX,CAAC;EACDI,QAAQ,EAAEJ,MAAM;EAChBK,GAAG,EAAEV;AAAO,GACThB,kBAAkB,CAAC,CAAC,GACpBK,YAAY,CAAC,CAAC,GACdF,eAAe,CAAC,CAAC,GAEtB,WACF,CAAC;AAOD,OAAO,IAAMwB,SAAS,GAAGnB,gBAAgB,CAAiB,CAAC,CAAC;EAC1DoB,IAAI,EAAE,WAAW;EAEjBC,KAAK,EAAEjB,kBAAkB,CAAC,CAAC;EAE3BkB,KAAK,EAAE;IACLC,KAAK,EAAE,SAAAA,MAACC,CAAa;MAAA,OAAK,IAAI;IAAA;IAC9BC,aAAa,EAAE,SAAAA,cAACC,KAAa;MAAA,OAAK,IAAI;IAAA;IACtC,eAAe,EAAE,SAAAC,aAAA;MAAA,OAAM,IAAI;IAAA;EAC7B,CAAC;EAEDC,KAAK,WAAAA,MAACP,KAAK,EAAAQ,IAAA,EAA0B;IAAA,IAAtBC,IAAI,GAAAD,IAAA,CAAJC,IAAI;MAAEC,KAAK,GAAAF,IAAA,CAALE,KAAK;MAAEC,KAAK,GAAAH,IAAA,CAALG,KAAK;IAC/B,IAAMC,IAAI,GAAGrC,OAAO,CAACyB,KAAK,EAAEW,KAAK,CAAC;IAClC,IAAME,OAAO,GAAGxC,GAAG,CAAC,KAAK,CAAC;IAC1B,IAAMyC,SAAS,GAAGzC,GAAG,CAAC,KAAK,CAAC;IAE5B,IAAM0C,kBAAkB,GAAG3C,QAAQ,CAAC;MAAA,OAAAY,aAAA,CAAAA,aAAA,CAAAA,aAAA;QAClC,0DAA0D,EAAE;MAAI,GAC5D6B,OAAO,CAACR,KAAK,KAAK,KAAK,IAAI;QAC7B,eAAe,EAAE;MACnB,CAAC,GACGQ,OAAO,CAACR,KAAK,KAAK,IAAI,IACxB,CAACL,KAAK,CAACf,QAAQ,IAAI;QACjB,eAAe,EAAE;MACnB,CAAC,GACCe,KAAK,CAACN,QAAQ,KAAK,IAAI,IACzB,CAACM,KAAK,CAACf,QAAQ,IAAI;QACjB,eAAe,EAAE;MACnB,CAAC;IAAA,CACH,CAAC;IAEH,IAAM+B,eAAe,GAAG5C,QAAQ,CAAC;MAAA,OAAAY,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA;QAC/B;QACA,wHAAwH,EACtH;MAAI,GACF,CAACgB,KAAK,CAACf,QAAQ,IAAI;QACrB,4DAA4D,EAAE;MAChE,CAAC,GACGe,KAAK,CAACf,QAAQ,IAAI;QACpB,oBAAoB,EAAE;MACxB,CAAC,GACGe,KAAK,CAACL,WAAW,IAAI,EAAE,IAAI;QAC7B,MAAM,EAAE;MACV,CAAC,GACGK,KAAK,CAACL,WAAW,KAAK,EAAE,IAAI;QAC9B,gBAAgB,EAAE;MACpB,CAAC,GACGK,KAAK,CAACN,QAAQ,KAAK,KAAK,IAC1B,CAACM,KAAK,CAACf,QAAQ,IAAI;QACjB,wCAAwC,EAAE;MAC5C,CAAC,GACCe,KAAK,CAACN,QAAQ,KAAK,IAAI,IAAI;QAC7B,iDAAiD,EAAE;MACrD,CAAC,GACGM,KAAK,CAACd,IAAI,KAAK,OAAO,IAAI;QAC5B,iBAAiB,EAAE;MACrB,CAAC,GACGc,KAAK,CAACd,IAAI,KAAK,OAAO,IAAI;QAC5B,2CAA2C,EAAE;MAC/C,CAAC;IAAA,CACD,CAAC;IAEH,IAAM+B,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA,EAAS;MAC7B,IACE,CAACjB,KAAK,CAACN,QAAQ,KAAK,IAAI,IAAImB,OAAO,CAACR,KAAK,KAAK,IAAI,KAClD,CAACL,KAAK,CAACf,QAAQ,EACf;QACA,OAAO,UAAU;MACnB;MACA,OAAO,UAAU;IACnB,CAAC;IAED,SAASiC,QAAOA,CAACf,CAAa,EAAE;MAAA,IAAAgB,cAAA;MAC9B,IAAInB,KAAK,CAACf,QAAQ,EAAE;MACpBwB,IAAI,CAAC,OAAO,EAAEN,CAAC,CAAC;MAChB,CAAAgB,cAAA,GAAAP,IAAI,CAACQ,QAAQ,qBAAbD,cAAA,CAAAE,IAAA,CAAAT,IAAI,EAAYT,CAAC,CAAC;IACpB;IAEA,SAASmB,kBAAkBA,CAACC,EAAU,EAAE;MACtC,IAAIvB,KAAK,CAACf,QAAQ,EAAE;MACpBwB,IAAI,CAAC,eAAe,EAAEc,EAAE,CAAC;IAC3B;IAEA,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,KAAoB,EAAK;MAC9C,IAAIX,SAAS,CAACT,KAAK,IAAIoB,KAAK,CAACrC,GAAG,KAAK,OAAO,EAAE;QAC5CqB,IAAI,CAAC,eAAe,CAAC;QACrBa,kBAAkB,CAACtB,KAAK,CAACT,MAAM,CAAC;QAChCkC,KAAK,CAACC,cAAc,CAAC,CAAC;MACxB;IACF,CAAC;IAED5C,gBAAgB,CAAC,SAAS,EAAE0C,aAAa,CAAC;IAE1C3C,SAAS,CAAC,YAAM;MAAA,IAAA8C,cAAA;MACd,IAAMC,GAAG,GAAGhB,IAAI,CAACiB,MAAM,CAACxB,KAAK,GAAG,GAAG,GAAGL,KAAK,CAAC8B,GAAG;MAE/C,OAAAC,YAAA,CAAAH,GAAA;QAAA,SAEWZ,eAAe,CAACX,KAAK;QAAA,QACtBO,IAAI,CAACoB,IAAI,CAAC3B,KAAK;QAAA,WACZ,SAAAa,QAACO,KAAiB,EAAK;UAC9BH,kBAAkB,CAACtB,KAAK,CAACT,MAAM,CAAC;UAChC,IAAI2B,QAAO,IAAI,OAAOA,QAAO,KAAK,UAAU,EAAE;YAC5CA,QAAO,CAACO,KAAK,CAAC;UAChB;QACF,CAAC;QAAA,eACY,SAAAQ,YAAA;UAAA,OAAOpB,OAAO,CAACR,KAAK,GAAG,IAAI;QAAA,CAAC;QAAA,gBAC3B,SAAA6B,aAAA;UAAA,OAAOrB,OAAO,CAACR,KAAK,GAAG,KAAK;QAAA,CAAC;QAAA,WAClC,SAAA8B,QAAA;UAAA,OAAOrB,SAAS,CAACT,KAAK,GAAG,IAAI;QAAA,CAAC;QAAA,UAC/B,SAAA+B,OAAA;UAAA,OAAOtB,SAAS,CAACT,KAAK,GAAG,KAAK;QAAA,CAAC;QAAA,aAC5BmB;MAAa;QAAA,oBAAAa,SAAA;UAAA,QAAAN,YAAA;YAAA;UAAA,IAGrB/B,KAAK,CAACL,WAAW,GAAAoC,YAAA,CAAAtD,KAAA;YAAA,SAEPwC,gBAAgB,CAAC,CAAC;YAAA;YAAA,YAAAqB,MAAA,CAEftC,KAAK,CAACL,WAAW;UAAA,WAE3B,IAAI,EACPe,KAAK,WAAQ,IAAIV,KAAK,CAACd,IAAI,KAAK,OAAO,GAAA6C,YAAA;YAAA,SAC1BhB,kBAAkB,CAACV;UAAK,KAAAsB,cAAA,GAAGjB,KAAK,WAAQ,qBAAbiB,cAAA,CAAAN,IAAA,CAAAX,KAAgB,CAAC,KACtD,IAAI,IAETV,KAAK,CAACV,KAAK,IAAIU,KAAK,CAACd,IAAI,KAAK,OAAO,GAAA6C,YAAA,eAAAA,YAAA,CAAArD,MAAA;YAAA;UAAA;YAAA,oBAAA2D,SAAA;cAAA,QAEZrC,KAAK,CAACV,KAAK;YAAA;UAAA,OAEjC,IAAI;QAAA;MAAA;IAGd,CAAC,CAAC;IACF,OAAO;MACLgC,kBAAkB,EAAlBA,kBAAkB;MAClBT,OAAO,EAAPA;IACF,CAAC;EACH;AACF,CAAC,CAAC"}