diff --git a/.changeset/tiny-kiwis-deny.md b/.changeset/tiny-kiwis-deny.md new file mode 100644 index 0000000000..372fbc8cec --- /dev/null +++ b/.changeset/tiny-kiwis-deny.md @@ -0,0 +1,6 @@ +--- +"@digdir/designsystemet-css": patch +"@digdir/designsystemet-web": patch +--- + +fix loading order for popover-polyfill diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f1f9d54f93..2920a5cd9c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -74,8 +74,10 @@ jobs: echo "No open PR found for branch $BRANCH, skipping comment." exit 0 fi + MARKER="" PUBLISHED_AT="$(TZ='Europe/Oslo' date '+%d.%m.%Y %H:%M:%S')" { + echo "$MARKER" echo "### 📦 Snapshot release published" echo echo "Published at \`$PUBLISHED_AT\` to npm with tag \`$TAG\`:" @@ -97,7 +99,17 @@ jobs: fi done } > comment.md - gh pr comment "$PR" --body-file comment.md + # Find an existing snapshot-release comment to update, otherwise create a new one + COMMENT_ID=$(gh api "repos/${GITHUB_REPOSITORY}/issues/${PR}/comments" --paginate \ + --jq "[.[] | select(.body | contains(\"$MARKER\"))] | last | .id // empty") + if [ -n "$COMMENT_ID" ]; then + echo "Updating existing comment $COMMENT_ID" + gh api --method PATCH "repos/${GITHUB_REPOSITORY}/issues/comments/${COMMENT_ID}" \ + -F body=@comment.md > /dev/null + else + echo "No existing comment found, creating a new one" + gh pr comment "$PR" --body-file comment.md + fi release: name: Release diff --git a/packages/css/src/index.css b/packages/css/src/index.css index 23fb4ab15d..51636f57fb 100644 --- a/packages/css/src/index.css +++ b/packages/css/src/index.css @@ -1,6 +1,6 @@ @charset "UTF-8"; -@layer ds.theme, ds.base, ds.components; +@layer popover-polyfill, ds.theme, ds.base, ds.components; /** Import order defines ordinal specificity for layers */ @import url('./base.css') layer(ds.base); diff --git a/packages/web/src/invokers/invokers.ts b/packages/web/src/invokers/invokers.ts index 725345c1a6..95958548ec 100644 --- a/packages/web/src/invokers/invokers.ts +++ b/packages/web/src/invokers/invokers.ts @@ -1,4 +1,8 @@ -import { isSupported, apply as polyfillInvokers } from 'invokers-polyfill/fn'; +import { + isPolyfilled, + isSupported, + apply as polyfillInvokers, +} from 'invokers-polyfill/fn'; import { isBrowser } from '../utils/utils'; -if (isBrowser() && !isSupported()) polyfillInvokers(); // Ensure invoker commands polyfill is loaded in browser environment only +if (isBrowser() && !isSupported() && !isPolyfilled()) polyfillInvokers(); // Ensure invoker commands polyfill is loaded in browser environment only diff --git a/packages/web/src/popover/popover.ts b/packages/web/src/popover/popover.ts index 4c14f6bb41..6aea6a700f 100644 --- a/packages/web/src/popover/popover.ts +++ b/packages/web/src/popover/popover.ts @@ -9,6 +9,7 @@ import { size, } from '@floating-ui/dom'; import { + isPolyfilled, isSupported, apply as polyfillPopover, } from '@oddbird/popover-polyfill/fn'; @@ -21,7 +22,8 @@ import { QUICK_EVENT, } from '../utils/utils'; -if (isBrowser() && !isSupported()) polyfillPopover(); // Ensure popover polyfill is loaded in browser environment only +if (isBrowser() && !isSupported() && !isPolyfilled()) + on(window, 'load', polyfillPopover); // Ensure popover polyfill is loaded in browser environment after CSS is loaded to ensure correct order of CSS layers. declare global { interface GlobalEventHandlersEventMap {