{"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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"}