Merge pull request #337 from mikecao/dev

v1.2.0
This commit is contained in:
Mike Cao 2020-10-26 09:12:31 -07:00 committed by GitHub
commit 66b2588452
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 67 additions and 30 deletions

1
Procfile Normal file
View File

@ -0,0 +1 @@
web: npm run start-env

View File

@ -58,15 +58,19 @@ export default function AccountEditForm({ values, onSave, onClose }) {
<label htmlFor="username"> <label htmlFor="username">
<FormattedMessage id="label.username" defaultMessage="Username" /> <FormattedMessage id="label.username" defaultMessage="Username" />
</label> </label>
<Field name="username" type="text" /> <div>
<FormError name="username" /> <Field name="username" type="text" />
<FormError name="username" />
</div>
</FormRow> </FormRow>
<FormRow> <FormRow>
<label htmlFor="password"> <label htmlFor="password">
<FormattedMessage id="label.password" defaultMessage="Password" /> <FormattedMessage id="label.password" defaultMessage="Password" />
</label> </label>
<Field name="password" type="password" /> <div>
<FormError name="password" /> <Field name="password" type="password" />
<FormError name="password" />
</div>
</FormRow> </FormRow>
<FormButtons> <FormButtons>
<Button type="submit" variant="action"> <Button type="submit" variant="action">

View File

@ -66,22 +66,28 @@ export default function ChangePasswordForm({ values, onSave, onClose }) {
<label htmlFor="current_password"> <label htmlFor="current_password">
<FormattedMessage id="label.current-password" defaultMessage="Current password" /> <FormattedMessage id="label.current-password" defaultMessage="Current password" />
</label> </label>
<Field name="current_password" type="password" /> <div>
<FormError name="current_password" /> <Field name="current_password" type="password" />
<FormError name="current_password" />
</div>
</FormRow> </FormRow>
<FormRow> <FormRow>
<label htmlFor="new_password"> <label htmlFor="new_password">
<FormattedMessage id="label.new-password" defaultMessage="New password" /> <FormattedMessage id="label.new-password" defaultMessage="New password" />
</label> </label>
<Field name="new_password" type="password" /> <div>
<FormError name="new_password" /> <Field name="new_password" type="password" />
<FormError name="new_password" />
</div>
</FormRow> </FormRow>
<FormRow> <FormRow>
<label htmlFor="confirm_password"> <label htmlFor="confirm_password">
<FormattedMessage id="label.confirm-password" defaultMessage="Confirm password" /> <FormattedMessage id="label.confirm-password" defaultMessage="Confirm password" />
</label> </label>
<Field name="confirm_password" type="password" /> <div>
<FormError name="confirm_password" /> <Field name="confirm_password" type="password" />
<FormError name="confirm_password" />
</div>
</FormRow> </FormRow>
<FormButtons> <FormButtons>
<Button type="submit" variant="action"> <Button type="submit" variant="action">

View File

@ -73,8 +73,10 @@ export default function DeleteForm({ values, onSave, onClose }) {
/> />
</p> </p>
<FormRow> <FormRow>
<Field name="confirmation" type="text" /> <div>
<FormError name="confirmation" /> <Field name="confirmation" type="text" />
<FormError name="confirmation" />
</div>
</FormRow> </FormRow>
<FormButtons> <FormButtons>
<Button <Button

View File

@ -71,15 +71,19 @@ export default function LoginForm() {
<label htmlFor="username"> <label htmlFor="username">
<FormattedMessage id="label.username" defaultMessage="Username" /> <FormattedMessage id="label.username" defaultMessage="Username" />
</label> </label>
<Field name="username" type="text" /> <div>
<FormError name="username" /> <Field name="username" type="text" />
<FormError name="username" />
</div>
</FormRow> </FormRow>
<FormRow> <FormRow>
<label htmlFor="password"> <label htmlFor="password">
<FormattedMessage id="label.password" defaultMessage="Password" /> <FormattedMessage id="label.password" defaultMessage="Password" />
</label> </label>
<Field name="password" type="password" /> <div>
<FormError name="password" /> <Field name="password" type="password" />
<FormError name="password" />
</div>
</FormRow> </FormRow>
<FormButtons> <FormButtons>
<Button type="submit" variant="action"> <Button type="submit" variant="action">

View File

@ -63,15 +63,19 @@ export default function WebsiteEditForm({ values, onSave, onClose }) {
<label htmlFor="name"> <label htmlFor="name">
<FormattedMessage id="label.name" defaultMessage="Name" /> <FormattedMessage id="label.name" defaultMessage="Name" />
</label> </label>
<Field name="name" type="text" /> <div>
<FormError name="name" /> <Field name="name" type="text" />
<FormError name="name" />
</div>
</FormRow> </FormRow>
<FormRow> <FormRow>
<label htmlFor="domain"> <label htmlFor="domain">
<FormattedMessage id="label.domain" defaultMessage="Domain" /> <FormattedMessage id="label.domain" defaultMessage="Domain" />
</label> </label>
<Field name="domain" type="text" /> <div>
<FormError name="domain" /> <Field name="domain" type="text" />
<FormError name="domain" />
</div>
</FormRow> </FormRow>
<FormRow> <FormRow>
<label></label> <label></label>

View File

@ -17,6 +17,10 @@
line-height: 1.8; line-height: 1.8;
} }
.row > div {
position: relative;
}
.buttons { .buttons {
display: flex; display: flex;
justify-content: center; justify-content: center;
@ -33,9 +37,9 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
top: 0; top: 0;
left: 100%; left: calc(100% + 16px);
bottom: 0; bottom: 0;
margin-left: 16px; z-index: 1;
} }
.msg { .msg {
@ -68,3 +72,15 @@
color: var(--gray50); color: var(--gray50);
background: var(--gray800); background: var(--gray800);
} }
@media only screen and (max-width: 576px) {
.error {
align-items: flex-start;
top: calc(100% + 7px);
left: 0;
}
.error:after {
left: 10px;
}
}

View File

@ -1,5 +1,5 @@
.title { .title {
color: var(--gray-900); color: var(--gray900);
font-size: var(--font-size-large); font-size: var(--font-size-large);
line-height: var(--font-size-large); line-height: var(--font-size-large);
} }

View File

@ -3,8 +3,8 @@
"label.add-account": "Adicionar conta", "label.add-account": "Adicionar conta",
"label.add-website": "Adicionar website", "label.add-website": "Adicionar website",
"label.administrator": "Administrador", "label.administrator": "Administrador",
"label.all": "All", "label.all": "Todos",
"label.all-websites": "All websites", "label.all-websites": "Todos os websites",
"label.back": "Voltar", "label.back": "Voltar",
"label.cancel": "Cancelar", "label.cancel": "Cancelar",
"label.change-password": "Alterar palavra-passe", "label.change-password": "Alterar palavra-passe",
@ -37,8 +37,8 @@
"label.password": "Palavra-passe", "label.password": "Palavra-passe",
"label.passwords-dont-match": "Palavra-passes não correspondem", "label.passwords-dont-match": "Palavra-passes não correspondem",
"label.profile": "Perfil", "label.profile": "Perfil",
"label.realtime": "Realtime", "label.realtime": "Tempo real",
"label.realtime-logs": "Realtime logs", "label.realtime-logs": "Relatório em tempo real",
"label.refresh": "Atualizar", "label.refresh": "Atualizar",
"label.required": "Obrigatório", "label.required": "Obrigatório",
"label.reset": "Repor", "label.reset": "Repor",
@ -65,7 +65,7 @@
"message.get-tracking-code": "Obter código de tracking", "message.get-tracking-code": "Obter código de tracking",
"message.go-to-settings": "Ir para as definições", "message.go-to-settings": "Ir para as definições",
"message.incorrect-username-password": "Nome de utilizador/palavra-passe incorretos.", "message.incorrect-username-password": "Nome de utilizador/palavra-passe incorretos.",
"message.log.visitor": "Visitor from {country} using {browser} on {os} {device}", "message.log.visitor": "Visitante de {country} a usar {browser} no {device} {os}",
"message.new-version-available": "Uma nova versão de umami {version} está disponível!", "message.new-version-available": "Uma nova versão de umami {version} está disponível!",
"message.no-data-available": "Sem dados disponíveis.", "message.no-data-available": "Sem dados disponíveis.",
"message.no-websites-configured": "Não tens nenhum website configurado.", "message.no-websites-configured": "Não tens nenhum website configurado.",

View File

@ -1,6 +1,6 @@
{ {
"name": "umami", "name": "umami",
"version": "1.1.0", "version": "1.2.0",
"description": "A simple, fast, website analytics alternative to Google Analytics. ", "description": "A simple, fast, website analytics alternative to Google Analytics. ",
"author": "Mike Cao <mike@mikecao.com>", "author": "Mike Cao <mike@mikecao.com>",
"license": "MIT", "license": "MIT",

View File

@ -1,3 +1,3 @@
const cli = require('next/dist/cli/next-start'); const cli = require('next/dist/cli/next-start');
cli.nextStart(['-p', process.env.PORT || 3000, '-H', process.env.HOSTNAME || 'localhost']); cli.nextStart(['-p', process.env.PORT || 3000, '-H', process.env.HOSTNAME || '0.0.0.0']);