UNPKG

vuetify

Version:

Vue Material Component Framework

1 lines 11.7 kB
{"version":3,"file":"VToolbar.mjs","names":["VDefaultsProvider","VExpandTransition","VImg","VToolbarTitle","makeBorderProps","useBorder","makeElevationProps","useElevation","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","provideDefaults","useBackgroundColor","computed","ref","toRef","convertToUnit","genericComponent","pick","propsFactory","useRender","allowedDensities","makeVToolbarProps","absolute","Boolean","collapse","color","String","density","type","default","validator","v","includes","extended","extensionHeight","Number","flat","floating","height","image","title","tag","VToolbar","name","props","setup","slots","backgroundColorClasses","backgroundColorStyles","borderClasses","elevationClasses","roundedClasses","themeClasses","isExtended","extension","contentHeight","parseInt","value","VBtn","variant","hasTitle","hasImage","cover","src","VTabs","prepend","text","append","filterToolbarProps","Object","keys"],"sources":["../../../src/components/VToolbar/VToolbar.tsx"],"sourcesContent":["// Styles\nimport './VToolbar.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VExpandTransition } from '@/components/transitions'\nimport { VImg } from '@/components/VImg'\nimport { VToolbarTitle } from './VToolbarTitle'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref, toRef } from 'vue'\nimport { convertToUnit, genericComponent, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ExtractPropTypes, PropType } from 'vue'\nimport type { MakeSlots } from '@/util'\n\nconst allowedDensities = [null, 'prominent', 'default', 'comfortable', 'compact'] as const\n\nexport type Density = null | 'prominent' | 'default' | 'comfortable' | 'compact'\n\nexport const makeVToolbarProps = propsFactory({\n absolute: Boolean,\n collapse: Boolean,\n color: String,\n density: {\n type: String as PropType<Density>,\n default: 'default',\n validator: (v: any) => allowedDensities.includes(v),\n },\n extended: Boolean,\n extensionHeight: {\n type: [Number, String],\n default: 48,\n },\n flat: Boolean,\n floating: Boolean,\n height: {\n type: [Number, String],\n default: 64,\n },\n image: String,\n title: String,\n\n ...makeBorderProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'header' }),\n ...makeThemeProps(),\n}, 'v-toolbar')\n\nexport type VToolbarSlots = MakeSlots<{\n default: []\n image: []\n prepend: []\n append: []\n title: []\n extension: []\n}>\n\nexport const VToolbar = genericComponent<VToolbarSlots>()({\n name: 'VToolbar',\n\n props: makeVToolbarProps(),\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n const { borderClasses } = useBorder(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { themeClasses } = provideTheme(props)\n\n const isExtended = ref(!!(props.extended || slots.extension?.()))\n const contentHeight = computed(() => parseInt((\n Number(props.height) +\n (props.density === 'prominent' ? Number(props.height) : 0) -\n (props.density === 'comfortable' ? 8 : 0) -\n (props.density === 'compact' ? 16 : 0)\n ), 10))\n const extensionHeight = computed(() => isExtended.value\n ? parseInt((\n Number(props.extensionHeight) +\n (props.density === 'prominent' ? Number(props.extensionHeight) : 0) -\n (props.density === 'comfortable' ? 4 : 0) -\n (props.density === 'compact' ? 8 : 0)\n ), 10)\n : 0\n )\n\n provideDefaults({\n VBtn: {\n variant: 'text',\n },\n })\n\n useRender(() => {\n const hasTitle = !!(props.title || slots.title)\n const hasImage = !!(slots.image || props.image)\n\n const extension = slots.extension?.()\n isExtended.value = !!(props.extended || extension)\n\n return (\n <props.tag\n class={[\n 'v-toolbar',\n {\n 'v-toolbar--absolute': props.absolute,\n 'v-toolbar--collapse': props.collapse,\n 'v-toolbar--flat': props.flat,\n 'v-toolbar--floating': props.floating,\n [`v-toolbar--density-${props.density}`]: true,\n },\n backgroundColorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n themeClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n ]}\n >\n { hasImage && (\n <div key=\"image\" class=\"v-toolbar__image\">\n <VDefaultsProvider\n defaults={{\n VImg: {\n cover: true,\n src: props.image,\n },\n }}\n >\n { slots.image ? slots.image?.() : (<VImg />) }\n </VDefaultsProvider>\n </div>\n ) }\n\n <VDefaultsProvider\n defaults={{\n VTabs: {\n height: convertToUnit(contentHeight.value),\n },\n }}\n >\n <div\n class=\"v-toolbar__content\"\n style={{ height: convertToUnit(contentHeight.value) }}\n >\n { slots.prepend && (\n <div class=\"v-toolbar__prepend\">\n { slots.prepend?.() }\n </div>\n ) }\n\n { hasTitle && (\n <VToolbarTitle key=\"title\" text={ props.title }>\n {{ text: slots.title }}\n </VToolbarTitle>\n ) }\n\n { slots.default?.() }\n\n { slots.append && (\n <div class=\"v-toolbar__append\">\n { slots.append?.() }\n </div>\n ) }\n </div>\n </VDefaultsProvider>\n\n <VDefaultsProvider\n defaults={{\n VTabs: {\n height: convertToUnit(extensionHeight.value),\n },\n }}\n >\n <VExpandTransition>\n { isExtended.value && (\n <div\n class=\"v-toolbar__extension\"\n style={{ height: convertToUnit(extensionHeight.value) }}\n >\n { extension }\n </div>\n ) }\n </VExpandTransition>\n </VDefaultsProvider>\n </props.tag>\n )\n })\n\n return {\n contentHeight,\n extensionHeight,\n }\n },\n})\n\nexport type VToolbar = InstanceType<typeof VToolbar>\n\nexport function filterToolbarProps (props: ExtractPropTypes<ReturnType<typeof makeVToolbarProps>>) {\n return pick(props, Object.keys(VToolbar?.props ?? {}) as any)\n}\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB;AAAA,SACjBC,iBAAiB;AAAA,SACjBC,IAAI;AAAA,SACJC,aAAa,+BAEtB;AAAA,SACSC,eAAe,EAAEC,SAAS;AAAA,SAC1BC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY;AAAA,SAC5BC,eAAe;AAAA,SACfC,kBAAkB,uCAE3B;AACA,SAASC,QAAQ,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACjCC,aAAa,EAAEC,gBAAgB,EAAEC,IAAI,EAAEC,YAAY,EAAEC,SAAS,gCAEvE;AAIA,MAAMC,gBAAgB,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,CAAU;AAI1F,OAAO,MAAMC,iBAAiB,GAAGH,YAAY,CAAC;EAC5CI,QAAQ,EAAEC,OAAO;EACjBC,QAAQ,EAAED,OAAO;EACjBE,KAAK,EAAEC,MAAM;EACbC,OAAO,EAAE;IACPC,IAAI,EAAEF,MAA2B;IACjCG,OAAO,EAAE,SAAS;IAClBC,SAAS,EAAGC,CAAM,IAAKX,gBAAgB,CAACY,QAAQ,CAACD,CAAC;EACpD,CAAC;EACDE,QAAQ,EAAEV,OAAO;EACjBW,eAAe,EAAE;IACfN,IAAI,EAAE,CAACO,MAAM,EAAET,MAAM,CAAC;IACtBG,OAAO,EAAE;EACX,CAAC;EACDO,IAAI,EAAEb,OAAO;EACbc,QAAQ,EAAEd,OAAO;EACjBe,MAAM,EAAE;IACNV,IAAI,EAAE,CAACO,MAAM,EAAET,MAAM,CAAC;IACtBG,OAAO,EAAE;EACX,CAAC;EACDU,KAAK,EAAEb,MAAM;EACbc,KAAK,EAAEd,MAAM;EAEb,GAAGzB,eAAe,EAAE;EACpB,GAAGE,kBAAkB,EAAE;EACvB,GAAGE,gBAAgB,EAAE;EACrB,GAAGE,YAAY,CAAC;IAAEkC,GAAG,EAAE;EAAS,CAAC,CAAC;EAClC,GAAGjC,cAAc;AACnB,CAAC,EAAE,WAAW,CAAC;AAWf,OAAO,MAAMkC,QAAQ,GAAG1B,gBAAgB,EAAiB,CAAC;EACxD2B,IAAI,EAAE,UAAU;EAEhBC,KAAK,EAAEvB,iBAAiB,EAAE;EAE1BwB,KAAK,CAAED,KAAK,QAAa;IAAA,IAAX;MAAEE;IAAM,CAAC;IACrB,MAAM;MAAEC,sBAAsB;MAAEC;IAAsB,CAAC,GAAGrC,kBAAkB,CAACG,KAAK,CAAC8B,KAAK,EAAE,OAAO,CAAC,CAAC;IACnG,MAAM;MAAEK;IAAc,CAAC,GAAG/C,SAAS,CAAC0C,KAAK,CAAC;IAC1C,MAAM;MAAEM;IAAiB,CAAC,GAAG9C,YAAY,CAACwC,KAAK,CAAC;IAChD,MAAM;MAAEO;IAAe,CAAC,GAAG7C,UAAU,CAACsC,KAAK,CAAC;IAC5C,MAAM;MAAEQ;IAAa,CAAC,GAAG3C,YAAY,CAACmC,KAAK,CAAC;IAE5C,MAAMS,UAAU,GAAGxC,GAAG,CAAC,CAAC,EAAE+B,KAAK,CAACX,QAAQ,IAAIa,KAAK,CAACQ,SAAS,IAAI,CAAC,CAAC;IACjE,MAAMC,aAAa,GAAG3C,QAAQ,CAAC,MAAM4C,QAAQ,CAC3CrB,MAAM,CAACS,KAAK,CAACN,MAAM,CAAC,IACnBM,KAAK,CAACjB,OAAO,KAAK,WAAW,GAAGQ,MAAM,CAACS,KAAK,CAACN,MAAM,CAAC,GAAG,CAAC,CAAC,IACzDM,KAAK,CAACjB,OAAO,KAAK,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC,IACxCiB,KAAK,CAACjB,OAAO,KAAK,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC,EACrC,EAAE,CAAC,CAAC;IACP,MAAMO,eAAe,GAAGtB,QAAQ,CAAC,MAAMyC,UAAU,CAACI,KAAK,GACnDD,QAAQ,CACRrB,MAAM,CAACS,KAAK,CAACV,eAAe,CAAC,IAC5BU,KAAK,CAACjB,OAAO,KAAK,WAAW,GAAGQ,MAAM,CAACS,KAAK,CAACV,eAAe,CAAC,GAAG,CAAC,CAAC,IAClEU,KAAK,CAACjB,OAAO,KAAK,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC,IACxCiB,KAAK,CAACjB,OAAO,KAAK,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,EACpC,EAAE,CAAC,GACJ,CAAC,CACJ;IAEDjB,eAAe,CAAC;MACdgD,IAAI,EAAE;QACJC,OAAO,EAAE;MACX;IACF,CAAC,CAAC;IAEFxC,SAAS,CAAC,MAAM;MACd,MAAMyC,QAAQ,GAAG,CAAC,EAAEhB,KAAK,CAACJ,KAAK,IAAIM,KAAK,CAACN,KAAK,CAAC;MAC/C,MAAMqB,QAAQ,GAAG,CAAC,EAAEf,KAAK,CAACP,KAAK,IAAIK,KAAK,CAACL,KAAK,CAAC;MAE/C,MAAMe,SAAS,GAAGR,KAAK,CAACQ,SAAS,IAAI;MACrCD,UAAU,CAACI,KAAK,GAAG,CAAC,EAAEb,KAAK,CAACX,QAAQ,IAAIqB,SAAS,CAAC;MAElD;QAAA,SAEW,CACL,WAAW,EACX;UACE,qBAAqB,EAAEV,KAAK,CAACtB,QAAQ;UACrC,qBAAqB,EAAEsB,KAAK,CAACpB,QAAQ;UACrC,iBAAiB,EAAEoB,KAAK,CAACR,IAAI;UAC7B,qBAAqB,EAAEQ,KAAK,CAACP,QAAQ;UACrC,CAAE,sBAAqBO,KAAK,CAACjB,OAAQ,EAAC,GAAG;QAC3C,CAAC,EACDoB,sBAAsB,CAACU,KAAK,EAC5BR,aAAa,CAACQ,KAAK,EACnBP,gBAAgB,CAACO,KAAK,EACtBN,cAAc,CAACM,KAAK,EACpBL,YAAY,CAACK,KAAK,CACnB;QAAA,SACM,CACLT,qBAAqB,CAACS,KAAK;MAC5B;QAAA,gBAECI,QAAQ;UAAA,OACC,OAAO;UAAA,SAAO;QAAkB;UAAA,YAE3B;YACR9D,IAAI,EAAE;cACJ+D,KAAK,EAAE,IAAI;cACXC,GAAG,EAAEnB,KAAK,CAACL;YACb;UACF;QAAC;UAAA,gBAECO,KAAK,CAACP,KAAK,GAAGO,KAAK,CAACP,KAAK,IAAI,iCAAa;QAAA,IAGjD;UAAA,YAGW;YACRyB,KAAK,EAAE;cACL1B,MAAM,EAAEvB,aAAa,CAACwC,aAAa,CAACE,KAAK;YAC3C;UACF;QAAC;UAAA;YAAA,SAGO,oBAAoB;YAAA,SACnB;cAAEnB,MAAM,EAAEvB,aAAa,CAACwC,aAAa,CAACE,KAAK;YAAE;UAAC,IAEnDX,KAAK,CAACmB,OAAO;YAAA,SACF;UAAoB,IAC3BnB,KAAK,CAACmB,OAAO,IAAI,EAEtB,EAECL,QAAQ;YAAA,OACW,OAAO;YAAA,QAAQhB,KAAK,CAACJ;UAAK;YACxC0B,IAAI,EAAEpB,KAAK,CAACN;UAAK,EAEvB,EAECM,KAAK,CAACjB,OAAO,IAAI,EAEjBiB,KAAK,CAACqB,MAAM;YAAA,SACD;UAAmB,IAC1BrB,KAAK,CAACqB,MAAM,IAAI,EAErB;QAAA;UAAA,YAKO;YACRH,KAAK,EAAE;cACL1B,MAAM,EAAEvB,aAAa,CAACmB,eAAe,CAACuB,KAAK;YAC7C;UACF;QAAC;UAAA;YAAA,gBAGGJ,UAAU,CAACI,KAAK;cAAA,SAER,sBAAsB;cAAA,SACrB;gBAAEnB,MAAM,EAAEvB,aAAa,CAACmB,eAAe,CAACuB,KAAK;cAAE;YAAC,IAErDH,SAAS,EAEd;UAAA;QAAA;MAAA;IAKX,CAAC,CAAC;IAEF,OAAO;MACLC,aAAa;MACbrB;IACF,CAAC;EACH;AACF,CAAC,CAAC;AAIF,OAAO,SAASkC,kBAAkB,CAAExB,KAA6D,EAAE;EACjG,OAAO3B,IAAI,CAAC2B,KAAK,EAAEyB,MAAM,CAACC,IAAI,CAAC5B,QAAQ,EAAEE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAQ;AAC/D"}