diff --git a/.eslintrc.yml b/.eslintrc.yml
new file mode 100644
index 00000000..48b626b3
--- /dev/null
+++ b/.eslintrc.yml
@@ -0,0 +1,15 @@
+env:
+ browser: true
+ commonjs: true
+ es2021: true
+extends: [eslint:recommended, prettier]
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+rules: {
+ eqeqeq: [error, always],
+ no-else-return: [error],
+ no-implicit-coercion: [warn],
+ prefer-const: [error],
+ no-console: [error]
+}
\ No newline at end of file
diff --git a/.github/workflows/code-format-lint.yml b/.github/workflows/code-format-lint.yml
new file mode 100644
index 00000000..1d4b3428
--- /dev/null
+++ b/.github/workflows/code-format-lint.yml
@@ -0,0 +1,19 @@
+name: "Prettier Format & ESLint"
+
+on:
+ push:
+ branches: [ dev ]
+ pull_request:
+ branches: [ dev ]
+
+jobs:
+ format_and_lint:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-node@v3
+ with:
+ node-version: 16
+ - run: yarn install --frozen-lockfile
+ - run: yarn check-lint-config
+ - run: yarn lint
\ No newline at end of file
diff --git a/package.json b/package.json
index 20c9cf16..831a0189 100644
--- a/package.json
+++ b/package.json
@@ -19,6 +19,8 @@
"readmeFilename": "README.md",
"homepage": "https://jedgar1mx.github.io/COD-Design-System",
"scripts": {
+ "check-lint-config": "npx eslint-config-prettier src/index.js",
+ "lint": "eslint src && prettier --check src/*",
"build": "webpack --mode production",
"build-package": "cross-env BABEL_ENV=production babel src -d dist",
"start": "webpack-dev-server --mode development",
@@ -69,6 +71,11 @@
"css-loader": "^6.5.0",
"css-minimizer-webpack-plugin": "^3.4.1",
"cypress": "^9.5.0",
+ "eslint": "^8.0.1",
+ "eslint-config-prettier": "^9.0.0",
+ "eslint-plugin-import": "^2.25.2",
+ "eslint-plugin-n": "^15.0.0 || ^16.0.0 ",
+ "eslint-plugin-promise": "^6.0.0",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^5.5.0",
"jest": "27",
diff --git a/src/components/atoms/AccordionBody/AccordionBody.css b/src/components/atoms/AccordionBody/AccordionBody.css
index 7e2cea6a..7733fd28 100644
--- a/src/components/atoms/AccordionBody/AccordionBody.css
+++ b/src/components/atoms/AccordionBody/AccordionBody.css
@@ -1,4 +1,4 @@
.accordion-body.data-li {
border-left: 3px solid;
border-color: var(--color-1);
-}
\ No newline at end of file
+}
diff --git a/src/components/atoms/AccordionBody/AccordionBody.js b/src/components/atoms/AccordionBody/AccordionBody.js
index 18424d0b..3d69cec2 100644
--- a/src/components/atoms/AccordionBody/AccordionBody.js
+++ b/src/components/atoms/AccordionBody/AccordionBody.js
@@ -16,7 +16,11 @@ export default class AccordionBody extends HTMLElement {
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
this.accordionBody = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
this.shadowRoot.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.accordionBody.append(node);
@@ -38,11 +42,17 @@ export default class AccordionBody extends HTMLElement {
connectedCallback() {
// Nav attributes
// TODO: Refactor attribute and class handling.
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let accordionBodyClasses = ['accordion-body'];
if (this.getAttribute('data-li') !== null) {
accordionBodyClasses.push('data-li');
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? accordionBodyClasses.push(extraClasses)
: 0;
diff --git a/src/components/atoms/AccordionHeader/AccordionHeader.css b/src/components/atoms/AccordionHeader/AccordionHeader.css
index 7fbf06d9..62cec92e 100644
--- a/src/components/atoms/AccordionHeader/AccordionHeader.css
+++ b/src/components/atoms/AccordionHeader/AccordionHeader.css
@@ -11,4 +11,4 @@
.accordion-button.data-li {
padding-right: 1rem;
-}
\ No newline at end of file
+}
diff --git a/src/components/atoms/AccordionHeader/AccordionHeader.js b/src/components/atoms/AccordionHeader/AccordionHeader.js
index fab5f12d..6ee30df3 100644
--- a/src/components/atoms/AccordionHeader/AccordionHeader.js
+++ b/src/components/atoms/AccordionHeader/AccordionHeader.js
@@ -23,6 +23,8 @@ export default class AccordionHeader extends HTMLElement {
this.accordionBtn = document.createElement('button');
this.accordionHeader.appendChild(this.accordionBtn);
this.shadowRoot.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = ev.target.assignedElements();
tempElements.forEach((node) => {
this.accordionBtn.append(node);
@@ -43,9 +45,17 @@ export default class AccordionHeader extends HTMLElement {
attributeChangedCallback(name, oldValue, newValue) {
this.accordionBtn.setAttribute('aria-expanded', newValue);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempClasses = this.accordionBtn.className.split(' ');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let popValue = tempClasses.pop();
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
popValue != 'collapsed' ? tempClasses.push(popValue) : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (newValue == 'false') {
tempClasses.push('collapsed');
}
@@ -55,10 +65,18 @@ export default class AccordionHeader extends HTMLElement {
connectedCallback() {
// Nav attributes
// TODO: Refactor attribute and class handling.
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let parentID = this.getAttribute('data-parent-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let expanded = this.getAttribute('data-expanded');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
const isListItem = this.getAttribute('data-li');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let accordionBtnClasses = ['accordion-button'];
if (isListItem !== null) {
accordionBtnClasses.push('data-li');
@@ -67,12 +85,16 @@ export default class AccordionHeader extends HTMLElement {
this.accordionBtn.setAttribute('data-bs-toggle', 'collapse');
this.accordionBtn.setAttribute('aria-controls', parentID);
this.accordionBtn.setAttribute('data-bs-target', `#${parentID}`);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (expanded == 'true') {
this.accordionBtn.setAttribute('aria-expanded', 'true');
} else {
accordionBtnClasses.push('collapsed');
this.accordionBtn.setAttribute('aria-expanded', 'false');
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? accordionBtnClasses.push(extraClasses)
: 0;
diff --git a/src/components/atoms/AccordionItem/AccordionItem.js b/src/components/atoms/AccordionItem/AccordionItem.js
index fe54aa4d..460e29e5 100644
--- a/src/components/atoms/AccordionItem/AccordionItem.js
+++ b/src/components/atoms/AccordionItem/AccordionItem.js
@@ -22,6 +22,8 @@ export default class AccordionItem extends HTMLElement {
this.accordionHeader = document.createElement('div');
this.accordionBody = document.createElement('div');
this.shadowRoot.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = ev.target.assignedElements();
tempElements.forEach((node) => {
// TODO: Refactor attribute and class handling.
@@ -31,9 +33,13 @@ export default class AccordionItem extends HTMLElement {
'data-index',
)}`,
);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-expanded') == 'true'
? node.setAttribute('data-expanded', true)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (node.tagName == 'COD-ACCORDION-HEADER') {
if (this.getAttribute('data-li') !== null) {
node.setAttribute('data-li', '');
@@ -69,9 +75,17 @@ export default class AccordionItem extends HTMLElement {
this.accordionBody
.querySelector('cod-accordion-body')
.setAttribute('data-expanded', newValue);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempClasses = this.accordionBody.className.split(' ');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let popValue = tempClasses.pop();
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
popValue != 'show' ? tempClasses.push(popValue) : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (newValue == 'true') {
tempClasses.push('show');
}
@@ -81,11 +95,21 @@ export default class AccordionItem extends HTMLElement {
connectedCallback() {
// Nav attributes
// TODO: Refactor attribute and class handling.
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let parentID = this.getAttribute('data-parent-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let index = this.getAttribute('data-index');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let expanded = this.getAttribute('data-expanded');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let accordionHeaderClasses = ['accordion-header'];
let accordionBodyClasses = ['accordion-collapse collapse'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
expanded == 'true' ? accordionBodyClasses.push('show') : 0;
if (this.getAttribute('data-li') !== null) {
accordionBodyClasses = accordionBodyClasses.concat(
@@ -133,6 +157,8 @@ export default class AccordionItem extends HTMLElement {
}
_onClick(e) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (e.target.getAttribute('data-expanded') == 'true') {
this.getRootNode().host.setAttribute('data-expanded', 'false');
} else {
diff --git a/src/components/atoms/Alert/Alert.js b/src/components/atoms/Alert/Alert.js
index 9cdb5940..17afa150 100644
--- a/src/components/atoms/Alert/Alert.js
+++ b/src/components/atoms/Alert/Alert.js
@@ -20,9 +20,15 @@ export default class Alert extends HTMLElement {
const alertContent = document.createElement('div');
alertContent.id = 'alert-content';
this.alert.appendChild(alertContent);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let nodeClasses = node.className.split(' ');
nodeClasses.includes('no-wc')
? node.remove()
@@ -45,18 +51,34 @@ export default class Alert extends HTMLElement {
this.shadowRoot.appendChild(variableStyles);
this.shadowRoot.appendChild(alertStyles);
// alert attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let icon = this.getAttribute('data-icon');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let iconOrder = this.getAttribute('data-icon-order');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let iconSize = this.getAttribute('data-icon-size');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backgroundColor = this.getAttribute('data-background-color');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
this.alert.role = 'alert';
let iconClass = '';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (icon != undefined && icon != null) {
this.alert.querySelector('#alert-content').className = 'col';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let activeIcon = document.createElement('cod-icon');
activeIcon.setAttribute('data-icon', icon);
activeIcon.setAttribute('data-size', iconSize);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let iconContainer = document.createElement('div');
iconContainer.appendChild(activeIcon);
iconClass = 'd-flex';
diff --git a/src/components/atoms/Badge/Badge.js b/src/components/atoms/Badge/Badge.js
index 31b86979..7eec5537 100644
--- a/src/components/atoms/Badge/Badge.js
+++ b/src/components/atoms/Badge/Badge.js
@@ -6,6 +6,8 @@ export default class Badge extends HTMLElement {
// Always call super first in constructor
super();
// Create a shadow root
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
const shadow = this.attachShadow({ mode: 'open' });
}
@@ -20,15 +22,31 @@ export default class Badge extends HTMLElement {
this.shadowRoot.appendChild(variableStyles);
this.shadowRoot.appendChild(badgeStyles);
// badge attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tag = this.getAttribute('data-tag');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backgroundColor = this.getAttribute('data-background-color');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let text = this.getAttribute('data-text');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let hiddenText = this.getAttribute('data-hidden-text');
let pill = this.getAttribute('data-pill');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let url = this.getAttribute('data-url');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
let badge = null;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
pill == 'true' ? (pill = 'rounded-pill') : (pill = '');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (url != undefined || url != null) {
badge = document.createElement('a');
badge.href = url;
@@ -36,6 +54,8 @@ export default class Badge extends HTMLElement {
badge = document.createElement(tag);
}
badge.innerText = text;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (hiddenText != undefined || hiddenText != null) {
const hiddenBadge = document.createElement('span');
hiddenBadge.className = 'visually-hidden';
diff --git a/src/components/atoms/Breadcrumb/Breadcrumb.js b/src/components/atoms/Breadcrumb/Breadcrumb.js
index 5900f724..e4c9824f 100644
--- a/src/components/atoms/Breadcrumb/Breadcrumb.js
+++ b/src/components/atoms/Breadcrumb/Breadcrumb.js
@@ -21,13 +21,21 @@ export default class Container extends HTMLElement {
shadow.appendChild(template.content.cloneNode(true));
this.nav = shadow.querySelector('nav');
this.breadcrumb = shadow.querySelector('ol');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let nodeClasses = node.className.split(' ');
if (nodeClasses.includes('no-wc')) {
node.remove();
} else {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let crumb = this.querySelector('li');
crumb && this.breadcrumb.append(crumb);
}
@@ -46,11 +54,19 @@ export default class Container extends HTMLElement {
connectedCallback() {
// Breadcrumb attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let noDivider = this.getAttribute('data-no-divider');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let svg = this.getAttribute('data-svg-divider');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (noDivider == 'true') {
this.nav.style.cssText = "--bs-breadcrumb-divider: '';";
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (svg != undefined || svg != null) {
this.nav.style.cssText = `--bs-breadcrumb-divider: url(${svg});`;
}
diff --git a/src/components/atoms/Button/Button.js b/src/components/atoms/Button/Button.js
index 43a06e27..6479561f 100644
--- a/src/components/atoms/Button/Button.js
+++ b/src/components/atoms/Button/Button.js
@@ -7,69 +7,137 @@ export default class Button extends HTMLElement {
// Always call super first in constructor
super();
// Create a shadow root
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
const shadow = this.attachShadow({ mode: 'open' });
}
connectedCallback() {
// Button attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let close = this.getAttribute('data-close');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let link = this.getAttribute('data-link');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let btnID = this.getAttribute('data-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let ariaLabel = this.getAttribute('data-aria-label');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let primary = this.getAttribute('data-primary');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backgroundColor = this.getAttribute('data-background-color');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let shape = this.getAttribute('data-shape');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let icon = this.getAttribute('data-icon');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let iconSize = this.getAttribute('data-icon-size');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let iconOrder = this.getAttribute('data-icon-order');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let hiddenLabel = this.getAttribute('data-hidden-label');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let imgSrc = this.getAttribute('data-img');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let imgAlt = this.getAttribute('data-img-alt');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const, no-unused-vars, eqeqeq
let img = imgAlt != '' ? 'img' : 'not-img';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let size = this.getAttribute('data-size');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let label = this.getAttribute('data-label');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let disableStatus = this.getAttribute('data-disable');
// Building Button component
const btn = document.createElement('button');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let btnClasses = ['btn'];
btn.type = 'button';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (btnID != null && btnID != undefined) {
btn.id = btnID;
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
disableStatus == 'true' ? (btn.disabled = true) : (btn.disabled = false);
btn.setAttribute('aria-label', `${ariaLabel || ''}`);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (primary == 'true') {
btnClasses.push(`btn-${backgroundColor}`);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
} else if (primary == 'false') {
btnClasses.push(`btn-outline-${backgroundColor}`);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
shape == 'square'
? btnClasses.push('cod-button--square')
: btnClasses.push('cod-button-fluid');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
size != undefined && size != null ? btnClasses.push(`btn-${size}`) : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? btnClasses.push(extraClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
imgAlt != ''
? btnClasses.push('cod-button--img')
: btnClasses.push('cod-button--not-img');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
close == 'true' ? btnClasses.push('btn-close') : 0;
btn.className = btnClasses.join(' ');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (icon != '') {
// Loading icon
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let iconContainer = document.createElement('span');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let activeIcon = document.createElement('cod-icon');
activeIcon.setAttribute('data-icon', icon);
activeIcon.setAttribute('data-size', iconSize);
iconContainer.appendChild(activeIcon);
btn.innerText = label;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (iconOrder == 'left') {
btn.insertBefore(iconContainer, btn.firstChild);
} else {
btn.appendChild(iconContainer);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
} else if (imgAlt != '') {
// Loading image
btn.innerText = label;
@@ -81,7 +149,11 @@ export default class Button extends HTMLElement {
btn.innerText = label;
}
// Create hidden label
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (hiddenLabel != undefined && hiddenLabel != null) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let hLabel = document.createElement('span');
hLabel.className = 'visually-hidden';
hLabel.innerText = hiddenLabel;
@@ -98,8 +170,12 @@ export default class Button extends HTMLElement {
const btnStyles = document.createElement('style');
btnStyles.textContent = styles;
this.shadowRoot.appendChild(btnStyles);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (link == undefined || link == null) {
this.shadowRoot.appendChild(btn);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let ghostBtn = this.appendChild(document.createElement('button'));
this.onclick = () => ghostBtn.click();
} else {
diff --git a/src/components/atoms/CardBody/CardBody.js b/src/components/atoms/CardBody/CardBody.js
index 973ad771..7c9446a1 100644
--- a/src/components/atoms/CardBody/CardBody.js
+++ b/src/components/atoms/CardBody/CardBody.js
@@ -16,7 +16,11 @@ export default class CardBody extends HTMLElement {
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
this.cardBody = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.cardBody.append(node);
diff --git a/src/components/atoms/CardFooter/CardFooter.js b/src/components/atoms/CardFooter/CardFooter.js
index 4483bdf1..ec69a457 100644
--- a/src/components/atoms/CardFooter/CardFooter.js
+++ b/src/components/atoms/CardFooter/CardFooter.js
@@ -16,7 +16,11 @@ export default class CardFooter extends HTMLElement {
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
this.cardFooter = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.cardFooter.append(node);
diff --git a/src/components/atoms/CardHeader/CardHeader.js b/src/components/atoms/CardHeader/CardHeader.js
index 29e3c21a..073dc3aa 100644
--- a/src/components/atoms/CardHeader/CardHeader.js
+++ b/src/components/atoms/CardHeader/CardHeader.js
@@ -16,7 +16,11 @@ export default class CardHeader extends HTMLElement {
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
this.cardHeader = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.cardHeader.append(node);
diff --git a/src/components/atoms/CardOverlay/CardOverlay.js b/src/components/atoms/CardOverlay/CardOverlay.js
index 98731210..96b046d1 100644
--- a/src/components/atoms/CardOverlay/CardOverlay.js
+++ b/src/components/atoms/CardOverlay/CardOverlay.js
@@ -16,7 +16,11 @@ export default class CardOverlay extends HTMLElement {
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
this.cardOverlay = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.cardOverlay.append(node);
diff --git a/src/components/atoms/CarouselCaption/CarouselCaption.js b/src/components/atoms/CarouselCaption/CarouselCaption.js
index 77c85c81..d9f8d81a 100644
--- a/src/components/atoms/CarouselCaption/CarouselCaption.js
+++ b/src/components/atoms/CarouselCaption/CarouselCaption.js
@@ -16,7 +16,11 @@ export default class CarouselCaption extends HTMLElement {
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
this.carouselCaption = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.carouselCaption.append(node);
@@ -37,8 +41,14 @@ export default class CarouselCaption extends HTMLElement {
connectedCallback() {
// Modal attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let carouselCaptionClasses = ['carousel-caption d-none d-md-block'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? carouselCaptionClasses.push(extraClasses)
: 0;
diff --git a/src/components/atoms/CarouselItem/CarouselItem.js b/src/components/atoms/CarouselItem/CarouselItem.js
index 3774a5b6..b4245a4d 100644
--- a/src/components/atoms/CarouselItem/CarouselItem.js
+++ b/src/components/atoms/CarouselItem/CarouselItem.js
@@ -16,7 +16,11 @@ export default class CarouselItem extends HTMLElement {
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
this.carouselItem = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.carouselItem.append(node);
diff --git a/src/components/atoms/Container/Container.js b/src/components/atoms/Container/Container.js
index a80aa14d..0f7d6092 100644
--- a/src/components/atoms/Container/Container.js
+++ b/src/components/atoms/Container/Container.js
@@ -16,7 +16,11 @@ export default class Container extends HTMLElement {
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
this.container = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.container.append(node);
@@ -35,9 +39,17 @@ export default class Container extends HTMLElement {
this.shadowRoot.appendChild(variableStyles);
this.shadowRoot.appendChild(containerStyles);
// container attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let type = this.getAttribute('data-type');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let text = this.getAttribute('data-text');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backgroundColor = this.getAttribute('data-background-color');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
this.container.className = [
type,
diff --git a/src/components/atoms/DropdownMenu/DropdownMenu.js b/src/components/atoms/DropdownMenu/DropdownMenu.js
index 1e58eb81..6ca43868 100644
--- a/src/components/atoms/DropdownMenu/DropdownMenu.js
+++ b/src/components/atoms/DropdownMenu/DropdownMenu.js
@@ -20,7 +20,11 @@ export default class DropdownMenu extends HTMLElement {
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
this.dropdownMenu = document.createElement('ul');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
this.shadowRoot.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.dropdownMenu.append(node);
@@ -40,11 +44,23 @@ export default class DropdownMenu extends HTMLElement {
}
attributeChangedCallback(name, oldValue, newValue) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-console
console.log(newValue);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempClasses = this.dropdownMenu.className.split(' ');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let popValue = tempClasses.pop();
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
popValue != 'show' ? tempClasses.push(popValue) : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-console
console.log(tempClasses);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (newValue == 'true') {
tempClasses.push('show');
}
@@ -53,14 +69,28 @@ export default class DropdownMenu extends HTMLElement {
connectedCallback() {
// badge attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let darkMode = this.getAttribute('data-dark-mode');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let alignment = this.getAttribute('data-alignment');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let show = this.getAttribute('data-show');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let classList = ['dropdown-menu'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
darkMode == 'true' ? classList.push('dropdown-menu-dark') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
alignment != undefined && alignment != null
? classList.push(`dropdown-menu-${alignment}`)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
show == 'true' ? classList.push('show') : 0;
this.dropdownMenu.className = classList.join(' ');
diff --git a/src/components/atoms/FormCheck/FormCheck.js b/src/components/atoms/FormCheck/FormCheck.js
index c73216b0..5ae53fdf 100644
--- a/src/components/atoms/FormCheck/FormCheck.js
+++ b/src/components/atoms/FormCheck/FormCheck.js
@@ -12,6 +12,8 @@ export default class FormCheck extends HTMLElement {
// Always call super first in constructor
super();
// Create a shadow root
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
const shadow = this.attachShadow({ mode: 'open' });
this.internals = this.attachInternals();
this.container = document.createElement('div');
@@ -22,8 +24,14 @@ export default class FormCheck extends HTMLElement {
}
attributeChangedCallback(name, oldValue, newValue) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempClasses = this.formCheck.className.split(' ');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let popValue = tempClasses.pop();
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
popValue != 'is-invalid' ? tempClasses.push(popValue) : 0;
switch (newValue) {
@@ -77,18 +85,42 @@ export default class FormCheck extends HTMLElement {
connectedCallback() {
// Checkbox/Radio attributes setup
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let dataType = this.getAttribute('data-type');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let id = this.getAttribute('data-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let value = this.getAttribute('data-value');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let checkName = this.getAttribute('data-name');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let disabled = this.getAttribute('data-disabled');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let required = this.getAttribute('data-required');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let checked = this.getAttribute('data-checked');
let mode = this.getAttribute('data-mode');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let noLabel = this.getAttribute('data-nolabel');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let labelTxt = this.getAttribute('data-label');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backgroundColor = this.getAttribute('data-background-color');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let btnColor = this.getAttribute('data-btn-color');
// Set formcheck
this.formCheck.id = id;
@@ -96,21 +128,31 @@ export default class FormCheck extends HTMLElement {
this.formCheck.value = value;
this.formCheck.name = checkName;
this.formCheck.setAttribute('autocomplete', 'off');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (required == 'true') {
this.formCheck.setAttribute('required', true);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (checked == 'true') {
this.formCheck.checked = true;
this.formCheck.setAttribute('aria-checked', 'true');
} else {
this.formCheck.setAttribute('aria-checked', 'false');
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (disabled == 'true') {
this.formCheck.setAttribute('disabled', true);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (mode == 'switch') {
this.formCheck.setAttribute('role', mode);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (mode == 'btn' || mode == 'btn-outline') {
this.formCheck.className = 'btn-check';
mode = null;
@@ -140,12 +182,17 @@ export default class FormCheck extends HTMLElement {
this.container.appendChild(this.formCheck);
// Adding label to check/radio
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (noLabel != 'true') {
const checkLabel = document.createElement('label');
checkLabel.setAttribute('for', id);
checkLabel.innerText = labelTxt;
if (
- this.getAttribute('data-mode') == 'btn' ||
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
+ this.getAttribute('data-mode') == 'btn' || // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-mode') == 'btn-outline'
) {
checkLabel.className = `btn ${this.getAttribute(
@@ -217,6 +264,8 @@ export default class FormCheck extends HTMLElement {
// if the input is invalid, show the correct error
if (!validState.valid) {
// loop through the error reasons
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
for (let state in validState) {
// get the name of the data attribute that holds the
//error message
diff --git a/src/components/atoms/FormControl/FormControl.js b/src/components/atoms/FormControl/FormControl.js
index e0987da1..4bf828d2 100644
--- a/src/components/atoms/FormControl/FormControl.js
+++ b/src/components/atoms/FormControl/FormControl.js
@@ -12,6 +12,8 @@ export default class FormControl extends HTMLElement {
// Always call super first in constructor
super();
// Create a shadow root
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
const shadow = this.attachShadow({ mode: 'open' });
this.internals = this.attachInternals();
this.formControl = null;
@@ -20,12 +22,20 @@ export default class FormControl extends HTMLElement {
}
attributeChangedCallback(name, oldValue, newValue) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempClasses = this.formControl.className.split(' ');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let popValue = tempClasses.pop();
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
popValue != 'is-invalid' ? tempClasses.push(popValue) : 0;
switch (newValue) {
case 'true':
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-console
console.log('invalid input');
tempClasses.push('is-invalid');
this.formControl.className = tempClasses.join(' ');
@@ -42,52 +52,102 @@ export default class FormControl extends HTMLElement {
connectedCallback() {
// progress attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let inputType = this.getAttribute('data-tag');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let dataType = this.getAttribute('data-type');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let id = this.getAttribute('data-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let minlength = this.getAttribute('data-minlength');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let maxlength = this.getAttribute('data-maxlength');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let pattern = this.getAttribute('data-pattern');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let placeholderTxt = this.getAttribute('data-placeholder-txt');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let readOnly = this.getAttribute('data-read-only');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let disabled = this.getAttribute('data-disabled');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let plainText = this.getAttribute('data-plain-txt');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let required = this.getAttribute('data-required');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let rows = this.getAttribute('data-rows');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let size = this.getAttribute('data-size');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let value = this.getAttribute('data-value');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backgroundColor = this.getAttribute('data-background-color');
const formControl = document.createElement(inputType);
formControl.id = id;
formControl.placeholder = placeholderTxt;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (required == 'true') {
formControl.setAttribute('required', true);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (inputType != 'textarea') {
formControl.type = dataType;
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (minlength != undefined && minlength != null) {
formControl.setAttribute('minlength', minlength);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (maxlength != undefined && maxlength != null) {
formControl.setAttribute('maxlength', maxlength);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (pattern != undefined && pattern != null) {
formControl.setAttribute('pattern', pattern);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (rows != undefined && rows != null) {
formControl.setAttribute('rows', rows);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (value != undefined && value != null) {
formControl.value = value;
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (readOnly == 'true') {
formControl.setAttribute('readonly', true);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (disabled == 'true') {
formControl.setAttribute('disabled', true);
}
let colorPicker;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
dataType == 'color' ? (colorPicker = dataType) : (colorPicker = '');
formControl.className = [
'form-control',
@@ -170,6 +230,8 @@ export default class FormControl extends HTMLElement {
// if the input is invalid, show the correct error
if (!validState.valid) {
// loop through the error reasons
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
for (let state in validState) {
// get the name of the data attribute that holds the
//error message
diff --git a/src/components/atoms/FormLabel/FormLabel.js b/src/components/atoms/FormLabel/FormLabel.js
index 8a42cb87..2afa213f 100644
--- a/src/components/atoms/FormLabel/FormLabel.js
+++ b/src/components/atoms/FormLabel/FormLabel.js
@@ -6,22 +6,36 @@ export default class FormLabel extends HTMLElement {
// Always call super first in constructor
super();
// Create a shadow root
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
const shadow = this.attachShadow({ mode: 'open' });
}
connectedCallback() {
// progress attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let inputID = this.getAttribute('data-input-id');
let hidden = this.getAttribute('data-hidden');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let textColor = this.getAttribute('data-color');
let required = this.getAttribute('data-required');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let text = this.getAttribute('data-text');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (hidden == 'true') {
hidden = 'visually-hidden';
} else {
hidden = '';
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (required == 'true') {
required = 'required-field';
}
diff --git a/src/components/atoms/FormSelect/FormSelect.js b/src/components/atoms/FormSelect/FormSelect.js
index 9a713809..ee2a3751 100644
--- a/src/components/atoms/FormSelect/FormSelect.js
+++ b/src/components/atoms/FormSelect/FormSelect.js
@@ -25,15 +25,25 @@ export default class FormSelect extends HTMLElement {
this.internals = this.attachInternals();
// Create select and move options from slot to select
this.select = shadow.querySelector('select');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let node = this.querySelector('option');
node && this.select.append(node);
});
}
attributeChangedCallback(name, oldValue, newValue) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempClasses = this.select.className.split(' ');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let popValue = tempClasses.pop();
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
popValue != 'is-invalid' ? tempClasses.push(popValue) : 0;
switch (newValue) {
@@ -63,13 +73,29 @@ export default class FormSelect extends HTMLElement {
this.shadowRoot.appendChild(variableStyles);
this.shadowRoot.appendChild(formSelectStyles);
// progress attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let id = this.getAttribute('data-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let size = this.getAttribute('data-size');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let multiple = this.getAttribute('data-multiple');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let displayMultiple = this.getAttribute('data-display-multiple');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let disabled = this.getAttribute('data-disabled');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let required = this.getAttribute('data-required');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let ariaLabel = this.getAttribute('data-aria-label');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
this.select.addEventListener('change', (e) => {
@@ -99,15 +125,23 @@ export default class FormSelect extends HTMLElement {
this.setAttribute('tabindex', '0');
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (required == 'true') {
this.select.setAttribute('required', true);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (disabled == 'true') {
this.select.setAttribute('disabled', true);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (multiple == 'true') {
this.select.setAttribute('multiple', true);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (displayMultiple != undefined && displayMultiple != null) {
this.select.setAttribute('size', displayMultiple);
}
@@ -148,6 +182,8 @@ export default class FormSelect extends HTMLElement {
// if the input is invalid, show the correct error
if (!validState.valid) {
// loop through the error reasons
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
for (let state in validState) {
// get the name of the data attribute that holds the
//error message
diff --git a/src/components/atoms/Icon/Icon.js b/src/components/atoms/Icon/Icon.js
index 91ff2a66..2a386526 100644
--- a/src/components/atoms/Icon/Icon.js
+++ b/src/components/atoms/Icon/Icon.js
@@ -3,11 +3,15 @@ export default class Icon extends HTMLElement {
// Always call super first in constructor
super();
// Create a shadow root
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
const shadow = this.attachShadow({ mode: 'open' });
}
connectedCallback() {
// Icon attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let icon = this.getAttribute('data-icon');
let size = this.getAttribute('data-size');
switch (size) {
@@ -42,6 +46,8 @@ export default class Icon extends HTMLElement {
`;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unreachable
break;
case 'house-fill':
@@ -50,6 +56,8 @@ export default class Icon extends HTMLElement {
`;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unreachable
break;
case 'exclamation-circle':
@@ -58,6 +66,8 @@ export default class Icon extends HTMLElement {
`;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unreachable
break;
case 'exclamation-circle-fill':
@@ -65,6 +75,8 @@ export default class Icon extends HTMLElement {
`;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unreachable
break;
case 'exclamation-triangle':
@@ -73,6 +85,8 @@ export default class Icon extends HTMLElement {
`;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unreachable
break;
case 'check-circle':
@@ -81,6 +95,8 @@ export default class Icon extends HTMLElement {
`;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unreachable
break;
case 'check-circle-fill':
@@ -88,6 +104,8 @@ export default class Icon extends HTMLElement {
`;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unreachable
break;
case 'calendar':
@@ -95,6 +113,8 @@ export default class Icon extends HTMLElement {
`;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unreachable
break;
case 'calendar-fill':
@@ -102,6 +122,8 @@ export default class Icon extends HTMLElement {
`;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unreachable
break;
case 'calendar-date':
@@ -110,6 +132,8 @@ export default class Icon extends HTMLElement {
`;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unreachable
break;
case 'calendar-date-fill':
@@ -118,6 +142,8 @@ export default class Icon extends HTMLElement {
`;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unreachable
break;
default:
diff --git a/src/components/atoms/Image/Image.js b/src/components/atoms/Image/Image.js
index 2e12462c..cbc20064 100644
--- a/src/components/atoms/Image/Image.js
+++ b/src/components/atoms/Image/Image.js
@@ -18,7 +18,11 @@ export default class Image extends HTMLElement {
shadow.appendChild(template.content.cloneNode(true));
// Create select and move options from slot to select
this.picture = shadow.querySelector('picture');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.picture.append(node);
diff --git a/src/components/atoms/ListGroupItem/ListGroupItem.js b/src/components/atoms/ListGroupItem/ListGroupItem.js
index 23030ffb..3987cc90 100644
--- a/src/components/atoms/ListGroupItem/ListGroupItem.js
+++ b/src/components/atoms/ListGroupItem/ListGroupItem.js
@@ -36,21 +36,31 @@ export default class ListGroupItem extends HTMLElement {
attributeChangedCallback(name, oldValue, newValue) {
switch (name) {
case 'data-order':
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (newValue != null) {
this.listGroupItem.className = `${this.listGroupItem.className} ${newValue}`;
}
break;
case 'data-parent-classes':
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (newValue != null) {
this.listGroupItem.className = `${this.listGroupItem.className} ${newValue}`;
}
break;
case 'data-order-index':
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-console
console.log(newValue);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (newValue != null) {
this.listGroupItem.innerHTML = `${newValue}. ${this.listGroupItem.innerHTML}`;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.listGroupItem.append(node);
@@ -65,26 +75,46 @@ export default class ListGroupItem extends HTMLElement {
connectedCallback() {
// badge attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tag = this.getAttribute('data-tag');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backgroundColor = this.getAttribute('data-background-color');
let current = this.getAttribute('data-current');
let disabled = this.getAttribute('data-disabled');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let text = this.getAttribute('data-text');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let url = this.getAttribute('data-url');
this.listGroupItem = document.createElement(tag);
let actionItem = '';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
tag == 'a' || tag == 'button' ? (actionItem = 'list-group-item-action') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (text != undefined || text != null) {
this.listGroupItem.innerText = text;
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (url != undefined || url != null) {
this.listGroupItem.href = url;
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (current == 'true') {
this.listGroupItem.setAttribute('aria-current', 'true');
current = 'active';
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (disabled == 'true') {
this.listGroupItem.setAttribute('aria-disabled', 'true');
disabled = 'disabled';
@@ -99,7 +129,11 @@ export default class ListGroupItem extends HTMLElement {
].join(' ');
if (!this.shadowRoot.querySelector(tag)) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
this.shadowRoot.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.listGroupItem.append(node);
diff --git a/src/components/atoms/Loader/Loader.js b/src/components/atoms/Loader/Loader.js
index 7d13db57..57c80987 100644
--- a/src/components/atoms/Loader/Loader.js
+++ b/src/components/atoms/Loader/Loader.js
@@ -5,6 +5,8 @@ export default class Loader extends HTMLElement {
// Always call super first in constructor
super();
// Create a shadow root
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
const shadow = this.attachShadow({ mode: 'open' });
}
@@ -17,6 +19,8 @@ export default class Loader extends HTMLElement {
// Loader attributes
this.shadowRoot.appendChild(loaderStyles);
const loader = document.createElement('article');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let color = this.getAttribute('data-color');
loader.className = ['cod-loader', `cod-loader--${color || 'color-1'}`].join(
' ',
diff --git a/src/components/atoms/ModalBody/ModalBody.js b/src/components/atoms/ModalBody/ModalBody.js
index 0f6c3a27..675fd924 100644
--- a/src/components/atoms/ModalBody/ModalBody.js
+++ b/src/components/atoms/ModalBody/ModalBody.js
@@ -16,7 +16,11 @@ export default class ModalBody extends HTMLElement {
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
this.body = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
this.shadowRoot.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.body.append(node);
@@ -37,8 +41,14 @@ export default class ModalBody extends HTMLElement {
connectedCallback() {
// OffcanvasBody attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let bodyClasses = ['modal-body'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? bodyClasses.push(extraClasses)
: 0;
diff --git a/src/components/atoms/ModalFooter/ModalFooter.js b/src/components/atoms/ModalFooter/ModalFooter.js
index 5c876bf4..5e60b09a 100644
--- a/src/components/atoms/ModalFooter/ModalFooter.js
+++ b/src/components/atoms/ModalFooter/ModalFooter.js
@@ -17,7 +17,11 @@ export default class ModalFooter extends HTMLElement {
shadow.appendChild(template.content.cloneNode(true));
this.modalFooter = document.createElement('div');
this.closeBtn = document.createElement('cod-button');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
this.shadowRoot.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.modalFooter.appendChild(node);
@@ -39,16 +43,26 @@ export default class ModalFooter extends HTMLElement {
connectedCallback() {
// Nav attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let btnExtraClasses = this.getAttribute('data-button-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let modalFooterClasses = ['modal-footer'];
this.closeBtn.setAttribute('data-img-alt', '');
this.closeBtn.setAttribute('data-icon', '');
this.closeBtn.setAttribute('data-label', 'Close');
this.closeBtn.setAttribute('data-bs-dismiss', 'modal');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? modalFooterClasses.push(extraClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
btnExtraClasses != undefined && btnExtraClasses != null
? this.closeBtn.setAttribute('data-extra-classes', btnExtraClasses)
: 0;
@@ -63,6 +77,8 @@ export default class ModalFooter extends HTMLElement {
this.removeEventListener('click', this._onClick.bind(this));
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
_onClick(e) {
this.getRootNode()
.host.getRootNode()
diff --git a/src/components/atoms/ModalHeader/ModalHeader.js b/src/components/atoms/ModalHeader/ModalHeader.js
index f4f21a42..113c4098 100644
--- a/src/components/atoms/ModalHeader/ModalHeader.js
+++ b/src/components/atoms/ModalHeader/ModalHeader.js
@@ -18,7 +18,11 @@ export default class ModalHeader extends HTMLElement {
this.modalHeader = document.createElement('div');
this.modalTitle = document.createElement('div');
this.closeBtn = document.createElement('cod-button');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
this.shadowRoot.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.modalTitle.appendChild(node);
@@ -41,9 +45,17 @@ export default class ModalHeader extends HTMLElement {
connectedCallback() {
// Nav attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let parentID = this.getAttribute('data-parent-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let btnDark = this.getAttribute('data-button-dark');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let modalHeaderClasses = ['modal-header'];
this.modalTitle.className = 'modal-title';
this.modalTitle.id = `${parentID}-label`;
@@ -51,9 +63,13 @@ export default class ModalHeader extends HTMLElement {
this.closeBtn.setAttribute('data-icon', '');
this.closeBtn.setAttribute('data-close', 'true');
this.closeBtn.setAttribute('data-bs-dismiss', 'modal');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? modalHeaderClasses.push(extraClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
btnDark == 'true'
? this.closeBtn.setAttribute('data-extra-classes', 'btn-close-white')
: 0;
@@ -68,6 +84,8 @@ export default class ModalHeader extends HTMLElement {
this.removeEventListener('click', this._onClick.bind(this));
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
_onClick(e) {
this.getRootNode()
.host.getRootNode()
diff --git a/src/components/atoms/NavbarBrand/NavbarBrand.js b/src/components/atoms/NavbarBrand/NavbarBrand.js
index ddfa6886..a83d5b8d 100644
--- a/src/components/atoms/NavbarBrand/NavbarBrand.js
+++ b/src/components/atoms/NavbarBrand/NavbarBrand.js
@@ -23,39 +23,79 @@ export default class NavbarBrand extends HTMLElement {
connectedCallback() {
// Navbar Brand attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let url = this.getAttribute('data-url');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let text = this.getAttribute('data-text');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let brandImgURL = this.getAttribute('data-img');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let brandImgAlt = this.getAttribute('data-img-alt');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let textClasses = this.getAttribute('data-text-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let imgClasses = this.getAttribute('data-img-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let imgSize = this.getAttribute('data-img-size');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let brandClasses = [''];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let brandLink = document.createElement('a');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let cleanURL = encodeURI(url);
brandLink.href = decodeURI(cleanURL);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (brandImgURL != undefined && brandImgURL != null) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let brandImg = document.createElement('img');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let cleanImgURL = encodeURI(brandImgURL);
brandImg.src = decodeURI(cleanImgURL);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
imgSize != undefined && imgSize != null
? brandImg.setAttribute('width', imgSize)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
imgClasses != undefined && imgClasses != null
? (brandImg.className = imgClasses)
: 0;
brandImg.setAttribute('alt', brandImgAlt);
brandLink.appendChild(brandImg);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (text != undefined && text != null) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let brandText = document.createElement('span');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
textClasses != undefined && textClasses != null
? (brandText.className = textClasses)
: 0;
brandText.innerText = text;
brandLink.appendChild(brandText);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? brandClasses.push(extraClasses)
: 0;
diff --git a/src/components/atoms/NavbarCollapse/NavbarCollapse.js b/src/components/atoms/NavbarCollapse/NavbarCollapse.js
index 2ad37d83..a857bf51 100644
--- a/src/components/atoms/NavbarCollapse/NavbarCollapse.js
+++ b/src/components/atoms/NavbarCollapse/NavbarCollapse.js
@@ -15,7 +15,11 @@ export default class Navbar extends HTMLElement {
// Create a shadow root
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
shadow.appendChild(node);
diff --git a/src/components/atoms/NavbarOffcanvas/NavbarOffcanvas.js b/src/components/atoms/NavbarOffcanvas/NavbarOffcanvas.js
index 5238ac3d..bac2bf52 100644
--- a/src/components/atoms/NavbarOffcanvas/NavbarOffcanvas.js
+++ b/src/components/atoms/NavbarOffcanvas/NavbarOffcanvas.js
@@ -21,13 +21,23 @@ export default class NavbarOffcanvas extends HTMLElement {
shadow.appendChild(template.content.cloneNode(true));
this.offcanvas = document.createElement('div');
this.offcanvasBackdrop = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-show') == 'true'
? node.setAttribute('data-show', true)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (node.tagName == 'COD-OFFCANVAS-HEADER') {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-button-dark') == 'true'
? node.setAttribute('data-button-dark', true)
: 0;
@@ -50,12 +60,24 @@ export default class NavbarOffcanvas extends HTMLElement {
}
attributeChangedCallback(name, oldValue, newValue) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempClasses = this.offcanvas.className.split(' ');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let popValue = tempClasses.pop();
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
popValue != 'show' ? tempClasses.push(popValue) : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (newValue == 'true') {
tempClasses.push('show');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('data-backdrop') != 'false') {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('data-static') != 'true') {
this.offcanvasBackdrop.addEventListener('click', this._onClick);
}
@@ -71,35 +93,71 @@ export default class NavbarOffcanvas extends HTMLElement {
connectedCallback() {
// Offcanvas attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let show = this.getAttribute('data-show');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let placement = this.getAttribute('data-placement');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let id = this.getAttribute('data-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backdrop = this.getAttribute('data-backdrop');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backdropExtraClasses = this.getAttribute('data-backdrop-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let scroll = this.getAttribute('data-scroll');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let bStatic = this.getAttribute('data-static');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let offcanvasClasses = ['offcanvas'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backdropClasses = ['offcanvas-backdrop fade show'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
show == 'true' ? offcanvasClasses.push('show') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
backdrop == 'false'
? this.offcanvas.setAttribute('data-bs-backdrop', false)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
scroll == 'true' ? this.offcanvas.setAttribute('data-bs-scroll', true) : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
bStatic == 'true'
? this.offcanvas.setAttribute('data-bs-backdrop', 'static')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
backdropExtraClasses != undefined && backdropExtraClasses != null
? backdropClasses.push(backdropExtraClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? offcanvasClasses.push(extraClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (placement != undefined && placement != null) {
offcanvasClasses.push(`offcanvas-${placement}`);
} else {
offcanvasClasses.push('offcanvas-start');
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (id != undefined && id != null) {
this.offcanvas.id = id;
this.offcanvas.setAttribute('aria-labelledby', `${id}-label`);
@@ -116,6 +174,8 @@ export default class NavbarOffcanvas extends HTMLElement {
this.removeEventListener('click', this._onClick.bind(this));
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
_onClick(e) {
this.getRootNode().host.setAttribute('data-show', 'false');
}
diff --git a/src/components/atoms/NavbarToggle/NavbarToggle.js b/src/components/atoms/NavbarToggle/NavbarToggle.js
index 40105375..0c0f102c 100644
--- a/src/components/atoms/NavbarToggle/NavbarToggle.js
+++ b/src/components/atoms/NavbarToggle/NavbarToggle.js
@@ -23,17 +23,35 @@ export default class NavbarToggle extends HTMLElement {
connectedCallback() {
// Navbar Brand attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let darkBtn = this.getAttribute('data-button-dark');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let mode = this.getAttribute('data-mode');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let toggleBtn = document.createElement('button');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let navbarToggleClasses = [''];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (mode == 'default') {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
darkBtn == 'true' ? toggleBtn.setAttribute('data-bs-theme', 'dark') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let toggleIcon = document.createElement('span');
navbarToggleClasses.push('navbar-toggler-icon');
toggleBtn.appendChild(toggleIcon);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? navbarToggleClasses.push(extraClasses)
: 0;
@@ -48,14 +66,22 @@ export default class NavbarToggle extends HTMLElement {
this.removeEventListener('click', this._onClick.bind(this));
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
_onClick(e) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('data-show') == 'true') {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-target-toggle') == 'offcanvas'
? this.getRootNode()
.querySelector('cod-offcanvas')
.setAttribute('data-show', 'false')
: this.getRootNode().host.setAttribute('data-show', 'false');
} else {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-target-toggle') == 'offcanvas'
? this.getRootNode()
.querySelector('cod-offcanvas')
diff --git a/src/components/atoms/OffcanvasBody/OffcanvasBody.js b/src/components/atoms/OffcanvasBody/OffcanvasBody.js
index c40406b1..4926ce68 100644
--- a/src/components/atoms/OffcanvasBody/OffcanvasBody.js
+++ b/src/components/atoms/OffcanvasBody/OffcanvasBody.js
@@ -16,7 +16,11 @@ export default class OffcanvasBody extends HTMLElement {
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
this.body = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
this.shadowRoot.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.body.append(node);
@@ -37,8 +41,14 @@ export default class OffcanvasBody extends HTMLElement {
connectedCallback() {
// OffcanvasBody attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let bodyClasses = ['offcanvas-body'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? bodyClasses.push(extraClasses)
: 0;
diff --git a/src/components/atoms/OffcanvasHeader/OffcanvasHeader.js b/src/components/atoms/OffcanvasHeader/OffcanvasHeader.js
index a0ce6718..0e33c627 100644
--- a/src/components/atoms/OffcanvasHeader/OffcanvasHeader.js
+++ b/src/components/atoms/OffcanvasHeader/OffcanvasHeader.js
@@ -18,7 +18,11 @@ export default class OffcanvasHeader extends HTMLElement {
this.offcanvasHeader = document.createElement('div');
this.offcanvasTitle = document.createElement('div');
this.closeBtn = document.createElement('cod-button');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
this.shadowRoot.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
this.offcanvasTitle.appendChild(node);
@@ -41,9 +45,17 @@ export default class OffcanvasHeader extends HTMLElement {
connectedCallback() {
// Nav attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let parentID = this.getAttribute('data-parent-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let btnDark = this.getAttribute('data-button-dark');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let offcanvasHeaderClasses = ['offcanvas-header'];
this.offcanvasTitle.className = 'offcanvas-title';
this.offcanvasTitle.id = `${parentID}-label`;
@@ -51,9 +63,13 @@ export default class OffcanvasHeader extends HTMLElement {
this.closeBtn.setAttribute('data-icon', '');
this.closeBtn.setAttribute('data-close', 'true');
this.closeBtn.setAttribute('data-bs-dismiss', parentID);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? offcanvasHeaderClasses.push(extraClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
btnDark == 'true'
? this.closeBtn.setAttribute('data-extra-classes', 'btn-close-white')
: 0;
@@ -68,6 +84,8 @@ export default class OffcanvasHeader extends HTMLElement {
this.removeEventListener('click', this._onClick.bind(this));
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
_onClick(e) {
this.getRootNode()
.host.getRootNode()
diff --git a/src/components/atoms/PaginationItem/PaginationItem.js b/src/components/atoms/PaginationItem/PaginationItem.js
index 9525f547..9d29769a 100644
--- a/src/components/atoms/PaginationItem/PaginationItem.js
+++ b/src/components/atoms/PaginationItem/PaginationItem.js
@@ -23,23 +23,45 @@ export default class PaginationItem extends HTMLElement {
connectedCallback() {
// Nav attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let url = this.getAttribute('data-url');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let special = this.getAttribute('data-special');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let label = this.getAttribute('data-label');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let text = this.getAttribute('data-text');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let disabled = this.getAttribute('data-disabled');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let active = this.getAttribute('data-active');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let paginationItemClasses = ['page-link'];
let paginationItem = null;
let tag = null;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (url != undefined && url != null) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (disabled == 'true') {
paginationItemClasses.push('disabled');
paginationItem = document.createElement('span');
tag = 'span';
} else {
paginationItem = document.createElement('a');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let cleanURL = encodeURI(url);
paginationItem.href = decodeURI(cleanURL);
tag = 'a';
@@ -48,14 +70,24 @@ export default class PaginationItem extends HTMLElement {
paginationItem = document.createElement('span');
tag = 'span';
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
active == 'true' ? paginationItemClasses.push('active') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? paginationItemClasses.push(extraClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
special != undefined && special != null
? this.setSpecialItem(special, paginationItem)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
text != undefined && text != null ? (paginationItem.innerText = text) : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
label != undefined && label != null
? paginationItem.setAttribute('aria-label', label)
: 0;
diff --git a/src/components/atoms/Progress/Progress.js b/src/components/atoms/Progress/Progress.js
index 89c18f17..72b7f9a4 100644
--- a/src/components/atoms/Progress/Progress.js
+++ b/src/components/atoms/Progress/Progress.js
@@ -6,6 +6,8 @@ export default class Progress extends HTMLElement {
// Always call super first in constructor
super();
// Create a shadow root
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
const shadow = this.attachShadow({ mode: 'open' });
}
@@ -21,14 +23,30 @@ export default class Progress extends HTMLElement {
this.shadowRoot.appendChild(variableStyles);
this.shadowRoot.appendChild(progressStyles);
// progress attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let striped = this.getAttribute('data-type');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let label = this.getAttribute('data-label');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let ariaLabel = this.getAttribute('data-aria-label');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let animated = this.getAttribute('data-animated');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let value = this.getAttribute('data-value');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backgroundColor = this.getAttribute('data-background-color');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let stacked = this.getAttribute('data-multi-bars');
const progressContainer = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (stacked == 'undefined' || stacked == 'null') {
const bar = document.createElement('div');
bar.role = 'progressbar';
@@ -37,6 +55,8 @@ export default class Progress extends HTMLElement {
bar.className = 'progress';
const barBody = document.createElement('div');
barBody.style = `width: ${value}%`;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (label != 'undefined' && label != 'null') {
barBody.innerText = label;
}
@@ -57,6 +77,8 @@ export default class Progress extends HTMLElement {
buildBar(bars, barContainer) {
bars.forEach((bar) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempBar = document.createElement('div');
tempBar.role = 'progressbar';
tempBar.setAttribute('aria-label', bar.ariaLabel);
@@ -66,6 +88,8 @@ export default class Progress extends HTMLElement {
tempBar.className = 'progress';
const barBody = document.createElement('div');
tempBar.style = `width: ${bar.value}%`;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
bar.label == undefined || bar.label == null
? ''
: (barBody.innerText = bar.label);
diff --git a/src/components/atoms/Range/Range.js b/src/components/atoms/Range/Range.js
index 8bec9219..d5eafb9a 100644
--- a/src/components/atoms/Range/Range.js
+++ b/src/components/atoms/Range/Range.js
@@ -6,6 +6,8 @@ export default class Range extends HTMLElement {
// Always call super first in constructor
super();
// Create a shadow root
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
const shadow = this.attachShadow({ mode: 'open' });
}
@@ -21,24 +23,44 @@ export default class Range extends HTMLElement {
this.shadowRoot.appendChild(variableStyles);
this.shadowRoot.appendChild(rangeStyles);
// progress attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const, no-unused-vars
let id = this.getAttribute('data-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let disabled = this.getAttribute('data-disabled');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let min = this.getAttribute('data-min');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let max = this.getAttribute('data-max');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let step = this.getAttribute('data-step');
const range = document.createElement('input');
range.type = 'range';
range.className = 'form-range';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (disabled == 'true') {
range.disabled = true;
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-console
console.log(min);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (min != undefined || min != null) {
range.setAttribute('min', min);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (max != undefined || max != null) {
range.setAttribute('max', max);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (step != undefined || step != null) {
range.setAttribute('step', step);
}
diff --git a/src/components/atoms/Spinner/Spinner.js b/src/components/atoms/Spinner/Spinner.js
index 6557f679..303bdc5d 100644
--- a/src/components/atoms/Spinner/Spinner.js
+++ b/src/components/atoms/Spinner/Spinner.js
@@ -6,6 +6,8 @@ export default class Image extends HTMLElement {
// Always call super first in constructor
super();
// Create a shadow root
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
const shadow = this.attachShadow({ mode: 'open' });
}
@@ -21,17 +23,29 @@ export default class Image extends HTMLElement {
this.shadowRoot.appendChild(variableStyles);
this.shadowRoot.appendChild(spinnerStyles);
// image attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let spinnerType = this.getAttribute('data-type');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let spinnerSize = this.getAttribute('data-size');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backgroundColor = this.getAttribute('data-background-color');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let displayType = this.getAttribute('data-display-type');
let spinnerSizeClass;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (spinnerSize == 'sm') {
spinnerSizeClass = `spinner-${spinnerType}-${spinnerSize}`;
} else {
spinnerSizeClass = '';
}
let spinner;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
displayType == 'inline'
? (spinner = document.createElement('span'))
: (spinner = document.createElement('div'));
@@ -41,6 +55,8 @@ export default class Image extends HTMLElement {
`text-${backgroundColor || ''}`,
].join(' ');
spinner.role = 'status';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let pLoading = document.createElement('span');
pLoading.innerText = 'Loading...';
pLoading.className = 'visually-hidden';
diff --git a/src/components/atoms/TableBody/TableBody.js b/src/components/atoms/TableBody/TableBody.js
index e149cb53..b55b5ef8 100644
--- a/src/components/atoms/TableBody/TableBody.js
+++ b/src/components/atoms/TableBody/TableBody.js
@@ -17,21 +17,35 @@ export default class TableBody extends HTMLElement {
shadow.appendChild(template.content.cloneNode(true));
this.tableBody = document.createElement('div');
this.tableBody.role = 'rowgroup';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node, index) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-striped-row') == 'true' && index % 2 == 0
? node.setAttribute('data-striped-row', 'true')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-hover') == 'true'
? node.setAttribute('data-hover', 'true')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-striped-col') == 'true'
? node.setAttribute('data-striped-col', 'true')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-vertical-align') == 'true'
? node.setAttribute('data-vertical-align', 'true')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-legacy-responsive') == 'true'
? node.setAttribute('data-legacy-responsive', 'true')
: 0;
diff --git a/src/components/atoms/TableCell/TableCell.js b/src/components/atoms/TableCell/TableCell.js
index 7df1131f..da31001e 100644
--- a/src/components/atoms/TableCell/TableCell.js
+++ b/src/components/atoms/TableCell/TableCell.js
@@ -17,7 +17,11 @@ export default class TableCell extends HTMLElement {
shadow.appendChild(template.content.cloneNode(true));
this.tableCell = document.createElement('div');
this.tableCell.role = 'cell';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.childNodes);
tempElements.forEach((node) => {
this.tableCell.appendChild(node);
@@ -40,20 +44,42 @@ export default class TableCell extends HTMLElement {
connectedCallback() {
// TableCell attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let stripedRow = this.getAttribute('data-striped-row');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let stripedCol = this.getAttribute('data-striped-col');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let legacyResponsive = this.getAttribute('data-legacy-responsive');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let verticalAlign = this.getAttribute('data-vertical-align');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tableCellClasses = ['table-cell'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
verticalAlign != undefined && verticalAlign != null
? tableCellClasses.push(verticalAlign)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
legacyResponsive == 'true'
? tableCellClasses.push('table-legacy-responsive')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
stripedRow == 'true' ? tableCellClasses.push('table-striped') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
stripedCol == 'true' ? tableCellClasses.push('table-striped-columns') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? tableCellClasses.push(extraClasses)
: 0;
diff --git a/src/components/atoms/TableCellHeader/TableCellHeader.js b/src/components/atoms/TableCellHeader/TableCellHeader.js
index 9c4a0dff..feb535ab 100644
--- a/src/components/atoms/TableCellHeader/TableCellHeader.js
+++ b/src/components/atoms/TableCellHeader/TableCellHeader.js
@@ -17,7 +17,11 @@ export default class TableCellHeader extends HTMLElement {
shadow.appendChild(template.content.cloneNode(true));
this.tableCellHeader = document.createElement('div');
this.tableCellHeader.role = 'columnheader';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.childNodes);
tempElements.forEach((node) => {
this.tableCellHeader.appendChild(node);
@@ -40,22 +44,44 @@ export default class TableCellHeader extends HTMLElement {
connectedCallback() {
// tableCellHeader attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let stripedRow = this.getAttribute('data-striped-row');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let stripedCol = this.getAttribute('data-striped-col');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let legacyResponsive = this.getAttribute('data-legacy-responsive');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let verticalAlign = this.getAttribute('data-vertical-align');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tableCellHeaderClasses = ['table-cell-header'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
verticalAlign != undefined && verticalAlign != null
? tableCellHeaderClasses.push(verticalAlign)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
legacyResponsive == 'true'
? tableCellHeaderClasses.push('table-legacy-responsive')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
stripedRow == 'true' ? tableCellHeaderClasses.push('table-striped') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
stripedCol == 'true'
? tableCellHeaderClasses.push('table-striped-columns')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? tableCellHeaderClasses.push(extraClasses)
: 0;
diff --git a/src/components/atoms/TableHeader/TableHeader.js b/src/components/atoms/TableHeader/TableHeader.js
index 46bc3bbe..6f389ce6 100644
--- a/src/components/atoms/TableHeader/TableHeader.js
+++ b/src/components/atoms/TableHeader/TableHeader.js
@@ -17,15 +17,25 @@ export default class TableHeader extends HTMLElement {
shadow.appendChild(template.content.cloneNode(true));
this.tableHeader = document.createElement('div');
this.tableHeader.role = 'rowgroup';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-striped-col') == 'true'
? node.setAttribute('data-striped-col', 'true')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-vertical-align') == 'true'
? node.setAttribute('data-vertical-align', 'true')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-legacy-responsive') == 'true'
? node.setAttribute('data-legacy-responsive', 'true')
: 0;
diff --git a/src/components/atoms/TableRow/TableRow.js b/src/components/atoms/TableRow/TableRow.js
index 4660f42d..7d7542be 100644
--- a/src/components/atoms/TableRow/TableRow.js
+++ b/src/components/atoms/TableRow/TableRow.js
@@ -17,18 +17,30 @@ export default class TableBody extends HTMLElement {
shadow.appendChild(template.content.cloneNode(true));
this.tableRow = document.createElement('div');
this.tableRow.role = 'row';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node, index) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-striped-row') == 'true'
? node.setAttribute('data-striped-row', 'true')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-striped-col') == 'true' && index % 2 != 0
? node.setAttribute('data-striped-col', 'true')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-vertical-align') == 'true'
? node.setAttribute('data-vertical-align', 'true')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-legacy-responsive') == 'true'
? node.setAttribute('data-legacy-responsive', 'true')
: 0;
@@ -52,10 +64,20 @@ export default class TableBody extends HTMLElement {
connectedCallback() {
// TableRow attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let hover = this.getAttribute('data-hover');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tableRowClasses = ['table-row'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
hover == 'true' ? tableRowClasses.push('table-hover') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? tableRowClasses.push(extraClasses)
: 0;
diff --git a/src/components/molecules/Accordion/Accordion.css b/src/components/molecules/Accordion/Accordion.css
index 8ca6b9b5..d5d0c51a 100644
--- a/src/components/molecules/Accordion/Accordion.css
+++ b/src/components/molecules/Accordion/Accordion.css
@@ -1,4 +1,4 @@
.accordion-ol {
--bs-accordion-btn-padding-x: 0rem;
--bs-accordion-btn-padding-y: 0rem;
-}
\ No newline at end of file
+}
diff --git a/src/components/molecules/Accordion/Accordion.js b/src/components/molecules/Accordion/Accordion.js
index ce98869b..fd50bae3 100644
--- a/src/components/molecules/Accordion/Accordion.js
+++ b/src/components/molecules/Accordion/Accordion.js
@@ -17,11 +17,15 @@ export default class Accordion extends HTMLElement {
shadow.appendChild(template.content.cloneNode(true));
this.accordion = document.createElement('div');
this.shadowRoot.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = ev.target.assignedElements();
tempElements.forEach((node, index) => {
// TODO: Refactor attribute and class handling for children.
switch (node.tagName) {
case 'COD-ACCORDION-ITEM':
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-case-declarations, prefer-const
let accordionItem = document.createElement('div');
accordionItem.className = 'accordion-item';
node.setAttribute('data-parent-id', this.getAttribute('data-id'));
@@ -34,6 +38,8 @@ export default class Accordion extends HTMLElement {
break;
default:
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-case-declarations, prefer-const
let nodeClasses = node.className.split(' ');
nodeClasses.includes('no-wc')
? node.remove()
@@ -58,13 +64,25 @@ export default class Accordion extends HTMLElement {
connectedCallback() {
// Nav attributes
// TODO: Refactor attribute and class handling.
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let flush = this.getAttribute('data-flush');
const isOrderedList = this.getAttribute('data-ol');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let id = this.getAttribute('data-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let accordionClasses = ['accordion'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
flush == 'true' ? accordionClasses.push('accordion-flush') : 0;
isOrderedList !== null ? accordionClasses.push('accordion-ol') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? accordionClasses.push(extraClasses)
: 0;
diff --git a/src/components/molecules/ButtonGroup/ButtonGroup.js b/src/components/molecules/ButtonGroup/ButtonGroup.js
index b733b7f7..a92a0d41 100644
--- a/src/components/molecules/ButtonGroup/ButtonGroup.js
+++ b/src/components/molecules/ButtonGroup/ButtonGroup.js
@@ -18,9 +18,15 @@ export default class FormCheckGroup extends HTMLElement {
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
this.btnGroup = shadow.querySelector('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let nodeClasses = node.className.split(' ');
nodeClasses.includes('no-wc')
? node.remove()
@@ -41,19 +47,31 @@ export default class FormCheckGroup extends HTMLElement {
connectedCallback() {
// setting up styles
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let type = this.getAttribute('data-type');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let label = this.getAttribute('data-label');
let size = this.getAttribute('data-size');
let vertical = this.getAttribute('data-vertical');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (type == 'group') {
this.btnGroup.role = 'group';
} else {
this.btnGroup.role = 'toolbar';
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (size != undefined && size != null) {
size = `btn-group-${size}`;
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (vertical == 'true') {
vertical = 'btn-group-vertical';
}
diff --git a/src/components/molecules/Dropdown/Dropdown.js b/src/components/molecules/Dropdown/Dropdown.js
index f2a1a944..2205f653 100644
--- a/src/components/molecules/Dropdown/Dropdown.js
+++ b/src/components/molecules/Dropdown/Dropdown.js
@@ -20,9 +20,15 @@ export default class Dropdown extends HTMLElement {
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
this.dropdown = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
this.shadowRoot.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let nodeClasses = node.className.split(' ');
nodeClasses.includes('no-wc')
? node.remove()
@@ -43,14 +49,22 @@ export default class Dropdown extends HTMLElement {
}
attributeChangedCallback(name, oldValue, newValue) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-console
console.log(newValue);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-console
console.log(this.dropdownMenu);
}
connectedCallback() {
// badge attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const, no-unused-vars
let show = this.getAttribute('data-show');
let split = this.getAttribute('data-split');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
split == 'true' ? (split = 'btn-group') : (split = 'dropdown');
this.dropdown.className = split;
if (this.querySelector('cod-button[data-bs-toggle="dropdown"]')) {
@@ -68,9 +82,15 @@ export default class Dropdown extends HTMLElement {
}
_onClick(e) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-console
console.log(this.parentElement.querySelector('cod-dropdown-menu'));
if (e.target.getAttribute('data-bs-toggle') === 'dropdown') {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-console
console.log('changing dropdown state');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('aria-expanded') == 'true') {
this.setAttribute('aria-expanded', 'false');
this.parentElement
diff --git a/src/components/molecules/FormCheckGroup/FormCheckGroup.js b/src/components/molecules/FormCheckGroup/FormCheckGroup.js
index 70b0061a..cb9b9f6c 100644
--- a/src/components/molecules/FormCheckGroup/FormCheckGroup.js
+++ b/src/components/molecules/FormCheckGroup/FormCheckGroup.js
@@ -27,12 +27,16 @@ export default class FormCheckGroup extends HTMLElement {
connectedCallback() {
// setting up styles
if (!this.hasAttribute('role')) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('data-type') == 'radio') {
this.setAttribute('role', 'radiogroup');
} else {
this.setAttribute('role', 'group');
}
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let firstFormCheck = this.checkedFormCheck;
if (firstFormCheck) {
this._uncheckAll();
@@ -117,6 +121,8 @@ export default class FormCheckGroup extends HTMLElement {
while (next) {
if (
next.getAttribute('data-type') === 'radio' ||
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-undef
prev.getAttribute('data-type') === 'checkbox'
) {
return next;
@@ -127,6 +133,8 @@ export default class FormCheckGroup extends HTMLElement {
}
_setCheckedToPrevButton() {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let checkedButton = this.checkedFormCheck || this.firstFormCheck;
if (checkedButton === this.firstFormCheck) {
this._setChecked(this.lastFormCheck);
@@ -136,6 +144,8 @@ export default class FormCheckGroup extends HTMLElement {
}
_setCheckedToNextButton() {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let checkedButton = this.checkedRadioButton || this.firstFormCheck;
if (checkedButton === this.lastFormCheck) {
this._setChecked(this.firstFormCheck);
@@ -153,6 +163,8 @@ export default class FormCheckGroup extends HTMLElement {
_uncheckAll() {
const formCheck = this.querySelectorAll('cod-form-check');
for (let i = 0; i < formCheck.length; i++) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let btn = formCheck[i];
btn.setAttribute('data-checked', 'false');
btn.setAttribute('data-required', 'false');
@@ -164,6 +176,8 @@ export default class FormCheckGroup extends HTMLElement {
const formCheck = this.querySelectorAll('cod-form-check');
let isValid = false;
for (let i = 0; i < formCheck.length; i++) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let checkbox = formCheck[i];
checkbox.formCheck.checked ? (isValid = true) : 0;
}
@@ -173,6 +187,8 @@ export default class FormCheckGroup extends HTMLElement {
_requiredAll() {
const formCheck = this.querySelectorAll('cod-form-check');
for (let i = 0; i < formCheck.length; i++) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let btn = formCheck[i];
btn.setAttribute('data-required', 'true');
}
@@ -181,6 +197,8 @@ export default class FormCheckGroup extends HTMLElement {
_unRequiredAll() {
const formCheck = this.querySelectorAll('cod-form-check');
for (let i = 0; i < formCheck.length; i++) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let btn = formCheck[i];
btn.setAttribute('data-required', 'false');
}
@@ -201,6 +219,8 @@ export default class FormCheckGroup extends HTMLElement {
this._setChecked(e.target);
}
if (e.target.getAttribute('data-type') === 'checkbox') {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('data-required') == 'true') {
this._validateRequired(e.target);
}
diff --git a/src/components/molecules/ListGroup/ListGroup.js b/src/components/molecules/ListGroup/ListGroup.js
index ec1e9c72..eab575c4 100644
--- a/src/components/molecules/ListGroup/ListGroup.js
+++ b/src/components/molecules/ListGroup/ListGroup.js
@@ -30,14 +30,24 @@ export default class FormCheckGroup extends HTMLElement {
connectedCallback() {
// setting up styles
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tag = this.getAttribute('data-tag');
let flushed = this.getAttribute('data-flushed');
let numbered = this.getAttribute('data-numbered');
let horizontal = this.getAttribute('data-horizontal');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
this.listGroup = document.createElement(tag);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
flushed == 'true' ? (flushed = 'list-group-flush') : (flushed = null);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
numbered == 'true' ? (numbered = 'list-group-numbered') : (numbered = null);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
horizontal == 'true'
? (horizontal = 'list-group-horizontal')
: (horizontal = null);
@@ -50,8 +60,14 @@ export default class FormCheckGroup extends HTMLElement {
].join(' ');
if (!this.shadowRoot.querySelector(tag)) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
this.shadowRoot.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempLength = tempElements.length;
tempElements.forEach((node, index) => {
let pClasses = null;
@@ -81,6 +97,8 @@ export default class FormCheckGroup extends HTMLElement {
if (pClasses) {
node.setAttribute('data-parent-classes', pClasses);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let nodeClasses = node.className.split(' ');
nodeClasses.includes('no-wc')
? node.remove()
diff --git a/src/components/molecules/Nav/Nav.js b/src/components/molecules/Nav/Nav.js
index 137abe83..b718e0d9 100644
--- a/src/components/molecules/Nav/Nav.js
+++ b/src/components/molecules/Nav/Nav.js
@@ -16,13 +16,21 @@ export default class Nav extends HTMLElement {
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
this.nav = document.createElement('ul');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
this.shadowRoot.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let navItem = document.createElement('li');
navItem.className = 'nav-item';
navItem.appendChild(node);
this.nav.append(navItem);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let nodeClasses = node.className.split(' ');
nodeClasses.includes('no-wc')
? node.remove()
@@ -44,24 +52,58 @@ export default class Nav extends HTMLElement {
connectedCallback() {
// Nav attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let vertical = this.getAttribute('data-vertical');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let hAlignment = this.getAttribute('data-horizontal-alignment');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tabs = this.getAttribute('data-tabs');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let pills = this.getAttribute('data-pills');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let underline = this.getAttribute('data-underline');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let fill = this.getAttribute('data-fill');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let justified = this.getAttribute('data-justified');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let navClasses = ['nav'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
vertical == 'true' ? navClasses.push('flex-column') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
tabs == 'true' ? navClasses.push('nav-tabs') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
pills == 'true' ? navClasses.push('nav-pills') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
underline == 'true' ? navClasses.push('nav-underline') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
fill == 'true' ? navClasses.push('nav-fill') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
justified == 'true' ? navClasses.push('nav-justified') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
hAlignment != undefined && hAlignment != null
? navClasses.push(`justify-content-${hAlignment}`)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? navClasses.push(extraClasses)
: 0;
diff --git a/src/components/molecules/Pagination/Pagination.js b/src/components/molecules/Pagination/Pagination.js
index 12ae3fb1..b8d1e2d0 100644
--- a/src/components/molecules/Pagination/Pagination.js
+++ b/src/components/molecules/Pagination/Pagination.js
@@ -17,15 +17,27 @@ export default class Pagination extends HTMLElement {
shadow.appendChild(template.content.cloneNode(true));
this.paginationContainer = document.createElement('nav');
this.pagination = document.createElement('ul');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
this.shadowRoot.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node, index) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let paginationItem = document.createElement('li');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let paginationItemClasses = ['page-item'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (node.getAttribute('data-active') == 'true') {
paginationItemClasses.push('active');
paginationItem.setAttribute('aria-current', 'page');
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (node.getAttribute('data-disabled') == 'true') {
paginationItemClasses.push('disabled');
paginationItem.setAttribute('tabindex', '-1');
@@ -33,6 +45,8 @@ export default class Pagination extends HTMLElement {
paginationItem.className = paginationItemClasses.join(' ');
node.setAttribute('data-index', index);
paginationItem.appendChild(node);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let nodeClasses = node.className.split(' ');
nodeClasses.includes('no-wc')
? node.remove()
@@ -55,17 +69,33 @@ export default class Pagination extends HTMLElement {
connectedCallback() {
// Nav attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let label = this.getAttribute('data-label');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let id = this.getAttribute('data-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let size = this.getAttribute('data-size');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let paginationClasses = ['pagination'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
size != undefined && size != null
? paginationClasses.push(`pagination-${size}`)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? paginationClasses.push(extraClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
id != undefined && id != null ? (this.paginationContainer.id = id) : 0;
this.paginationContainer.setAttribute('aria-label', label);
this.pagination.className = paginationClasses.join(' ');
diff --git a/src/components/organisms/Card/Card.js b/src/components/organisms/Card/Card.js
index 4de4a8c4..5fe7a291 100644
--- a/src/components/organisms/Card/Card.js
+++ b/src/components/organisms/Card/Card.js
@@ -17,14 +17,26 @@ export default class Card extends HTMLElement {
shadow.appendChild(template.content.cloneNode(true));
this.card = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (e) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
switch (node.tagName) {
case 'COD-CARD-HEADER':
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-case-declarations, prefer-const
let tempHeader = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-case-declarations, prefer-const
let tempHeaderClasses = ['card-header'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
node.getAttribute('data-extra-classes') != undefined &&
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
node.getAttribute('data-extra-classes') != null
? tempHeaderClasses.push(node.getAttribute('data-extra-classes'))
: 0;
@@ -34,9 +46,17 @@ export default class Card extends HTMLElement {
break;
case 'COD-CARD-BODY':
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-case-declarations, prefer-const
let tempBody = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-case-declarations, prefer-const
let tempBodyClasses = ['card-body'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
node.getAttribute('data-extra-classes') != undefined &&
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
node.getAttribute('data-extra-classes') != null
? tempHeaderClasses.push(node.getAttribute('data-extra-classes'))
: 0;
@@ -46,9 +66,17 @@ export default class Card extends HTMLElement {
break;
case 'COD-CARD-FOOTER':
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-case-declarations, prefer-const
let tempFooter = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-case-declarations, prefer-const
let tempFooterClasses = ['card-footer'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
node.getAttribute('data-extra-classes') != undefined &&
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
node.getAttribute('data-extra-classes') != null
? tempFooterClasses.push(node.getAttribute('data-extra-classes'))
: 0;
@@ -58,9 +86,17 @@ export default class Card extends HTMLElement {
break;
case 'COD-CARD-OVERLAY':
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-case-declarations, prefer-const
let tempOverlay = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-case-declarations, prefer-const
let tempOverlayClasses = ['card-img-overlay'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
node.getAttribute('data-extra-classes') != undefined &&
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
node.getAttribute('data-extra-classes') != null
? tempOverlayClasses.push(node.getAttribute('data-extra-classes'))
: 0;
@@ -70,6 +106,8 @@ export default class Card extends HTMLElement {
break;
default:
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-case-declarations, prefer-const
let nodeClasses = node.className.split(' ');
nodeClasses.includes('no-wc')
? node.remove()
@@ -93,14 +131,28 @@ export default class Card extends HTMLElement {
connectedCallback() {
// Card attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let width = this.getAttribute('data-width');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let id = this.getAttribute('data-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let cardClasses = ['card'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? cardClasses.push(extraClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
width != undefined && width != null ? (this.card.style.width = width) : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
id != undefined && id != null ? (this.card.id = id) : 0;
this.card.className = cardClasses.join(' ');
if (!this.shadowRoot.querySelector('div')) {
diff --git a/src/components/organisms/Carousel/Carousel.js b/src/components/organisms/Carousel/Carousel.js
index 749bd55a..4d0c7a8c 100644
--- a/src/components/organisms/Carousel/Carousel.js
+++ b/src/components/organisms/Carousel/Carousel.js
@@ -26,7 +26,11 @@ export default class Carousel extends HTMLElement {
this.carouselInner.className = 'carousel-inner';
this.carouselPrev = document.createElement('button');
this.carouselNext = document.createElement('button');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('data-no-controls') != 'true') {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('data-external-controls') == 'true') {
this.carouselPrev.className = 'carousel-control-prev position-relative';
this.carouselNext.className = 'carousel-control-next position-relative';
@@ -40,10 +44,14 @@ export default class Carousel extends HTMLElement {
`#${this.getAttribute('data-id')}`,
);
this.carouselPrev.setAttribute('data-bs-slide', 'prev');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let prevIcon = document.createElement('span');
prevIcon.className = 'carousel-control-prev-icon';
prevIcon.setAttribute('aria-hidden', 'true');
this.carouselPrev.appendChild(prevIcon);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let prevText = document.createElement('span');
prevText.className = 'visually-hidden';
prevText.innerText = 'Previous';
@@ -54,10 +62,14 @@ export default class Carousel extends HTMLElement {
`#${this.getAttribute('data-id')}`,
);
this.carouselNext.setAttribute('data-bs-slide', 'next');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let nextIcon = document.createElement('span');
nextIcon.className = 'carousel-control-next-icon';
nextIcon.setAttribute('aria-hidden', 'true');
this.carouselNext.appendChild(nextIcon);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let nextText = document.createElement('span');
nextText.className = 'visually-hidden';
nextText.innerText = 'Next';
@@ -73,21 +85,35 @@ export default class Carousel extends HTMLElement {
this.carousel.appendChild(this.carouselInner);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (e) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
let tempElementsCount = 0;
tempElements.forEach((node, index) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (node.tagName == 'COD-CAROUSEL-ITEM') {
tempElementsCount += 1;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempItem = document.createElement('div');
tempItem.setAttribute('data-index', index);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (node.getAttribute('data-active') == 'true') {
tempItem.className = 'carousel-item active';
this.setAttribute('data-active-item', index);
} else {
tempItem.className = 'carousel-item';
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
node.getAttribute('data-interval') != undefined &&
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
node.getAttribute('data-interval') != null
? tempItem.setAttribute(
'data-bs-interval',
@@ -96,7 +122,11 @@ export default class Carousel extends HTMLElement {
: 0;
tempItem.appendChild(node);
this.carouselInner.appendChild(tempItem);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('data-indicator') == 'true') {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempIndicator = document.createElement('button');
tempIndicator.type = 'button';
tempIndicator.setAttribute(
@@ -105,6 +135,8 @@ export default class Carousel extends HTMLElement {
);
tempIndicator.setAttribute('data-bs-slide-to', index);
tempIndicator.setAttribute('aria-label', `Slide ${index}`);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (node.getAttribute('data-active') == 'true') {
tempIndicator.className = 'active';
tempIndicator.setAttribute('aria-current', 'true');
@@ -117,6 +149,8 @@ export default class Carousel extends HTMLElement {
tempElementsCount
? this.setAttribute('data-total-items', tempElementsCount)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let nodeClasses = node.className.split(' ');
nodeClasses.includes('no-wc') ? node.remove() : 0;
});
@@ -135,13 +169,21 @@ export default class Carousel extends HTMLElement {
}
attributeChangedCallback(name, oldValue, newValue) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (oldValue != null) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let oldItem = this.carouselInner.querySelector(
`[data-index="${oldValue}"`,
);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let newItem = this.carouselInner.querySelector(
`[data-index="${newValue}"`,
);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('data-indicator') == 'true') {
this.carouselIndicators.querySelector(
`[data-bs-slide-to="${oldValue}"`,
@@ -150,6 +192,8 @@ export default class Carousel extends HTMLElement {
`[data-bs-slide-to="${newValue}"`,
).className = 'active';
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('data-direction') == 'next') {
oldItem.className = 'carousel-item active carousel-item-start';
newItem.className =
@@ -168,26 +212,54 @@ export default class Carousel extends HTMLElement {
connectedCallback() {
// Modal attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let id = this.getAttribute('data-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let crossfade = this.getAttribute('data-crossfade');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let autoplay = this.getAttribute('data-autoplay');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let noTouch = this.getAttribute('data-no-touch');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let externalControls = this.getAttribute('data-external-controls');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let carouselClasses = ['carousel slide'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? carouselClasses.push(extraClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
crossfade == 'true' ? carouselClasses.push('carousel-fade') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
externalControls == 'true' ? carouselClasses.push('d-flex') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
noTouch == 'false'
? this.carousel.setAttribute('data-bs-touch', 'false')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (autoplay != undefined && autoplay != null) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
autoplay == 'true'
? this.carousel.setAttribute('data-bs-ride', autoplay)
: this.carousel.setAttribute('data-bs-ride', 'carousel');
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
id != undefined && id != null ? (this.carousel.id = id) : 0;
this.carousel.className = carouselClasses.join(' ');
if (!this.shadowRoot.querySelector('div')) {
@@ -199,9 +271,17 @@ export default class Carousel extends HTMLElement {
this.removeEventListener('click', this._onClick.bind(this));
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
_onClick(e) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let activeItem = this.getRootNode().host.getAttribute('data-active-item');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const, no-unused-vars
let totalItems = this.getRootNode().host.getAttribute('data-total-items');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('data-bs-slide') == undefined) {
if (this.getAttribute('data-bs-slide-to') > activeItem) {
this.getRootNode().host.setAttribute('data-direction', 'prev');
@@ -217,8 +297,14 @@ export default class Carousel extends HTMLElement {
);
}
} else {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let activeItem = this.getRootNode().host.getAttribute('data-active-item');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let totalItems = this.getRootNode().host.getAttribute('data-total-items');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('data-bs-slide') == 'prev') {
this.getRootNode().host.setAttribute('data-direction', 'prev');
parseInt(activeItem) - 1 >= 0
diff --git a/src/components/organisms/Form/Form.js b/src/components/organisms/Form/Form.js
index a9e4b8d7..1bef6b98 100644
--- a/src/components/organisms/Form/Form.js
+++ b/src/components/organisms/Form/Form.js
@@ -17,7 +17,11 @@ export default class Form extends HTMLElement {
const shadow = this.attachShadow({ mode: 'open' });
shadow.appendChild(template.content.cloneNode(true));
this.form = document.createElement('form');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
if (tempElements.length) {
tempElements.forEach((node) => {
@@ -39,11 +43,19 @@ export default class Form extends HTMLElement {
this.shadowRoot.appendChild(variableStyles);
this.shadowRoot.appendChild(formStyles);
// form attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let id = this.getAttribute('data-id');
let customValidation = this.getAttribute('data-custom-validate');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backgroundColor = this.getAttribute('data-background-color');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
this.form.id = id;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (customValidation == 'true') {
this.form.novalidate = true;
customValidation = 'needs-validation';
diff --git a/src/components/organisms/Geocoder/Geocoder.js b/src/components/organisms/Geocoder/Geocoder.js
index 5bc99832..e2877fa7 100644
--- a/src/components/organisms/Geocoder/Geocoder.js
+++ b/src/components/organisms/Geocoder/Geocoder.js
@@ -23,13 +23,25 @@ export default class Geocoder extends HTMLElement {
shadow.appendChild(this.styles);
const geocoderWraper = document.createElement('article');
geocoderWraper.id = 'geocoder';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let form = document.createElement('form');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let label = document.createElement('label');
label.style.fontFamily = 'Montserrat, sans-serif';
label.style.fontWeight = 'bold';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let input = document.createElement('input');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const, no-unused-vars
let suggestions = document.createElement('ul');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let list = document.createElement('datalist');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let icon = document.createElement('i');
form.addEventListener('submit', (ev) => {
this.submit(ev, this);
@@ -40,11 +52,16 @@ export default class Geocoder extends HTMLElement {
label.innerText = 'Property Address:';
try {
if (app[0].getAttribute('data-geocoder-label')) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (app[0].getAttribute('data-geocoder-label') != '') {
label.innerText = app[0].getAttribute('data-geocoder-label');
}
}
- } catch (error) {}
+ } catch (error) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-empty
+ }
label.setAttribute('for', 'geocoder-input');
input.type = 'text';
input.setAttribute('list', 'addresses-list');
@@ -72,11 +89,15 @@ export default class Geocoder extends HTMLElement {
tempAddr = tempAddr[0];
tempAddr = tempAddr.split(' ');
let newTempAddr = '';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let size = tempAddr.length;
tempAddr.forEach(function (item, index) {
newTempAddr += item;
index < size && index + 1 !== size ? (newTempAddr += '+') : 0;
});
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let url = `https://opengis.detroitmi.gov/opengis/rest/services/BaseUnits/BaseUnitGeocoder/GeocodeServer/findAddressCandidates?Address=&Address2=&Address3=&Neighborhood=&City=&Subregion=&Region=&Postal=&PostalExt=&CountryCode=&SingleLine=${newTempAddr}&outFields=*&maxLocations=&matchOutOfRange=true&langCode=&locationType=&sourceCountry=&category=&location=&distance=&searchExtent=&outSR=&magicKey=&f=json`;
try {
@@ -86,6 +107,8 @@ export default class Geocoder extends HTMLElement {
// console.log(data);
if (type === 'suggestions') {
data.candidates.forEach((item) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let sugg = document.createElement('option');
if (item.attributes.parcel_id === '') {
sugg.value = item.address;
@@ -102,6 +125,8 @@ export default class Geocoder extends HTMLElement {
});
} else {
if (data.candidates.length) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let url = `https://services2.arcgis.com/qvkbeam7Wirps6zC/arcgis/rest/services/City_of_Detroit_Boundary/FeatureServer/0/query?where=&objectIds=&time=&geometry=${data.candidates[0].location.x}%2C+${data.candidates[0].location.y}&geometryType=esriGeometryPoint&inSR=4326&spatialRel=esriSpatialRelIntersects&resultType=none&distance=0.0&units=esriSRUnit_Meter&returnGeodetic=false&outFields=4326&returnGeometry=true&returnCentroid=false&multipatchOption=xyFootprint&maxAllowableOffset=&geometryPrecision=&outSR=&datumTransformation=&applyVCSProjection=false&returnIdsOnly=false&returnUniqueIdsOnly=false&returnCountOnly=false&returnExtentOnly=false&returnDistinctValues=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&having=&resultOffset=&resultRecordCount=&returnZ=false&returnM=false&returnExceededLimitFeatures=true&quantizationParameters=&sqlFormat=none&f=geojson&token=`;
try {
fetch(url)
@@ -119,6 +144,8 @@ export default class Geocoder extends HTMLElement {
}
}
});
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
parcel == null
? (location = data.candidates[0].location)
: (location = null);
@@ -192,6 +219,8 @@ export default class Geocoder extends HTMLElement {
inputChange(ev, geocoder) {
switch (ev.key) {
case 'Enter':
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
ev.target.value != '' && ev.target.value != undefined
? geocoder.supplementGeocoder(ev.target.value, geocoder, 'submit')
: 0;
@@ -210,6 +239,8 @@ export default class Geocoder extends HTMLElement {
break;
case undefined:
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
ev.target.value != '' && ev.target.value != undefined
? geocoder.supplementGeocoder(ev.target.value, geocoder, 'submit')
: 0;
@@ -236,7 +267,11 @@ export default class Geocoder extends HTMLElement {
)
.then((resp) => resp.json()) // Transform the data into json
.then(function (data) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let cleanAddress = address.split(' RECOMMENDED')[0];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let params = [
{
attributes: {
@@ -249,10 +284,14 @@ export default class Geocoder extends HTMLElement {
},
},
];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (location != null) {
params[0].geometry.x = location.x;
params[0].geometry.y = location.y;
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let request = new Request(
`https://services2.arcgis.com/qvkbeam7Wirps6zC/ArcGIS/rest/services/addressvalidator/FeatureServer/0/addFeatures?token=${
data.access_token
@@ -265,6 +304,8 @@ export default class Geocoder extends HTMLElement {
cache: 'default',
},
);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
fetch(request).then((res) => {
// console.log(res);
});
diff --git a/src/components/organisms/Map/Map.js b/src/components/organisms/Map/Map.js
index bc1468a2..ce44a2af 100644
--- a/src/components/organisms/Map/Map.js
+++ b/src/components/organisms/Map/Map.js
@@ -32,6 +32,8 @@ export default class Map extends HTMLElement {
mapContainer.id = 'map';
mapWrapper.appendChild(mapContainer);
const closeMapBtn = document.createElement('cod-button');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
closeMapBtn.addEventListener('click', (ev) => {
app[0].setAttribute('data-app-state', 'results');
});
@@ -55,6 +57,8 @@ export default class Map extends HTMLElement {
app[0].setAttribute('data-map-state', 'init');
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
attributeChangedCallback(name, oldValue, newValue) {
const app = document.getElementsByTagName('my-home-info');
const parcel = JSON.parse(app[0].getAttribute('data-parcel-id'));
@@ -64,6 +68,8 @@ export default class Map extends HTMLElement {
this.map.addControl(new maplibregl.NavigationControl());
this.map.on('style.load', () => {
this.map.resize();
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
const marker = new maplibregl.Marker()
.setLngLat(coord)
.addTo(this.map);
@@ -115,6 +121,8 @@ export default class Map extends HTMLElement {
});
});
// Creating this temp variable for workaround with dealing with "this" encapsulation
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-case-declarations
const tempMap = this;
this.map.on('click', 'data-points', function (e) {
const app = document.getElementsByTagName('my-home-info');
diff --git a/src/components/organisms/Modal/Modal.js b/src/components/organisms/Modal/Modal.js
index 005e941c..fa3068ed 100644
--- a/src/components/organisms/Modal/Modal.js
+++ b/src/components/organisms/Modal/Modal.js
@@ -28,14 +28,22 @@ export default class Modal extends HTMLElement {
this.modalDialog.appendChild(this.modalContent);
this.modal.appendChild(this.modalDialog);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (e) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
switch (node.tagName) {
case 'COD-MODAL-HEADER':
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-show') == 'true'
? node.setAttribute('data-show', true)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-button-dark') == 'true'
? node.setAttribute('data-button-dark', true)
: 0;
@@ -72,12 +80,22 @@ export default class Modal extends HTMLElement {
}
attributeChangedCallback(name, oldValue, newValue) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempClasses = this.modal.className.split(' ');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let popValue = tempClasses.pop();
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
popValue != 'show' ? tempClasses.push(popValue) : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (newValue == 'true') {
tempClasses.push('show');
this.modal.style.display = 'block';
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('data-static') != 'true') {
this.modal.addEventListener('click', this._onClick);
}
@@ -92,40 +110,76 @@ export default class Modal extends HTMLElement {
connectedCallback() {
// Modal attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let bStatic = this.getAttribute('data-static');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let id = this.getAttribute('data-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let show = this.getAttribute('data-show');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let verticalCentered = this.getAttribute('data-vertical-centered');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let size = this.getAttribute('data-size');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let fullScreen = this.getAttribute('data-full-screen');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let modalClasses = ['modal fade'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let modalDialogClasses = ['modal-dialog'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let modalContentClasses = ['modal-content'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? modalClasses.push(extraClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
size != undefined && size != null
? modalDialogClasses.push(`modal-${size}`)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
verticalCentered == 'true'
? modalDialogClasses.push('modal-dialog-centered')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (fullScreen != undefined && fullScreen != null) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
fullScreen == 'always'
? modalDialogClasses.push('modal-fullscreen')
: modalDialogClasses.push(`modal-fullscreen-${fullScreen}-down`);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (bStatic == 'true') {
this.modal.setAttribute('data-bs-backdrop', 'static');
this.modal.setAttribute('data-bs-keyboard', 'false');
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (show == 'true') {
this.modalClasses.push('show');
this.modal.setAttribute('aria-modal', `true`);
} else {
this.modal.setAttribute('aria-modal', `false`);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
id != undefined && id != null ? (this.modal.id = id) : 0;
this.modal.setAttribute('tabindex', -1);
this.modal.className = modalClasses.join(' ');
@@ -140,6 +194,8 @@ export default class Modal extends HTMLElement {
this.removeEventListener('click', this._onClick.bind(this));
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
_onClick(e) {
this.getRootNode().host.setAttribute('data-show', 'false');
}
diff --git a/src/components/organisms/Navbar/Navbar.js b/src/components/organisms/Navbar/Navbar.js
index 491fd872..6ca57cf8 100644
--- a/src/components/organisms/Navbar/Navbar.js
+++ b/src/components/organisms/Navbar/Navbar.js
@@ -25,17 +25,27 @@ export default class Navbar extends HTMLElement {
this.navbarBrand = document.createElement('div');
this.navbarCollapse = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (e) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
switch (node.tagName) {
case 'COD-NAVBAR-TOGGLE':
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-target-toggle') == 'offcanvas'
? node.setAttribute('data-target-toggle', 'offcanvas')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-show') == 'true'
? node.setAttribute('data-show', true)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-button-dark') == 'true'
? node.setAttribute('data-button-dark', true)
: 0;
@@ -58,6 +68,8 @@ export default class Navbar extends HTMLElement {
break;
default:
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-case-declarations, prefer-const
let nodeClasses = node.className.split(' ');
nodeClasses.includes('no-wc') ? node.remove() : 0;
break;
@@ -84,9 +96,17 @@ export default class Navbar extends HTMLElement {
.setAttribute('data-show', newValue);
this.navbarToggle.setAttribute('aria-expanded', newValue);
if (this.navbarCollapse.querySelector('cod-navbar-collapse')) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempClasses = this.navbarCollapse.className.split(' ');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let popValue = tempClasses.pop();
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
popValue != 'show' ? tempClasses.push(popValue) : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (newValue == 'true') {
tempClasses.push('show');
}
@@ -96,41 +116,81 @@ export default class Navbar extends HTMLElement {
connectedCallback() {
// Navbar attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let expand = this.getAttribute('data-expand');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let id = this.getAttribute('data-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let show = this.getAttribute('data-show');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let placement = this.getAttribute('data-position');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let containerClasses = this.getAttribute('data-container-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let collapseClasses = this.getAttribute('data-collapse-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let navbarClasses = ['navbar'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let navbarContainerClasses = [''];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let navbarCollapseClasses = ['collapse navbar-collapse'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let navbarBrandClasses = ['navbar-brand'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let navbarToogleClasses = ['navbar-toggler'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
containerClasses != undefined && containerClasses != null
? navbarContainerClasses.push(containerClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? navbarClasses.push(extraClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
collapseClasses != undefined && collapseClasses != null
? navbarCollapseClasses.push(collapseClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
placement != undefined && placement != null
? navbarClasses.push(placement)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (expand != undefined && expand != null) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
expand == 'always'
? navbarClasses.push('navbar-expand')
: navbarClasses.push(`navbar-expand-${expand}`);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (show == 'true') {
this.navbarCollapseClasses.push('show');
this.navbarToggle.setAttribute('aria-expanded', `true`);
} else {
this.navbarToggle.setAttribute('aria-expanded', `false`);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (id != undefined && id != null) {
this.navbar.id = id;
this.navbarCollapse.id = `${id}-collapse`;
diff --git a/src/components/organisms/Offcanvas/Offcanvas.js b/src/components/organisms/Offcanvas/Offcanvas.js
index 4ed56c09..15e8c2ab 100644
--- a/src/components/organisms/Offcanvas/Offcanvas.js
+++ b/src/components/organisms/Offcanvas/Offcanvas.js
@@ -21,18 +21,30 @@ export default class Offcanvas extends HTMLElement {
shadow.appendChild(template.content.cloneNode(true));
this.offcanvas = document.createElement('div');
this.offcanvasBackdrop = document.createElement('div');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (ev) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-show') == 'true'
? node.setAttribute('data-show', true)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (node.tagName == 'COD-OFFCANVAS-HEADER') {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-button-dark') == 'true'
? node.setAttribute('data-button-dark', true)
: 0;
node.setAttribute('data-parent-id', this.getAttribute('data-id'));
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let nodeClasses = node.className.split(' ');
nodeClasses.includes('no-wc')
? node.remove()
@@ -53,12 +65,24 @@ export default class Offcanvas extends HTMLElement {
}
attributeChangedCallback(name, oldValue, newValue) {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempClasses = this.offcanvas.className.split(' ');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let popValue = tempClasses.pop();
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
popValue != 'show' ? tempClasses.push(popValue) : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (newValue == 'true') {
tempClasses.push('show');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('data-backdrop') != 'false') {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (this.getAttribute('data-static') != 'true') {
this.offcanvasBackdrop.addEventListener('click', this._onClick);
}
@@ -74,35 +98,71 @@ export default class Offcanvas extends HTMLElement {
connectedCallback() {
// Offcanvas attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let show = this.getAttribute('data-show');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let placement = this.getAttribute('data-placement');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let id = this.getAttribute('data-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backdrop = this.getAttribute('data-backdrop');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backdropExtraClasses = this.getAttribute('data-backdrop-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let scroll = this.getAttribute('data-scroll');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let bStatic = this.getAttribute('data-static');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let offcanvasClasses = ['offcanvas'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let backdropClasses = ['offcanvas-backdrop fade show'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
show == 'true' ? offcanvasClasses.push('show') : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
backdrop == 'false'
? this.offcanvas.setAttribute('data-bs-backdrop', false)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
scroll == 'true' ? this.offcanvas.setAttribute('data-bs-scroll', true) : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
bStatic == 'true'
? this.offcanvas.setAttribute('data-bs-backdrop', 'static')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
backdropExtraClasses != undefined && backdropExtraClasses != null
? backdropClasses.push(backdropExtraClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? offcanvasClasses.push(extraClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (placement != undefined && placement != null) {
offcanvasClasses.push(`offcanvas-${placement}`);
} else {
offcanvasClasses.push('offcanvas-start');
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (id != undefined && id != null) {
this.offcanvas.id = id;
this.offcanvas.setAttribute('aria-labelledby', `${id}-label`);
@@ -119,6 +179,8 @@ export default class Offcanvas extends HTMLElement {
this.removeEventListener('click', this._onClick.bind(this));
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
_onClick(e) {
this.getRootNode().host.setAttribute('data-show', 'false');
}
diff --git a/src/components/organisms/Table/Table.js b/src/components/organisms/Table/Table.js
index e1e00807..bb10c481 100644
--- a/src/components/organisms/Table/Table.js
+++ b/src/components/organisms/Table/Table.js
@@ -20,17 +20,27 @@ export default class Table extends HTMLElement {
this.table.role = 'table';
this.tableContainer.appendChild(this.table);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-unused-vars
shadow.addEventListener('slotchange', (e) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tempElements = Array.from(this.children);
tempElements.forEach((node) => {
switch (node.tagName) {
case 'COD-TABLE-HEADER':
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-striped-col') == 'true'
? node.setAttribute('data-striped-col', 'true')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-vertical-align') == 'true'
? node.setAttribute('data-vertical-align', 'true')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-legacy-responsive') == 'true'
? node.setAttribute('data-legacy-responsive', 'true')
: 0;
@@ -38,18 +48,28 @@ export default class Table extends HTMLElement {
break;
case 'COD-TABLE-BODY':
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-hover') == 'true'
? node.setAttribute('data-hover', 'true')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-striped-row') == 'true'
? node.setAttribute('data-striped-row', 'true')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-striped-col') == 'true'
? node.setAttribute('data-striped-col', 'true')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-vertical-align') == 'true'
? node.setAttribute('data-vertical-align', 'true')
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
this.getAttribute('data-legacy-responsive') == 'true'
? node.setAttribute('data-legacy-responsive', 'true')
: 0;
@@ -57,6 +77,8 @@ export default class Table extends HTMLElement {
break;
default:
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-case-declarations, prefer-const
let nodeClasses = node.className.split(' ');
nodeClasses.includes('no-wc') ? node.remove() : 0;
break;
@@ -78,14 +100,28 @@ export default class Table extends HTMLElement {
connectedCallback() {
// Table attributes
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let legacyResponsive = this.getAttribute('data-legacy-responsive');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let id = this.getAttribute('data-id');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let extraClasses = this.getAttribute('data-extra-classes');
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line prefer-const
let tableClasses = ['table'];
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
extraClasses != undefined && extraClasses != null
? tableClasses.push(extraClasses)
: 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
id != undefined && id != null ? (this.table.id = id) : 0;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
legacyResponsive == 'true'
? (this.tableContainer.className = 'table-responsive')
: 0;
diff --git a/src/scss/themed-bootstrap.scss b/src/scss/themed-bootstrap.scss
index 60cc6f13..7d92f08c 100644
--- a/src/scss/themed-bootstrap.scss
+++ b/src/scss/themed-bootstrap.scss
@@ -1,4 +1,4 @@
-// This SASS file customizes base bootstrap to meet the needs of the UXDS. The compiled output
+// This SASS file customizes base bootstrap to meet the needs of the UXDS. The compiled output
// should be stored in src/shared/themed-bootstrap.css.
// The next comment line will be included in the compiled output and is only intended for readers
diff --git a/src/stories/badge.stories.js b/src/stories/badge.stories.js
index cceb4c46..64a70e3f 100644
--- a/src/stories/badge.stories.js
+++ b/src/stories/badge.stories.js
@@ -30,12 +30,18 @@ const Template = (args) => {
const badge = document.createElement('cod-badge');
badge.setAttribute('data-tag', args.tag);
badge.setAttribute('data-background-color', args.backgroundColor);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.url != null) {
badge.setAttribute('data-url', args.url);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.hiddenText != null) {
badge.setAttribute('data-hidden-text', args.hiddenText);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.pill != null) {
badge.setAttribute('data-pill', args.pill);
}
diff --git a/src/stories/button.stories.js b/src/stories/button.stories.js
index 059d16c4..76ffd371 100644
--- a/src/stories/button.stories.js
+++ b/src/stories/button.stories.js
@@ -1,4 +1,8 @@
+// TODO: See CityOfDetroit/detroitmi#1099
+// eslint-disable-next-line no-unused-vars
import { userEvent, within } from '@storybook/testing-library';
+// TODO: See CityOfDetroit/detroitmi#1099
+// eslint-disable-next-line no-unused-vars
import { expect } from '@storybook/jest';
import '../components/atoms/Button/cod-button';
import '../components/atoms/Icon/cod-icon';
diff --git a/src/stories/container.stories.js b/src/stories/container.stories.js
index 641f880b..56feb5fd 100644
--- a/src/stories/container.stories.js
+++ b/src/stories/container.stories.js
@@ -33,6 +33,8 @@ export default {
const Template = (args) => {
const container = document.createElement('cod-container');
container.setAttribute('data-type', args.type);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.elements != null) {
container.innerHTML = args.elements;
}
diff --git a/src/stories/formcheck.stories.js b/src/stories/formcheck.stories.js
index 8a40cad3..0761daf7 100644
--- a/src/stories/formcheck.stories.js
+++ b/src/stories/formcheck.stories.js
@@ -61,24 +61,38 @@ const Template = (args) => {
formCheck.setAttribute('data-type', args.type);
formCheck.setAttribute('data-btn-color', args.btnColor);
formCheck.setAttribute('data-checked', args.checked);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.extraClasses != null) {
formCheck.setAttribute('data-extra-classes', args.extraClasses);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.backgroundColor != null) {
formCheck.setAttribute('data-background-color', args.backgroundColor);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.label != null) {
formCheck.setAttribute('data-label', args.label);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.nolabel != null) {
formCheck.setAttribute('data-nolabel', args.nolabel);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.mode != null) {
formCheck.setAttribute('data-mode', args.mode);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.disabled != null) {
formCheck.setAttribute('data-disabled', args.disabled);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.required != null) {
formCheck.setAttribute('data-required', args.required);
}
@@ -221,6 +235,8 @@ WithInteraction.args = {
name: 'interaction-checkbox',
value: 'interaction-checkbox',
clicked: (e) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-console
console.log(e);
},
};
diff --git a/src/stories/formcontrol.stories.js b/src/stories/formcontrol.stories.js
index 24d42787..8da9795a 100644
--- a/src/stories/formcontrol.stories.js
+++ b/src/stories/formcontrol.stories.js
@@ -47,12 +47,18 @@ export default {
const Template = (args) => {
const fcontrol = document.createElement('cod-form-control');
fcontrol.setAttribute('data-tag', args.tag);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.size != null) {
fcontrol.setAttribute('data-size', args.size);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.rows != null) {
fcontrol.setAttribute('data-rows', args.rows);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.value != null) {
fcontrol.setAttribute('data-value', args.value);
}
@@ -115,6 +121,8 @@ WithInteraction.args = {
placeholder: 'enter text here',
tag: 'input',
keydown: (e) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-console
console.log(e);
},
};
diff --git a/src/stories/formselect.stories.js b/src/stories/formselect.stories.js
index 8418c3b2..a354e9e1 100644
--- a/src/stories/formselect.stories.js
+++ b/src/stories/formselect.stories.js
@@ -29,27 +29,41 @@ const Template = (args) => {
`;
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.id != null) {
select.setAttribute('data-id', args.id);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.value != null) {
select.setAttribute('data-value', args.value);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.size != null) {
select.setAttribute('data-size', args.size);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.multiple != null) {
select.setAttribute('data-multiple', args.multiple);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.displayMultiple != null) {
select.setAttribute('data-display-multiple', args.displayMultiple);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.extraClasses != null) {
select.setAttribute('data-extra-classes', args.extraClasses);
}
select.setAttribute('data-aria-label', args.ariaLabel);
select.setAttribute('data-disabled', args.disabled);
select.setAttribute('data-required', args.required);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.selectChange != null) {
select.addEventListener('click', (e) => {
args.selectChange(e);
@@ -85,6 +99,8 @@ WithInteraction.args = {
id: 'interaction-input',
ariaLabel: 'Interaction select example',
selectChange: (e) => {
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line no-console
console.log(e.target.shadowRoot.querySelector('select').value);
},
};
diff --git a/src/stories/range.stories.js b/src/stories/range.stories.js
index 7523716f..d5d9cb5b 100644
--- a/src/stories/range.stories.js
+++ b/src/stories/range.stories.js
@@ -15,12 +15,18 @@ const Template = (args) => {
const range = document.createElement('cod-range');
range.setAttribute('data-id', args.id);
range.setAttribute('data-disable', args.disable);
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.min != null) {
range.setAttribute('data-min', args.min);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.max != null) {
range.setAttribute('data-max', args.max);
}
+ // TODO: See CityOfDetroit/detroitmi#1099
+ // eslint-disable-next-line eqeqeq
if (args.step != null) {
range.setAttribute('data-step', args.step);
}
diff --git a/yarn.lock b/yarn.lock
index f3144eee..01923145 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5,6 +5,13 @@ __metadata:
version: 6
cacheKey: 8
+"@aashutoshrathi/word-wrap@npm:^1.2.3":
+ version: 1.2.6
+ resolution: "@aashutoshrathi/word-wrap@npm:1.2.6"
+ checksum: ada901b9e7c680d190f1d012c84217ce0063d8f5c5a7725bb91ec3c5ed99bb7572680eb2d2938a531ccbaec39a95422fcd8a6b4a13110c7d98dd75402f66a0cd
+ languageName: node
+ linkType: hard
+
"@adobe/css-tools@npm:^4.0.1":
version: 4.2.0
resolution: "@adobe/css-tools@npm:4.2.0"
@@ -3761,6 +3768,48 @@ __metadata:
languageName: node
linkType: hard
+"@eslint-community/eslint-utils@npm:^4.1.2, @eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0":
+ version: 4.4.0
+ resolution: "@eslint-community/eslint-utils@npm:4.4.0"
+ dependencies:
+ eslint-visitor-keys: ^3.3.0
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+ checksum: cdfe3ae42b4f572cbfb46d20edafe6f36fc5fb52bf2d90875c58aefe226892b9677fef60820e2832caf864a326fe4fc225714c46e8389ccca04d5f9288aabd22
+ languageName: node
+ linkType: hard
+
+"@eslint-community/regexpp@npm:^4.6.0, @eslint-community/regexpp@npm:^4.6.1":
+ version: 4.9.0
+ resolution: "@eslint-community/regexpp@npm:4.9.0"
+ checksum: 82411f0643ab9bfd271bf12c8c75031266b13595d9371585ee3b0d680d918d4abf37c7e94d0da22e45817c9bbc59b79dfcbd672050dfb00af88fb89c80fd420f
+ languageName: node
+ linkType: hard
+
+"@eslint/eslintrc@npm:^2.1.2":
+ version: 2.1.2
+ resolution: "@eslint/eslintrc@npm:2.1.2"
+ dependencies:
+ ajv: ^6.12.4
+ debug: ^4.3.2
+ espree: ^9.6.0
+ globals: ^13.19.0
+ ignore: ^5.2.0
+ import-fresh: ^3.2.1
+ js-yaml: ^4.1.0
+ minimatch: ^3.1.2
+ strip-json-comments: ^3.1.1
+ checksum: bc742a1e3b361f06fedb4afb6bf32cbd27171292ef7924f61c62f2aed73048367bcc7ac68f98c06d4245cd3fabc43270f844e3c1699936d4734b3ac5398814a7
+ languageName: node
+ linkType: hard
+
+"@eslint/js@npm:8.50.0":
+ version: 8.50.0
+ resolution: "@eslint/js@npm:8.50.0"
+ checksum: 302478f2acaaa7228729ec6a04f56641590185e1d8cd1c836a6db8a6b8009f80a57349341be9fbb9aa1721a7a569d1be3ffc598a33300d22816f11832095386c
+ languageName: node
+ linkType: hard
+
"@fal-works/esbuild-plugin-global-externals@npm:^2.1.2":
version: 2.1.2
resolution: "@fal-works/esbuild-plugin-global-externals@npm:2.1.2"
@@ -3822,6 +3871,31 @@ __metadata:
languageName: node
linkType: hard
+"@humanwhocodes/config-array@npm:^0.11.11":
+ version: 0.11.11
+ resolution: "@humanwhocodes/config-array@npm:0.11.11"
+ dependencies:
+ "@humanwhocodes/object-schema": ^1.2.1
+ debug: ^4.1.1
+ minimatch: ^3.0.5
+ checksum: db84507375ab77b8ffdd24f498a5b49ad6b64391d30dd2ac56885501d03964d29637e05b1ed5aefa09d57ac667e28028bc22d2da872bfcd619652fbdb5f4ca19
+ languageName: node
+ linkType: hard
+
+"@humanwhocodes/module-importer@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "@humanwhocodes/module-importer@npm:1.0.1"
+ checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61
+ languageName: node
+ linkType: hard
+
+"@humanwhocodes/object-schema@npm:^1.2.1":
+ version: 1.2.1
+ resolution: "@humanwhocodes/object-schema@npm:1.2.1"
+ checksum: a824a1ec31591231e4bad5787641f59e9633827d0a2eaae131a288d33c9ef0290bd16fda8da6f7c0fcb014147865d12118df10db57f27f41e20da92369fcb3f1
+ languageName: node
+ linkType: hard
+
"@isaacs/cliui@npm:^8.0.2":
version: 8.0.2
resolution: "@isaacs/cliui@npm:8.0.2"
@@ -4594,7 +4668,7 @@ __metadata:
languageName: node
linkType: hard
-"@nodelib/fs.walk@npm:^1.2.3":
+"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8":
version: 1.2.8
resolution: "@nodelib/fs.walk@npm:1.2.8"
dependencies:
@@ -7304,6 +7378,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/json5@npm:^0.0.29":
+ version: 0.0.29
+ resolution: "@types/json5@npm:0.0.29"
+ checksum: e60b153664572116dfea673c5bda7778dbff150498f44f998e34b5886d8afc47f16799280e4b6e241c0472aef1bc36add771c569c68fc5125fc2ae519a3eb9ac
+ languageName: node
+ linkType: hard
+
"@types/lodash@npm:^4.14.167":
version: 4.14.194
resolution: "@types/lodash@npm:4.14.194"
@@ -7911,6 +7992,15 @@ __metadata:
languageName: node
linkType: hard
+"acorn-jsx@npm:^5.3.2":
+ version: 5.3.2
+ resolution: "acorn-jsx@npm:5.3.2"
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950
+ languageName: node
+ linkType: hard
+
"acorn-walk@npm:^7.1.1":
version: 7.2.0
resolution: "acorn-walk@npm:7.2.0"
@@ -8285,6 +8375,19 @@ __metadata:
languageName: node
linkType: hard
+"array-includes@npm:^3.1.6":
+ version: 3.1.7
+ resolution: "array-includes@npm:3.1.7"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ get-intrinsic: ^1.2.1
+ is-string: ^1.0.7
+ checksum: 06f9e4598fac12a919f7c59a3f04f010ea07f0b7f0585465ed12ef528a60e45f374e79d1bddbb34cdd4338357d00023ddbd0ac18b0be36964f5e726e8965d7fc
+ languageName: node
+ linkType: hard
+
"array-union@npm:^1.0.1":
version: 1.0.2
resolution: "array-union@npm:1.0.2"
@@ -8308,6 +8411,43 @@ __metadata:
languageName: node
linkType: hard
+"array.prototype.findlastindex@npm:^1.2.2":
+ version: 1.2.3
+ resolution: "array.prototype.findlastindex@npm:1.2.3"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ es-shim-unscopables: ^1.0.0
+ get-intrinsic: ^1.2.1
+ checksum: 31f35d7b370c84db56484618132041a9af401b338f51899c2e78ef7690fbba5909ee7ca3c59a7192085b328cc0c68c6fd1f6d1553db01a689a589ae510f3966e
+ languageName: node
+ linkType: hard
+
+"array.prototype.flat@npm:^1.3.1":
+ version: 1.3.2
+ resolution: "array.prototype.flat@npm:1.3.2"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ es-shim-unscopables: ^1.0.0
+ checksum: 5d6b4bf102065fb3f43764bfff6feb3295d372ce89591e6005df3d0ce388527a9f03c909af6f2a973969a4d178ab232ffc9236654149173e0e187ec3a1a6b87b
+ languageName: node
+ linkType: hard
+
+"array.prototype.flatmap@npm:^1.3.1":
+ version: 1.3.2
+ resolution: "array.prototype.flatmap@npm:1.3.2"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ es-shim-unscopables: ^1.0.0
+ checksum: ce09fe21dc0bcd4f30271f8144083aa8c13d4639074d6c8dc82054b847c7fc9a0c97f857491f4da19d4003e507172a78f4bcd12903098adac8b9cd374f734be3
+ languageName: node
+ linkType: hard
+
"array.prototype.reduce@npm:^1.0.5":
version: 1.0.5
resolution: "array.prototype.reduce@npm:1.0.5"
@@ -8321,6 +8461,21 @@ __metadata:
languageName: node
linkType: hard
+"arraybuffer.prototype.slice@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "arraybuffer.prototype.slice@npm:1.0.2"
+ dependencies:
+ array-buffer-byte-length: ^1.0.0
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ get-intrinsic: ^1.2.1
+ is-array-buffer: ^3.0.2
+ is-shared-array-buffer: ^1.0.2
+ checksum: c200faf437786f5b2c80d4564ff5481c886a16dee642ef02abdc7306c7edd523d1f01d1dd12b769c7eb42ac9bc53874510db19a92a2c035c0f6696172aafa5d3
+ languageName: node
+ linkType: hard
+
"asn1@npm:~0.2.3":
version: 0.2.6
resolution: "asn1@npm:0.2.6"
@@ -9038,6 +9193,15 @@ __metadata:
languageName: node
linkType: hard
+"builtins@npm:^5.0.1":
+ version: 5.0.1
+ resolution: "builtins@npm:5.0.1"
+ dependencies:
+ semver: ^7.0.0
+ checksum: 66d204657fe36522822a95b288943ad11b58f5eaede235b11d8c4edaa28ce4800087d44a2681524c340494aadb120a0068011acabe99d30e8f11a7d826d83515
+ languageName: node
+ linkType: hard
+
"bytes@npm:3.0.0":
version: 3.0.0
resolution: "bytes@npm:3.0.0"
@@ -9471,6 +9635,11 @@ __metadata:
css-loader: ^6.5.0
css-minimizer-webpack-plugin: ^3.4.1
cypress: ^9.5.0
+ eslint: ^8.0.1
+ eslint-config-prettier: ^9.0.0
+ eslint-plugin-import: ^2.25.2
+ eslint-plugin-n: "^15.0.0 || ^16.0.0 "
+ eslint-plugin-promise: ^6.0.0
file-loader: ^6.2.0
html-webpack-plugin: ^5.5.0
jest: 27
@@ -9908,7 +10077,7 @@ __metadata:
languageName: node
linkType: hard
-"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.3":
+"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3":
version: 7.0.3
resolution: "cross-spawn@npm:7.0.3"
dependencies:
@@ -10342,7 +10511,7 @@ __metadata:
languageName: node
linkType: hard
-"debug@npm:^3.1.0":
+"debug@npm:^3.1.0, debug@npm:^3.2.7":
version: 3.2.7
resolution: "debug@npm:3.2.7"
dependencies:
@@ -10413,7 +10582,7 @@ __metadata:
languageName: node
linkType: hard
-"deep-is@npm:~0.1.3":
+"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3":
version: 0.1.4
resolution: "deep-is@npm:0.1.4"
checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804
@@ -10464,6 +10633,17 @@ __metadata:
languageName: node
linkType: hard
+"define-data-property@npm:^1.0.1":
+ version: 1.1.0
+ resolution: "define-data-property@npm:1.1.0"
+ dependencies:
+ get-intrinsic: ^1.2.1
+ gopd: ^1.0.1
+ has-property-descriptors: ^1.0.0
+ checksum: 7ad4ee84cca8ad427a4831f5693526804b62ce9dfd4efac77214e95a4382aed930072251d4075dc8dc9fc949a353ed51f19f5285a84a788ba9216cc51472a093
+ languageName: node
+ linkType: hard
+
"define-lazy-prop@npm:^2.0.0":
version: 2.0.0
resolution: "define-lazy-prop@npm:2.0.0"
@@ -10681,6 +10861,15 @@ __metadata:
languageName: node
linkType: hard
+"doctrine@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "doctrine@npm:2.1.0"
+ dependencies:
+ esutils: ^2.0.2
+ checksum: a45e277f7feaed309fe658ace1ff286c6e2002ac515af0aaf37145b8baa96e49899638c7cd47dccf84c3d32abfc113246625b3ac8f552d1046072adee13b0dc8
+ languageName: node
+ linkType: hard
+
"doctrine@npm:^3.0.0":
version: 3.0.0
resolution: "doctrine@npm:3.0.0"
@@ -11101,6 +11290,53 @@ __metadata:
languageName: node
linkType: hard
+"es-abstract@npm:^1.22.1":
+ version: 1.22.2
+ resolution: "es-abstract@npm:1.22.2"
+ dependencies:
+ array-buffer-byte-length: ^1.0.0
+ arraybuffer.prototype.slice: ^1.0.2
+ available-typed-arrays: ^1.0.5
+ call-bind: ^1.0.2
+ es-set-tostringtag: ^2.0.1
+ es-to-primitive: ^1.2.1
+ function.prototype.name: ^1.1.6
+ get-intrinsic: ^1.2.1
+ get-symbol-description: ^1.0.0
+ globalthis: ^1.0.3
+ gopd: ^1.0.1
+ has: ^1.0.3
+ has-property-descriptors: ^1.0.0
+ has-proto: ^1.0.1
+ has-symbols: ^1.0.3
+ internal-slot: ^1.0.5
+ is-array-buffer: ^3.0.2
+ is-callable: ^1.2.7
+ is-negative-zero: ^2.0.2
+ is-regex: ^1.1.4
+ is-shared-array-buffer: ^1.0.2
+ is-string: ^1.0.7
+ is-typed-array: ^1.1.12
+ is-weakref: ^1.0.2
+ object-inspect: ^1.12.3
+ object-keys: ^1.1.1
+ object.assign: ^4.1.4
+ regexp.prototype.flags: ^1.5.1
+ safe-array-concat: ^1.0.1
+ safe-regex-test: ^1.0.0
+ string.prototype.trim: ^1.2.8
+ string.prototype.trimend: ^1.0.7
+ string.prototype.trimstart: ^1.0.7
+ typed-array-buffer: ^1.0.0
+ typed-array-byte-length: ^1.0.0
+ typed-array-byte-offset: ^1.0.0
+ typed-array-length: ^1.0.4
+ unbox-primitive: ^1.0.2
+ which-typed-array: ^1.1.11
+ checksum: cc70e592d360d7d729859013dee7a610c6b27ed8630df0547c16b0d16d9fe6505a70ee14d1af08d970fdd132b3f88c9ca7815ce72c9011608abf8ab0e55fc515
+ languageName: node
+ linkType: hard
+
"es-array-method-boxes-properly@npm:^1.0.0":
version: 1.0.0
resolution: "es-array-method-boxes-properly@npm:1.0.0"
@@ -11143,6 +11379,15 @@ __metadata:
languageName: node
linkType: hard
+"es-shim-unscopables@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "es-shim-unscopables@npm:1.0.0"
+ dependencies:
+ has: ^1.0.3
+ checksum: 83e95cadbb6ee44d3644dfad60dcad7929edbc42c85e66c3e99aefd68a3a5c5665f2686885cddb47dfeabfd77bd5ea5a7060f2092a955a729bbd8834f0d86fa1
+ languageName: node
+ linkType: hard
+
"es-to-primitive@npm:^1.2.1":
version: 1.2.1
resolution: "es-to-primitive@npm:1.2.1"
@@ -11368,6 +11613,13 @@ __metadata:
languageName: node
linkType: hard
+"escape-string-regexp@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "escape-string-regexp@npm:4.0.0"
+ checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5
+ languageName: node
+ linkType: hard
+
"escape-string-regexp@npm:^5.0.0":
version: 5.0.0
resolution: "escape-string-regexp@npm:5.0.0"
@@ -11394,6 +11646,107 @@ __metadata:
languageName: node
linkType: hard
+"eslint-config-prettier@npm:^9.0.0":
+ version: 9.0.0
+ resolution: "eslint-config-prettier@npm:9.0.0"
+ peerDependencies:
+ eslint: ">=7.0.0"
+ bin:
+ eslint-config-prettier: bin/cli.js
+ checksum: 362e991b6cb343f79362bada2d97c202e5303e6865888918a7445c555fb75e4c078b01278e90be98aa98ae22f8597d8e93d48314bec6824f540f7efcab3ce451
+ languageName: node
+ linkType: hard
+
+"eslint-import-resolver-node@npm:^0.3.7":
+ version: 0.3.9
+ resolution: "eslint-import-resolver-node@npm:0.3.9"
+ dependencies:
+ debug: ^3.2.7
+ is-core-module: ^2.13.0
+ resolve: ^1.22.4
+ checksum: 439b91271236b452d478d0522a44482e8c8540bf9df9bd744062ebb89ab45727a3acd03366a6ba2bdbcde8f9f718bab7fe8db64688aca75acf37e04eafd25e22
+ languageName: node
+ linkType: hard
+
+"eslint-module-utils@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "eslint-module-utils@npm:2.8.0"
+ dependencies:
+ debug: ^3.2.7
+ peerDependenciesMeta:
+ eslint:
+ optional: true
+ checksum: 74c6dfea7641ebcfe174be61168541a11a14aa8d72e515f5f09af55cd0d0862686104b0524aa4b8e0ce66418a44aa38a94d2588743db5fd07a6b49ffd16921d2
+ languageName: node
+ linkType: hard
+
+"eslint-plugin-es-x@npm:^7.1.0":
+ version: 7.2.0
+ resolution: "eslint-plugin-es-x@npm:7.2.0"
+ dependencies:
+ "@eslint-community/eslint-utils": ^4.1.2
+ "@eslint-community/regexpp": ^4.6.0
+ peerDependencies:
+ eslint: ">=8"
+ checksum: eece76ef6bcfce463659338b487e516e962ddf3ae34a8a65240ebd318fc991cabfe3573b1c3af5226474193b9c83f030c7900a8e5ffdbe731a3928ca8f2799c9
+ languageName: node
+ linkType: hard
+
+"eslint-plugin-import@npm:^2.25.2":
+ version: 2.28.1
+ resolution: "eslint-plugin-import@npm:2.28.1"
+ dependencies:
+ array-includes: ^3.1.6
+ array.prototype.findlastindex: ^1.2.2
+ array.prototype.flat: ^1.3.1
+ array.prototype.flatmap: ^1.3.1
+ debug: ^3.2.7
+ doctrine: ^2.1.0
+ eslint-import-resolver-node: ^0.3.7
+ eslint-module-utils: ^2.8.0
+ has: ^1.0.3
+ is-core-module: ^2.13.0
+ is-glob: ^4.0.3
+ minimatch: ^3.1.2
+ object.fromentries: ^2.0.6
+ object.groupby: ^1.0.0
+ object.values: ^1.1.6
+ semver: ^6.3.1
+ tsconfig-paths: ^3.14.2
+ peerDependencies:
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
+ checksum: e8ae6dd8f06d8adf685f9c1cfd46ac9e053e344a05c4090767e83b63a85c8421ada389807a39e73c643b9bff156715c122e89778169110ed68d6428e12607edf
+ languageName: node
+ linkType: hard
+
+"eslint-plugin-n@npm:^15.0.0 || ^16.0.0 ":
+ version: 16.1.0
+ resolution: "eslint-plugin-n@npm:16.1.0"
+ dependencies:
+ "@eslint-community/eslint-utils": ^4.4.0
+ builtins: ^5.0.1
+ eslint-plugin-es-x: ^7.1.0
+ get-tsconfig: ^4.7.0
+ ignore: ^5.2.4
+ is-core-module: ^2.12.1
+ minimatch: ^3.1.2
+ resolve: ^1.22.2
+ semver: ^7.5.3
+ peerDependencies:
+ eslint: ">=7.0.0"
+ checksum: 6b70bf8eec74395a440ca585745eb19aba143ee00513f76893c44944675630bd898227d1b4e0ebef66fd0c84cdcf223d6613b2beee0727b5c572cd705fb50d3a
+ languageName: node
+ linkType: hard
+
+"eslint-plugin-promise@npm:^6.0.0":
+ version: 6.1.1
+ resolution: "eslint-plugin-promise@npm:6.1.1"
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ checksum: 46b9a4f79dae5539987922afc27cc17cbccdecf4f0ba19c0ccbf911b0e31853e9f39d9959eefb9637461b52772afa1a482f1f87ff16c1ba38bdb6fcf21897e9a
+ languageName: node
+ linkType: hard
+
"eslint-scope@npm:5.1.1":
version: 5.1.1
resolution: "eslint-scope@npm:5.1.1"
@@ -11404,6 +11757,81 @@ __metadata:
languageName: node
linkType: hard
+"eslint-scope@npm:^7.2.2":
+ version: 7.2.2
+ resolution: "eslint-scope@npm:7.2.2"
+ dependencies:
+ esrecurse: ^4.3.0
+ estraverse: ^5.2.0
+ checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e
+ languageName: node
+ linkType: hard
+
+"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3":
+ version: 3.4.3
+ resolution: "eslint-visitor-keys@npm:3.4.3"
+ checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60
+ languageName: node
+ linkType: hard
+
+"eslint@npm:^8.0.1":
+ version: 8.50.0
+ resolution: "eslint@npm:8.50.0"
+ dependencies:
+ "@eslint-community/eslint-utils": ^4.2.0
+ "@eslint-community/regexpp": ^4.6.1
+ "@eslint/eslintrc": ^2.1.2
+ "@eslint/js": 8.50.0
+ "@humanwhocodes/config-array": ^0.11.11
+ "@humanwhocodes/module-importer": ^1.0.1
+ "@nodelib/fs.walk": ^1.2.8
+ ajv: ^6.12.4
+ chalk: ^4.0.0
+ cross-spawn: ^7.0.2
+ debug: ^4.3.2
+ doctrine: ^3.0.0
+ escape-string-regexp: ^4.0.0
+ eslint-scope: ^7.2.2
+ eslint-visitor-keys: ^3.4.3
+ espree: ^9.6.1
+ esquery: ^1.4.2
+ esutils: ^2.0.2
+ fast-deep-equal: ^3.1.3
+ file-entry-cache: ^6.0.1
+ find-up: ^5.0.0
+ glob-parent: ^6.0.2
+ globals: ^13.19.0
+ graphemer: ^1.4.0
+ ignore: ^5.2.0
+ imurmurhash: ^0.1.4
+ is-glob: ^4.0.0
+ is-path-inside: ^3.0.3
+ js-yaml: ^4.1.0
+ json-stable-stringify-without-jsonify: ^1.0.1
+ levn: ^0.4.1
+ lodash.merge: ^4.6.2
+ minimatch: ^3.1.2
+ natural-compare: ^1.4.0
+ optionator: ^0.9.3
+ strip-ansi: ^6.0.1
+ text-table: ^0.2.0
+ bin:
+ eslint: bin/eslint.js
+ checksum: 9ebfe5615dc84700000d218e32ddfdcfc227ca600f65f18e5541ec34f8902a00356a9a8804d9468fd6c8637a5ef6a3897291dad91ba6579d5b32ffeae5e31768
+ languageName: node
+ linkType: hard
+
+"espree@npm:^9.6.0, espree@npm:^9.6.1":
+ version: 9.6.1
+ resolution: "espree@npm:9.6.1"
+ dependencies:
+ acorn: ^8.9.0
+ acorn-jsx: ^5.3.2
+ eslint-visitor-keys: ^3.4.1
+ checksum: eb8c149c7a2a77b3f33a5af80c10875c3abd65450f60b8af6db1bfcfa8f101e21c1e56a561c6dc13b848e18148d43469e7cd208506238554fb5395a9ea5a1ab9
+ languageName: node
+ linkType: hard
+
"esprima@npm:^4.0.0, esprima@npm:^4.0.1, esprima@npm:~4.0.0":
version: 4.0.1
resolution: "esprima@npm:4.0.1"
@@ -11414,6 +11842,15 @@ __metadata:
languageName: node
linkType: hard
+"esquery@npm:^1.4.2":
+ version: 1.5.0
+ resolution: "esquery@npm:1.5.0"
+ dependencies:
+ estraverse: ^5.1.0
+ checksum: aefb0d2596c230118656cd4ec7532d447333a410a48834d80ea648b1e7b5c9bc9ed8b5e33a89cb04e487b60d622f44cf5713bf4abed7c97343edefdc84a35900
+ languageName: node
+ linkType: hard
+
"esrecurse@npm:^4.3.0":
version: 4.3.0
resolution: "esrecurse@npm:4.3.0"
@@ -11430,7 +11867,7 @@ __metadata:
languageName: node
linkType: hard
-"estraverse@npm:^5.2.0":
+"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0":
version: 5.3.0
resolution: "estraverse@npm:5.3.0"
checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b
@@ -11723,7 +12160,7 @@ __metadata:
languageName: node
linkType: hard
-"fast-levenshtein@npm:~2.0.6":
+"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6":
version: 2.0.6
resolution: "fast-levenshtein@npm:2.0.6"
checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c
@@ -11798,6 +12235,15 @@ __metadata:
languageName: node
linkType: hard
+"file-entry-cache@npm:^6.0.1":
+ version: 6.0.1
+ resolution: "file-entry-cache@npm:6.0.1"
+ dependencies:
+ flat-cache: ^3.0.4
+ checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74
+ languageName: node
+ linkType: hard
+
"file-loader@npm:^6.2.0":
version: 6.2.0
resolution: "file-loader@npm:6.2.0"
@@ -11964,6 +12410,24 @@ __metadata:
languageName: node
linkType: hard
+"flat-cache@npm:^3.0.4":
+ version: 3.1.0
+ resolution: "flat-cache@npm:3.1.0"
+ dependencies:
+ flatted: ^3.2.7
+ keyv: ^4.5.3
+ rimraf: ^3.0.2
+ checksum: 99312601d5b90f44aef403f17f056dc09be7e437703740b166cdc9386d99e681f74e6b6e8bd7d010bda66904ea643c9527276b1b80308a2119741d94108a4d8f
+ languageName: node
+ linkType: hard
+
+"flatted@npm:^3.2.7":
+ version: 3.2.9
+ resolution: "flatted@npm:3.2.9"
+ checksum: f14167fbe26a9d20f6fca8d998e8f1f41df72c8e81f9f2c9d61ed2bea058248f5e1cbd05e7f88c0e5087a6a0b822a1e5e2b446e879f3cfbe0b07ba2d7f80b026
+ languageName: node
+ linkType: hard
+
"flow-parser@npm:0.*":
version: 0.207.0
resolution: "flow-parser@npm:0.207.0"
@@ -12247,6 +12711,18 @@ __metadata:
languageName: node
linkType: hard
+"function.prototype.name@npm:^1.1.6":
+ version: 1.1.6
+ resolution: "function.prototype.name@npm:1.1.6"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ functions-have-names: ^1.2.3
+ checksum: 7a3f9bd98adab09a07f6e1f03da03d3f7c26abbdeaeee15223f6c04a9fb5674792bdf5e689dac19b97ac71de6aad2027ba3048a9b883aa1b3173eed6ab07f479
+ languageName: node
+ linkType: hard
+
"functions-have-names@npm:^1.2.2, functions-have-names@npm:^1.2.3":
version: 1.2.3
resolution: "functions-have-names@npm:1.2.3"
@@ -12319,6 +12795,18 @@ __metadata:
languageName: node
linkType: hard
+"get-intrinsic@npm:^1.2.1":
+ version: 1.2.1
+ resolution: "get-intrinsic@npm:1.2.1"
+ dependencies:
+ function-bind: ^1.1.1
+ has: ^1.0.3
+ has-proto: ^1.0.1
+ has-symbols: ^1.0.3
+ checksum: 5b61d88552c24b0cf6fa2d1b3bc5459d7306f699de060d76442cce49a4721f52b8c560a33ab392cf5575b7810277d54ded9d4d39a1ea61855619ebc005aa7e5f
+ languageName: node
+ linkType: hard
+
"get-monorepo-packages@npm:^1.1.0":
version: 1.2.0
resolution: "get-monorepo-packages@npm:1.2.0"
@@ -12383,6 +12871,15 @@ __metadata:
languageName: node
linkType: hard
+"get-tsconfig@npm:^4.7.0":
+ version: 4.7.2
+ resolution: "get-tsconfig@npm:4.7.2"
+ dependencies:
+ resolve-pkg-maps: ^1.0.0
+ checksum: 172358903250eff0103943f816e8a4e51d29b8e5449058bdf7266714a908a48239f6884308bd3a6ff28b09f692b9533dbebfd183ab63e4e14f073cda91f1bca9
+ languageName: node
+ linkType: hard
+
"getos@npm:^3.2.1":
version: 3.2.1
resolution: "getos@npm:3.2.1"
@@ -12470,6 +12967,15 @@ __metadata:
languageName: node
linkType: hard
+"glob-parent@npm:^6.0.2":
+ version: 6.0.2
+ resolution: "glob-parent@npm:6.0.2"
+ dependencies:
+ is-glob: ^4.0.3
+ checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8
+ languageName: node
+ linkType: hard
+
"glob-promise@npm:^6.0.2":
version: 6.0.2
resolution: "glob-promise@npm:6.0.2"
@@ -12579,6 +13085,15 @@ __metadata:
languageName: node
linkType: hard
+"globals@npm:^13.19.0":
+ version: 13.22.0
+ resolution: "globals@npm:13.22.0"
+ dependencies:
+ type-fest: ^0.20.2
+ checksum: 64af5a09565341432770444085f7aa98b54331c3b69732e0de411003921fa2dd060222ae7b50bec0b98f29c4d00b4f49bf434049ba9f7c36ca4ee1773f60458c
+ languageName: node
+ linkType: hard
+
"globalthis@npm:^1.0.3":
version: 1.0.3
resolution: "globalthis@npm:1.0.3"
@@ -12632,6 +13147,13 @@ __metadata:
languageName: node
linkType: hard
+"graphemer@npm:^1.4.0":
+ version: 1.4.0
+ resolution: "graphemer@npm:1.4.0"
+ checksum: bab8f0be9b568857c7bec9fda95a89f87b783546d02951c40c33f84d05bb7da3fd10f863a9beb901463669b6583173a8c8cc6d6b306ea2b9b9d5d3d943c3a673
+ languageName: node
+ linkType: hard
+
"gunzip-maybe@npm:^1.4.2":
version: 1.4.2
resolution: "gunzip-maybe@npm:1.4.2"
@@ -13062,7 +13584,7 @@ __metadata:
languageName: node
linkType: hard
-"ignore@npm:^5.2.0":
+"ignore@npm:^5.2.0, ignore@npm:^5.2.4":
version: 5.2.4
resolution: "ignore@npm:5.2.4"
checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef
@@ -13329,6 +13851,15 @@ __metadata:
languageName: node
linkType: hard
+"is-core-module@npm:^2.12.1, is-core-module@npm:^2.13.0":
+ version: 2.13.0
+ resolution: "is-core-module@npm:2.13.0"
+ dependencies:
+ has: ^1.0.3
+ checksum: 053ab101fb390bfeb2333360fd131387bed54e476b26860dc7f5a700bbf34a0ec4454f7c8c4d43e8a0030957e4b3db6e16d35e1890ea6fb654c833095e040355
+ languageName: node
+ linkType: hard
+
"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5":
version: 1.0.5
resolution: "is-date-object@npm:1.0.5"
@@ -13384,7 +13915,7 @@ __metadata:
languageName: node
linkType: hard
-"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1":
+"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1":
version: 4.0.3
resolution: "is-glob@npm:4.0.3"
dependencies:
@@ -13471,7 +14002,7 @@ __metadata:
languageName: node
linkType: hard
-"is-path-inside@npm:^3.0.2":
+"is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3":
version: 3.0.3
resolution: "is-path-inside@npm:3.0.3"
checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9
@@ -13588,6 +14119,15 @@ __metadata:
languageName: node
linkType: hard
+"is-typed-array@npm:^1.1.12":
+ version: 1.1.12
+ resolution: "is-typed-array@npm:1.1.12"
+ dependencies:
+ which-typed-array: ^1.1.11
+ checksum: 4c89c4a3be07186caddadf92197b17fda663a9d259ea0d44a85f171558270d36059d1c386d34a12cba22dfade5aba497ce22778e866adc9406098c8fc4771796
+ languageName: node
+ linkType: hard
+
"is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0":
version: 1.0.0
resolution: "is-typedarray@npm:1.0.0"
@@ -15057,6 +15597,13 @@ __metadata:
languageName: node
linkType: hard
+"json-buffer@npm:3.0.1":
+ version: 3.0.1
+ resolution: "json-buffer@npm:3.0.1"
+ checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581
+ languageName: node
+ linkType: hard
+
"json-parse-better-errors@npm:^1.0.1":
version: 1.0.2
resolution: "json-parse-better-errors@npm:1.0.2"
@@ -15092,6 +15639,13 @@ __metadata:
languageName: node
linkType: hard
+"json-stable-stringify-without-jsonify@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "json-stable-stringify-without-jsonify@npm:1.0.1"
+ checksum: cff44156ddce9c67c44386ad5cddf91925fe06b1d217f2da9c4910d01f358c6e3989c4d5a02683c7a5667f9727ff05831f7aa8ae66c8ff691c556f0884d49215
+ languageName: node
+ linkType: hard
+
"json-stringify-safe@npm:~5.0.1":
version: 5.0.1
resolution: "json-stringify-safe@npm:5.0.1"
@@ -15099,6 +15653,17 @@ __metadata:
languageName: node
linkType: hard
+"json5@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "json5@npm:1.0.2"
+ dependencies:
+ minimist: ^1.2.0
+ bin:
+ json5: lib/cli.js
+ checksum: 866458a8c58a95a49bef3adba929c625e82532bcff1fe93f01d29cb02cac7c3fe1f4b79951b7792c2da9de0b32871a8401a6e3c5b36778ad852bf5b8a61165d7
+ languageName: node
+ linkType: hard
+
"json5@npm:^2.1.2, json5@npm:^2.2.2":
version: 2.2.3
resolution: "json5@npm:2.2.3"
@@ -15147,6 +15712,15 @@ __metadata:
languageName: node
linkType: hard
+"keyv@npm:^4.5.3":
+ version: 4.5.3
+ resolution: "keyv@npm:4.5.3"
+ dependencies:
+ json-buffer: 3.0.1
+ checksum: 3ffb4d5b72b6b4b4af443bbb75ca2526b23c750fccb5ac4c267c6116888b4b65681015c2833cb20d26cf3e6e32dac6b988c77f7f022e1a571b7d90f1442257da
+ languageName: node
+ linkType: hard
+
"kind-of@npm:^6.0.2":
version: 6.0.3
resolution: "kind-of@npm:6.0.3"
@@ -15210,6 +15784,16 @@ __metadata:
languageName: node
linkType: hard
+"levn@npm:^0.4.1":
+ version: 0.4.1
+ resolution: "levn@npm:0.4.1"
+ dependencies:
+ prelude-ls: ^1.2.1
+ type-check: ~0.4.0
+ checksum: 12c5021c859bd0f5248561bf139121f0358285ec545ebf48bb3d346820d5c61a4309535c7f387ed7d84361cf821e124ce346c6b7cef8ee09a67c1473b46d0fc4
+ languageName: node
+ linkType: hard
+
"levn@npm:~0.3.0":
version: 0.3.0
resolution: "levn@npm:0.3.0"
@@ -15405,6 +15989,13 @@ __metadata:
languageName: node
linkType: hard
+"lodash.merge@npm:^4.6.2":
+ version: 4.6.2
+ resolution: "lodash.merge@npm:4.6.2"
+ checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005
+ languageName: node
+ linkType: hard
+
"lodash.once@npm:^4.1.1":
version: 4.1.1
resolution: "lodash.once@npm:4.1.1"
@@ -16286,7 +16877,7 @@ __metadata:
languageName: node
linkType: hard
-"minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
+"minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
version: 3.1.2
resolution: "minimatch@npm:3.1.2"
dependencies:
@@ -16844,6 +17435,17 @@ __metadata:
languageName: node
linkType: hard
+"object.fromentries@npm:^2.0.6":
+ version: 2.0.7
+ resolution: "object.fromentries@npm:2.0.7"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ checksum: 7341ce246e248b39a431b87a9ddd331ff52a454deb79afebc95609f94b1f8238966cf21f52188f2a353f0fdf83294f32f1ebf1f7826aae915ebad21fd0678065
+ languageName: node
+ linkType: hard
+
"object.getownpropertydescriptors@npm:^2.1.0":
version: 2.1.5
resolution: "object.getownpropertydescriptors@npm:2.1.5"
@@ -16856,6 +17458,18 @@ __metadata:
languageName: node
linkType: hard
+"object.groupby@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "object.groupby@npm:1.0.1"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ get-intrinsic: ^1.2.1
+ checksum: d7959d6eaaba358b1608066fc67ac97f23ce6f573dc8fc661f68c52be165266fcb02937076aedb0e42722fdda0bdc0bbf74778196ac04868178888e9fd3b78b5
+ languageName: node
+ linkType: hard
+
"object.values@npm:^1.1.0":
version: 1.1.6
resolution: "object.values@npm:1.1.6"
@@ -16867,6 +17481,17 @@ __metadata:
languageName: node
linkType: hard
+"object.values@npm:^1.1.6":
+ version: 1.1.7
+ resolution: "object.values@npm:1.1.7"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ checksum: f3e4ae4f21eb1cc7cebb6ce036d4c67b36e1c750428d7b7623c56a0db90edced63d08af8a316d81dfb7c41a3a5fa81b05b7cc9426e98d7da986b1682460f0777
+ languageName: node
+ linkType: hard
+
"objectorarray@npm:^1.0.5":
version: 1.0.5
resolution: "objectorarray@npm:1.0.5"
@@ -16940,6 +17565,20 @@ __metadata:
languageName: node
linkType: hard
+"optionator@npm:^0.9.3":
+ version: 0.9.3
+ resolution: "optionator@npm:0.9.3"
+ dependencies:
+ "@aashutoshrathi/word-wrap": ^1.2.3
+ deep-is: ^0.1.3
+ fast-levenshtein: ^2.0.6
+ levn: ^0.4.1
+ prelude-ls: ^1.2.1
+ type-check: ^0.4.0
+ checksum: 09281999441f2fe9c33a5eeab76700795365a061563d66b098923eb719251a42bdbe432790d35064d0816ead9296dbeb1ad51a733edf4167c96bd5d0882e428a
+ languageName: node
+ linkType: hard
+
"ora@npm:^5.4.1":
version: 5.4.1
resolution: "ora@npm:5.4.1"
@@ -18228,6 +18867,13 @@ __metadata:
languageName: node
linkType: hard
+"prelude-ls@npm:^1.2.1":
+ version: 1.2.1
+ resolution: "prelude-ls@npm:1.2.1"
+ checksum: cd192ec0d0a8e4c6da3bb80e4f62afe336df3f76271ac6deb0e6a36187133b6073a19e9727a1ff108cd8b9982e4768850d413baa71214dd80c7979617dca827a
+ languageName: node
+ linkType: hard
+
"prelude-ls@npm:~1.1.2":
version: 1.1.2
resolution: "prelude-ls@npm:1.1.2"
@@ -18934,6 +19580,17 @@ __metadata:
languageName: node
linkType: hard
+"regexp.prototype.flags@npm:^1.5.1":
+ version: 1.5.1
+ resolution: "regexp.prototype.flags@npm:1.5.1"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ set-function-name: ^2.0.0
+ checksum: 869edff00288442f8d7fa4c9327f91d85f3b3acf8cbbef9ea7a220345cf23e9241b6def9263d2c1ebcf3a316b0aa52ad26a43a84aa02baca3381717b3e307f47
+ languageName: node
+ linkType: hard
+
"regexpu-core@npm:^5.3.1":
version: 5.3.2
resolution: "regexpu-core@npm:5.3.2"
@@ -19121,6 +19778,13 @@ __metadata:
languageName: node
linkType: hard
+"resolve-pkg-maps@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "resolve-pkg-maps@npm:1.0.0"
+ checksum: 1012afc566b3fdb190a6309cc37ef3b2dcc35dff5fa6683a9d00cd25c3247edfbc4691b91078c97adc82a29b77a2660c30d791d65dab4fc78bfc473f60289977
+ languageName: node
+ linkType: hard
+
"resolve-protobuf-schema@npm:^2.1.0":
version: 2.1.0
resolution: "resolve-protobuf-schema@npm:2.1.0"
@@ -19150,6 +19814,19 @@ __metadata:
languageName: node
linkType: hard
+"resolve@npm:^1.22.2, resolve@npm:^1.22.4":
+ version: 1.22.6
+ resolution: "resolve@npm:1.22.6"
+ dependencies:
+ is-core-module: ^2.13.0
+ path-parse: ^1.0.7
+ supports-preserve-symlinks-flag: ^1.0.0
+ bin:
+ resolve: bin/resolve
+ checksum: d13bf66d4e2ee30d291491f16f2fa44edd4e0cefb85d53249dd6f93e70b2b8c20ec62f01b18662e3cd40e50a7528f18c4087a99490048992a3bb954cf3201a5b
+ languageName: node
+ linkType: hard
+
"resolve@npm:~1.7.1":
version: 1.7.1
resolution: "resolve@npm:1.7.1"
@@ -19172,6 +19849,19 @@ __metadata:
languageName: node
linkType: hard
+"resolve@patch:resolve@^1.22.2#~builtin, resolve@patch:resolve@^1.22.4#~builtin":
+ version: 1.22.6
+ resolution: "resolve@patch:resolve@npm%3A1.22.6#~builtin::version=1.22.6&hash=c3c19d"
+ dependencies:
+ is-core-module: ^2.13.0
+ path-parse: ^1.0.7
+ supports-preserve-symlinks-flag: ^1.0.0
+ bin:
+ resolve: bin/resolve
+ checksum: 9d3b3c67aefd12cecbe5f10ca4d1f51ea190891096497c43f301b086883b426466918c3a64f1bbf1788fabb52b579d58809614006c5d0b49186702b3b8fb746a
+ languageName: node
+ linkType: hard
+
"resolve@patch:resolve@~1.7.1#~builtin":
version: 1.7.1
resolution: "resolve@patch:resolve@npm%3A1.7.1#~builtin::version=1.7.1&hash=3bafbf"
@@ -19288,6 +19978,18 @@ __metadata:
languageName: node
linkType: hard
+"safe-array-concat@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "safe-array-concat@npm:1.0.1"
+ dependencies:
+ call-bind: ^1.0.2
+ get-intrinsic: ^1.2.1
+ has-symbols: ^1.0.3
+ isarray: ^2.0.5
+ checksum: 001ecf1d8af398251cbfabaf30ed66e3855127fbceee178179524b24160b49d15442f94ed6c0db0b2e796da76bb05b73bf3cc241490ec9c2b741b41d33058581
+ languageName: node
+ linkType: hard
+
"safe-buffer@npm:5.1.1":
version: 5.1.1
resolution: "safe-buffer@npm:5.1.1"
@@ -19566,6 +20268,17 @@ __metadata:
languageName: node
linkType: hard
+"set-function-name@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "set-function-name@npm:2.0.1"
+ dependencies:
+ define-data-property: ^1.0.1
+ functions-have-names: ^1.2.3
+ has-property-descriptors: ^1.0.0
+ checksum: 4975d17d90c40168eee2c7c9c59d023429f0a1690a89d75656306481ece0c3c1fb1ebcc0150ea546d1913e35fbd037bace91372c69e543e51fc5d1f31a9fa126
+ languageName: node
+ linkType: hard
+
"setprototypeof@npm:1.1.0":
version: 1.1.0
resolution: "setprototypeof@npm:1.1.0"
@@ -20101,6 +20814,17 @@ __metadata:
languageName: node
linkType: hard
+"string.prototype.trim@npm:^1.2.8":
+ version: 1.2.8
+ resolution: "string.prototype.trim@npm:1.2.8"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ checksum: 49eb1a862a53aba73c3fb6c2a53f5463173cb1f4512374b623bcd6b43ad49dd559a06fb5789bdec771a40fc4d2a564411c0a75d35fb27e76bbe738c211ecff07
+ languageName: node
+ linkType: hard
+
"string.prototype.trimend@npm:^1.0.6":
version: 1.0.6
resolution: "string.prototype.trimend@npm:1.0.6"
@@ -20112,6 +20836,17 @@ __metadata:
languageName: node
linkType: hard
+"string.prototype.trimend@npm:^1.0.7":
+ version: 1.0.7
+ resolution: "string.prototype.trimend@npm:1.0.7"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ checksum: 2375516272fd1ba75992f4c4aa88a7b5f3c7a9ca308d963bcd5645adf689eba6f8a04ebab80c33e30ec0aefc6554181a3a8416015c38da0aa118e60ec896310c
+ languageName: node
+ linkType: hard
+
"string.prototype.trimstart@npm:^1.0.6":
version: 1.0.6
resolution: "string.prototype.trimstart@npm:1.0.6"
@@ -20123,6 +20858,17 @@ __metadata:
languageName: node
linkType: hard
+"string.prototype.trimstart@npm:^1.0.7":
+ version: 1.0.7
+ resolution: "string.prototype.trimstart@npm:1.0.7"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.2.0
+ es-abstract: ^1.22.1
+ checksum: 13d0c2cb0d5ff9e926fa0bec559158b062eed2b68cd5be777ffba782c96b2b492944e47057274e064549b94dd27cf81f48b27a31fee8af5b574cff253e7eb613
+ languageName: node
+ linkType: hard
+
"string_decoder@npm:^1.1.1":
version: 1.3.0
resolution: "string_decoder@npm:1.3.0"
@@ -20537,6 +21283,13 @@ __metadata:
languageName: node
linkType: hard
+"text-table@npm:^0.2.0":
+ version: 0.2.0
+ resolution: "text-table@npm:0.2.0"
+ checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a
+ languageName: node
+ linkType: hard
+
"throat@npm:^6.0.1":
version: 6.0.2
resolution: "throat@npm:6.0.2"
@@ -20762,6 +21515,18 @@ __metadata:
languageName: node
linkType: hard
+"tsconfig-paths@npm:^3.14.2":
+ version: 3.14.2
+ resolution: "tsconfig-paths@npm:3.14.2"
+ dependencies:
+ "@types/json5": ^0.0.29
+ json5: ^1.0.2
+ minimist: ^1.2.6
+ strip-bom: ^3.0.0
+ checksum: a6162eaa1aed680537f93621b82399c7856afd10ec299867b13a0675e981acac4e0ec00896860480efc59fc10fd0b16fdc928c0b885865b52be62cadac692447
+ languageName: node
+ linkType: hard
+
"tslib@npm:1.10.0":
version: 1.10.0
resolution: "tslib@npm:1.10.0"
@@ -20820,6 +21585,15 @@ __metadata:
languageName: node
linkType: hard
+"type-check@npm:^0.4.0, type-check@npm:~0.4.0":
+ version: 0.4.0
+ resolution: "type-check@npm:0.4.0"
+ dependencies:
+ prelude-ls: ^1.2.1
+ checksum: ec688ebfc9c45d0c30412e41ca9c0cdbd704580eb3a9ccf07b9b576094d7b86a012baebc95681999dd38f4f444afd28504cb3a89f2ef16b31d4ab61a0739025a
+ languageName: node
+ linkType: hard
+
"type-check@npm:~0.3.2":
version: 0.3.2
resolution: "type-check@npm:0.3.2"
@@ -20843,6 +21617,13 @@ __metadata:
languageName: node
linkType: hard
+"type-fest@npm:^0.20.2":
+ version: 0.20.2
+ resolution: "type-fest@npm:0.20.2"
+ checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73
+ languageName: node
+ linkType: hard
+
"type-fest@npm:^0.21.1, type-fest@npm:^0.21.3":
version: 0.21.3
resolution: "type-fest@npm:0.21.3"
@@ -20888,6 +21669,42 @@ __metadata:
languageName: node
linkType: hard
+"typed-array-buffer@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "typed-array-buffer@npm:1.0.0"
+ dependencies:
+ call-bind: ^1.0.2
+ get-intrinsic: ^1.2.1
+ is-typed-array: ^1.1.10
+ checksum: 3e0281c79b2a40cd97fe715db803884301993f4e8c18e8d79d75fd18f796e8cd203310fec8c7fdb5e6c09bedf0af4f6ab8b75eb3d3a85da69328f28a80456bd3
+ languageName: node
+ linkType: hard
+
+"typed-array-byte-length@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "typed-array-byte-length@npm:1.0.0"
+ dependencies:
+ call-bind: ^1.0.2
+ for-each: ^0.3.3
+ has-proto: ^1.0.1
+ is-typed-array: ^1.1.10
+ checksum: b03db16458322b263d87a702ff25388293f1356326c8a678d7515767ef563ef80e1e67ce648b821ec13178dd628eb2afdc19f97001ceae7a31acf674c849af94
+ languageName: node
+ linkType: hard
+
+"typed-array-byte-offset@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "typed-array-byte-offset@npm:1.0.0"
+ dependencies:
+ available-typed-arrays: ^1.0.5
+ call-bind: ^1.0.2
+ for-each: ^0.3.3
+ has-proto: ^1.0.1
+ is-typed-array: ^1.1.10
+ checksum: 04f6f02d0e9a948a95fbfe0d5a70b002191fae0b8fe0fe3130a9b2336f043daf7a3dda56a31333c35a067a97e13f539949ab261ca0f3692c41603a46a94e960b
+ languageName: node
+ linkType: hard
+
"typed-array-length@npm:^1.0.4":
version: 1.0.4
resolution: "typed-array-length@npm:1.0.4"
@@ -21878,6 +22695,19 @@ __metadata:
languageName: node
linkType: hard
+"which-typed-array@npm:^1.1.11":
+ version: 1.1.11
+ resolution: "which-typed-array@npm:1.1.11"
+ dependencies:
+ available-typed-arrays: ^1.0.5
+ call-bind: ^1.0.2
+ for-each: ^0.3.3
+ gopd: ^1.0.1
+ has-tostringtag: ^1.0.0
+ checksum: 711ffc8ef891ca6597b19539075ec3e08bb9b4c2ca1f78887e3c07a977ab91ac1421940505a197758fb5939aa9524976d0a5bbcac34d07ed6faa75cedbb17206
+ languageName: node
+ linkType: hard
+
"which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9":
version: 1.1.9
resolution: "which-typed-array@npm:1.1.9"