{"version":3,"file":"use-btn.mjs","sources":["../../../../../../packages/components/ui/btn/use-btn.ts"],"sourcesContent":["import { computed } from 'vue'\nimport useAlign, { useAlignProps } from 'casc-cesium-composables/private/use-align'\nimport useSize, { useSizeProps } from 'casc-cesium-composables/private/use-size'\n\nconst padding = {\n  none: 0,\n  xs: 4,\n  sm: 8,\n  md: 16,\n  lg: 24,\n  xl: 32\n}\n\nconst defaultSizes = {\n  xs: 8,\n  sm: 10,\n  md: 14,\n  lg: 20,\n  xl: 24\n}\n\nexport const useBtnProps = {\n  ...useSizeProps,\n\n  type: {\n    type: String,\n    default: 'button'\n  },\n\n  label: [Number, String],\n  icon: String,\n  iconRight: String,\n\n  round: Boolean,\n  outline: Boolean,\n  flat: Boolean,\n  unelevated: Boolean,\n  rounded: Boolean,\n  push: Boolean,\n  glossy: Boolean,\n\n  size: String,\n  fab: Boolean,\n  fabMini: Boolean,\n  padding: String,\n\n  color: String,\n  textColor: String,\n  noCaps: Boolean,\n  noWrap: Boolean,\n  dense: Boolean,\n\n  tabindex: [Number, String],\n\n  ripple: {\n    type: [Boolean, Object],\n    default: true\n  },\n\n  align: {\n    ...useAlignProps.align,\n    default: 'center'\n  },\n  stack: Boolean,\n  stretch: Boolean,\n  loading: {\n    type: Boolean,\n    default: null\n  },\n  disable: Boolean\n}\n\nexport default function (props) {\n  const sizeStyle = useSize(props, defaultSizes)\n  const alignClass = useAlign(props)\n\n  const style = computed(() => {\n    const obj = props.fab === false && props.fabMini === false ? sizeStyle.value : {}\n    return props.padding !== void 0\n      ? Object.assign({}, obj, {\n          padding: props.padding\n            .split(/\\s+/)\n            .map(v => (v in padding ? padding[v] + 'px' : v))\n            .join(' '),\n          minWidth: '0',\n          minHeight: '0'\n        })\n      : obj\n  })\n\n  const isRounded = computed(() => props.rounded === true || props.fab === true || props.fabMini === true)\n\n  const isActionable = computed(() => props.disable !== true && props.loading !== true)\n\n  const tabIndex = computed(() => (isActionable.value === true ? props.tabindex || 0 : -1))\n\n  const design = computed(() => {\n    if (props.flat === true) return 'flat'\n    if (props.outline === true) return 'outline'\n    if (props.push === true) return 'push'\n    if (props.unelevated === true) return 'unelevated'\n    return 'standard'\n  })\n\n  const attributes = computed(() => {\n    const acc: any = { tabindex: tabIndex.value }\n\n    if (props.type !== 'a') {\n      acc.type = props.type\n    }\n\n    acc.role = props.type === 'a' ? 'link' : 'button'\n\n    if (props.loading === true && props.percentage !== void 0) {\n      Object.assign(acc, {\n        role: 'progressbar',\n        'aria-valuemin': 0,\n        'aria-valuemax': 100,\n        'aria-valuenow': props.percentage\n      })\n    }\n\n    if (props.disable === true) {\n      acc.disabled = ''\n      acc['aria-disabled'] = 'true'\n    }\n\n    return acc\n  })\n\n  const classes = computed(() => {\n    let colors\n\n    if (props.color !== void 0) {\n      if (props.flat === true || props.outline === true) {\n        colors = `text-${props.textColor || props.color}`\n      } else {\n        colors = `bg-${props.color} text-${props.textColor || 'white'}`\n      }\n    } else if (props.textColor) {\n      colors = `text-${props.textColor}`\n    }\n\n    return (\n      `vc-btn--${design.value} ` +\n      `vc-btn--${props.round === true ? 'round' : `rectangle${isRounded.value === true ? ' vc-btn--rounded' : ''}`}` +\n      (colors !== void 0 ? ' ' + colors : '') +\n      (isActionable.value === true ? ' vc-btn--actionable vc-focusable vc-hoverable' : props.disable === true ? ' disabled' : '') +\n      (props.fab === true ? ' vc-btn--fab' : props.fabMini === true ? ' vc-btn--fab-mini' : '') +\n      (props.noCaps === true ? ' vc-btn--no-uppercase' : '') +\n      (props.dense === true ? ' vc-btn--dense' : '') +\n      (props.stretch === true ? ' no-border-radius self-stretch' : '') +\n      (props.glossy === true ? ' glossy' : '')\n    )\n  })\n\n  const innerClasses = computed(\n    () =>\n      alignClass.value +\n      (props.stack === true ? ' column' : ' row') +\n      (props.noWrap === true ? ' no-wrap text-no-wrap' : '') +\n      (props.loading === true ? ' vc-btn__content--hidden' : '')\n  )\n\n  return {\n    classes,\n    style,\n    innerClasses,\n    attributes,\n    isActionable\n  }\n}\n"],"names":[],"mappings":"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"}