@phila/phila-ui-app-footer 0.0.21 → 0.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -38
- package/dist/AppFooter.vue.d.ts +3 -41
- package/dist/AppFooter.vue.d.ts.map +1 -0
- package/dist/index.css +0 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.mjs +22 -0
- package/package.json +40 -36
- package/dist/AppFooter.css +0 -1
- package/dist/AppFooter.js +0 -63
- package/dist/AppFooter.umd.cjs +0 -2
- package/dist/types.d.ts +0 -14
package/README.md
CHANGED
|
@@ -1,49 +1,75 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
# AppFooter Component
|
|
2
|
+
|
|
3
|
+
A simple, customizable Vue 3. AppFooter component built with TypeScript and Vite.
|
|
4
|
+
A footer vue component for site info and related links.
|
|
5
|
+
|
|
6
|
+
## Features
|
|
7
|
+
|
|
8
|
+
- 🎯 TypeScript support with full type definitions
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install @phila/phila-ui-app-footer
|
|
14
|
+
# or
|
|
15
|
+
yarn add @phila/phila-ui-app-footer
|
|
16
|
+
# or
|
|
17
|
+
pnpm add @phila/phila-ui-app-footer
|
|
8
18
|
```
|
|
9
19
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<li>
|
|
18
|
-
<a href="/terms-and-conditions">Terms & Conditions</a>
|
|
19
|
-
</li>
|
|
20
|
-
</ul>
|
|
21
|
-
</app-footer>
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
```vue
|
|
23
|
+
<script setup lang="ts">
|
|
24
|
+
import { AppFooter } from "@phila/phila-ui-app-footer";
|
|
25
|
+
</script>
|
|
26
|
+
<template>...Add basic component template here...</template>
|
|
22
27
|
```
|
|
23
28
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
## Props
|
|
30
|
+
|
|
31
|
+
| Prop | Type | Default | Description |
|
|
32
|
+
| ---- | ---- | ------- | ----------- |
|
|
33
|
+
|
|
34
|
+
| ...Add props here...
|
|
35
|
+
|
|
36
|
+
## Events
|
|
37
|
+
|
|
38
|
+
| Event | Payload | Description |
|
|
39
|
+
| ----- | ------- | ----------- |
|
|
40
|
+
|
|
41
|
+
| ...Add events here...
|
|
42
|
+
|
|
43
|
+
## Examples
|
|
44
|
+
|
|
45
|
+
...Add examples here...
|
|
46
|
+
|
|
47
|
+
## Development
|
|
48
|
+
|
|
49
|
+
### Install Dependencies
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pnpm install
|
|
30
53
|
```
|
|
31
54
|
|
|
32
|
-
###
|
|
33
|
-
By default the footer is hidden on mobile devices. If the links in the footer are important, they should be added to the [Mobile Navigation](/components/MobileNav).
|
|
55
|
+
### Run Demo
|
|
34
56
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
<app-footer
|
|
38
|
-
:is-hidden-mobile="false"
|
|
39
|
-
/>
|
|
57
|
+
```bash
|
|
58
|
+
pnpm dev
|
|
40
59
|
```
|
|
41
60
|
|
|
42
|
-
|
|
43
|
-
|
|
61
|
+
### Build Library
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
pnpm build
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Type Check
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
pnpm type-check
|
|
71
|
+
```
|
|
44
72
|
|
|
45
|
-
|
|
46
|
-
<example name="AppFooter1" height="300" :options="{ horizontal: true}"></example>
|
|
73
|
+
## License
|
|
47
74
|
|
|
48
|
-
|
|
49
|
-
<example name="AppFooter2" height="300" :options="{ horizontal: true}"></example>
|
|
75
|
+
MIT
|
package/dist/AppFooter.vue.d.ts
CHANGED
|
@@ -1,42 +1,4 @@
|
|
|
1
|
-
import { AppFooterProps } from './
|
|
2
|
-
|
|
3
|
-
declare function __VLS_template(): {
|
|
4
|
-
default?(_: {}): any;
|
|
5
|
-
};
|
|
6
|
-
declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<AppFooterProps>, {
|
|
7
|
-
links(): never[];
|
|
8
|
-
isSticky: boolean;
|
|
9
|
-
isHiddenMobile: boolean;
|
|
10
|
-
}>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<AppFooterProps>, {
|
|
11
|
-
links(): never[];
|
|
12
|
-
isSticky: boolean;
|
|
13
|
-
isHiddenMobile: boolean;
|
|
14
|
-
}>>> & Readonly<{}>, {
|
|
15
|
-
links: import('@phila/phila-ui-nav-link').NavLinkProps[];
|
|
16
|
-
isSticky: boolean;
|
|
17
|
-
isHiddenMobile: boolean;
|
|
18
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
19
|
-
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;
|
|
1
|
+
import { AppFooterProps } from './index';
|
|
2
|
+
declare const _default: import('vue').DefineComponent<AppFooterProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<AppFooterProps> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLSpanElement>;
|
|
20
3
|
export default _default;
|
|
21
|
-
|
|
22
|
-
type __VLS_TypePropsToRuntimeProps<T> = {
|
|
23
|
-
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
24
|
-
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
25
|
-
} : {
|
|
26
|
-
type: import('vue').PropType<T[K]>;
|
|
27
|
-
required: true;
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
type __VLS_WithDefaults<P, D> = {
|
|
31
|
-
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
|
|
32
|
-
default: D[K];
|
|
33
|
-
}> : P[K];
|
|
34
|
-
};
|
|
35
|
-
type __VLS_Prettify<T> = {
|
|
36
|
-
[K in keyof T]: T[K];
|
|
37
|
-
} & {};
|
|
38
|
-
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
39
|
-
new (): {
|
|
40
|
-
$slots: S;
|
|
41
|
-
};
|
|
42
|
-
};
|
|
4
|
+
//# sourceMappingURL=AppFooter.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppFooter.vue.d.ts","sourceRoot":"","sources":["../src/AppFooter.vue"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;;AA+D9C,wBASG"}
|
package/dist/index.css
ADDED
|
File without changes
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIvD,MAAM,WAAW,cAAe,SAAQ,SAAS;CAEhD"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const e=require("vue"),n=require("@phila/phila-ui-core"),a=e.defineComponent({__name:"AppFooter",props:{className:{}},setup(o,{emit:c}){const t=o,s=e.computed(()=>n.cn("default-class",t.className));return(r,u)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(s.value)}," Hello world! I am AppFooter ",2))}}),p=(o,c)=>{const t=o.__vccOpts||o;for(const[s,r]of c)t[s]=r;return t},l=p(a,[["__scopeId","data-v-f636e62c"]]);exports.AppFooter=l;
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { defineComponent as r, computed as a, createElementBlock as n, openBlock as p, normalizeClass as l } from "vue";
|
|
2
|
+
import { cn as m } from "@phila/phila-ui-core";
|
|
3
|
+
import './index.css';const _ = /* @__PURE__ */ r({
|
|
4
|
+
__name: "AppFooter",
|
|
5
|
+
props: {
|
|
6
|
+
className: {}
|
|
7
|
+
},
|
|
8
|
+
setup(e, { emit: s }) {
|
|
9
|
+
const o = e, t = a(() => m("default-class", o.className));
|
|
10
|
+
return (c, u) => (p(), n("span", {
|
|
11
|
+
class: l(t.value)
|
|
12
|
+
}, " Hello world! I am AppFooter ", 2));
|
|
13
|
+
}
|
|
14
|
+
}), f = (e, s) => {
|
|
15
|
+
const o = e.__vccOpts || e;
|
|
16
|
+
for (const [t, c] of s)
|
|
17
|
+
o[t] = c;
|
|
18
|
+
return o;
|
|
19
|
+
}, v = /* @__PURE__ */ f(_, [["__scopeId", "data-v-f636e62c"]]);
|
|
20
|
+
export {
|
|
21
|
+
v as AppFooter
|
|
22
|
+
};
|
package/package.json
CHANGED
|
@@ -1,48 +1,52 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@phila/phila-ui-app-footer",
|
|
3
|
-
"
|
|
4
|
-
"version": "0.0.21",
|
|
3
|
+
"version": "0.0.30",
|
|
5
4
|
"type": "module",
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
"
|
|
10
|
-
"module": "./dist/AppFooter.js",
|
|
11
|
-
"types": "./dist/types.d.ts",
|
|
5
|
+
"description": "A footer vue component for site info and related links.",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.mjs",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
12
9
|
"exports": {
|
|
13
10
|
".": {
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
},
|
|
18
|
-
"require": "./dist/AppFooter.umd.cjs"
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.mjs",
|
|
13
|
+
"require": "./dist/index.js"
|
|
19
14
|
}
|
|
20
15
|
},
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
19
|
+
"keywords": [
|
|
20
|
+
"ui",
|
|
21
|
+
"app-footer",
|
|
22
|
+
"vue",
|
|
23
|
+
"component"
|
|
24
|
+
],
|
|
25
|
+
"author": "",
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"vue": "^3.0.0"
|
|
26
29
|
},
|
|
27
30
|
"dependencies": {
|
|
28
|
-
"@phila/phila-ui-core": "
|
|
29
|
-
"@phila/phila-ui-nav-link": "^0.0.12",
|
|
30
|
-
"bulma": "^0.9.4",
|
|
31
|
-
"vue": "^3.3.8"
|
|
31
|
+
"@phila/phila-ui-core": "2.1.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@types/node": "^
|
|
35
|
-
"@vitejs/plugin-vue": "^
|
|
36
|
-
"
|
|
37
|
-
"typescript": "^5.8.
|
|
38
|
-
"vite": "^
|
|
39
|
-
"vite-plugin-dts": "^
|
|
40
|
-
"vite-plugin-lib-inject-css": "^
|
|
41
|
-
"vue-tsc": "^2.2.8"
|
|
34
|
+
"@types/node": "^24.0.0",
|
|
35
|
+
"@vitejs/plugin-vue": "^6.0.1",
|
|
36
|
+
"eslint": "^9.0.0",
|
|
37
|
+
"typescript": "^5.8.3",
|
|
38
|
+
"vite": "^7.0.6",
|
|
39
|
+
"vite-plugin-dts": "^4.5.4",
|
|
40
|
+
"vite-plugin-lib-inject-css": "^2.2.2"
|
|
42
41
|
},
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
"scripts": {
|
|
43
|
+
"build": "vite build",
|
|
44
|
+
"dev": "vite build --watch",
|
|
45
|
+
"lint": "eslint src --ext .ts,.tsx,.vue",
|
|
46
|
+
"lint:fix": "eslint src --ext .ts,.tsx,.vue --fix",
|
|
47
|
+
"type-check": "tsc --noEmit",
|
|
48
|
+
"clean": "rm -rf dist",
|
|
49
|
+
"format": "prettier --write .",
|
|
50
|
+
"format:check": "prettier --check ."
|
|
51
|
+
}
|
|
52
|
+
}
|
package/dist/AppFooter.css
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@font-face{font-family:Montserrat;src:local("Montserrat Regular"),local("Montserrat-Regular"),url(https://www.phila.gov/assets/fonts/Montserrat/Montserrat-Regular.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/Montserrat/Montserrat-Regular.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:Open Sans;src:local("Open Sans Italic"),local("OpenSans-Italic"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-Italic.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-Italic.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:Open Sans;src:local("Open Sans Bold Italic"),local("OpenSans-BoldItalic"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-BoldItalic.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-BoldItalic.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:Montserrat;src:local("Montserrat Bold"),local("Montserrat-Bold"),url(https://www.phila.gov/assets/fonts/Montserrat/Montserrat-Bold.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/Montserrat/Montserrat-Bold.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:Open Sans;src:local("Open Sans Bold"),local("OpenSans-Bold"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-Bold.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-Bold.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:Open Sans;src:local("Open Sans SemiBold Italic"),local("OpenSans-SemiBoldItalic"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-SemiBoldItalic.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-SemiBoldItalic.woff) format("woff");font-weight:600;font-style:italic}@font-face{font-family:Open Sans;src:local("Open Sans SemiBold"),local("OpenSans-SemiBold"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-SemiBold.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-SemiBold.woff) format("woff");font-weight:600;font-style:normal}@font-face{font-family:Open Sans;src:local("Open Sans Regular"),local("OpenSans-Regular"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-Regular.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-Regular.woff) format("woff");font-weight:400;font-style:normal}#app-footer[data-v-f34d21d1]{background-color:#0f4d90;height:46px;max-height:46px;overflow:hidden;width:100%}#app-footer a[data-v-f34d21d1]{color:#fff;line-height:46px}#app-footer a[data-v-f34d21d1]:hover{color:#25cef7}#app-footer.is-sticky[data-v-f34d21d1]{position:fixed;bottom:0;z-index:99}#app-footer ul[data-v-f34d21d1]{list-style:none;padding:0;margin:0}#app-footer ul li[data-v-f34d21d1]{display:inline-block;vertical-align:middle;margin:0;padding:0}#app-footer ul li[data-v-f34d21d1]:not(:last-child):after{content:"|";margin:0 1rem;display:inline-block;position:relative;color:#fff;font-weight:700}
|
package/dist/AppFooter.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import "./AppFooter.css";
|
|
2
|
-
import { defineComponent as m, inject as v, computed as y, ref as k, onMounted as h, resolveComponent as _, createElementBlock as a, createCommentVNode as g, openBlock as c, normalizeClass as H, createElementVNode as u, renderSlot as b, Fragment as M, renderList as S, createVNode as x, mergeProps as B } from "vue";
|
|
3
|
-
const F = { class: "container has-text-centered" }, N = {
|
|
4
|
-
key: 0,
|
|
5
|
-
role: "menu",
|
|
6
|
-
class: "inline-list"
|
|
7
|
-
}, A = /* @__PURE__ */ m({
|
|
8
|
-
__name: "AppFooter",
|
|
9
|
-
props: {
|
|
10
|
-
links: { default() {
|
|
11
|
-
return [];
|
|
12
|
-
} },
|
|
13
|
-
isSticky: { type: Boolean, default: !0 },
|
|
14
|
-
isHiddenMobile: { type: Boolean, default: !1 }
|
|
15
|
-
},
|
|
16
|
-
setup(n) {
|
|
17
|
-
const s = n, l = v("responsiveHelpers"), { responsiveState: p } = l, o = y(() => p.isMobile), r = k();
|
|
18
|
-
return h(() => {
|
|
19
|
-
var i;
|
|
20
|
-
const e = document.getElementById("app-header"), t = document.querySelector("main");
|
|
21
|
-
if (t) {
|
|
22
|
-
if (s.isSticky && r.value)
|
|
23
|
-
t.style.cssText = t.style.cssText + `padding-bottom: ${r.value.offsetHeight}px`;
|
|
24
|
-
else if (o.value && !s.isHiddenMobile || !o.value)
|
|
25
|
-
if (e) {
|
|
26
|
-
const d = e.offsetHeight + (((i = r.value) == null ? void 0 : i.offsetHeight) || 0);
|
|
27
|
-
t.style.cssText = t.style.cssText + `min-height: calc(100vh - ${d}px)`;
|
|
28
|
-
} else
|
|
29
|
-
console.warn("AppFooter: No app-header found, unable to calculate sticky footer height");
|
|
30
|
-
} else
|
|
31
|
-
console.warn("AppFooter: No main element found, unable to calculate sticky footer height");
|
|
32
|
-
}), (e, t) => {
|
|
33
|
-
const i = _("nav-link");
|
|
34
|
-
return o.value && !e.isHiddenMobile || !o.value ? (c(), a("footer", {
|
|
35
|
-
key: 0,
|
|
36
|
-
id: "app-footer",
|
|
37
|
-
ref_key: "footer",
|
|
38
|
-
ref: r,
|
|
39
|
-
class: H({ "is-sticky": e.isSticky })
|
|
40
|
-
}, [
|
|
41
|
-
t[0] || (t[0] = u("div", { class: "container" }, null, -1)),
|
|
42
|
-
u("div", F, [
|
|
43
|
-
e.links.length > 0 ? (c(), a("ul", N, [
|
|
44
|
-
(c(!0), a(M, null, S(e.links, (d, f) => (c(), a("li", {
|
|
45
|
-
key: `fl-${f}`,
|
|
46
|
-
role: "none"
|
|
47
|
-
}, [
|
|
48
|
-
x(i, B({ ref_for: !0 }, d, { role: "menuitem" }), null, 16)
|
|
49
|
-
]))), 128))
|
|
50
|
-
])) : b(e.$slots, "default", { key: 1 }, void 0, !0)
|
|
51
|
-
])
|
|
52
|
-
], 2)) : g("", !0);
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
}), C = (n, s) => {
|
|
56
|
-
const l = n.__vccOpts || n;
|
|
57
|
-
for (const [p, o] of s)
|
|
58
|
-
l[p] = o;
|
|
59
|
-
return l;
|
|
60
|
-
}, E = /* @__PURE__ */ C(A, [["__scopeId", "data-v-f34d21d1"]]);
|
|
61
|
-
export {
|
|
62
|
-
E as default
|
|
63
|
-
};
|
package/dist/AppFooter.umd.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(function(e,n){typeof exports=="object"&&typeof module<"u"?module.exports=n(require("vue")):typeof define=="function"&&define.amd?define(["vue"],n):(e=typeof globalThis<"u"?globalThis:e||self,e.AppFooter=n(e.Vue))})(this,function(e){"use strict";var n=document.createElement("style");n.textContent=`@font-face{font-family:Montserrat;src:local("Montserrat Regular"),local("Montserrat-Regular"),url(https://www.phila.gov/assets/fonts/Montserrat/Montserrat-Regular.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/Montserrat/Montserrat-Regular.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:Open Sans;src:local("Open Sans Italic"),local("OpenSans-Italic"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-Italic.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-Italic.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:Open Sans;src:local("Open Sans Bold Italic"),local("OpenSans-BoldItalic"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-BoldItalic.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-BoldItalic.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:Montserrat;src:local("Montserrat Bold"),local("Montserrat-Bold"),url(https://www.phila.gov/assets/fonts/Montserrat/Montserrat-Bold.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/Montserrat/Montserrat-Bold.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:Open Sans;src:local("Open Sans Bold"),local("OpenSans-Bold"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-Bold.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-Bold.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:Open Sans;src:local("Open Sans SemiBold Italic"),local("OpenSans-SemiBoldItalic"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-SemiBoldItalic.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-SemiBoldItalic.woff) format("woff");font-weight:600;font-style:italic}@font-face{font-family:Open Sans;src:local("Open Sans SemiBold"),local("OpenSans-SemiBold"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-SemiBold.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-SemiBold.woff) format("woff");font-weight:600;font-style:normal}@font-face{font-family:Open Sans;src:local("Open Sans Regular"),local("OpenSans-Regular"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-Regular.woff2) format("woff2"),url(https://www.phila.gov/assets/fonts/OpenSans/OpenSans-Regular.woff) format("woff");font-weight:400;font-style:normal}#app-footer[data-v-f34d21d1]{background-color:#0f4d90;height:46px;max-height:46px;overflow:hidden;width:100%}#app-footer a[data-v-f34d21d1]{color:#fff;line-height:46px}#app-footer a[data-v-f34d21d1]:hover{color:#25cef7}#app-footer.is-sticky[data-v-f34d21d1]{position:fixed;bottom:0;z-index:99}#app-footer ul[data-v-f34d21d1]{list-style:none;padding:0;margin:0}#app-footer ul li[data-v-f34d21d1]{display:inline-block;vertical-align:middle;margin:0;padding:0}#app-footer ul li[data-v-f34d21d1]:not(:last-child):after{content:"|";margin:0 1rem;display:inline-block;position:relative;color:#fff;font-weight:700}
|
|
2
|
-
/*$vite$:1*/`,document.head.appendChild(n);const d={class:"container has-text-centered"},w={key:0,role:"menu",class:"inline-list"};return((s,l)=>{const f=s.__vccOpts||s;for(const[p,a]of l)f[p]=a;return f})(e.defineComponent({__name:"AppFooter",props:{links:{default(){return[]}},isSticky:{type:Boolean,default:!0},isHiddenMobile:{type:Boolean,default:!1}},setup(s){const l=s,f=e.inject("responsiveHelpers"),{responsiveState:p}=f,a=e.computed(()=>p.isMobile),r=e.ref();return e.onMounted(()=>{var i;const t=document.getElementById("app-header"),o=document.querySelector("main");if(o){if(l.isSticky&&r.value)o.style.cssText=o.style.cssText+`padding-bottom: ${r.value.offsetHeight}px`;else if(a.value&&!l.isHiddenMobile||!a.value)if(t){const c=t.offsetHeight+(((i=r.value)==null?void 0:i.offsetHeight)||0);o.style.cssText=o.style.cssText+`min-height: calc(100vh - ${c}px)`}else console.warn("AppFooter: No app-header found, unable to calculate sticky footer height")}else console.warn("AppFooter: No main element found, unable to calculate sticky footer height")}),(t,o)=>{const i=e.resolveComponent("nav-link");return a.value&&!t.isHiddenMobile||!a.value?(e.openBlock(),e.createElementBlock("footer",{key:0,id:"app-footer",ref_key:"footer",ref:r,class:e.normalizeClass({"is-sticky":t.isSticky})},[o[0]||(o[0]=e.createElementVNode("div",{class:"container"},null,-1)),e.createElementVNode("div",d,[t.links.length>0?(e.openBlock(),e.createElementBlock("ul",w,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.links,(c,m)=>(e.openBlock(),e.createElementBlock("li",{key:`fl-${m}`,role:"none"},[e.createVNode(i,e.mergeProps({ref_for:!0},c,{role:"menuitem"}),null,16)]))),128))])):e.renderSlot(t.$slots,"default",{key:1},void 0,!0)])],2)):e.createCommentVNode("",!0)}}}),[["__scopeId","data-v-f34d21d1"]])});
|
package/dist/types.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { default as AppFooter } from './AppFooter.vue';
|
|
2
|
-
import { NavLinkProps } from '@phila/phila-ui-nav-link';
|
|
3
|
-
|
|
4
|
-
declare module "vue" {
|
|
5
|
-
interface GlobalComponents {
|
|
6
|
-
AppFooter: typeof AppFooter;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
export interface AppFooterProps {
|
|
10
|
-
links: NavLinkProps[];
|
|
11
|
-
isSticky?: boolean;
|
|
12
|
-
isHiddenMobile?: boolean;
|
|
13
|
-
}
|
|
14
|
-
export default AppFooter;
|