Compare commits

...

4 commits

6 changed files with 118 additions and 74 deletions

View file

@ -36,7 +36,7 @@ require (
go.uber.org/mock v0.6.0 // indirect go.uber.org/mock v0.6.0 // indirect
golang.org/x/arch v0.24.0 // indirect golang.org/x/arch v0.24.0 // indirect
golang.org/x/crypto v0.48.0 // indirect golang.org/x/crypto v0.48.0 // indirect
golang.org/x/net v0.50.0 // indirect golang.org/x/net v0.51.0 // indirect
golang.org/x/sys v0.41.0 // indirect golang.org/x/sys v0.41.0 // indirect
golang.org/x/text v0.34.0 // indirect golang.org/x/text v0.34.0 // indirect
google.golang.org/protobuf v1.36.11 // indirect google.golang.org/protobuf v1.36.11 // indirect

View file

@ -80,8 +80,8 @@ golang.org/x/arch v0.24.0 h1:qlJ3M9upxvFfwRM51tTg3Yl+8CP9vCC1E7vlFpgv99Y=
golang.org/x/arch v0.24.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A= golang.org/x/arch v0.24.0/go.mod h1:dNHoOeKiyja7GTvF9NJS1l3Z2yntpQNzgrjh1cU103A=
golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts=
golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=
golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo=
golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=

View file

@ -32,7 +32,8 @@ func getCORSConfig(env string) cors.Config {
return cors.Config{ return cors.Config{
AllowOrigins: []string{"http://localhost:5173"}, AllowOrigins: []string{"http://localhost:5173"},
AllowMethods: []string{"GET", "POST", "OPTIONS", "DELETE"}, AllowMethods: []string{"GET", "POST", "OPTIONS", "DELETE"},
AllowHeaders: []string{"Origin", "OCBO-Token", "Content-Length", "Content-Type", "X-Server"}, // AllowHeaders: []string{"Origin", "OCBO-Token", "Content-Length", "Content-Type", "X-Server", "Authorization"},
AllowHeaders: []string{"*"},
ExposeHeaders: []string{"Content-Length"}, ExposeHeaders: []string{"Content-Length"},
AllowCredentials: true, AllowCredentials: true,
} }
@ -2492,5 +2493,49 @@ func connect() {
} }
}) })
router.DELETE("/api/delete-esigntransactions", func(c *gin.Context) {
type DeleteOPLocal struct {
Data string `json:"data"`
}
var deleteOpLocal DeleteOPLocal
if err := c.ShouldBindJSON(&deleteOpLocal); err != nil {
c.String(http.StatusBadRequest, "Invalid request body")
return
}
c.Writer.Header().Set("X-XSS-Protection", "1; mode=block")
c.Writer.Header().Set("X-Content-Type-Options", "nosniff")
c.Writer.Header().Set("X-DNS-Prefetch-Control", "off")
c.Writer.Header().Set("X-Frame-Options", "DENY")
c.Writer.Header().Set("X-Download-Options", "noopen")
c.Writer.Header().Set("Referrer-Policy", "no-referrer")
c.Writer.Header().Set("Content-Security-Policy", "default-src 'self'; img-src 'self';")
c.Writer.Header().Set("X-Server", "OCBO Server")
dbpost, err := dbpop.Prepare("DELETE FROM esign_transactions WHERE referenceNo = ?")
if err != nil {
c.AbortWithError(http.StatusInternalServerError, err)
c.String(http.StatusInternalServerError, "Internal Server Error")
return
}
defer dbpost.Close()
exec, err := dbpost.Exec(deleteOpLocal.Data)
if err != nil {
panic(err.Error())
}
affect, err := exec.RowsAffected()
if err != nil {
panic(err.Error())
}
if affect > 0 {
c.String(http.StatusOK, "Success on Deleting eSign Transactions")
} else {
c.String(http.StatusInternalServerError, "Failed on Deleting eSign Transactions")
}
})
router.Run(":4320") router.Run(":4320")
} }

View file

@ -23,7 +23,7 @@
"jsencrypt": "^3.5.4", "jsencrypt": "^3.5.4",
"jspdf": "^3.0.4", "jspdf": "^3.0.4",
"jspdf-barcode": "^1.0.2", "jspdf-barcode": "^1.0.2",
"nanostores": "^1.1.0", "nanostores": "^1.1.1",
"ofetch": "^1.5.1", "ofetch": "^1.5.1",
"openssl-nodejs": "^1.0.5", "openssl-nodejs": "^1.0.5",
"pica": "^9.0.1", "pica": "^9.0.1",
@ -37,7 +37,7 @@
"@biomejs/biome": "^2.4.4", "@biomejs/biome": "^2.4.4",
"@nanostores/solid": "^1.1.1", "@nanostores/solid": "^1.1.1",
"@types/crypto-js": "^4.2.2", "@types/crypto-js": "^4.2.2",
"@types/node": "^24.10.13", "@types/node": "^24.10.15",
"sass-embedded": "^1.97.3", "sass-embedded": "^1.97.3",
"typescript": "~5.8.3", "typescript": "~5.8.3",
"vite": "^7.3.1", "vite": "^7.3.1",

44
pnpm-lock.yaml generated
View file

@ -48,8 +48,8 @@ importers:
specifier: ^1.0.2 specifier: ^1.0.2
version: 1.0.2(jspdf@3.0.4) version: 1.0.2(jspdf@3.0.4)
nanostores: nanostores:
specifier: ^1.1.0 specifier: ^1.1.1
version: 1.1.0 version: 1.1.1
ofetch: ofetch:
specifier: ^1.5.1 specifier: ^1.5.1
version: 1.5.1 version: 1.5.1
@ -80,13 +80,13 @@ importers:
version: 2.4.4 version: 2.4.4
'@nanostores/solid': '@nanostores/solid':
specifier: ^1.1.1 specifier: ^1.1.1
version: 1.1.1(nanostores@1.1.0)(solid-js@1.9.11) version: 1.1.1(nanostores@1.1.1)(solid-js@1.9.11)
'@types/crypto-js': '@types/crypto-js':
specifier: ^4.2.2 specifier: ^4.2.2
version: 4.2.2 version: 4.2.2
'@types/node': '@types/node':
specifier: ^24.10.13 specifier: ^24.10.15
version: 24.10.13 version: 24.10.15
sass-embedded: sass-embedded:
specifier: ^1.97.3 specifier: ^1.97.3
version: 1.97.3 version: 1.97.3
@ -95,13 +95,13 @@ importers:
version: 5.8.3 version: 5.8.3
vite: vite:
specifier: ^7.3.1 specifier: ^7.3.1
version: 7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3) version: 7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3)
vite-plugin-compression2: vite-plugin-compression2:
specifier: ^2.4.0 specifier: ^2.4.0
version: 2.4.0(rollup@4.52.1) version: 2.4.0(rollup@4.52.1)
vite-plugin-solid: vite-plugin-solid:
specifier: ^2.11.10 specifier: ^2.11.10
version: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3)) version: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3))
packages: packages:
@ -1084,8 +1084,8 @@ packages:
'@types/node@16.9.1': '@types/node@16.9.1':
resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==}
'@types/node@24.10.13': '@types/node@24.10.15':
resolution: {integrity: sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg==} resolution: {integrity: sha512-BgjLoRuSr0MTI5wA6gMw9Xy0sFudAaUuvrnjgGx9wZ522fYYLA5SYJ+1Y30vTcJEG+DRCyDHx/gzQVfofYzSdg==}
'@types/pako@2.0.4': '@types/pako@2.0.4':
resolution: {integrity: sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==} resolution: {integrity: sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==}
@ -1405,8 +1405,8 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true hasBin: true
nanostores@1.1.0: nanostores@1.1.1:
resolution: {integrity: sha512-yJBmDJr18xy47dbNVlHcgdPrulSn1nhSE6Ns9vTG+Nx9VPT6iV1MD6aQFp/t52zpf82FhLLTXAXr30NuCnxvwA==} resolution: {integrity: sha512-EYJqS25r2iBeTtGQCHidXl1VfZ1jXM7Q04zXJOrMlxVVmD0ptxJaNux92n1mJ7c5lN3zTq12MhH/8x59nP+qmg==}
engines: {node: ^20.0.0 || >=22.0.0} engines: {node: ^20.0.0 || >=22.0.0}
node-addon-api@7.1.1: node-addon-api@7.1.1:
@ -2510,9 +2510,9 @@ snapshots:
'@solid-primitives/utils': 6.3.2(solid-js@1.9.11) '@solid-primitives/utils': 6.3.2(solid-js@1.9.11)
solid-js: 1.9.11 solid-js: 1.9.11
'@nanostores/solid@1.1.1(nanostores@1.1.0)(solid-js@1.9.11)': '@nanostores/solid@1.1.1(nanostores@1.1.1)(solid-js@1.9.11)':
dependencies: dependencies:
nanostores: 1.1.0 nanostores: 1.1.1
solid-js: 1.9.11 solid-js: 1.9.11
'@parcel/watcher-android-arm64@2.5.4': '@parcel/watcher-android-arm64@2.5.4':
@ -2762,7 +2762,7 @@ snapshots:
'@types/node@16.9.1': {} '@types/node@16.9.1': {}
'@types/node@24.10.13': '@types/node@24.10.15':
dependencies: dependencies:
undici-types: 7.16.0 undici-types: 7.16.0
@ -3093,7 +3093,7 @@ snapshots:
nanoid@3.3.11: {} nanoid@3.3.11: {}
nanostores@1.1.0: {} nanostores@1.1.1: {}
node-addon-api@7.1.1: node-addon-api@7.1.1:
optional: true optional: true
@ -3516,7 +3516,7 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3)): vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3)):
dependencies: dependencies:
'@babel/core': 7.28.4 '@babel/core': 7.28.4
'@types/babel__core': 7.20.5 '@types/babel__core': 7.20.5
@ -3524,12 +3524,12 @@ snapshots:
merge-anything: 5.1.7 merge-anything: 5.1.7
solid-js: 1.9.11 solid-js: 1.9.11
solid-refresh: 0.6.3(solid-js@1.9.11) solid-refresh: 0.6.3(solid-js@1.9.11)
vite: 7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3) vite: 7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3)
vitefu: 1.1.1(vite@7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3)) vitefu: 1.1.1(vite@7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3))
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
vite@7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3): vite@7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3):
dependencies: dependencies:
esbuild: 0.27.2 esbuild: 0.27.2
fdir: 6.5.0(picomatch@4.0.3) fdir: 6.5.0(picomatch@4.0.3)
@ -3538,14 +3538,14 @@ snapshots:
rollup: 4.52.1 rollup: 4.52.1
tinyglobby: 0.2.15 tinyglobby: 0.2.15
optionalDependencies: optionalDependencies:
'@types/node': 24.10.13 '@types/node': 24.10.15
fsevents: 2.3.3 fsevents: 2.3.3
sass: 1.97.3 sass: 1.97.3
sass-embedded: 1.97.3 sass-embedded: 1.97.3
vitefu@1.1.1(vite@7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3)): vitefu@1.1.1(vite@7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3)):
optionalDependencies: optionalDependencies:
vite: 7.3.1(@types/node@24.10.13)(sass-embedded@1.97.3)(sass@1.97.3) vite: 7.3.1(@types/node@24.10.15)(sass-embedded@1.97.3)(sass@1.97.3)
webworkify@1.5.0: {} webworkify@1.5.0: {}

View file

@ -1,12 +1,12 @@
import { Tabs } from '@kobalte/core/tabs'; import { Tabs } from '@kobalte/core/tabs'
import { useNavigate } from '@solidjs/router'; import { useNavigate } from '@solidjs/router'
import dayjs from 'dayjs'; import dayjs from 'dayjs'
import { FaSolidThumbsUp } from 'solid-icons/fa'; import { FaSolidThumbsUp, FaSolidUserGear } from 'solid-icons/fa'
import { FiLogOut } from 'solid-icons/fi'; import { FiLogOut } from 'solid-icons/fi'
import { VsRefresh } from 'solid-icons/vs'; import { VsRefresh } from 'solid-icons/vs'
import { createEffect, createSignal, onMount } from 'solid-js'; import { createEffect, createSignal, onMount } from 'solid-js'
import { Show } from 'solid-js/web'; import { Show } from 'solid-js/web'
import { Box, Button, Clickable, Column, Combobox, Input, Link, Logo, Modal, ModalButton, Padding, Page, Row } from '../../components/index.ts'; import { Box, Button, Clickable, Column, Combobox, Input, Link, Logo, Modal, ModalButton, Padding, Page, Row } from '../../components/index.ts'
import { import {
_additional, _additional,
_additionalAmountList, _additionalAmountList,
@ -31,10 +31,9 @@ import {
_totalUnits, _totalUnits,
_type, _type,
_units, _units,
} from '../../stores/pdfinfo.ts'; } from '../../stores/pdfinfo.ts'
import { checkConnection, createPdfElectrical, createPdfOccupancy, getApi, getApiMulti, postApi, statusPopsApi, voidPopsApi, saveNewName, saveNewPassword, securePassword, getDateTime } from '../../utils/functions/index.ts'; import { checkConnection, createPdfElectrical, createPdfOccupancy, getApi, getApiMulti, getDateTime, postApi, saveNewName, saveNewPassword, securePassword, statusPopsApi, voidPopsApi } from '../../utils/functions/index.ts'
import './Assessor.sass'; import './Assessor.sass'
import { FaSolidUserGear } from 'solid-icons/fa'
const PESO = import.meta.env.VITE_PESO const PESO = import.meta.env.VITE_PESO
@ -79,7 +78,7 @@ export default () => {
const [filter, setFilter] = createSignal('') const [filter, setFilter] = createSignal('')
const listType = ['Print', 'Reprint (No Change)', 'Void and Reprint'] const listType = ['Print', 'Reprint (No Change)', 'Void and Reapprove']
const [selectedType, setSelectedType] = createSignal('Print') const [selectedType, setSelectedType] = createSignal('Print')
const [voidError, setVoidError] = createSignal(false) const [voidError, setVoidError] = createSignal(false)
@ -348,13 +347,19 @@ export default () => {
return return
} }
if (selectedType().includes("Void")) { if (selectedType().includes('Void')) {
// Return to ASSESSMENT
// TODO:
// Set current status (for validation) to 1, is_approve = 1
// Clear order of payment as long as not Paid
// Clear esign_transactions
const status = await statusPopsOp(application) const status = await statusPopsOp(application)
const message = status.message const message = status.message
if (message.includes('No record')) { if (message.includes('No record')) {
setVoidError(true) setVoidError(true)
setErrorMessage("No record found on Pops") setErrorMessage('No record found on Pops')
return return
} else { } else {
const pops_paid = message.pops_paid const pops_paid = message.pops_paid
@ -362,7 +367,7 @@ export default () => {
if (pops_paid || epay_paid) { if (pops_paid || epay_paid) {
setVoidError(true) setVoidError(true)
setErrorMessage("Already Paid") setErrorMessage('Already Paid')
return return
} }
} }
@ -525,7 +530,6 @@ export default () => {
setConfigError('') setConfigError('')
encryptNewPassword() encryptNewPassword()
} }
} else { } else {
setConfigError('Invalid Password') setConfigError('Invalid Password')
setConfigNewEncPassword('') setConfigNewEncPassword('')
@ -590,13 +594,12 @@ export default () => {
createEffect(() => { createEffect(() => {
if (configPassword() !== '') { if (configPassword() !== '') {
checkCurrentPassword(); checkCurrentPassword()
} else checkCurrentPassword(); } else checkCurrentPassword()
if (configNewPassword() !== '') { if (configNewPassword() !== '') {
encryptNewPassword() encryptNewPassword()
} else encryptNewPassword() } else encryptNewPassword()
}) })
return ( return (
@ -613,9 +616,7 @@ export default () => {
<Row content="left" gap={1.75}> <Row content="left" gap={1.75}>
<Box curved thickness={0} padding="1.25rem 2.25rem" background="#0f131d56"> <Box curved thickness={0} padding="1.25rem 2.25rem" background="#0f131d56">
<span class="profile"> <span class="profile">{employeeName()}</span>
{employeeName()}
</span>
</Box> </Box>
<Clickable onClick={() => setOpenConfig(true)}> <Clickable onClick={() => setOpenConfig(true)}>
<Row gap={0.25}> <Row gap={0.25}>
@ -664,7 +665,6 @@ export default () => {
<Row content="split"> <Row content="split">
<Input value={filter()} onChange={setFilter} placeholder="Filter Application Number" /> <Input value={filter()} onChange={setFilter} placeholder="Filter Application Number" />
<Row> <Row>
{/* <Combobox options={listType} value={selectedType()} onChange={setSelectedType} placeholder="Select Type" width='200px' /> */} {/* <Combobox options={listType} value={selectedType()} onChange={setSelectedType} placeholder="Select Type" width='200px' /> */}
<Button label="Refresh Data" edges="curved" design="bo-primary" icon={VsRefresh} onClick={refresh}></Button> <Button label="Refresh Data" edges="curved" design="bo-primary" icon={VsRefresh} onClick={refresh}></Button>
</Row> </Row>
@ -859,7 +859,7 @@ export default () => {
<Input value={filter()} onChange={setFilter} placeholder="Filter Application Number" /> <Input value={filter()} onChange={setFilter} placeholder="Filter Application Number" />
<Row gap={0.5}> <Row gap={0.5}>
{/* <AiOutlineQuestionCircle size={24}/> */} {/* <AiOutlineQuestionCircle size={24}/> */}
<Combobox options={listType} value={selectedType()} onChange={setSelectedType} placeholder="Select Type" width='250px' /> <Combobox options={listType} value={selectedType()} onChange={setSelectedType} placeholder="Select Type" width="250px" />
<Button label="Refresh Data" edges="curved" design="bo-primary" icon={VsRefresh} onClick={refresh}></Button> <Button label="Refresh Data" edges="curved" design="bo-primary" icon={VsRefresh} onClick={refresh}></Button>
</Row> </Row>
</Row> </Row>
@ -1020,25 +1020,24 @@ export default () => {
</Modal> </Modal>
</div> </div>
<Modal trigger={openConfig()} background="#16212c" color="#ffffffed" opacity={0.8} width="30rem">
<Modal trigger={openConfig()} background="#16212c" color="#ffffffed" opacity={0.8} width='30rem'>
<Padding top={1} bottom={1} left={4} right={4}> <Padding top={1} bottom={1} left={4} right={4}>
<section class='config'> <section class="config">
<div class='config__row'> <div class="config__row">
Name: Name:
<span>{employeeName()}</span> <span>{employeeName()}</span>
</div> </div>
<div class='config__edit'> <div class="config__edit">
<span class='config__edit__title'>Change Displayed Name</span> <span class="config__edit__title">Change Displayed Name</span>
<Input value={configNewName()} onChange={setConfigNewName} placeholder='Enter new name' /> <Input value={configNewName()} onChange={setConfigNewName} placeholder="Enter new name" />
<span class='config__edit__info'>Leave blank to remain unchanged.</span> <span class="config__edit__info">Leave blank to remain unchanged.</span>
</div> </div>
<div class='config__edit'> <div class="config__edit">
<span class='config__edit__title'>Change Password</span> <span class="config__edit__title">Change Password</span>
<Input isPassword value={configPassword()} onChange={setConfigPassword} placeholder='Enter current password' /> <Input isPassword value={configPassword()} onChange={setConfigPassword} placeholder="Enter current password" />
<Input isPassword value={configNewPassword()} onChange={setConfigNewPassword} placeholder='Enter new password' /> <Input isPassword value={configNewPassword()} onChange={setConfigNewPassword} placeholder="Enter new password" />
<Show when={configNewPassword().length !== 0}> <Show when={configNewPassword().length !== 0}>
<span style="padding: 1.75rem 0 0 0">Current Encrypted Password:</span> <span style="padding: 1.75rem 0 0 0">Current Encrypted Password:</span>
@ -1051,13 +1050,13 @@ export default () => {
<Show when={configError() !== ''}> <Show when={configError() !== ''}>
<span class="required-config">{configError()}</span> <span class="required-config">{configError()}</span>
<Button label='Cancel' edges='curved' design='bo-danger' onClick={() => setOpenConfig(false)} wide /> <Button label="Cancel" edges="curved" design="bo-danger" onClick={() => setOpenConfig(false)} wide />
</Show> </Show>
<div class='config__button'> <div class="config__button">
<Show when={configError() === ''}> <Show when={configError() === ''}>
<Button label='Confirm' edges='curved' design='bo-primary' onClick={saveConfig} wide /> <Button label="Confirm" edges="curved" design="bo-primary" onClick={saveConfig} wide />
<Button label='Cancel' edges='curved' design='bo-danger' onClick={() => setOpenConfig(false)} wide /> <Button label="Cancel" edges="curved" design="bo-danger" onClick={() => setOpenConfig(false)} wide />
</Show> </Show>
</div> </div>
</section> </section>