@ -49,7 +49,7 @@ q-page.admin-storage
. col - auto
. col - auto
q - card . rounded - borders . bg - dark
q - card . rounded - borders . bg - dark
q - list (
q - list (
style = 'min-width: 3 5 0px;'
style = 'min-width: 3 0 0px;'
padding
padding
dark
dark
)
)
@ -62,427 +62,430 @@ q-page.admin-storage
clickable
clickable
)
)
q - item - section ( side )
q - item - section ( side )
q - icon (
q - icon ( : name = '`img:` + tgt.icon' )
: name = '`img:` + tgt.icon'
)
q - item - section
q - item - section
q - item - label { { tgt . title } }
q - item - label { { tgt . title } }
q - item - label ( caption , : class = 'getTargetSubtitleColor(tgt)' ) { { getTargetSubtitle ( tgt ) } }
q - item - label ( caption , : class = 'getTargetSubtitleColor(tgt)' ) { { getTargetSubtitle ( tgt ) } }
q - item - section ( side )
q - item - section ( side )
q- spinner - rings ( : color = 'tgt.isEnabled ? `positive` : `negative`' , size = 'sm ')
status- light ( : color = 'tgt.isEnabled ? `positive` : `negative`' , : pulse = 'tgt.isEnabled ')
. col ( v - if = 'state.target' )
. col ( v - if = 'state.target' )
/ / - - - - - - - - - - - - - - - - - - - - - - - -
. row . q - col - gutter - md
/ / - C o n t e n t T y p e s
. col - 12. col - lg
/ / - - - - - - - - - - - - - - - - - - - - - - - -
/ / - - - - - - - - - - - - - - - - - - - - - - - -
q - card . shadow - 1. q - pb - sm
/ / - S e t u p
q - card - section
/ / - - - - - - - - - - - - - - - - - - - - - - - -
. text - subtitle1 { { t ( 'admin.storage.contentTypes' ) } }
q - card . shadow - 1. q - pb - sm . q - mb - md ( v - if = 'state.target.setup && state.target.setup.handler && state.target.setup.state !== `configured`' )
. text - body2 . text - grey { { t ( 'admin.storage.contentTypesHint' ) } }
q - card - section
q - item ( tag = 'label' )
. text - subtitle1 { { t ( 'admin.storage.setup' ) } }
q - item - section ( avatar )
. text - body2 . text - grey { { t ( 'admin.storage.setupHint' ) } }
q - checkbox (
template ( v - if = 'state.target.setup.handler === `github` && state.target.setup.state === `notconfigured`' )
v - model = 'state.target.contentTypes.activeTypes'
q - item
: color = 'state.target.module === `db` ? `grey` : `primary`'
blueprint - icon ( icon = 'test-account' )
val = 'pages'
q - item - section
: aria - label = 't(`admin.storage.contentTypePages`)'
q - item - label GitHub Account Type
: disable = 'state.target.module === `db`'
q - item - label ( caption ) Whether to use an organization or personal GitHub account during setup .
)
q - item - section . col - auto
q - item - section
q - btn - toggle (
q - item - label { { t ( ` admin.storage.contentTypePages ` ) } }
v - model = 'state.target.setup.values.accountType'
q - item - label ( caption ) { { t ( ` admin.storage.contentTypePagesHint ` ) } }
push
q - item ( tag = 'label' )
glossy
q - item - section ( avatar )
no - caps
q - checkbox (
toggle - color = 'primary'
v - model = 'state.target.contentTypes.activeTypes'
: options = ` [
color = 'primary'
{ label : t ( 'admin.storage.githubAccTypeOrg' ) , value : 'org' } ,
val = 'images'
{ label : t ( 'admin.storage.githubAccTypePersonal' ) , value : 'personal' }
: aria - label = 't(`admin.storage.contentTypeImages`)'
] `
)
)
q - item - section
q - separator . q - my - sm ( inset )
q - item - label { { t ( ` admin.storage.contentTypeImages ` ) } }
template ( v - if = 'state.target.setup.values.accountType === `org`' )
q - item - label ( caption ) { { t ( ` admin.storage.contentTypeImagesHint ` ) } }
q - item
q - item ( tag = 'label' )
blueprint - icon ( icon = 'github' )
q - item - section ( avatar )
q - item - section
q - checkbox (
q - item - label { { t ( 'admin.storage.githubOrg' ) } }
v - model = 'state.target.contentTypes.activeTypes'
q - item - label ( caption ) { { t ( 'admin.storage.githubOrgHint' ) } }
color = 'primary'
q - item - section
val = 'documents'
q - input (
: aria - label = 't(`admin.storage.contentTypeDocuments`)'
outlined
)
v - model = 'state.target.setup.values.org'
q - item - section
dense
q - item - label { { t ( ` admin.storage.contentTypeDocuments ` ) } }
: aria - label = 't(`admin.storage.githubOrg`)'
q - item - label ( caption ) { { t ( ` admin.storage.contentTypeDocumentsHint ` ) } }
)
q - item ( tag = 'label' )
q - separator . q - my - sm ( inset )
q - item - section ( avatar )
q - item
q - checkbox (
blueprint - icon ( icon = 'dns' )
v - model = 'state.target.contentTypes.activeTypes'
q - item - section
color = 'primary'
q - item - label { { t ( 'admin.storage.githubPublicUrl' ) } }
val = 'others'
q - item - label ( caption ) { { t ( 'admin.storage.githubPublicUrlHint' ) } }
: aria - label = 't(`admin.storage.contentTypeOthers`)'
q - item - section
)
q - input (
q - item - section
outlined
q - item - label { { t ( ` admin.storage.contentTypeOthers ` ) } }
v - model = 'state.target.setup.values.publicUrl'
q - item - label ( caption ) { { t ( ` admin.storage.contentTypeOthersHint ` ) } }
dense
q - item ( tag = 'label' )
: aria - label = 't(`admin.storage.githubPublicUrl`)'
q - item - section ( avatar )
)
q - checkbox (
q - card - section . q - pt - sm . text - right
v - model = 'state.target.contentTypes.activeTypes'
form (
color = 'primary'
ref = 'githubSetupForm'
val = 'large'
method = 'POST'
: aria - label = 't(`admin.storage.contentTypeLargeFiles`)'
: action = 'state.setupCfg.action'
)
)
q - item - section
input (
q - item - label { { t ( ` admin.storage.contentTypeLargeFiles ` ) } }
type = 'hidden'
q - item - label ( caption ) { { t ( ` admin.storage.contentTypeLargeFilesHint ` ) } }
name = 'manifest'
q - item - label . text - deep - orange ( v - if = 'state.target.module === `db`' , caption ) { { t ( ` admin.storage.contentTypeLargeFilesDBWarn ` ) } }
: value = 'state.setupCfg.manifest'
q - item - section ( side )
)
q - input (
q - btn (
outlined
unelevated
: label = 't(`admin.storage.contentTypeLargeFilesThreshold`)'
icon = 'las la-angle-double-right'
v - model = 'state.target.contentTypes.largeThreshold'
: label = 't(`admin.storage.startSetup`)'
style = 'min-width: 150px;'
color = 'secondary'
dense
@ click = 'setupGitHub'
)
: loading = 'state.setupCfg.loading'
)
/ / - - - - - - - - - - - - - - - - - - - - - - - -
template ( v - else - if = 'state.target.setup.handler === `github` && state.target.setup.state === `pendinginstall`' )
/ / - C o n t e n t D e l i v e r y
q - card - section . q - py - none
/ / - - - - - - - - - - - - - - - - - - - - - - - -
q - banner (
q - card . shadow - 1. q - pb - sm . q - mt - md
rounded
q - card - section
: class = '$q.dark.isActive ? `bg-teal-9 text-white` : `bg-teal-1 text-teal-9`'
. text - subtitle1 { { t ( 'admin.storage.assetDelivery' ) } }
) { { t ( 'admin.storage.githubFinish' ) } }
. text - body2 . text - grey { { t ( 'admin.storage.assetDeliveryHint' ) } }
q - card - section . q - pt - sm . text - right
q - item ( : tag = 'state.target.assetDelivery.isStreamingSupported ? `label` : null' )
q - btn . q - mr - sm (
q - item - section ( avatar )
unelevated
q - checkbox (
icon = 'las la-times-circle'
v - model = 'state.target.assetDelivery.streaming'
: label = 't(`admin.storage.cancelSetup`)'
: color = 'state.target.module === `db` || !state.target.assetDelivery.isStreamingSupported ? `grey` : `primary`'
color = 'negative'
: aria - label = 't(`admin.storage.contentTypePages`)'
@ click = 'setupDestroy'
: disable = 'state.target.module === `db` || !state.target.assetDelivery.isStreamingSupported'
)
)
q - btn (
q - item - section
unelevated
q - item - label { { t ( ` admin.storage.assetStreaming ` ) } }
icon = 'las la-angle-double-right'
q - item - label ( caption ) { { t ( ` admin.storage.assetStreamingHint ` ) } }
: label = 't(`admin.storage.finishSetup`)'
q - item - label . text - deep - orange ( v - if = '!state.target.assetDelivery.isStreamingSupported' , caption ) { { t ( ` admin.storage.assetStreamingNotSupported ` ) } }
color = 'secondary'
q - item ( : tag = 'state.target.assetDelivery.isDirectAccessSupported ? `label` : null' )
@ click = 'setupGitHubStep(`verify`)'
q - item - section ( avatar )
: loading = 'state.setupCfg.loading'
q - checkbox (
)
v - model = 'state.target.assetDelivery.directAccess'
q - card . shadow - 1. q - pb - sm . q - mt - md ( v - if = 'state.target.setup && state.target.setup.handler && state.target.setup.state === `configured`' )
: color = '!state.target.assetDelivery.isDirectAccessSupported ? `grey` : `primary`'
q - card - section
: aria - label = 't(`admin.storage.contentTypePages`)'
. text - subtitle1 { { t ( 'admin.storage.setup' ) } }
: disable = '!state.target.assetDelivery.isDirectAccessSupported'
. text - body2 . text - grey { { t ( 'admin.storage.setupConfiguredHint' ) } }
)
q - item - section
q - item - label { { t ( ` admin.storage.assetDirectAccess ` ) } }
q - item - label ( caption ) { { t ( ` admin.storage.assetDirectAccessHint ` ) } }
q - item - label . text - deep - orange ( v - if = '!state.target.assetDelivery.isDirectAccessSupported' , caption ) { { t ( ` admin.storage.assetDirectAccessNotSupported ` ) } }
/ / - - - - - - - - - - - - - - - - - - - - - - - -
/ / - S e t u p
/ / - - - - - - - - - - - - - - - - - - - - - - - -
q - card . shadow - 1. q - pb - sm . q - mt - md ( v - if = 'state.target.setup && state.target.setup.handler && state.target.setup.state !== `configured`' )
q - card - section
. text - subtitle1 { { t ( 'admin.storage.setup' ) } }
. text - body2 . text - grey { { t ( 'admin.storage.setupHint' ) } }
template ( v - if = 'state.target.setup.handler === `github` && state.target.setup.state === `notconfigured`' )
q - item
blueprint - icon ( icon = 'test-account' )
q - item - section
q - item - label GitHub Account Type
q - item - label ( caption ) Whether to use an organization or personal GitHub account during setup .
q - item - section . col - auto
q - btn - toggle (
v - model = 'state.target.setup.values.accountType'
push
glossy
no - caps
toggle - color = 'primary'
: options = ` [
{ label : t ( 'admin.storage.githubAccTypeOrg' ) , value : 'org' } ,
{ label : t ( 'admin.storage.githubAccTypePersonal' ) , value : 'personal' }
] `
)
q - separator . q - my - sm ( inset )
template ( v - if = 'state.target.setup.values.accountType === `org`' )
q - item
q - item
blueprint - icon (icon = 'github ')
blueprint - icon . self - start ( icon = 'matches' , : hue - rotate = '140' )
q - item - section
q - item - section
q - item - label { { t ( 'admin.storage.githubOrg' ) } }
q - item - label Uninstall
q - item - label ( caption ) { { t ( 'admin.storage.githubOrgHint' ) } }
q - item - label ( caption ) Delete the active configuration and start over the setup process .
q - item - label . text - red ( caption ) : strong This action cannot be undone !
q - item - section ( side )
q - btn . acrylic - btn (
flat
icon = 'las la-arrow-circle-right'
color = 'negative'
@ click = 'setupDestroy'
: label = 't(`admin.storage.uninstall`)'
)
/ / - - - - - - - - - - - - - - - - - - - - - - - -
/ / - C o n t e n t T y p e s
/ / - - - - - - - - - - - - - - - - - - - - - - - -
q - card . shadow - 1. q - pb - sm
q - card - section
. text - subtitle1 { { t ( 'admin.storage.contentTypes' ) } }
. text - body2 . text - grey { { t ( 'admin.storage.contentTypesHint' ) } }
q - item ( tag = 'label' )
q - item - section ( avatar )
q - checkbox (
v - model = 'state.target.contentTypes.activeTypes'
: color = 'state.target.module === `db` ? `grey` : `primary`'
val = 'pages'
: aria - label = 't(`admin.storage.contentTypePages`)'
: disable = 'state.target.module === `db`'
)
q - item - section
q - item - section
q - item - label { { t ( ` admin.storage.contentTypePages ` ) } }
q - item - label ( caption ) { { t ( ` admin.storage.contentTypePagesHint ` ) } }
q - item ( tag = 'label' )
q - item - section ( avatar )
q - checkbox (
v - model = 'state.target.contentTypes.activeTypes'
color = 'primary'
val = 'images'
: aria - label = 't(`admin.storage.contentTypeImages`)'
)
q - item - section
q - item - label { { t ( ` admin.storage.contentTypeImages ` ) } }
q - item - label ( caption ) { { t ( ` admin.storage.contentTypeImagesHint ` ) } }
q - item ( tag = 'label' )
q - item - section ( avatar )
q - checkbox (
v - model = 'state.target.contentTypes.activeTypes'
color = 'primary'
val = 'documents'
: aria - label = 't(`admin.storage.contentTypeDocuments`)'
)
q - item - section
q - item - label { { t ( ` admin.storage.contentTypeDocuments ` ) } }
q - item - label ( caption ) { { t ( ` admin.storage.contentTypeDocumentsHint ` ) } }
q - item ( tag = 'label' )
q - item - section ( avatar )
q - checkbox (
v - model = 'state.target.contentTypes.activeTypes'
color = 'primary'
val = 'others'
: aria - label = 't(`admin.storage.contentTypeOthers`)'
)
q - item - section
q - item - label { { t ( ` admin.storage.contentTypeOthers ` ) } }
q - item - label ( caption ) { { t ( ` admin.storage.contentTypeOthersHint ` ) } }
q - item ( tag = 'label' )
q - item - section ( avatar )
q - checkbox (
v - model = 'state.target.contentTypes.activeTypes'
color = 'primary'
val = 'large'
: aria - label = 't(`admin.storage.contentTypeLargeFiles`)'
)
q - item - section
q - item - label { { t ( ` admin.storage.contentTypeLargeFiles ` ) } }
q - item - label ( caption ) { { t ( ` admin.storage.contentTypeLargeFilesHint ` ) } }
q - item - label . text - deep - orange ( v - if = 'state.target.module === `db`' , caption ) { { t ( ` admin.storage.contentTypeLargeFilesDBWarn ` ) } }
q - item - section ( side )
q - input (
q - input (
outlined
outlined
v - model = 'state.target.setup.values.org'
: label = 't(`admin.storage.contentTypeLargeFilesThreshold`)'
v - model = 'state.target.contentTypes.largeThreshold'
style = 'min-width: 150px;'
dense
dense
: aria - label = 't(`admin.storage.githubOrg`)'
)
q - separator . q - my - sm ( inset )
q - item
blueprint - icon ( icon = 'dns' )
q - item - section
q - item - label { { t ( 'admin.storage.githubPublicUrl' ) } }
q - item - label ( caption ) { { t ( 'admin.storage.githubPublicUrlHint' ) } }
q - item - section
q - input (
outlined
v - model = 'state.target.setup.values.publicUrl'
dense
: aria - label = 't(`admin.storage.githubPublicUrl`)'
)
)
q - card - section . q - pt - sm . text - right
form (
/ / - - - - - - - - - - - - - - - - - - - - - - - -
ref = 'githubSetupForm'
/ / - C o n t e n t D e l i v e r y
method = 'POST'
/ / - - - - - - - - - - - - - - - - - - - - - - - -
: action = 'setupCfg.action'
q - card . shadow - 1. q - pb - sm . q - mt - md
)
q - card - section
input (
. text - subtitle1 { { t ( 'admin.storage.assetDelivery' ) } }
type = 'hidden'
. text - body2 . text - grey { { t ( 'admin.storage.assetDeliveryHint' ) } }
name = 'manifest'
q - item ( : tag = 'state.target.assetDelivery.isStreamingSupported ? `label` : null' )
: value = 'setupCfg.manifest'
q - item - section ( avatar )
q - checkbox (
v - model = 'state.target.assetDelivery.streaming'
: color = 'state.target.module === `db` || !state.target.assetDelivery.isStreamingSupported ? `grey` : `primary`'
: aria - label = 't(`admin.storage.contentTypePages`)'
: disable = 'state.target.module === `db` || !state.target.assetDelivery.isStreamingSupported'
)
q - item - section
q - item - label { { t ( ` admin.storage.assetStreaming ` ) } }
q - item - label ( caption ) { { t ( ` admin.storage.assetStreamingHint ` ) } }
q - item - label . text - deep - orange ( v - if = '!state.target.assetDelivery.isStreamingSupported' , caption ) { { t ( ` admin.storage.assetStreamingNotSupported ` ) } }
q - item ( : tag = 'state.target.assetDelivery.isDirectAccessSupported ? `label` : null' )
q - item - section ( avatar )
q - checkbox (
v - model = 'state.target.assetDelivery.directAccess'
: color = '!state.target.assetDelivery.isDirectAccessSupported ? `grey` : `primary`'
: aria - label = 't(`admin.storage.contentTypePages`)'
: disable = '!state.target.assetDelivery.isDirectAccessSupported'
)
q - item - section
q - item - label { { t ( ` admin.storage.assetDirectAccess ` ) } }
q - item - label ( caption ) { { t ( ` admin.storage.assetDirectAccessHint ` ) } }
q - item - label . text - deep - orange ( v - if = '!state.target.assetDelivery.isDirectAccessSupported' , caption ) { { t ( ` admin.storage.assetDirectAccessNotSupported ` ) } }
/ / - - - - - - - - - - - - - - - - - - - - - - - -
/ / - C o n f i g u r a t i o n
/ / - - - - - - - - - - - - - - - - - - - - - - - -
q - card . shadow - 1. q - pb - sm . q - mt - md
q - card - section
. text - subtitle1 { { t ( 'admin.storage.config' ) } }
q - banner . q - mt - md (
v - if = '!state.target.config || Object.keys(state.target.config).length < 1'
rounded
: class = '$q.dark.isActive ? `bg-negative text-white` : `bg-grey-2 text-grey-7`'
) { { t ( 'admin.storage.noConfigOption' ) } }
template (
v - for = '(cfg, cfgKey, idx) in state.target.config'
)
)
q - btn (
template (
unelevated
v - if = 'configIfCheck(cfg.if)'
icon = 'las la-angle-double-right'
)
: label = 't(`admin.storage.startSetup`)'
q - separator . q - my - sm ( inset , v - if = 'idx > 0' )
color = 'secondary'
q - item ( v - if = 'cfg.type === `Boolean`' , tag = 'label' )
@ click = 'setupGitHub'
blueprint - icon ( : icon = 'cfg.icon' , : hue - rotate = 'cfg.readOnly ? -45 : 0' )
: loading = 'setupCfg.loading'
q - item - section
q - item - label { { cfg . title } }
q - item - label ( caption ) { { cfg . hint } }
q - item - section ( avatar )
q - toggle (
v - model = 'cfg.value'
color = 'primary'
checked - icon = 'las la-check'
unchecked - icon = 'las la-times'
: aria - label = 't(`admin.general.allowComments`)'
: disable = 'cfg.readOnly'
)
q - item ( v - else )
blueprint - icon ( : icon = 'cfg.icon' , : hue - rotate = 'cfg.readOnly ? -45 : 0' )
q - item - section
q - item - label { { cfg . title } }
q - item - label ( caption ) { { cfg . hint } }
q - item - section (
: style = 'cfg.type === `Number` ? `flex: 0 0 150px;` : ``'
: class = '{ "col-auto": cfg.enum && cfg.enumDisplay === `buttons` }'
)
q - btn - toggle (
v - if = 'cfg.enum && cfg.enumDisplay === `buttons`'
v - model = 'cfg.value'
push
glossy
no - caps
toggle - color = 'primary'
: options = ` cfg.enum `
: disable = 'cfg.readOnly'
)
q - select (
v - else - if = 'cfg.enum'
outlined
v - model = 'cfg.value'
: options = 'cfg.enum'
emit - value
map - options
dense
options - dense
: aria - label = 'cfg.title'
: disable = 'cfg.readOnly'
)
q - input (
v - else
outlined
v - model = 'cfg.value'
dense
: type = 'cfg.multiline ? `textarea` : `input`'
: aria - label = 'cfg.title'
: disable = 'cfg.readOnly'
)
/ / - - - - - - - - - - - - - - - - - - - - - - - -
/ / - S y n c
/ / - - - - - - - - - - - - - - - - - - - - - - - -
q - card . shadow - 1. q - pb - sm . q - mt - md ( v - if = 'state.target.sync && Object.keys(state.target.sync).length > 0' )
q - card - section
. text - subtitle1 { { t ( 'admin.storage.sync' ) } }
q - banner . q - mt - md (
rounded
: class = '$q.dark.isActive ? `bg-negative text-white` : `bg-grey-2 text-grey-7`'
) { { t ( 'admin.storage.noSyncModes' ) } }
/ / - - - - - - - - - - - - - - - - - - - - - - - -
/ / - A c t i o n s
/ / - - - - - - - - - - - - - - - - - - - - - - - -
q - card . shadow - 1. q - pb - sm . q - mt - md
q - card - section
. text - subtitle1 { { t ( 'admin.storage.actions' ) } }
q - banner . q - mt - md (
v - if = '!state.target.actions || state.target.actions.length < 1'
rounded
: class = '$q.dark.isActive ? `bg-negative text-white` : `bg-grey-2 text-grey-7`'
) { { t ( 'admin.storage.noActions' ) } }
q - banner . q - mt - md (
v - else - if = '!state.target.isEnabled'
rounded
: class = '$q.dark.isActive ? `bg-negative text-white` : `bg-grey-2 text-grey-7`'
) { { t ( 'admin.storage.actionsInactiveWarn' ) } }
template (
v - if = 'state.target.isEnabled'
v - for = '(act, idx) in state.target.actions'
)
)
template ( v - else - if = 'state.target.setup.handler === `github` && state.target.setup.state === `pendinginstall`' )
q - separator . q - my - sm ( inset , v - if = 'idx > 0' )
q - card - section . q - py - none
q - item
q - banner (
blueprint - icon . self - start ( : icon = 'act.icon' , : hue - rotate = '45' )
rounded
q - item - section
: class = '$q.dark.isActive ? `bg-teal-9 text-white` : `bg-teal-1 text-teal-9`'
q - item - label { { act . label } }
) { { t ( 'admin.storage.githubFinish' ) } }
q - item - label ( caption ) { { act . hint } }
q - card - section . q - pt - sm . text - right
q - item - label . text - red ( v - if = 'act.warn' , caption ) : strong { { act . warn } }
q - btn . q - mr - sm (
q - item - section ( side )
unelevated
q - btn . acrylic - btn (
icon = 'las la-times-circle'
flat
: label = 't(`admin.storage.cancelSetup`)'
icon = 'las la-arrow-circle-right'
color = 'negative'
color = 'primary'
@ click = 'setupDestroy'
@ click = ''
)
: label = 't(`common.actions.proceed`)'
q - btn (
)
unelevated
icon = 'las la-angle-double-right'
: label = 't(`admin.storage.finishSetup`)'
color = 'secondary'
@ click = 'setupGitHubStep(`verify`)'
: loading = 'setupCfg.loading'
)
q - card . shadow - 1. q - pb - sm . q - mt - md ( v - if = 'state.target.setup && state.target.setup.handler && state.target.setup.state === `configured`' )
q - card - section
. text - subtitle1 { { t ( 'admin.storage.setup' ) } }
. text - body2 . text - grey { { t ( 'admin.storage.setupConfiguredHint' ) } }
q - item
blueprint - icon . self - start ( icon = 'matches' , : hue - rotate = '140' )
q - item - section
q - item - label Uninstall
q - item - label ( caption ) Delete the active configuration and start over the setup process .
q - item - label . text - red ( caption ) : strong This action cannot be undone !
q - item - section ( side )
q - btn . acrylic - btn (
flat
icon = 'las la-arrow-circle-right'
color = 'negative'
@ click = 'setupDestroy'
: label = 't(`admin.storage.uninstall`)'
)
/ / - - - - - - - - - - - - - - - - - - - - - - - -
. col - 12. col - lg - auto
/ / - C o n f i g u r a t i o n
/ / - - - - - - - - - - - - - - - - - - - - - - - -
/ / - - - - - - - - - - - - - - - - - - - - - - - -
/ / - I n f o b o x
q - card . shadow - 1. q - pb - sm . q - mt - md
/ / - - - - - - - - - - - - - - - - - - - - - - - -
q - card - section
q - card . rounded - borders . q - pb - md ( style = 'width: 300px;' )
. text - subtitle1 { { t ( 'admin.storage.config' ) } }
q - card - section
q - banner . q - mt - md (
. text - subtitle1 { { state . target . title } }
v - if = '!state.target.config || Object.keys(state.target.config).length < 1'
q - img . q - mt - sm . rounded - borders (
rounded
: src = 'state.target.banner'
: class = '$q.dark.isActive ? `bg-negative text-white` : `bg-grey-2 text-grey-7`'
fit = 'cover'
) { { t ( 'admin.storage.noConfigOption' ) } }
no - spinner
template (
)
v - for = '(cfg, cfgKey, idx) in state.target.config'
. text - body2 . q - mt - md { { state . target . description } }
)
q - separator . q - mb - sm ( inset )
template (
q - item
v - if = 'configIfCheck(cfg.if)'
q - item - section
)
q - item - label . text - grey { { t ( ` admin.storage.vendor ` ) } }
q - separator . q - my - sm ( inset , v - if = 'idx > 0' )
q - item - label { { state . target . vendor } }
q - item ( v - if = 'cfg.type === `Boolean`' , tag = 'label' )
q - separator . q - my - sm ( inset )
blueprint - icon ( : icon = 'cfg.icon' , : hue - rotate = 'cfg.readOnly ? -45 : 0' )
q - item
q - item - section
q - item - section
q - item - label { { cfg . title } }
q - item - label . text - grey { { t ( ` admin.storage.vendorWebsite ` ) } }
q - item - label ( caption ) { { cfg . hint } }
q - item - label : a ( : href = 'state.target.website' , target = '_blank' , rel = 'noreferrer' ) { { state . target . website } }
/ / - - - - - - - - - - - - - - - - - - - - - - - -
/ / - S t a t u s
/ / - - - - - - - - - - - - - - - - - - - - - - - -
q - card . rounded - borders . q - pb - md . q - mt - md ( style = 'width: 300px;' )
q - card - section
. text - subtitle1 { { t ( 'admin.storage.status' ) } }
template ( v - if = 'state.target.module !== `db`' )
q - item ( tag = 'label' )
q - item - section
q - item - label { { t ( ` admin.storage.enabled ` ) } }
q - item - label ( caption ) { { t ( ` admin.storage.enabledHint ` ) } }
q - item - label . text - deep - orange ( v - if = 'state.target.module === `db`' , caption ) { { t ( ` admin.storage.enabledForced ` ) } }
q - item - section ( avatar )
q - toggle (
v - model = 'state.target.isEnabled'
: disable = 'state.target.module === `db` || isSetupNeeded'
color = 'primary'
checked - icon = 'las la-check'
unchecked - icon = 'las la-times'
: aria - label = 't(`admin.storage.enabled`)'
)
q - inner - loading ( : showing = 'isSetupNeeded' )
q - icon ( name = 'las la-exclamation-triangle' , size = 'sm' , color = 'negative' )
. text - body2 . text - negative { { t ( 'admin.storage.setupRequired' ) } }
q - separator . q - my - sm ( inset )
q - item
q - item - section
q - item - label . text - grey { { t ( ` admin.storage.currentState ` ) } }
q - item - label . text - positive No issues detected .
/ / - - - - - - - - - - - - - - - - - - - - - - - -
/ / - V e r s i o n i n g
/ / - - - - - - - - - - - - - - - - - - - - - - - -
q - card . rounded - borders . q - pb - md . q - mt - md ( style = 'width: 300px;' )
q - card - section
. text - subtitle1 { { t ( ` admin.storage.versioning ` ) } }
. text - body2 . text - grey { { t ( ` admin.storage.versioningHint ` ) } }
q - item ( : tag = 'state.target.versioning.isSupported ? `label` : null' )
q - item - section
q - item - label { { t ( ` admin.storage.useVersioning ` ) } }
q - item - label ( caption ) { { t ( ` admin.storage.useVersioningHint ` ) } }
q - item - label . text - deep - orange ( v - if = '!state.target.versioning.isSupported' , caption ) { { t ( ` admin.storage.versioningNotSupported ` ) } }
q - item - label . text - deep - orange ( v - if = 'state.target.versioning.isForceEnabled' , caption ) { { t ( ` admin.storage.versioningForceEnabled ` ) } }
q - item - section ( avatar )
q - item - section ( avatar )
q - toggle (
q - toggle (
v - model = 'cfg.value'
v - model = 'state.target.versioning.enabled'
: disable = '!state.target.versioning.isSupported || state.target.versioning.isForceEnabled'
color = 'primary'
color = 'primary'
checked - icon = 'las la-check'
checked - icon = 'las la-check'
unchecked - icon = 'las la-times'
unchecked - icon = 'las la-times'
: aria - label = 't(`admin.general.allowComments`)'
: aria - label = 't(`admin.storage.useVersioning`)'
: disable = 'cfg.readOnly'
)
q - item ( v - else )
blueprint - icon ( : icon = 'cfg.icon' , : hue - rotate = 'cfg.readOnly ? -45 : 0' )
q - item - section
q - item - label { { cfg . title } }
q - item - label ( caption ) { { cfg . hint } }
q - item - section (
: style = 'cfg.type === `Number` ? `flex: 0 0 150px;` : ``'
: class = '{ "col-auto": cfg.enum && cfg.enumDisplay === `buttons` }'
)
q - btn - toggle (
v - if = 'cfg.enum && cfg.enumDisplay === `buttons`'
v - model = 'cfg.value'
push
glossy
no - caps
toggle - color = 'primary'
: options = ` cfg.enum `
: disable = 'cfg.readOnly'
)
q - select (
v - else - if = 'cfg.enum'
outlined
v - model = 'cfg.value'
: options = 'cfg.enum'
emit - value
map - options
dense
options - dense
: aria - label = 'cfg.title'
: disable = 'cfg.readOnly'
)
q - input (
v - else
outlined
v - model = 'cfg.value'
dense
: type = 'cfg.multiline ? `textarea` : `input`'
: aria - label = 'cfg.title'
: disable = 'cfg.readOnly'
)
)
/ / - - - - - - - - - - - - - - - - - - - - - - - -
/ / - S y n c
/ / - - - - - - - - - - - - - - - - - - - - - - - -
q - card . shadow - 1. q - pb - sm . q - mt - md ( v - if = 'state.target.sync && Object.keys(state.target.sync).length > 0' )
q - card - section
. text - subtitle1 { { t ( 'admin.storage.sync' ) } }
q - banner . q - mt - md (
rounded
: class = '$q.dark.isActive ? `bg-negative text-white` : `bg-grey-2 text-grey-7`'
) { { t ( 'admin.storage.noSyncModes' ) } }
/ / - - - - - - - - - - - - - - - - - - - - - - - -
/ / - A c t i o n s
/ / - - - - - - - - - - - - - - - - - - - - - - - -
q - card . shadow - 1. q - pb - sm . q - mt - md
q - card - section
. text - subtitle1 { { t ( 'admin.storage.actions' ) } }
q - banner . q - mt - md (
v - if = '!state.target.actions || state.target.actions.length < 1'
rounded
: class = '$q.dark.isActive ? `bg-negative text-white` : `bg-grey-2 text-grey-7`'
) { { t ( 'admin.storage.noActions' ) } }
q - banner . q - mt - md (
v - else - if = '!state.target.isEnabled'
rounded
: class = '$q.dark.isActive ? `bg-negative text-white` : `bg-grey-2 text-grey-7`'
) { { t ( 'admin.storage.actionsInactiveWarn' ) } }
template (
v - if = 'state.target.isEnabled'
v - for = '(act, idx) in state.target.actions'
)
q - separator . q - my - sm ( inset , v - if = 'idx > 0' )
q - item
blueprint - icon . self - start ( : icon = 'act.icon' , : hue - rotate = '45' )
q - item - section
q - item - label { { act . label } }
q - item - label ( caption ) { { act . hint } }
q - item - label . text - red ( v - if = 'act.warn' , caption ) : strong { { act . warn } }
q - item - section ( side )
q - btn . acrylic - btn (
flat
icon = 'las la-arrow-circle-right'
color = 'primary'
@ click = ''
: label = 't(`common.actions.proceed`)'
)
. col - auto ( v - if = 'state.target' )
/ / - - - - - - - - - - - - - - - - - - - - - - - -
/ / - I n f o b o x
/ / - - - - - - - - - - - - - - - - - - - - - - - -
q - card . rounded - borders . q - pb - md ( style = 'width: 350px;' )
q - card - section
. text - subtitle1 { { state . target . title } }
q - img . q - mt - sm . rounded - borders (
: src = 'state.target.banner'
fit = 'cover'
no - spinner
)
. text - body2 . q - mt - md { { state . target . description } }
q - separator . q - mb - sm ( inset )
q - item
q - item - section
q - item - label . text - grey { { t ( ` admin.storage.vendor ` ) } }
q - item - label { { state . target . vendor } }
q - separator . q - my - sm ( inset )
q - item
q - item - section
q - item - label . text - grey { { t ( ` admin.storage.vendorWebsite ` ) } }
q - item - label : a ( : href = 'state.target.website' , target = '_blank' , rel = 'noreferrer' ) { { state . target . website } }
/ / - - - - - - - - - - - - - - - - - - - - - - - -
/ / - S t a t u s
/ / - - - - - - - - - - - - - - - - - - - - - - - -
q - card . rounded - borders . q - pb - md . q - mt - md ( style = 'width: 350px;' )
q - card - section
. text - subtitle1 { { t ( 'admin.storage.status' ) } }
template ( v - if = 'state.target.module !== `db` && !(state.target.setup && state.target.setup.handler && state.target.setup.state !== `configured`)' )
q - item ( tag = 'label' )
q - item - section
q - item - label { { t ( ` admin.storage.enabled ` ) } }
q - item - label ( caption ) { { t ( ` admin.storage.enabledHint ` ) } }
q - item - label . text - deep - orange ( v - if = 'state.target.module === `db`' , caption ) { { t ( ` admin.storage.enabledForced ` ) } }
q - item - section ( avatar )
q - toggle (
v - model = 'state.target.isEnabled'
: disable = 'state.target.module === `db` || (state.target.setup && state.target.setup.handler && state.target.setup.state !== `configured`)'
color = 'primary'
checked - icon = 'las la-check'
unchecked - icon = 'las la-times'
: aria - label = 't(`admin.storage.enabled`)'
)
q - separator . q - my - sm ( inset )
q - item
q - item - section
q - item - label . text - grey { { t ( ` admin.storage.currentState ` ) } }
q - item - label . text - positive No issues detected .
/ / - - - - - - - - - - - - - - - - - - - - - - - -
/ / - V e r s i o n i n g
/ / - - - - - - - - - - - - - - - - - - - - - - - -
q - card . rounded - borders . q - pb - md . q - mt - md ( style = 'width: 350px;' )
q - card - section
. text - subtitle1 { { t ( ` admin.storage.versioning ` ) } }
. text - body2 . text - grey { { t ( ` admin.storage.versioningHint ` ) } }
q - item ( : tag = 'state.target.versioning.isSupported ? `label` : null' )
q - item - section
q - item - label { { t ( ` admin.storage.useVersioning ` ) } }
q - item - label ( caption ) { { t ( ` admin.storage.useVersioningHint ` ) } }
q - item - label . text - deep - orange ( v - if = '!state.target.versioning.isSupported' , caption ) { { t ( ` admin.storage.versioningNotSupported ` ) } }
q - item - label . text - deep - orange ( v - if = 'state.target.versioning.isForceEnabled' , caption ) { { t ( ` admin.storage.versioningForceEnabled ` ) } }
q - item - section ( avatar )
q - toggle (
v - model = 'state.target.versioning.enabled'
: disable = '!state.target.versioning.isSupported || state.target.versioning.isForceEnabled'
color = 'primary'
checked - icon = 'las la-check'
unchecked - icon = 'las la-times'
: aria - label = 't(`admin.storage.useVersioning`)'
)
/ / - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
/ / - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
/ / - D E L I V E R Y P A T H S
/ / - D E L I V E R Y P A T H S
/ / - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
/ / - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
@ -705,6 +708,15 @@ const state = reactive({
const githubSetupForm = ref ( null )
const githubSetupForm = ref ( null )
/ / C O M P U T E D
const isSetupNeeded = computed ( ( ) => {
return state . target ? . setup ? . handler && state . target . setup . state !== 'configured'
} )
const isSetupCompleted = computed ( ( ) => {
return state . target ? . setup ? . handler && state . target . setup . state !== 'configured'
} )
/ / W A T C H E R S
/ / W A T C H E R S
watch ( ( ) => adminStore . currentSiteId , async ( newValue ) => {
watch ( ( ) => adminStore . currentSiteId , async ( newValue ) => {