Skip to content

Commit 804ce9a

Browse files
fix(unity-bootstrap-theme): update build to include js
1 parent 7580ecc commit 804ce9a

15 files changed

+346
-174
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"compilerOptions": {
3+
"target": "ES2020",
4+
"useDefineForClassFields": true,
5+
"lib": ["ES2020", "DOM"],
6+
"resolveJsonModule": true,
7+
"jsx": "react",
8+
"allowImportingTsExtensions": true,
9+
"esModuleInterop": true,
10+
"moduleResolution": "node16",
11+
"module": "node16",
12+
"allowSyntheticDefaultImports": true,
13+
"paths": {
14+
"@shared/*": [ "../../shared/*" ],
15+
},
16+
},
17+
"include": [
18+
"src/**/*",
19+
"stories/**/*",
20+
"../../shared/**/*",
21+
],
22+
}

packages/unity-bootstrap-theme/package.json

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
"url": "git+https://github.com/ASU/asu-unity-stack.git"
1414
},
1515
"scripts": {
16-
"build": "vite build",
16+
"build": "yarn build:1 && yarn build:2",
17+
"build:1": "vite build",
18+
"build:2": "vite build --config vite.config.bundle.js",
1719
"watch": "rimraf ./dist && webpack --watch && rimraf ./.tmp",
1820
"storybook": "storybook dev -p 9000",
1921
"build-storybook": "storybook build -o ../../build/$npm_package_name",
@@ -77,14 +79,6 @@
7779
"webpack-node-externals": "^3.0.0"
7880
},
7981
"exports": {
80-
"./js/global-header.js": {
81-
"module": "./src/js/storybook-global-header.js",
82-
"default": "./src/js/global-header.js"
83-
},
84-
"./js/data-layer.js": {
85-
"module": "./src/js/storybook-data-layer.js",
86-
"default": "./src/js/data-layer.js"
87-
},
8882
"./*": "./*",
8983
".": "./dist/css/unity-bootstrap-theme.css"
9084
},
Lines changed: 82 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,84 @@
1-
const initBanner = () => {
2-
const closeButtons = document.querySelectorAll('.banner-close button');
3-
closeButtons.forEach((button) =>
4-
button.addEventListener('click', () => {
5-
const bannerToClose = button.parentElement.parentElement.parentElement;
6-
bannerToClose.classList.add('hidden-banner');
1+
// should we just use bootstrap's Alert
2+
3+
import {
4+
BaseComponent,
5+
EventHandler,
6+
enableDismissTrigger,
7+
defineJQueryPlugin,
8+
} from "./bootstrap-helper.js";
9+
10+
/**
11+
* Constants
12+
*/
13+
14+
const NAME = 'banner-container'
15+
const DATA_KEY = 'uds.banner'
16+
const EVENT_KEY = `.${DATA_KEY}`
17+
18+
const EVENT_CLOSE = `close${EVENT_KEY}`
19+
const EVENT_CLOSED = `closed${EVENT_KEY}`
20+
const CLASS_NAME_FADE = 'fade'
21+
const CLASS_NAME_SHOW = 'show'
22+
23+
/**
24+
* Class definition
25+
*/
26+
27+
class Banner extends BaseComponent {
28+
// Getters
29+
static get NAME() {
30+
return NAME
31+
}
32+
33+
// Public
34+
close() {
35+
const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)
36+
37+
if (closeEvent.defaultPrevented) {
38+
return
39+
}
40+
41+
this._element.classList.remove(CLASS_NAME_SHOW)
42+
43+
const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)
44+
this._queueCallback(() => this._destroyElement(), this._element, isAnimated)
45+
}
46+
47+
// Private
48+
_destroyElement() {
49+
this._element.remove()
50+
EventHandler.trigger(this._element, EVENT_CLOSED)
51+
this.dispose()
52+
}
53+
54+
// Static
55+
static jQueryInterface(config) {
56+
return this.each(function () {
57+
const data = Banner.getOrCreateInstance(this)
58+
59+
if (typeof config !== 'string') {
60+
return
61+
}
62+
63+
if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
64+
throw new TypeError(`No method named "${config}"`)
65+
}
66+
67+
data[config](this)
768
})
8-
);
9-
};
69+
}
70+
}
71+
72+
/**
73+
* Data API implementation
74+
*/
75+
76+
enableDismissTrigger(Banner, 'close')
77+
78+
/**
79+
* jQuery
80+
*/
81+
82+
defineJQueryPlugin(Banner)
1083

11-
export { initBanner };
84+
export default Banner
Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
1-
import BaseComponent from 'bootstrap/js/src/base-component.js'
2-
import EventHandler from "bootstrap/js/src/dom/event-handler.js";
3-
import { enableDismissTrigger } from 'bootstrap/js/src/util/component-functions.js'
4-
import { defineJQueryPlugin } from 'bootstrap/js/src/util/index.js'
5-
6-
export {
7-
BaseComponent,
8-
EventHandler,
9-
enableDismissTrigger,
10-
defineJQueryPlugin,
11-
};
1+
export { default as BaseComponent } from 'bootstrap/js/src/base-component.js';
2+
export { default as EventHandler } from "bootstrap/js/src/dom/event-handler.js";
3+
export { enableDismissTrigger } from 'bootstrap/js/src/util/component-functions.js';
4+
export { defineJQueryPlugin } from 'bootstrap/js/src/util/index.js';

packages/unity-bootstrap-theme/src/js/charts-and-graphs.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import { Chart, registerables } from 'chart.js';
2-
import { EventHandler } from './bootstrap-helper';
3-
4-
// Chart.js library should be peer dependency
1+
import * as Chart from 'chart.js';
52

6-
Chart.register(...registerables);
3+
import { EventHandler } from './bootstrap-helper';
74

85
function initChart() {
6+
Chart.Chart.register(...Chart.registerables);
7+
98
const GRAPH_PERCENTAGE_COMPLETE = 50;
109

1110
var ctx = document.getElementById('uds-donut');
@@ -37,7 +36,7 @@ function initChart() {
3736
},
3837
};
3938

40-
var myChart = new Chart(ctx, config);
39+
var myChart = new Chart.Chart(ctx, config);
4140
};
4241

4342
EventHandler.on(window, 'load.uds.chart', initChart);

packages/unity-bootstrap-theme/src/js/data-layer.js

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
(function(){
1+
import { EventHandler } from "./bootstrap-helper";
2+
23
function initDataLayer() {
34
/**
45
* Push events to data layer (Google Analytics)
@@ -144,11 +145,31 @@
144145
});
145146
})
146147
);
148+
149+
document.querySelectorAll('[data-ga-footer]').forEach((element) =>
150+
element.addEventListener('focus', () => {
151+
const args = {
152+
type: element.getAttribute('data-ga-footer-type').toLowerCase(),
153+
section: element.getAttribute('data-ga-footer-section').toLowerCase(),
154+
text: element.getAttribute('data-ga-footer').toLowerCase(),
155+
};
156+
pushGAEvent({
157+
event: 'link',
158+
action: 'click',
159+
name: 'onclick',
160+
region: 'footer',
161+
...args,
162+
});
163+
})
164+
);
147165
}
148166

149167
/* Function must be initialized after document load
150168
* Example:
151169
* window.initDataLayer();
152170
*/
153171
window.initDataLayer = window.initDataLayer || initDataLayer;
154-
})();
172+
173+
EventHandler.on(window, 'load.uds.data-layer', initDataLayer);
174+
175+
export { initDataLayer };

packages/unity-bootstrap-theme/src/js/global-header.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
(function(){
1+
import { EventHandler } from "./bootstrap-helper";
2+
23
const initGlobalHeader = () => {
34
// Scroll state
45
const handleWindowScroll = () => {
@@ -9,7 +10,7 @@
910
: headerEl?.classList.remove('scrolled');
1011
};
1112

12-
window.addEventListener('scroll', handleWindowScroll);
13+
EventHandler.on(window, 'scroll.uds.header', handleWindowScroll);
1314
};
1415

1516
window.initGlobalHeader = window.initGlobalHeader || initGlobalHeader;
@@ -18,4 +19,7 @@
1819
* Example:
1920
* window.initGlobalHeader();
2021
*/
21-
})();
22+
23+
EventHandler.on(window, 'load.uds.global-header', initGlobalHeader);
24+
25+
export { initGlobalHeader };

packages/unity-bootstrap-theme/src/js/storybook-data-layer.js

Lines changed: 0 additions & 5 deletions
This file was deleted.

packages/unity-bootstrap-theme/src/js/storybook-global-header.js

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)