@oruga-ui/oruga-next
Version:
UI components for Vue.js and CSS framework agnostic
1 lines • 9.68 kB
Source Map (JSON)
{"version":3,"file":"breadcrumb.mjs","sources":["../../src/components/breadcrumb/Breadcrumb.vue","../../src/components/breadcrumb/BreadcrumbItem.vue","../../src/components/breadcrumb/index.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, useTemplateRef } from \"vue\";\n\nimport { getDefault } from \"@/utils/config\";\nimport {\n defineClasses,\n normalizeOptions,\n useProviderParent,\n useSequentialId,\n} from \"@/composables\";\n\nimport type { BreadcrumbProps } from \"./props\";\n\n/**\n * The classic breadcrumb, in different colors, sizes, and states\n * @displayName Breadcrumb\n * @requires ./BreadcrumbItem.vue\n * @style _breadcrumb.scss\n */\ndefineOptions({\n isOruga: true,\n name: \"OBreadcrumb\",\n configField: \"breadcrumb\",\n});\n\nconst props = withDefaults(defineProps<BreadcrumbProps>(), {\n override: undefined,\n options: undefined,\n size: () => getDefault(\"breadcrumb.size\"),\n variant: () => getDefault(\"breadcrumb.variant\"),\n position: () => getDefault(\"breadcrumb.position\"),\n separator: () => getDefault(\"breadcrumb.separator\", \"/\"),\n ariaLabel: () => getDefault(\"modal.ariaLabel\", \"Breadcrumb\"),\n});\n\nconst rootRef = useTemplateRef(\"rootElement\");\n\n/** provide functionalities and data to child item components */\nuseProviderParent({ rootRef });\n\n// create a unique id sequence\nconst { nextSequence } = useSequentialId();\n\n/** normalized programamtic options */\nconst normalizedOptions = computed(() =>\n normalizeOptions(props.options, nextSequence),\n);\n\nconst customStyle = computed(() => ({ \"--seperator\": `'${props.separator}'` }));\n\n// #region --- Computed Component Classes ---\n\nconst rootClasses = defineClasses(\n [\"rootClass\", \"o-breadcrumb\"],\n [\n \"sizeClass\",\n \"o-breadcrumb--\",\n computed(() => props.size),\n computed(() => !!props.size),\n ],\n [\n \"variantClass\",\n \"o-breadcrumb--\",\n computed(() => props.variant),\n computed(() => !!props.variant),\n ],\n [\n \"positionClass\",\n \"o-breadcrumb--\",\n computed(() => props.position),\n computed(() => !!props.position),\n ],\n);\n\nconst listClasses = defineClasses([\"listClass\", \"o-breadcrumb__list\"]);\n\n// #endregion --- Computed Component Classes ---\n</script>\n\n<template>\n <nav\n ref=\"rootElement\"\n data-oruga=\"breadcrumb\"\n :class=\"rootClasses\"\n :style=\"customStyle\"\n :aria-label=\"ariaLabel\">\n <ol :class=\"listClasses\">\n <!--\n @slot Place breadcrumb items here \n -->\n <slot>\n <OBreadcrumbItem\n v-for=\"option in normalizedOptions\"\n :key=\"option.key\"\n v-bind=\"option.attrs\"\n :value=\"option.value\"\n :label=\"option.label\"\n :hidden=\"option.hidden\" />\n </slot>\n </ol>\n </nav>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nimport OIcon from \"../icon/Icon.vue\";\n\nimport { getDefault } from \"@/utils/config\";\nimport { defineClasses, useProviderChild } from \"@/composables\";\n\nimport type { BreadcrumbItemProps } from \"./props\";\n\n/**\n * The classic breadrcumb item, in different colors, sizes, and states\n * @displayName Breadcrumb Item\n */\ndefineOptions({\n isOruga: true,\n name: \"OBreadcrumbItem\",\n configField: \"breadcrumb\",\n inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<BreadcrumbItemProps>(), {\n override: undefined,\n label: undefined,\n active: false,\n disabled: false,\n hidden: false,\n iconLeft: undefined,\n iconRight: undefined,\n iconPack: () => getDefault(\"breadcrumb.iconPack\"),\n iconSize: () => getDefault(\"breadcrumb.iconSize\"),\n tag: () => getDefault(\"breadcrumb.tag\", \"a\"),\n});\n\n/** inject functionalities and data from the parent component */\nconst { item } = useProviderChild();\n\n// #region --- Computed Component Classes ---\n\nconst rootClasses = defineClasses(\n [\"itemClass\", \"o-breadcrumb__item\"],\n [\n \"disabledClass\",\n \"o-breadcrumb__item--disabled\",\n null,\n computed(() => props.disabled),\n ],\n [\n \"activeClass\",\n \"o-breadcrumb__item--active\",\n null,\n computed(() => props.active),\n ],\n);\n\nconst linkClasses = defineClasses([\"linkClass\", \"o-breadcrumb__item__link\"]);\n\nconst iconLeftClasses = defineClasses(\n [\"iconClass\", \"o-breadcrumb__item__icon\"],\n [\"iconLeftClass\", \"o-breadcrumb__item__icon--left\"],\n);\n\nconst iconRightClasses = defineClasses(\n [\"iconClass\", \"o-breadcrumb__item__icon\"],\n [\"iconRightClass\", \"o-breadcrumb__item__icon--right\"],\n);\n\n// #endregion --- Computed Component Classes ---\n</script>\n\n<template>\n <li\n v-show=\"!hidden\"\n data-oruga=\"breadcrumb-item\"\n :data-id=\"`breadcrumb-${item.identifier}`\"\n :class=\"rootClasses\"\n :aria-current=\"active ? 'page' : undefined\">\n <!-- \n @slot Item seperator\n -->\n <slot name=\"seperator\"> </slot>\n\n <component\n :is=\"tag\"\n v-bind=\"$attrs\"\n :class=\"linkClasses\"\n :disabled=\"disabled\"\n :active=\"active\"\n :aria-current=\"active ? 'page' : undefined\">\n <o-icon\n v-if=\"iconLeft\"\n :icon=\"iconLeft\"\n :pack=\"iconPack\"\n :size=\"iconSize\"\n :class=\"iconLeftClasses\" />\n\n <!-- \n @slot Override label\n -->\n <slot>\n <span>{{ label }}</span>\n </slot>\n\n <o-icon\n v-if=\"iconRight\"\n :icon=\"iconRight\"\n :pack=\"iconPack\"\n :size=\"iconSize\"\n :class=\"iconRightClasses\" />\n </component>\n </li>\n</template>\n","import type { App, Plugin } from \"vue\";\n\nimport Breadcrumb from \"./Breadcrumb.vue\";\nimport BreadcrumbItem from \"./BreadcrumbItem.vue\";\n\nimport { registerComponent } from \"@/utils/plugins\";\n\n/** export breadcrumb plugin */\nexport default {\n install(app: App) {\n registerComponent(app, Breadcrumb);\n registerComponent(app, BreadcrumbItem);\n },\n} as Plugin;\n\n/** export Breadcrumb components */\nexport { Breadcrumb as OBreadcrumb, BreadcrumbItem as OBreadcrumbItem };\n"],"names":["_createElementBlock","_unref","ariaLabel","_createElementVNode","_renderSlot","_Fragment","_renderList","_openBlock","_createBlock","_mergeProps","active","_resolveDynamicComponent","tag","$attrs","disabled","iconLeft","OIcon","iconPack","iconSize","label","iconRight","hidden","Breadcrumb","BreadcrumbItem"],"mappings":"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"}