diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 04c65b072..9512cfa58 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -107,6 +107,45 @@ jobs: packages/solara-vuetify-app/dist packages/solara-vuetify3-app/dist + - name: Publish dev wheels to object storage + if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository + env: + AWS_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_SECRET_ACCESS_KEY }} + AWS_REGION: nbg1 + AWS_ENDPOINT_URL_S3: https://nbg1.your-objectstorage.com + S3_BUCKET: ipyvue3-packages + run: | + python -m pip install --upgrade awscli + + aws s3 cp dist/ "s3://${S3_BUCKET}/packages/solara/" \ + --recursive \ + --exclude "*" \ + --include "*.whl" \ + --endpoint-url "$AWS_ENDPOINT_URL_S3" \ + --region "$AWS_REGION" + + aws s3 cp packages/solara-meta/dist/ "s3://${S3_BUCKET}/packages/solara-meta/" \ + --recursive \ + --exclude "*" \ + --include "*.whl" \ + --endpoint-url "$AWS_ENDPOINT_URL_S3" \ + --region "$AWS_REGION" + + aws s3 cp packages/solara-server/dist/ "s3://${S3_BUCKET}/packages/solara-server/" \ + --recursive \ + --exclude "*" \ + --include "*.whl" \ + --endpoint-url "$AWS_ENDPOINT_URL_S3" \ + --region "$AWS_REGION" + + aws s3 cp packages/pytest-ipywidgets/dist/ "s3://${S3_BUCKET}/packages/pytest-ipywidgets/" \ + --recursive \ + --exclude "*" \ + --include "*.whl" \ + --endpoint-url "$AWS_ENDPOINT_URL_S3" \ + --region "$AWS_REGION" + code-quality: runs-on: ubuntu-latest strategy: diff --git a/packages/pytest-ipywidgets/pyproject.toml b/packages/pytest-ipywidgets/pyproject.toml index 13921e329..748a6d645 100644 --- a/packages/pytest-ipywidgets/pyproject.toml +++ b/packages/pytest-ipywidgets/pyproject.toml @@ -19,7 +19,7 @@ dependencies = [ "playwright", "pytest-playwright", "pillow", - "pixelmatch", + "pixelmatch==0.3.0", ] [project.urls] diff --git a/pyproject.toml b/pyproject.toml index 5636b9ddd..acccd17bb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,8 +17,8 @@ packages = [ dependencies = [ "reacton>=1.9", "ipywidgets>=7.7", - "ipyvuetify>=1.6.10", - "ipyvue>=1.9.0", +# "ipyvuetify>=1.6.10", +# "ipyvue>=1.9.0", "requests", "humanize", ] diff --git a/solara/components/file_list_widget.vue b/solara/components/file_list_widget.vue index 47c430102..c932a63a9 100644 --- a/solara/components/file_list_widget.vue +++ b/solara/components/file_list_widget.vue @@ -10,17 +10,16 @@ :key="name + '|' + is_file" @click.stop="clicked = { name, is_file }" @dblclick="double_clicked = { name, is_file }" - :class="(clicked && clicked.name == name) ? 'solara-file-list-selected': ''" + :class="['solara-file-list-item', (clicked && clicked.name == name) ? 'solara-file-list-selected': '']" > - - {{ name === '..' ? 'mdi-keyboard-backspace' : is_file ? 'mdi-file-document' : 'mdi-folder' }} - - - +
+
+ {{ name === '..' ? 'mdi-keyboard-backspace' : is_file ? 'mdi-file-document' : 'mdi-folder' }} +
{{ name }} - {{ size }} - +
@@ -60,19 +59,31 @@ module.exports = { } -.solara-file-list .v-list-item__icon, -.solara-file-list .v-list-item__list { - margin-top: 0; - margin-bottom: 0; +.solara-file-list .solara-file-list-row { + align-items: center; + display: flex; + min-height: 28px; + width: 100%; } -.v-application--is-ltr .solara-file-list .v-list-item__icon { +.solara-file-list .solara-file-list-icon { + align-items: center; + display: flex; + flex: 0 0 32px; + justify-content: center; margin-right: 8px; } +.solara-file-list .solara-file-list-item.v-list-item, .solara-file-list .v-list-item { height: 28px; min-height: 0; - padding-left: 0; + padding: 0; + padding-inline-end: 0; + padding-inline-start: 0; +} + +.solara-file-list .v-list-item-title { + line-height: 28px; } diff --git a/solara/server/static/main-vuetify.js b/solara/server/static/main-vuetify.js index d4bce7148..4ee292be2 100644 --- a/solara/server/static/main-vuetify.js +++ b/solara/server/static/main-vuetify.js @@ -115,6 +115,9 @@ async function solaraInit(mountId, appName) { console.log('solara init', mountId, appName); define("vue", [], () => Vue); define("vuetify", [], () => Vuetify); + if (typeof vuetifyPlugin !== "undefined") { + define("solara-vuetify-plugin", [], () => ({ vuetifyPlugin })); + } cookies = getCookiesMap(document.cookie); const searchParams = new URLSearchParams(window.location.search); let kernelId = searchParams.get('kernelid') || generateUuid()