diff --git a/public-typescript/adminLotTypes.js b/public-typescript/adminLotTypes.js index 60e0f538..95f0a891 100644 --- a/public-typescript/adminLotTypes.js +++ b/public-typescript/adminLotTypes.js @@ -1,22 +1,26 @@ "use strict"; -/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */ +// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair +/* eslint-disable unicorn/prefer-module */ Object.defineProperty(exports, "__esModule", { value: true }); (() => { + var _a; const los = exports.los; const containerElement = document.querySelector('#container--lotTypes'); let lotTypes = exports.lotTypes; delete exports.lotTypes; const expandedLotTypes = new Set(); function toggleLotTypeFields(clickEvent) { + var _a; const toggleButtonElement = clickEvent.currentTarget; const lotTypeElement = toggleButtonElement.closest('.container--lotType'); - const lotTypeId = Number.parseInt(lotTypeElement.dataset.lotTypeId, 10); + const lotTypeId = Number.parseInt((_a = lotTypeElement.dataset.lotTypeId) !== null && _a !== void 0 ? _a : '', 10); if (expandedLotTypes.has(lotTypeId)) { expandedLotTypes.delete(lotTypeId); } else { expandedLotTypes.add(lotTypeId); } + // eslint-disable-next-line no-unsanitized/property toggleButtonElement.innerHTML = expandedLotTypes.has(lotTypeId) ? '' : ''; @@ -25,8 +29,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); panelBlockElement.classList.toggle('is-hidden'); } } - function lotTypeResponseHandler(responseJSON) { + function lotTypeResponseHandler(rawResponseJSON) { var _a; + const responseJSON = rawResponseJSON; if (responseJSON.success) { lotTypes = responseJSON.lotTypes; renderLotTypes(); @@ -40,9 +45,10 @@ Object.defineProperty(exports, "__esModule", { value: true }); } } function deleteLotType(clickEvent) { - const lotTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--lotType').dataset.lotTypeId, 10); + var _a; + const lotTypeId = Number.parseInt((_a = clickEvent.currentTarget.closest('.container--lotType').dataset.lotTypeId) !== null && _a !== void 0 ? _a : '', 10); function doDelete() { - cityssm.postJSON(los.urlPrefix + '/admin/doDeleteLotType', { + cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteLotType`, { lotTypeId }, lotTypeResponseHandler); } @@ -57,14 +63,15 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); } function openEditLotType(clickEvent) { - const lotTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--lotType').dataset.lotTypeId, 10); + var _a; + const lotTypeId = Number.parseInt((_a = clickEvent.currentTarget.closest('.container--lotType').dataset.lotTypeId) !== null && _a !== void 0 ? _a : '', 10); const lotType = lotTypes.find((currentLotType) => { return lotTypeId === currentLotType.lotTypeId; }); let editCloseModalFunction; function doEdit(submitEvent) { submitEvent.preventDefault(); - cityssm.postJSON(los.urlPrefix + '/admin/doUpdateLotType', submitEvent.currentTarget, (rawResponseJSON) => { + cityssm.postJSON(`${los.urlPrefix}/admin/doUpdateLotType`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON; lotTypeResponseHandler(responseJSON); if (responseJSON.success) { @@ -79,9 +86,10 @@ Object.defineProperty(exports, "__esModule", { value: true }); modalElement.querySelector('#lotTypeEdit--lotType').value = lotType.lotType; }, onshown(modalElement, closeModalFunction) { + var _a; editCloseModalFunction = closeModalFunction; modalElement.querySelector('#lotTypeEdit--lotType').focus(); - modalElement.querySelector('form').addEventListener('submit', doEdit); + (_a = modalElement.querySelector('form')) === null || _a === void 0 ? void 0 : _a.addEventListener('submit', doEdit); bulmaJS.toggleHtmlClipped(); }, onremoved() { @@ -90,11 +98,12 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); } function openAddLotTypeField(clickEvent) { - const lotTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--lotType').dataset.lotTypeId, 10); + var _a; + const lotTypeId = Number.parseInt((_a = clickEvent.currentTarget.closest('.container--lotType').dataset.lotTypeId) !== null && _a !== void 0 ? _a : '', 10); let addCloseModalFunction; function doAdd(submitEvent) { submitEvent.preventDefault(); - cityssm.postJSON(los.urlPrefix + '/admin/doAddLotTypeField', submitEvent.currentTarget, (rawResponseJSON) => { + cityssm.postJSON(`${los.urlPrefix}/admin/doAddLotTypeField`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON; expandedLotTypes.add(lotTypeId); lotTypeResponseHandler(responseJSON); @@ -113,9 +122,10 @@ Object.defineProperty(exports, "__esModule", { value: true }); } }, onshown(modalElement, closeModalFunction) { + var _a; addCloseModalFunction = closeModalFunction; modalElement.querySelector('#lotTypeFieldAdd--lotTypeField').focus(); - modalElement.querySelector('form').addEventListener('submit', doAdd); + (_a = modalElement.querySelector('form')) === null || _a === void 0 ? void 0 : _a.addEventListener('submit', doAdd); bulmaJS.toggleHtmlClipped(); }, onremoved() { @@ -136,10 +146,11 @@ Object.defineProperty(exports, "__esModule", { value: true }); }, lotTypeResponseHandler); } function openEditLotTypeField(lotTypeId, lotTypeFieldId) { + var _a; const lotType = lotTypes.find((currentLotType) => { return currentLotType.lotTypeId === lotTypeId; }); - const lotTypeField = lotType.lotTypeFields.find((currentLotTypeField) => { + const lotTypeField = ((_a = lotType.lotTypeFields) !== null && _a !== void 0 ? _a : []).find((currentLotTypeField) => { return currentLotTypeField.lotTypeFieldId === lotTypeFieldId; }); let minimumLengthElement; @@ -164,7 +175,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); } function doUpdate(submitEvent) { submitEvent.preventDefault(); - cityssm.postJSON(los.urlPrefix + '/admin/doUpdateLotTypeField', submitEvent.currentTarget, (rawResponseJSON) => { + cityssm.postJSON(`${los.urlPrefix}/admin/doUpdateLotTypeField`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON; lotTypeResponseHandler(responseJSON); if (responseJSON.success) { @@ -173,7 +184,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); } function doDelete() { - cityssm.postJSON(los.urlPrefix + '/admin/doDeleteLotTypeField', { + cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteLotTypeField`, { lotTypeFieldId }, (rawResponseJSON) => { const responseJSON = rawResponseJSON; @@ -196,32 +207,35 @@ Object.defineProperty(exports, "__esModule", { value: true }); } cityssm.openHtmlModal('adminLotTypes-editLotTypeField', { onshow(modalElement) { + var _a, _b, _c, _d, _e, _f, _g; los.populateAliases(modalElement); modalElement.querySelector('#lotTypeFieldEdit--lotTypeFieldId').value = lotTypeField.lotTypeFieldId.toString(); - modalElement.querySelector('#lotTypeFieldEdit--lotTypeField').value = lotTypeField.lotTypeField; + modalElement.querySelector('#lotTypeFieldEdit--lotTypeField').value = (_a = lotTypeField.lotTypeField) !== null && _a !== void 0 ? _a : ''; modalElement.querySelector('#lotTypeFieldEdit--isRequired').value = lotTypeField.isRequired ? '1' : '0'; minimumLengthElement = modalElement.querySelector('#lotTypeFieldEdit--minimumLength'); - minimumLengthElement.value = lotTypeField.minimumLength.toString(); + minimumLengthElement.value = + (_c = (_b = lotTypeField.minimumLength) === null || _b === void 0 ? void 0 : _b.toString()) !== null && _c !== void 0 ? _c : ''; maximumLengthElement = modalElement.querySelector('#lotTypeFieldEdit--maximumLength'); - maximumLengthElement.value = lotTypeField.maximumLength.toString(); + maximumLengthElement.value = + (_e = (_d = lotTypeField.maximumLength) === null || _d === void 0 ? void 0 : _d.toString()) !== null && _e !== void 0 ? _e : ''; patternElement = modalElement.querySelector('#lotTypeFieldEdit--pattern'); - patternElement.value = lotTypeField.pattern; + patternElement.value = (_f = lotTypeField.pattern) !== null && _f !== void 0 ? _f : ''; lotTypeFieldValuesElement = modalElement.querySelector('#lotTypeFieldEdit--lotTypeFieldValues'); - lotTypeFieldValuesElement.value = lotTypeField.lotTypeFieldValues; + lotTypeFieldValuesElement.value = (_g = lotTypeField.lotTypeFieldValues) !== null && _g !== void 0 ? _g : ''; toggleInputFields(); }, onshown(modalElement, closeModalFunction) { + var _a, _b; editCloseModalFunction = closeModalFunction; bulmaJS.init(modalElement); bulmaJS.toggleHtmlClipped(); cityssm.enableNavBlocker(); - modalElement.querySelector('form').addEventListener('submit', doUpdate); + (_a = modalElement.querySelector('form')) === null || _a === void 0 ? void 0 : _a.addEventListener('submit', doUpdate); minimumLengthElement.addEventListener('keyup', updateMaximumLengthMin); updateMaximumLengthMin(); lotTypeFieldValuesElement.addEventListener('keyup', toggleInputFields); - modalElement - .querySelector('#button--deleteLotTypeField') - .addEventListener('click', confirmDoDelete); + (_b = modalElement + .querySelector('#button--deleteLotTypeField')) === null || _b === void 0 ? void 0 : _b.addEventListener('click', confirmDoDelete); }, onremoved() { bulmaJS.toggleHtmlClipped(); @@ -230,9 +244,10 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); } function openEditLotTypeFieldByClick(clickEvent) { + var _a, _b; clickEvent.preventDefault(); - const lotTypeFieldId = Number.parseInt(clickEvent.currentTarget.closest('.container--lotTypeField').dataset.lotTypeFieldId, 10); - const lotTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--lotType').dataset.lotTypeId, 10); + const lotTypeFieldId = Number.parseInt((_a = clickEvent.currentTarget.closest('.container--lotTypeField').dataset.lotTypeFieldId) !== null && _a !== void 0 ? _a : '', 10); + const lotTypeId = Number.parseInt((_b = clickEvent.currentTarget.closest('.container--lotType').dataset.lotTypeId) !== null && _b !== void 0 ? _b : '', 10); openEditLotTypeField(lotTypeId, lotTypeFieldId); } function moveLotTypeField(clickEvent) { @@ -248,15 +263,13 @@ Object.defineProperty(exports, "__esModule", { value: true }); }, lotTypeResponseHandler); } function renderLotTypeFields(panelElement, lotTypeId, lotTypeFields) { - var _a; + var _a, _b; if (lotTypeFields.length === 0) { - panelElement.insertAdjacentHTML('beforeend', '
' + - '
' + - '

There are no additional fields.

' + - '
' + - '
'); + // eslint-disable-next-line no-unsanitized/method + panelElement.insertAdjacentHTML('beforeend', `
+

There are no additional fields.

+
`); } else { for (const lotTypeField of lotTypeFields) { @@ -268,24 +281,23 @@ Object.defineProperty(exports, "__esModule", { value: true }); } panelBlockElement.dataset.lotTypeFieldId = lotTypeField.lotTypeFieldId.toString(); - panelBlockElement.innerHTML = - '
' + - '
' + - ('') + - '
' + - '
' + - ('
' + - los.getMoveUpDownButtonFieldHTML('button--moveLotTypeFieldUp', 'button--moveLotTypeFieldDown') + - '
') + - '
' + - '
'; - panelBlockElement - .querySelector('.button--editLotTypeField') - .addEventListener('click', openEditLotTypeFieldByClick); + // eslint-disable-next-line no-unsanitized/property + panelBlockElement.innerHTML = `
+
+ +
+
+
+ ${los.getMoveUpDownButtonFieldHTML('button--moveLotTypeFieldUp', 'button--moveLotTypeFieldDown')} +
+
+
`; + (_b = panelBlockElement + .querySelector('.button--editLotTypeField')) === null || _b === void 0 ? void 0 : _b.addEventListener('click', openEditLotTypeFieldByClick); panelBlockElement.querySelector('.button--moveLotTypeFieldUp').addEventListener('click', moveLotTypeField); panelBlockElement.querySelector('.button--moveLotTypeFieldDown').addEventListener('click', moveLotTypeField); panelElement.append(panelBlockElement); @@ -293,86 +305,79 @@ Object.defineProperty(exports, "__esModule", { value: true }); } } function renderLotTypes() { + var _a, _b, _c, _d, _e; containerElement.innerHTML = ''; if (lotTypes.length === 0) { + // eslint-disable-next-line no-unsanitized/method containerElement.insertAdjacentHTML('afterbegin', `
There are no active ${los.escapedAliases.lot} types.

-
`); +

There are no active ${los.escapedAliases.lot} types.

+ `); return; } for (const lotType of lotTypes) { const lotTypeContainer = document.createElement('div'); lotTypeContainer.className = 'panel container--lotType'; lotTypeContainer.dataset.lotTypeId = lotType.lotTypeId.toString(); - lotTypeContainer.innerHTML = - '
' + - '
' + - ('
' + - '
' + - '' + - '
' + - '
' + - '

' + - cityssm.escapeHTML(lotType.lotType) + - '

' + - '
' + - '
') + - ('
' + - ('
' + - '' + - '
') + - ('
' + - '' + - '
') + - ('
' + - '' + - '
') + - ('
' + - los.getMoveUpDownButtonFieldHTML('button--moveLotTypeUp', 'button--moveLotTypeDown') + - '
') + - '
') + - '
' + - '
'; - renderLotTypeFields(lotTypeContainer, lotType.lotTypeId, lotType.lotTypeFields); - lotTypeContainer - .querySelector('.button--toggleLotTypeFields') - .addEventListener('click', toggleLotTypeFields); - lotTypeContainer - .querySelector('.button--deleteLotType') - .addEventListener('click', deleteLotType); - lotTypeContainer - .querySelector('.button--editLotType') - .addEventListener('click', openEditLotType); - lotTypeContainer - .querySelector('.button--addLotTypeField') - .addEventListener('click', openAddLotTypeField); + // eslint-disable-next-line no-unsanitized/property + lotTypeContainer.innerHTML = `
+
+
+
+ +
+
+

${cityssm.escapeHTML(lotType.lotType)}

+
+
+
+
+ +
+
+ +
+
+ +
+
+ ${los.getMoveUpDownButtonFieldHTML('button--moveLotTypeUp', 'button--moveLotTypeDown')} +
+
+
+
`; + renderLotTypeFields(lotTypeContainer, lotType.lotTypeId, (_a = lotType.lotTypeFields) !== null && _a !== void 0 ? _a : []); + (_b = lotTypeContainer + .querySelector('.button--toggleLotTypeFields')) === null || _b === void 0 ? void 0 : _b.addEventListener('click', toggleLotTypeFields); + (_c = lotTypeContainer + .querySelector('.button--deleteLotType')) === null || _c === void 0 ? void 0 : _c.addEventListener('click', deleteLotType); + (_d = lotTypeContainer + .querySelector('.button--editLotType')) === null || _d === void 0 ? void 0 : _d.addEventListener('click', openEditLotType); + (_e = lotTypeContainer + .querySelector('.button--addLotTypeField')) === null || _e === void 0 ? void 0 : _e.addEventListener('click', openAddLotTypeField); lotTypeContainer.querySelector('.button--moveLotTypeUp').addEventListener('click', moveLotType); lotTypeContainer.querySelector('.button--moveLotTypeDown').addEventListener('click', moveLotType); containerElement.append(lotTypeContainer); } } - document - .querySelector('#button--addLotType') - .addEventListener('click', () => { + (_a = document + .querySelector('#button--addLotType')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', () => { let addCloseModalFunction; function doAdd(submitEvent) { submitEvent.preventDefault(); - cityssm.postJSON(los.urlPrefix + '/admin/doAddLotType', submitEvent.currentTarget, (rawResponseJSON) => { + cityssm.postJSON(`${los.urlPrefix}/admin/doAddLotType`, submitEvent.currentTarget, (rawResponseJSON) => { var _a; const responseJSON = rawResponseJSON; if (responseJSON.success) { @@ -394,9 +399,10 @@ Object.defineProperty(exports, "__esModule", { value: true }); los.populateAliases(modalElement); }, onshown(modalElement, closeModalFunction) { + var _a; addCloseModalFunction = closeModalFunction; modalElement.querySelector('#lotTypeAdd--lotType').focus(); - modalElement.querySelector('form').addEventListener('submit', doAdd); + (_a = modalElement.querySelector('form')) === null || _a === void 0 ? void 0 : _a.addEventListener('submit', doAdd); bulmaJS.toggleHtmlClipped(); }, onremoved() { diff --git a/public-typescript/adminLotTypes.ts b/public-typescript/adminLotTypes.ts index 8f3308e8..1f08a12b 100644 --- a/public-typescript/adminLotTypes.ts +++ b/public-typescript/adminLotTypes.ts @@ -1,15 +1,17 @@ -/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */ +// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair +/* eslint-disable unicorn/prefer-module */ -import type * as globalTypes from '../types/globalTypes' -import type * as recordTypes from '../types/recordTypes' +import type { BulmaJS } from '@cityssm/bulma-js/types.js' +import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js' -import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types' - -import type { BulmaJS } from '@cityssm/bulma-js/types' +import type * as globalTypes from '../types/globalTypes.js' +import type * as recordTypes from '../types/recordTypes.js' declare const cityssm: cityssmGlobal declare const bulmaJS: BulmaJS +declare const exports: Record + type ResponseJSON = | { success: true @@ -27,7 +29,7 @@ type ResponseJSON = '#container--lotTypes' ) as HTMLElement - let lotTypes: recordTypes.LotType[] = exports.lotTypes + let lotTypes = exports.lotTypes as recordTypes.LotType[] delete exports.lotTypes const expandedLotTypes = new Set() @@ -39,7 +41,10 @@ type ResponseJSON = '.container--lotType' ) as HTMLElement - const lotTypeId = Number.parseInt(lotTypeElement.dataset.lotTypeId!, 10) + const lotTypeId = Number.parseInt( + lotTypeElement.dataset.lotTypeId ?? '', + 10 + ) if (expandedLotTypes.has(lotTypeId)) { expandedLotTypes.delete(lotTypeId) @@ -47,6 +52,7 @@ type ResponseJSON = expandedLotTypes.add(lotTypeId) } + // eslint-disable-next-line no-unsanitized/property toggleButtonElement.innerHTML = expandedLotTypes.has(lotTypeId) ? '' : '' @@ -58,9 +64,10 @@ type ResponseJSON = } } - function lotTypeResponseHandler(responseJSON: ResponseJSON): void { + function lotTypeResponseHandler(rawResponseJSON: unknown): void { + const responseJSON = rawResponseJSON as ResponseJSON if (responseJSON.success) { - lotTypes = responseJSON.lotTypes! + lotTypes = responseJSON.lotTypes renderLotTypes() } else { bulmaJS.alert({ @@ -77,13 +84,13 @@ type ResponseJSON = (clickEvent.currentTarget as HTMLElement).closest( '.container--lotType' ) as HTMLElement - ).dataset.lotTypeId!, + ).dataset.lotTypeId ?? '', 10 ) function doDelete(): void { cityssm.postJSON( - los.urlPrefix + '/admin/doDeleteLotType', + `${los.urlPrefix}/admin/doDeleteLotType`, { lotTypeId }, @@ -108,13 +115,13 @@ type ResponseJSON = (clickEvent.currentTarget as HTMLElement).closest( '.container--lotType' ) as HTMLElement - ).dataset.lotTypeId!, + ).dataset.lotTypeId ?? '', 10 ) const lotType = lotTypes.find((currentLotType) => { return lotTypeId === currentLotType.lotTypeId - })! + }) as recordTypes.LotType let editCloseModalFunction: () => void @@ -122,7 +129,7 @@ type ResponseJSON = submitEvent.preventDefault() cityssm.postJSON( - los.urlPrefix + '/admin/doUpdateLotType', + `${los.urlPrefix}/admin/doUpdateLotType`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON as ResponseJSON @@ -157,7 +164,7 @@ type ResponseJSON = ) as HTMLInputElement ).focus() - modalElement.querySelector('form')!.addEventListener('submit', doEdit) + modalElement.querySelector('form')?.addEventListener('submit', doEdit) bulmaJS.toggleHtmlClipped() }, @@ -173,7 +180,7 @@ type ResponseJSON = (clickEvent.currentTarget as HTMLElement).closest( '.container--lotType' ) as HTMLElement - ).dataset.lotTypeId!, + ).dataset.lotTypeId ?? '', 10 ) @@ -183,7 +190,7 @@ type ResponseJSON = submitEvent.preventDefault() cityssm.postJSON( - los.urlPrefix + '/admin/doAddLotTypeField', + `${los.urlPrefix}/admin/doAddLotTypeField`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON as ResponseJSON @@ -193,7 +200,10 @@ type ResponseJSON = if (responseJSON.success) { addCloseModalFunction() - openEditLotTypeField(lotTypeId, responseJSON.lotTypeFieldId!) + openEditLotTypeField( + lotTypeId, + responseJSON.lotTypeFieldId as number + ) } } ) @@ -219,7 +229,7 @@ type ResponseJSON = ) as HTMLInputElement ).focus() - modalElement.querySelector('form')!.addEventListener('submit', doAdd) + modalElement.querySelector('form')?.addEventListener('submit', doAdd) bulmaJS.toggleHtmlClipped() }, @@ -256,11 +266,13 @@ type ResponseJSON = ): void { const lotType = lotTypes.find((currentLotType) => { return currentLotType.lotTypeId === lotTypeId - })! + }) as recordTypes.LotType - const lotTypeField = lotType.lotTypeFields!.find((currentLotTypeField) => { - return currentLotTypeField.lotTypeFieldId === lotTypeFieldId - })! + const lotTypeField = (lotType.lotTypeFields ?? []).find( + (currentLotTypeField) => { + return currentLotTypeField.lotTypeFieldId === lotTypeFieldId + } + ) as recordTypes.LotTypeField let minimumLengthElement: HTMLInputElement let maximumLengthElement: HTMLInputElement @@ -289,7 +301,7 @@ type ResponseJSON = submitEvent.preventDefault() cityssm.postJSON( - los.urlPrefix + '/admin/doUpdateLotTypeField', + `${los.urlPrefix}/admin/doUpdateLotTypeField`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON as ResponseJSON @@ -304,7 +316,7 @@ type ResponseJSON = function doDelete(): void { cityssm.postJSON( - los.urlPrefix + '/admin/doDeleteLotTypeField', + `${los.urlPrefix}/admin/doDeleteLotTypeField`, { lotTypeFieldId }, @@ -344,7 +356,7 @@ type ResponseJSON = modalElement.querySelector( '#lotTypeFieldEdit--lotTypeField' ) as HTMLInputElement - ).value = lotTypeField.lotTypeField! + ).value = lotTypeField.lotTypeField ?? '' ;( modalElement.querySelector( '#lotTypeFieldEdit--isRequired' @@ -355,25 +367,27 @@ type ResponseJSON = '#lotTypeFieldEdit--minimumLength' ) as HTMLInputElement - minimumLengthElement.value = lotTypeField.minimumLength!.toString() + minimumLengthElement.value = + lotTypeField.minimumLength?.toString() ?? '' maximumLengthElement = modalElement.querySelector( '#lotTypeFieldEdit--maximumLength' ) as HTMLInputElement - maximumLengthElement.value = lotTypeField.maximumLength!.toString() + maximumLengthElement.value = + lotTypeField.maximumLength?.toString() ?? '' patternElement = modalElement.querySelector( '#lotTypeFieldEdit--pattern' ) as HTMLInputElement - patternElement.value = lotTypeField.pattern! + patternElement.value = lotTypeField.pattern ?? '' lotTypeFieldValuesElement = modalElement.querySelector( '#lotTypeFieldEdit--lotTypeFieldValues' ) as HTMLTextAreaElement - lotTypeFieldValuesElement.value = lotTypeField.lotTypeFieldValues! + lotTypeFieldValuesElement.value = lotTypeField.lotTypeFieldValues ?? '' toggleInputFields() }, @@ -384,7 +398,7 @@ type ResponseJSON = bulmaJS.toggleHtmlClipped() cityssm.enableNavBlocker() - modalElement.querySelector('form')!.addEventListener('submit', doUpdate) + modalElement.querySelector('form')?.addEventListener('submit', doUpdate) minimumLengthElement.addEventListener('keyup', updateMaximumLengthMin) updateMaximumLengthMin() @@ -392,8 +406,8 @@ type ResponseJSON = lotTypeFieldValuesElement.addEventListener('keyup', toggleInputFields) modalElement - .querySelector('#button--deleteLotTypeField')! - .addEventListener('click', confirmDoDelete) + .querySelector('#button--deleteLotTypeField') + ?.addEventListener('click', confirmDoDelete) }, onremoved() { bulmaJS.toggleHtmlClipped() @@ -410,7 +424,7 @@ type ResponseJSON = (clickEvent.currentTarget as HTMLElement).closest( '.container--lotTypeField' ) as HTMLElement - ).dataset.lotTypeFieldId!, + ).dataset.lotTypeFieldId ?? '', 10 ) @@ -419,7 +433,7 @@ type ResponseJSON = (clickEvent.currentTarget as HTMLElement).closest( '.container--lotType' ) as HTMLElement - ).dataset.lotTypeId!, + ).dataset.lotTypeId ?? '', 10 ) @@ -453,15 +467,13 @@ type ResponseJSON = lotTypeFields: recordTypes.LotTypeField[] ): void { if (lotTypeFields.length === 0) { + // eslint-disable-next-line no-unsanitized/method panelElement.insertAdjacentHTML( 'beforeend', - '
' + - '
' + - '

There are no additional fields.

' + - '
' + - '
' + `
+

There are no additional fields.

+
` ) } else { for (const lotTypeField of lotTypeFields) { @@ -476,28 +488,28 @@ type ResponseJSON = panelBlockElement.dataset.lotTypeFieldId = lotTypeField.lotTypeFieldId.toString() - panelBlockElement.innerHTML = - '
' + - '' + - '
' + - ('
' + - los.getMoveUpDownButtonFieldHTML( - 'button--moveLotTypeFieldUp', - 'button--moveLotTypeFieldDown' - ) + - '
') + - '
' + - '
' + // eslint-disable-next-line no-unsanitized/property + panelBlockElement.innerHTML = `
+ +
+
+ ${los.getMoveUpDownButtonFieldHTML( + 'button--moveLotTypeFieldUp', + 'button--moveLotTypeFieldDown' + )} +
+
+
` panelBlockElement - .querySelector('.button--editLotTypeField')! - .addEventListener('click', openEditLotTypeFieldByClick) + .querySelector('.button--editLotTypeField') + ?.addEventListener('click', openEditLotTypeFieldByClick) ;( panelBlockElement.querySelector( '.button--moveLotTypeFieldUp' @@ -518,11 +530,12 @@ type ResponseJSON = containerElement.innerHTML = '' if (lotTypes.length === 0) { + // eslint-disable-next-line no-unsanitized/method containerElement.insertAdjacentHTML( 'afterbegin', `
There are no active ${los.escapedAliases.lot} types.

-
` +

There are no active ${los.escapedAliases.lot} types.

+ ` ) return @@ -535,75 +548,73 @@ type ResponseJSON = lotTypeContainer.dataset.lotTypeId = lotType.lotTypeId.toString() - lotTypeContainer.innerHTML = - '
' + - '
' + - ('
' + - '
' + - '' + - '
' + - '
' + - '

' + - cityssm.escapeHTML(lotType.lotType) + - '

' + - '
' + - '
') + - ('
' + - ('
' + - '' + - '
') + - ('
' + - '' + - '
') + - ('
' + - '' + - '
') + - ('
' + - los.getMoveUpDownButtonFieldHTML( - 'button--moveLotTypeUp', - 'button--moveLotTypeDown' - ) + - '
') + - '
') + - '
' + - '
' + // eslint-disable-next-line no-unsanitized/property + lotTypeContainer.innerHTML = `
+
+
+
+ +
+
+

${cityssm.escapeHTML(lotType.lotType)}

+
+
+
+
+ +
+
+ +
+
+ +
+
+ ${los.getMoveUpDownButtonFieldHTML( + 'button--moveLotTypeUp', + 'button--moveLotTypeDown' + )} +
+
+
+
` renderLotTypeFields( lotTypeContainer, lotType.lotTypeId, - lotType.lotTypeFields! + lotType.lotTypeFields ?? [] ) lotTypeContainer - .querySelector('.button--toggleLotTypeFields')! - .addEventListener('click', toggleLotTypeFields) + .querySelector('.button--toggleLotTypeFields') + ?.addEventListener('click', toggleLotTypeFields) lotTypeContainer - .querySelector('.button--deleteLotType')! - .addEventListener('click', deleteLotType) + .querySelector('.button--deleteLotType') + ?.addEventListener('click', deleteLotType) lotTypeContainer - .querySelector('.button--editLotType')! - .addEventListener('click', openEditLotType) + .querySelector('.button--editLotType') + ?.addEventListener('click', openEditLotType) lotTypeContainer - .querySelector('.button--addLotTypeField')! - .addEventListener('click', openAddLotTypeField) + .querySelector('.button--addLotTypeField') + ?.addEventListener('click', openAddLotTypeField) ;( lotTypeContainer.querySelector( '.button--moveLotTypeUp' @@ -620,22 +631,22 @@ type ResponseJSON = } document - .querySelector('#button--addLotType')! - .addEventListener('click', () => { + .querySelector('#button--addLotType') + ?.addEventListener('click', () => { let addCloseModalFunction: () => void function doAdd(submitEvent: SubmitEvent): void { submitEvent.preventDefault() cityssm.postJSON( - los.urlPrefix + '/admin/doAddLotType', + `${los.urlPrefix}/admin/doAddLotType`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON as ResponseJSON if (responseJSON.success) { addCloseModalFunction() - lotTypes = responseJSON.lotTypes! + lotTypes = responseJSON.lotTypes renderLotTypes() } else { bulmaJS.alert({ @@ -660,7 +671,7 @@ type ResponseJSON = ) as HTMLInputElement ).focus() - modalElement.querySelector('form')!.addEventListener('submit', doAdd) + modalElement.querySelector('form')?.addEventListener('submit', doAdd) bulmaJS.toggleHtmlClipped() }, diff --git a/public/javascripts/adminLotTypes.min.js b/public/javascripts/adminLotTypes.min.js index b6f85dcd..5a518474 100644 --- a/public/javascripts/adminLotTypes.min.js +++ b/public/javascripts/adminLotTypes.min.js @@ -1 +1 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("#container--lotTypes");let l=exports.lotTypes;delete exports.lotTypes;const o=new Set;function s(e){const t=e.currentTarget,l=t.closest(".container--lotType"),s=Number.parseInt(l.dataset.lotTypeId,10);o.has(s)?o.delete(s):o.add(s),t.innerHTML=o.has(s)?'':'';const i=l.querySelectorAll(".panel-block");for(const e of i)e.classList.toggle("is-hidden")}function i(t){var o;t.success?(l=t.lotTypes,T()):bulmaJS.alert({title:`Error Updating ${e.escapedAliases.Lot} Type`,message:null!==(o=t.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})}function d(t){const l=Number.parseInt(t.currentTarget.closest(".container--lotType").dataset.lotTypeId,10);bulmaJS.confirm({title:`Delete ${e.escapedAliases.Lot} Type`,message:`Are you sure you want to delete this ${e.escapedAliases.lot} type?`,contextualColorName:"warning",okButton:{text:`Yes, Delete ${e.escapedAliases.Lot} Type`,callbackFunction:function(){cityssm.postJSON(e.urlPrefix+"/admin/doDeleteLotType",{lotTypeId:l},i)}}})}function n(t){const o=Number.parseInt(t.currentTarget.closest(".container--lotType").dataset.lotTypeId,10),s=l.find(e=>o===e.lotTypeId);let d;function n(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doUpdateLotType",t.currentTarget,e=>{const t=e;i(t),t.success&&d()})}cityssm.openHtmlModal("adminLotTypes-editLotType",{onshow(t){e.populateAliases(t),t.querySelector("#lotTypeEdit--lotTypeId").value=o.toString(),t.querySelector("#lotTypeEdit--lotType").value=s.lotType},onshown(e,t){d=t,e.querySelector("#lotTypeEdit--lotType").focus(),e.querySelector("form").addEventListener("submit",n),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}function a(t){const l=Number.parseInt(t.currentTarget.closest(".container--lotType").dataset.lotTypeId,10);let s;function d(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doAddLotTypeField",t.currentTarget,e=>{const t=e;o.add(l),i(t),t.success&&(s(),c(l,t.lotTypeFieldId))})}cityssm.openHtmlModal("adminLotTypes-addLotTypeField",{onshow(t){e.populateAliases(t),l&&(t.querySelector("#lotTypeFieldAdd--lotTypeId").value=l.toString())},onshown(e,t){s=t,e.querySelector("#lotTypeFieldAdd--lotTypeField").focus(),e.querySelector("form").addEventListener("submit",d),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}function r(t){const l=t.currentTarget,o=l.closest(".container--lotType").dataset.lotTypeId;cityssm.postJSON(e.urlPrefix+"/admin/"+("up"===l.dataset.direction?"doMoveLotTypeUp":"doMoveLotTypeDown"),{lotTypeId:o,moveToEnd:t.shiftKey?"1":"0"},i)}function c(t,o){const s=l.find(e=>e.lotTypeId===t).lotTypeFields.find(e=>e.lotTypeFieldId===o);let d,n,a,r,c;function p(){n.min=d.value}function u(){""===r.value?(d.disabled=!1,n.disabled=!1,a.disabled=!1):(d.disabled=!0,n.disabled=!0,a.disabled=!0)}function y(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doUpdateLotTypeField",t.currentTarget,e=>{const t=e;i(t),t.success&&c()})}function T(){cityssm.postJSON(e.urlPrefix+"/admin/doDeleteLotTypeField",{lotTypeFieldId:o},e=>{const t=e;i(t),t.success&&c()})}function m(){bulmaJS.confirm({title:"Delete Field",message:"Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.",contextualColorName:"warning",okButton:{text:"Yes, Delete Field",callbackFunction:T}})}cityssm.openHtmlModal("adminLotTypes-editLotTypeField",{onshow(t){e.populateAliases(t),t.querySelector("#lotTypeFieldEdit--lotTypeFieldId").value=s.lotTypeFieldId.toString(),t.querySelector("#lotTypeFieldEdit--lotTypeField").value=s.lotTypeField,t.querySelector("#lotTypeFieldEdit--isRequired").value=s.isRequired?"1":"0",(d=t.querySelector("#lotTypeFieldEdit--minimumLength")).value=s.minimumLength.toString(),(n=t.querySelector("#lotTypeFieldEdit--maximumLength")).value=s.maximumLength.toString(),(a=t.querySelector("#lotTypeFieldEdit--pattern")).value=s.pattern,(r=t.querySelector("#lotTypeFieldEdit--lotTypeFieldValues")).value=s.lotTypeFieldValues,u()},onshown(e,t){c=t,bulmaJS.init(e),bulmaJS.toggleHtmlClipped(),cityssm.enableNavBlocker(),e.querySelector("form").addEventListener("submit",y),d.addEventListener("keyup",p),p(),r.addEventListener("keyup",u),e.querySelector("#button--deleteLotTypeField").addEventListener("click",m)},onremoved(){bulmaJS.toggleHtmlClipped(),cityssm.disableNavBlocker()}})}function p(e){e.preventDefault();const t=Number.parseInt(e.currentTarget.closest(".container--lotTypeField").dataset.lotTypeFieldId,10);c(Number.parseInt(e.currentTarget.closest(".container--lotType").dataset.lotTypeId,10),t)}function u(t){const l=t.currentTarget,o=l.closest(".container--lotTypeField").dataset.lotTypeFieldId;cityssm.postJSON(e.urlPrefix+"/admin/"+("up"===l.dataset.direction?"doMoveLotTypeFieldUp":"doMoveLotTypeFieldDown"),{lotTypeFieldId:o,moveToEnd:t.shiftKey?"1":"0"},i)}function y(t,l,s){var i;if(0===s.length)t.insertAdjacentHTML("beforeend",'

There are no additional fields.

');else for(const d of s){const s=document.createElement("div");s.className="panel-block is-block container--lotTypeField",o.has(l)||s.classList.add("is-hidden"),s.dataset.lotTypeFieldId=d.lotTypeFieldId.toString(),s.innerHTML='
'+e.getMoveUpDownButtonFieldHTML("button--moveLotTypeFieldUp","button--moveLotTypeFieldDown")+"
",s.querySelector(".button--editLotTypeField").addEventListener("click",p),s.querySelector(".button--moveLotTypeFieldUp").addEventListener("click",u),s.querySelector(".button--moveLotTypeFieldDown").addEventListener("click",u),t.append(s)}}function T(){if(t.innerHTML="",0!==l.length)for(const i of l){const l=document.createElement("div");l.className="panel container--lotType",l.dataset.lotTypeId=i.lotTypeId.toString(),l.innerHTML='

'+cityssm.escapeHTML(i.lotType)+'

'+e.getMoveUpDownButtonFieldHTML("button--moveLotTypeUp","button--moveLotTypeDown")+"
",y(l,i.lotTypeId,i.lotTypeFields),l.querySelector(".button--toggleLotTypeFields").addEventListener("click",s),l.querySelector(".button--deleteLotType").addEventListener("click",d),l.querySelector(".button--editLotType").addEventListener("click",n),l.querySelector(".button--addLotTypeField").addEventListener("click",a),l.querySelector(".button--moveLotTypeUp").addEventListener("click",r),l.querySelector(".button--moveLotTypeDown").addEventListener("click",r),t.append(l)}else t.insertAdjacentHTML("afterbegin",`
There are no active ${e.escapedAliases.lot} types.

\n
`)}document.querySelector("#button--addLotType").addEventListener("click",()=>{let t;function o(o){o.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doAddLotType",o.currentTarget,o=>{var s;const i=o;i.success?(t(),l=i.lotTypes,T()):bulmaJS.alert({title:`Error Adding ${e.escapedAliases.Lot} Type`,message:null!==(s=i.errorMessage)&&void 0!==s?s:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("adminLotTypes-addLotType",{onshow(t){e.populateAliases(t)},onshown(e,l){t=l,e.querySelector("#lotTypeAdd--lotType").focus(),e.querySelector("form").addEventListener("submit",o),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}),T()})(); \ No newline at end of file +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{var e;const t=exports.los,l=document.querySelector("#container--lotTypes");let o=exports.lotTypes;delete exports.lotTypes;const n=new Set;function i(e){var t;const l=e.currentTarget,o=l.closest(".container--lotType"),i=Number.parseInt(null!==(t=o.dataset.lotTypeId)&&void 0!==t?t:"",10);n.has(i)?n.delete(i):n.add(i),l.innerHTML=n.has(i)?'':'';const s=o.querySelectorAll(".panel-block");for(const e of s)e.classList.toggle("is-hidden")}function s(e){var l;const n=e;n.success?(o=n.lotTypes,T()):bulmaJS.alert({title:`Error Updating ${t.escapedAliases.Lot} Type`,message:null!==(l=n.errorMessage)&&void 0!==l?l:"",contextualColorName:"danger"})}function d(e){var l;const o=Number.parseInt(null!==(l=e.currentTarget.closest(".container--lotType").dataset.lotTypeId)&&void 0!==l?l:"",10);bulmaJS.confirm({title:`Delete ${t.escapedAliases.Lot} Type`,message:`Are you sure you want to delete this ${t.escapedAliases.lot} type?`,contextualColorName:"warning",okButton:{text:`Yes, Delete ${t.escapedAliases.Lot} Type`,callbackFunction:function(){cityssm.postJSON(`${t.urlPrefix}/admin/doDeleteLotType`,{lotTypeId:o},s)}}})}function a(e){var l;const n=Number.parseInt(null!==(l=e.currentTarget.closest(".container--lotType").dataset.lotTypeId)&&void 0!==l?l:"",10),i=o.find(e=>n===e.lotTypeId);let d;function a(e){e.preventDefault(),cityssm.postJSON(`${t.urlPrefix}/admin/doUpdateLotType`,e.currentTarget,e=>{const t=e;s(t),t.success&&d()})}cityssm.openHtmlModal("adminLotTypes-editLotType",{onshow(e){t.populateAliases(e),e.querySelector("#lotTypeEdit--lotTypeId").value=n.toString(),e.querySelector("#lotTypeEdit--lotType").value=i.lotType},onshown(e,t){var l;d=t,e.querySelector("#lotTypeEdit--lotType").focus(),null===(l=e.querySelector("form"))||void 0===l||l.addEventListener("submit",a),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}function r(e){var l;const o=Number.parseInt(null!==(l=e.currentTarget.closest(".container--lotType").dataset.lotTypeId)&&void 0!==l?l:"",10);let i;function d(e){e.preventDefault(),cityssm.postJSON(`${t.urlPrefix}/admin/doAddLotTypeField`,e.currentTarget,e=>{const t=e;n.add(o),s(t),t.success&&(i(),u(o,t.lotTypeFieldId))})}cityssm.openHtmlModal("adminLotTypes-addLotTypeField",{onshow(e){t.populateAliases(e),o&&(e.querySelector("#lotTypeFieldAdd--lotTypeId").value=o.toString())},onshown(e,t){var l;i=t,e.querySelector("#lotTypeFieldAdd--lotTypeField").focus(),null===(l=e.querySelector("form"))||void 0===l||l.addEventListener("submit",d),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}function c(e){const l=e.currentTarget,o=l.closest(".container--lotType").dataset.lotTypeId;cityssm.postJSON(t.urlPrefix+"/admin/"+("up"===l.dataset.direction?"doMoveLotTypeUp":"doMoveLotTypeDown"),{lotTypeId:o,moveToEnd:e.shiftKey?"1":"0"},s)}function u(e,l){var n;const i=(null!==(n=o.find(t=>t.lotTypeId===e).lotTypeFields)&&void 0!==n?n:[]).find(e=>e.lotTypeFieldId===l);let d,a,r,c,u;function p(){a.min=d.value}function y(){""===c.value?(d.disabled=!1,a.disabled=!1,r.disabled=!1):(d.disabled=!0,a.disabled=!0,r.disabled=!0)}function v(e){e.preventDefault(),cityssm.postJSON(`${t.urlPrefix}/admin/doUpdateLotTypeField`,e.currentTarget,e=>{const t=e;s(t),t.success&&u()})}function T(){cityssm.postJSON(`${t.urlPrefix}/admin/doDeleteLotTypeField`,{lotTypeFieldId:l},e=>{const t=e;s(t),t.success&&u()})}function m(){bulmaJS.confirm({title:"Delete Field",message:"Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.",contextualColorName:"warning",okButton:{text:"Yes, Delete Field",callbackFunction:T}})}cityssm.openHtmlModal("adminLotTypes-editLotTypeField",{onshow(e){var l,o,n,s,u,p,v;t.populateAliases(e),e.querySelector("#lotTypeFieldEdit--lotTypeFieldId").value=i.lotTypeFieldId.toString(),e.querySelector("#lotTypeFieldEdit--lotTypeField").value=null!==(l=i.lotTypeField)&&void 0!==l?l:"",e.querySelector("#lotTypeFieldEdit--isRequired").value=i.isRequired?"1":"0",(d=e.querySelector("#lotTypeFieldEdit--minimumLength")).value=null!==(n=null===(o=i.minimumLength)||void 0===o?void 0:o.toString())&&void 0!==n?n:"",(a=e.querySelector("#lotTypeFieldEdit--maximumLength")).value=null!==(u=null===(s=i.maximumLength)||void 0===s?void 0:s.toString())&&void 0!==u?u:"",(r=e.querySelector("#lotTypeFieldEdit--pattern")).value=null!==(p=i.pattern)&&void 0!==p?p:"",(c=e.querySelector("#lotTypeFieldEdit--lotTypeFieldValues")).value=null!==(v=i.lotTypeFieldValues)&&void 0!==v?v:"",y()},onshown(e,t){var l,o;u=t,bulmaJS.init(e),bulmaJS.toggleHtmlClipped(),cityssm.enableNavBlocker(),null===(l=e.querySelector("form"))||void 0===l||l.addEventListener("submit",v),d.addEventListener("keyup",p),p(),c.addEventListener("keyup",y),null===(o=e.querySelector("#button--deleteLotTypeField"))||void 0===o||o.addEventListener("click",m)},onremoved(){bulmaJS.toggleHtmlClipped(),cityssm.disableNavBlocker()}})}function p(e){var t,l;e.preventDefault();const o=Number.parseInt(null!==(t=e.currentTarget.closest(".container--lotTypeField").dataset.lotTypeFieldId)&&void 0!==t?t:"",10);u(Number.parseInt(null!==(l=e.currentTarget.closest(".container--lotType").dataset.lotTypeId)&&void 0!==l?l:"",10),o)}function y(e){const l=e.currentTarget,o=l.closest(".container--lotTypeField").dataset.lotTypeFieldId;cityssm.postJSON(t.urlPrefix+"/admin/"+("up"===l.dataset.direction?"doMoveLotTypeFieldUp":"doMoveLotTypeFieldDown"),{lotTypeFieldId:o,moveToEnd:e.shiftKey?"1":"0"},s)}function v(e,l,o){var i,s;if(0===o.length)e.insertAdjacentHTML("beforeend",`
\n

There are no additional fields.

\n
`);else for(const d of o){const o=document.createElement("div");o.className="panel-block is-block container--lotTypeField",n.has(l)||o.classList.add("is-hidden"),o.dataset.lotTypeFieldId=d.lotTypeFieldId.toString(),o.innerHTML=`
\n \n
\n
\n ${t.getMoveUpDownButtonFieldHTML("button--moveLotTypeFieldUp","button--moveLotTypeFieldDown")}\n
\n
\n
`,null===(s=o.querySelector(".button--editLotTypeField"))||void 0===s||s.addEventListener("click",p),o.querySelector(".button--moveLotTypeFieldUp").addEventListener("click",y),o.querySelector(".button--moveLotTypeFieldDown").addEventListener("click",y),e.append(o)}}function T(){var e,s,u,p,y;if(l.innerHTML="",0!==o.length)for(const T of o){const o=document.createElement("div");o.className="panel container--lotType",o.dataset.lotTypeId=T.lotTypeId.toString(),o.innerHTML=`
\n
\n
\n
\n \n
\n
\n

${cityssm.escapeHTML(T.lotType)}

\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n ${t.getMoveUpDownButtonFieldHTML("button--moveLotTypeUp","button--moveLotTypeDown")}\n
\n
\n
\n
`,v(o,T.lotTypeId,null!==(e=T.lotTypeFields)&&void 0!==e?e:[]),null===(s=o.querySelector(".button--toggleLotTypeFields"))||void 0===s||s.addEventListener("click",i),null===(u=o.querySelector(".button--deleteLotType"))||void 0===u||u.addEventListener("click",d),null===(p=o.querySelector(".button--editLotType"))||void 0===p||p.addEventListener("click",a),null===(y=o.querySelector(".button--addLotTypeField"))||void 0===y||y.addEventListener("click",r),o.querySelector(".button--moveLotTypeUp").addEventListener("click",c),o.querySelector(".button--moveLotTypeDown").addEventListener("click",c),l.append(o)}else l.insertAdjacentHTML("afterbegin",`
There are no active ${t.escapedAliases.lot} types.

\n
`)}null===(e=document.querySelector("#button--addLotType"))||void 0===e||e.addEventListener("click",()=>{let e;function l(l){l.preventDefault(),cityssm.postJSON(`${t.urlPrefix}/admin/doAddLotType`,l.currentTarget,l=>{var n;const i=l;i.success?(e(),o=i.lotTypes,T()):bulmaJS.alert({title:`Error Adding ${t.escapedAliases.Lot} Type`,message:null!==(n=i.errorMessage)&&void 0!==n?n:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("adminLotTypes-addLotType",{onshow(e){t.populateAliases(e)},onshown(t,o){var n;e=o,t.querySelector("#lotTypeAdd--lotType").focus(),null===(n=t.querySelector("form"))||void 0===n||n.addEventListener("submit",l),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}),T()})(); \ No newline at end of file