Skip to content

Commit 91dfe3f

Browse files
committed
Merge develop into backpex-installer
2 parents 7f02fad + a513ff0 commit 91dfe3f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+1599
-768
lines changed

.github/workflows/ci.yml

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
- name: Checkout code
3434
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
3535

36-
- uses: erlef/setup-beam@8aa8a857c6be0daae6e97272bb299d5b942675a4 # v1.19.0
36+
- uses: erlef/setup-beam@e6d7c94229049569db56a7ad5a540c051a010af9 # v1.20.4
3737
with:
3838
otp-version: ${{ matrix.erlang }}
3939
elixir-version: ${{ matrix.elixir }}
@@ -109,7 +109,7 @@ jobs:
109109
- name: Checkout code
110110
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
111111

112-
- uses: erlef/setup-beam@8aa8a857c6be0daae6e97272bb299d5b942675a4 # v1.19.0
112+
- uses: erlef/setup-beam@e6d7c94229049569db56a7ad5a540c051a010af9 # v1.20.4
113113
id: beam
114114
with:
115115
version-file: .tool-versions
@@ -132,7 +132,7 @@ jobs:
132132

133133
services:
134134
postgres:
135-
image: postgres:16.9@sha256:64d54200dec0cb9d2d3e43f094e9aa47e7e6c8c246828a512969cccc39b5afb2
135+
image: postgres:16.9@sha256:918e8e72b35b5370901965ce3da5a355c3537cb5e10c38e82c2b6f174b758334
136136
env:
137137
POSTGRES_PASSWORD: postgres
138138
options: >-
@@ -148,7 +148,7 @@ jobs:
148148
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
149149

150150
- name: Setup beam
151-
uses: erlef/setup-beam@8aa8a857c6be0daae6e97272bb299d5b942675a4 # v1.19.0
151+
uses: erlef/setup-beam@e6d7c94229049569db56a7ad5a540c051a010af9 # v1.20.4
152152
id: beam
153153
with:
154154
version-file: .tool-versions
@@ -179,8 +179,7 @@ jobs:
179179
if: steps.restore-cache.outputs.cache-hit != 'true'
180180
working-directory: demo
181181
run: mix deps.get
182-
183-
182+
184183
- name: Compile dependencies
185184
if: steps.restore-cache.outputs.cache-hit != 'true'
186185
working-directory: demo
@@ -231,6 +230,20 @@ jobs:
231230
DB_DATABASE: test
232231
run: yarn test
233232

233+
- name: Install playwright
234+
working-directory: demo
235+
run: yarn playwright install chromium --with-deps --only-shell
236+
237+
- name: Run playwright test
238+
working-directory: demo
239+
env:
240+
DB_HOSTNAME: localhost
241+
DB_USERNAME: postgres
242+
DB_PASSWORD: postgres
243+
DB_DATABASE: test
244+
run: yarn test:playwright
245+
continue-on-error: true
246+
234247
- name: Deps audit
235248
working-directory: demo
236249
continue-on-error: true
@@ -252,7 +265,7 @@ jobs:
252265
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
253266

254267
- name: Set up Docker Buildx
255-
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
268+
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
256269

257270
- name: Log in to the container registry
258271
if: env.PUSH_IMAGE == 'true'

.tool-versions

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
erlang 27.3.3
2-
elixir 1.18.3
1+
erlang 28.0.2
2+
elixir 1.18.4

Dockerfile

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
########################################################################
44

55
# renovate: datasource=github-tags depName=elixir packageName=elixir-lang/elixir versioning=semver
6-
ARG ELIXIR_VERSION=1.18.3
6+
ARG ELIXIR_VERSION=1.18.4
77
# renovate: datasource=github-tags depName=erlang packageName=erlang/otp versioning=regex:^(?<major>\d+?)\.(?<minor>\d+?)(\.(?<patch>\d+))?$ extractVersion=^OTP-(?<version>\S+)
8-
ARG OTP_VERSION=27.3.3
8+
ARG OTP_VERSION=28.0.2
99
# renovate: datasource=docker depName=ubuntu packageName=ubuntu versioning=ubuntu
10-
ARG UBUNTU_VERSION=noble-20250404
10+
ARG UBUNTU_VERSION=noble-20250714
1111

1212
ARG BUILDER_IMAGE="hexpm/elixir:${ELIXIR_VERSION}-erlang-${OTP_VERSION}-ubuntu-${UBUNTU_VERSION}"
1313
ARG RUNTIME_IMAGE="ubuntu:${UBUNTU_VERSION}"
@@ -54,13 +54,16 @@ COPY demo/config/config.exs demo/config/${MIX_ENV}.exs config/
5454
RUN mix do deps.compile
5555

5656
COPY demo/priv priv/
57-
5857
COPY demo/package.json demo/yarn.lock demo/.stylelintrc.json ./
58+
5959
RUN yarn install --pure-lockfile
60+
6061
COPY demo/assets assets/
6162
COPY demo/lib lib/
63+
6264
COPY assets ../assets/
6365
COPY package.json ../
66+
6467
RUN mix assets.deploy
6568

6669
# Copy the rest of the application files

assets/js/hooks/_sidebar_sections.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,25 @@ export default {
1616
toggle.removeEventListener('click', this.handleToggle.bind(this))
1717
})
1818
},
19+
hasContent (element) {
20+
if (!element || element.children.length === 0) {
21+
return false
22+
}
23+
24+
for (const child of element.children) {
25+
const childContent = child.querySelector('[data-menu-dropdown-content]')
26+
27+
if (childContent) {
28+
if (this.hasContent(childContent)) {
29+
return true
30+
}
31+
} else {
32+
return true
33+
}
34+
}
35+
36+
return false
37+
},
1938
initializeSections () {
2039
const sections = this.el.querySelectorAll('[data-section-id]')
2140

@@ -24,6 +43,11 @@ export default {
2443
const toggle = section.querySelector('[data-menu-dropdown-toggle]')
2544
const content = section.querySelector('[data-menu-dropdown-content]')
2645

46+
if (!this.hasContent(content)) {
47+
content.style.display = 'none'
48+
return
49+
}
50+
2751
const isOpen = localStorage.getItem(`sidebar-section-${sectionId}`) === 'true'
2852
if (!isOpen) {
2953
toggle.classList.remove('menu-dropdown-show')

compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ services:
1818
postgres:
1919
condition: service_healthy
2020
postgres:
21-
image: postgres:16.8@sha256:fecda556831814abf7396c63883bd23a789ea131c4c38d175b9690775223db39
21+
image: postgres:16.9@sha256:918e8e72b35b5370901965ce3da5a355c3537cb5e10c38e82c2b6f174b758334
2222
environment:
2323
- POSTGRES_PASSWORD=postgres
2424
ports:

demo/.env.test

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
LOGGER_LEVEL=warning
22
PORT=4002
3+
URL_PORT=4002
34
MIX_ENV=test
45
SECRET_KEY_BASE=np5uHqUApBqAqesURR/sUlc0HJadx/4eBidnQ/w1bH/L1EiCdNlw1id9M/TrziRq
56
LIVE_VIEW_SIGNING_SALT=eYlXHghV/uji6ZNUhq+fb63bNVcps7CC

demo/config/config.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ config :demo, DemoWeb.Endpoint,
4343
config :demo, Demo.Repo, migration_primary_key: [name: :id, type: :binary_id]
4444

4545
config :esbuild,
46-
version: "0.25.5",
46+
version: "0.25.8",
4747
default: [
4848
args:
4949
~w(assets/js/app.js --bundle --target=es2017 --outdir=priv/static/assets --external:/fonts/* --external:/images/* --alias:backpex=/opt/app),
@@ -52,7 +52,7 @@ config :esbuild,
5252
]
5353

5454
config :tailwind,
55-
version: "4.1.7",
55+
version: "4.1.11",
5656
default: [
5757
args: ~w(
5858
--input=assets/css/app.css

demo/config/test.exs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,14 @@ config :demo, Demo.Repo, pool: Ecto.Adapters.SQL.Sandbox
66

77
config :phoenix, :plug_init_mode, :runtime
88

9-
config :phoenix_test, :endpoint, DemoWeb.Endpoint
9+
config :phoenix_test,
10+
endpoint: DemoWeb.Endpoint,
11+
otp_app: :demo,
12+
playwright: [
13+
cli: "node_modules/playwright/cli.js",
14+
browser: :chromium,
15+
browser_launch_timeout: 10_000,
16+
trace: System.get_env("PW_TRACE", "false") in ~w(t true)
17+
]
18+
19+
config :demo, DemoWeb.Endpoint, server: true

demo/lib/demo/ecto_factory.ex

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ defmodule Demo.EctoFactory do
55

66
alias Demo.Address
77
alias Demo.Category
8+
alias Demo.FilmReview
89
alias Demo.Post
910
alias Demo.Product
1011
alias Demo.ShortLink
@@ -23,16 +24,6 @@ defmodule Demo.EctoFactory do
2324
}
2425
end
2526

26-
def generate_social_links do
27-
labels =
28-
["Facebook", "LinkedIn", "Twitter", "YouTube", "TikTok", "Snapchat", "Instagram", "Pinterest"]
29-
|> Enum.shuffle()
30-
31-
for index <- 0..Enum.random(0..3) do
32-
%{label: Enum.at(labels, index), url: "https://example.com/"}
33-
end
34-
end
35-
3627
def category_factory do
3728
%Category{
3829
name: Faker.Team.name()
@@ -91,7 +82,24 @@ defmodule Demo.EctoFactory do
9182
}
9283
end
9384

85+
def film_review_factory do
86+
%FilmReview{
87+
title: Faker.Lorem.word(),
88+
overview: Faker.Lorem.paragraph()
89+
}
90+
end
91+
9492
defp boolean do
9593
Enum.random(0..1) == 1
9694
end
95+
96+
defp generate_social_links do
97+
labels =
98+
["Facebook", "LinkedIn", "Twitter", "YouTube", "TikTok", "Snapchat", "Instagram", "Pinterest"]
99+
|> Enum.shuffle()
100+
101+
for index <- 0..Enum.random(0..3) do
102+
%{label: Enum.at(labels, index), url: "https://example.com/"}
103+
end
104+
end
97105
end

demo/lib/demo/invoice.ex

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ defmodule Demo.Invoice do
22
@moduledoc false
33

44
use Ecto.Schema
5-
import Ecto.Changeset
65

76
@primary_key {:id, :binary_id, autogenerate: true}
87

@@ -15,19 +14,4 @@ defmodule Demo.Invoice do
1514

1615
timestamps()
1716
end
18-
19-
@required_fields ~w[company amount]a
20-
@optional_fields ~w[]a
21-
22-
def update_changeset(invoice, attrs, _metadata \\ []) do
23-
invoice
24-
|> cast(attrs, @required_fields ++ @optional_fields)
25-
|> validate_required(@required_fields)
26-
end
27-
28-
def create_changeset(invoice, attrs, _metadata \\ []) do
29-
invoice
30-
|> cast(attrs, @required_fields ++ @optional_fields)
31-
|> validate_required(@required_fields)
32-
end
3317
end

0 commit comments

Comments
 (0)