Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
- name: Setup node.js
uses: actions/setup-node@v4
with:
node-version: 18
node-version: 20
- name: Setup yarn
run: npm install -g yarn
- name: Install dependencies
Expand All @@ -41,7 +41,7 @@ jobs:
- name: Setup node.js
uses: actions/setup-node@v4
with:
node-version: 18
node-version: 20
- name: Setup yarn
run: npm install -g yarn
- name: Install dependencies
Expand Down Expand Up @@ -102,7 +102,7 @@ jobs:
- name: Setup node.js
uses: actions/setup-node@v4
with:
node-version: 18
node-version: 20
- name: Setup yarn
run: npm install -g yarn
- name: Install dependencies
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Ember Bootstrap works and is fully [tested](https://github.com/kaliber5/ember-bo
* Ember CLI 4.8 or above
* Bootstrap 3-5
* all modern evergreen browsers (Chrome, Firefox, Safari, Edge)
* node.js 18+
* node.js 20+
* FastBoot 4.0+
* Embroider: we strive (and test) for maximum compatibility with Embroider, including the most aggressive setting
(`staticComponents`) for tree shaking and code splitting. However as Embroider itself is still considered beta software,
Expand Down
12 changes: 6 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@
"lodash": "^4.18.1",
"testem": "~3.18.0",
"@embroider/addon-shim": "1.10.2",
"pkg-entry-points": "1.1.1",
"ember-a11y-testing/ember-auto-import": "^2.10.0",
"@babel/plugin-transform-modules-systemjs": "^7.29.4",
"browserslist": "^4.28.7",
Expand All @@ -66,13 +65,14 @@
"markdown-it": "^14.3.3",
"lodash.template": "^4.18.1",
"ansi-html": "0.0.9",
"mocha/js-yaml": "^4.3.2"
"mocha/js-yaml": "^4.3.2",
"@embroider/macros": "~1.20.7"
},
"dependencies": {
"@babel/core": "^7.29.0",
"@ember/render-modifiers": "^2.1.0",
"@embroider/macros": "^1.8.3",
"@embroider/util": "^1.13.3",
"@embroider/macros": ">=1.19.7 <1.21.0",
"@embroider/util": "Gaurav0/embroider-util#v1.13.5-scf.1",
"broccoli-debug": "^0.6.3",
"broccoli-funnel": "^3.0.6",
"broccoli-merge-trees": "^4.2.0",
Expand All @@ -84,7 +84,7 @@
"ember-cli-version-checker": "^5.1.2",
"ember-concurrency": "^2.1.2",
"ember-decorators": "^6.1.0",
"ember-element-helper": "^0.7.1",
"ember-element-helper": "^0.8.7",
"ember-focus-trap": "^1.0.0",
"ember-on-helper": "^0.1.0",
"ember-popper-modifier": "^3.0.0",
Expand Down Expand Up @@ -169,7 +169,7 @@
"ember-source": ">=4.8.0"
},
"engines": {
"node": ">= 18"
"node": ">= 20"
},
"publishConfig": {
"registry": "https://registry.npmjs.org"
Expand Down
67 changes: 66 additions & 1 deletion tests/integration/components/bs-modal-test.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Component from '@ember/component';
import Component, { setComponentTemplate } from '@ember/component';
import GlimmerComponent from '@glimmer/component';
import { module } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render, click, find, triggerEvent, settled, waitFor, waitUntil } from '@ember/test-helpers';
Expand Down Expand Up @@ -106,6 +107,70 @@ module('Integration | Component | bs-modal', function (hooks) {
assert.ok(submitAction.calledOnce, 'submit action has been called.');
});

module('custom components', function (hooks) {
hooks.beforeEach(function () {
this.CustomHeader = setComponentTemplate(
hbs`<div class="modal-header custom-header"><button type="button" class="custom-close" {{on "click" @onClose}}>Close</button></div>`,
class extends GlimmerComponent {}
);
this.CustomBody = setComponentTemplate(
hbs`<div class="modal-body custom-body">{{yield}}</div>`,
class extends GlimmerComponent {}
);
this.hide = sinon.spy();
});

test('it renders a curried @headerComponent and passes onClose', async function (assert) {
this.owner.register('component:test-component', this.CustomHeader);

await render(hbs`
<BsModal @headerComponent={{component "test-component"}} @onHide={{this.hide}} as |modal|>
<modal.header />
<modal.body>Hello world!</modal.body>
</BsModal>
`);

assert.dom('.modal .custom-header').exists({ count: 1 }, 'custom header is rendered');
await click('.modal .custom-close');
assert.ok(this.hide.calledOnce, 'onHide has been called');
});

test('it renders a component class passed as @headerComponent and passes onClose', async function (assert) {
await render(hbs`
<BsModal @headerComponent={{this.CustomHeader}} @onHide={{this.hide}} as |modal|>
<modal.header />
<modal.body>Hello world!</modal.body>
</BsModal>
`);

assert.dom('.modal .custom-header').exists({ count: 1 }, 'custom header is rendered');
await click('.modal .custom-close');
assert.ok(this.hide.calledOnce, 'onHide has been called');
});

test('it renders a curried @bodyComponent', async function (assert) {
this.owner.register('component:test-component', this.CustomBody);

await render(hbs`
<BsModal @bodyComponent={{component "test-component"}} as |modal|>
<modal.body>Hello world!</modal.body>
</BsModal>
`);

assert.dom('.modal .custom-body').hasText('Hello world!', 'custom body is rendered');
});

test('it renders a component class passed as @bodyComponent', async function (assert) {
await render(hbs`
<BsModal @bodyComponent={{this.CustomBody}} as |modal|>
<modal.body>Hello world!</modal.body>
</BsModal>
`);

assert.dom('.modal .custom-body').hasText('Hello world!', 'custom body is rendered');
});
});

test('Modal has accesibility attributes with custom title', async function (assert) {
await render(hbs`
<BsModal as |modal|>
Expand Down
107 changes: 32 additions & 75 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1044,7 +1044,7 @@
ember-cli-version-checker "^5.1.2"
semver "^7.3.5"

"@embroider/addon-shim@1.10.2", "@embroider/addon-shim@1.8.3", "@embroider/addon-shim@^1.0.0", "@embroider/addon-shim@^1.8.7":
"@embroider/addon-shim@1.10.2", "@embroider/addon-shim@^1.0.0", "@embroider/addon-shim@^1.8.3", "@embroider/addon-shim@^1.8.7":
version "1.10.2"
resolved "https://registry.yarnpkg.com/@embroider/addon-shim/-/addon-shim-1.10.2.tgz#5164c65de0fd242422594c2f94b3c5eab4ab8e36"
integrity sha512-EfI9cJ5/3QSUJtwm7x1MXrx3TEa2p7RNgSHefy7fvGm8/DP1xUFL25nST1NaHbHcqR1UhMlrTtv5iUIDoVzeQQ==
Expand All @@ -1054,29 +1054,15 @@
common-ancestor-path "^1.0.1"
semver "^7.3.8"

"@embroider/macros@^1.0.0", "@embroider/macros@^1.10.0", "@embroider/macros@^1.8.3":
version "1.18.0"
resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-1.18.0.tgz#d79c4474667559ac9baf903e8fb89f1b00a0c45a"
integrity sha512-KanP80XxNK4bmQ1HKTcUjy/cdCt9n7knPMLK1vzHdOFymACHo+GbhgUjXjYdOCuBTv+ZwcjL2P2XDmBcYS9r8g==
"@embroider/macros@>=1.19.7 <1.21.0", "@embroider/macros@^1.0.0", "@embroider/macros@^1.10.0", "@embroider/macros@~1.16.0", "@embroider/macros@~1.20.7":
version "1.20.7"
resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-1.20.7.tgz#70a56727b45903c5c1243026f411bd30844a0bd0"
integrity sha512-B9KJuqeODyad6rWYFK4yKKKSR9H2OsClMzHREmEx94FrwA9/PS37ebTHWeuzLKspas7UclpYE8sBmxSbi/pWig==
dependencies:
"@embroider/shared-internals" "3.0.0"
"@embroider/shared-internals" "3.2.0"
assert-never "^1.2.1"
babel-import-util "^3.0.1"
ember-cli-babel "^7.26.6"
find-up "^5.0.0"
lodash "^4.17.21"
resolve "^1.20.0"
semver "^7.3.2"

"@embroider/macros@~1.16.0":
version "1.16.13"
resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-1.16.13.tgz#3647839de7154400115e0b874bbf5aed9312a7a8"
integrity sha512-2oGZh0m1byBYQFWEa8b2cvHJB2LzaF3DdMCLCqcRAccABMROt1G3sultnNCT30NhfdGWMEsJOT3Jm4nFxXmTRw==
dependencies:
"@embroider/shared-internals" "2.9.0"
assert-never "^1.2.1"
babel-import-util "^2.0.0"
ember-cli-babel "^7.26.6"
ember-cli-babel "^7.26.6 || ^8.3.1"
find-up "^5.0.0"
lodash "^4.17.21"
resolve "^1.20.0"
Expand All @@ -1090,28 +1076,10 @@
mem "^8.0.0"
resolve.exports "^2.0.2"

"@embroider/shared-internals@2.9.0":
version "2.9.0"
resolved "https://registry.yarnpkg.com/@embroider/shared-internals/-/shared-internals-2.9.0.tgz#5d945b92e08db163de60d82f7c388e2b7260f0cc"
integrity sha512-8untWEvGy6av/oYibqZWMz/yB+LHsKxEOoUZiLvcpFwWj2Sipc0DcXeTJQZQZ++otNkLCWyDrDhOLrOkgjOPSg==
dependencies:
babel-import-util "^2.0.0"
debug "^4.3.2"
ember-rfc176-data "^0.3.17"
fs-extra "^9.1.0"
is-subdir "^1.2.0"
js-string-escape "^1.0.1"
lodash "^4.17.21"
minimatch "^3.0.4"
pkg-entry-points "^1.1.0"
resolve-package-path "^4.0.1"
semver "^7.3.5"
typescript-memoize "^1.0.1"

"@embroider/shared-internals@3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@embroider/shared-internals/-/shared-internals-3.0.0.tgz#98251e6b99d36d64120361a449569ef5384b3812"
integrity sha512-5J5ipUMCAinQS38WW7wedruq5Z4VnHvNo+ZgOduw0PtI9w0CQWx7/HE+98PBDW8jclikeF+aHwF317vc1hwuzg==
"@embroider/shared-internals@3.2.0", "@embroider/shared-internals@^3.0.1":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@embroider/shared-internals/-/shared-internals-3.2.0.tgz#2379a2f320a72289bde72005dce0835359396f6a"
integrity sha512-TzLZnwfhhrNkdTVGGyysovvciFCwyxEgMbzF9AZMzNbFlXirhocQSpGjy9V4AQArklu4wDFRYqqe5GMKULGIkw==
dependencies:
babel-import-util "^3.0.1"
debug "^4.3.2"
Expand All @@ -1121,7 +1089,7 @@
js-string-escape "^1.0.1"
lodash "^4.17.21"
minimatch "^3.0.4"
pkg-entry-points "^1.1.0"
pkg-entry-points "^1.1.1"
resolve-package-path "^4.0.1"
resolve.exports "^2.0.2"
semver "^7.3.5"
Expand All @@ -1145,25 +1113,6 @@
semver "^7.3.5"
typescript-memoize "^1.0.1"

"@embroider/shared-internals@^3.0.1":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@embroider/shared-internals/-/shared-internals-3.2.0.tgz#2379a2f320a72289bde72005dce0835359396f6a"
integrity sha512-TzLZnwfhhrNkdTVGGyysovvciFCwyxEgMbzF9AZMzNbFlXirhocQSpGjy9V4AQArklu4wDFRYqqe5GMKULGIkw==
dependencies:
babel-import-util "^3.0.1"
debug "^4.3.2"
ember-rfc176-data "^0.3.17"
fs-extra "^9.1.0"
is-subdir "^1.2.0"
js-string-escape "^1.0.1"
lodash "^4.17.21"
minimatch "^3.0.4"
pkg-entry-points "^1.1.1"
resolve-package-path "^4.0.1"
resolve.exports "^2.0.2"
semver "^7.3.5"
typescript-memoize "^1.0.1"

"@embroider/test-setup@^3.0.2":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@embroider/test-setup/-/test-setup-3.0.3.tgz#938f36db1578ad70f357a09ef4ebd16fca0434f9"
Expand All @@ -1172,7 +1121,16 @@
lodash "^4.17.21"
resolve "^1.20.0"

"@embroider/util@^0.39.1 || ^0.40.0 || ^0.41.0 || ^1.0.0", "@embroider/util@^1.13.3", "@embroider/util@^1.9.0":
"@embroider/util@Gaurav0/embroider-util#v1.13.5-scf.1":
version "1.13.5"
resolved "https://codeload.github.com/Gaurav0/embroider-util/tar.gz/87b98c66c11a25949ca9076b5bd1c64960e1d0b6"
dependencies:
"@babel/core" "^7.29.0"
"@embroider/macros" ">=1.19.7 <1.21.0"
broccoli-funnel "^3.0.5"
ember-cli-babel "^8.3.2"

"@embroider/util@^1.9.0":
version "1.13.3"
resolved "https://registry.yarnpkg.com/@embroider/util/-/util-1.13.3.tgz#ac6a12f54097173167a9a1189a49ea6cd5b45755"
integrity sha512-fb9S137zZqSI1IeWpGKVJ+WZHsRiIrD9D2A4aVwVH0dZeBKDg6lMaMN2MiXJ/ldUAG3DUFxnClnpiG5m2g3JFA==
Expand Down Expand Up @@ -4594,7 +4552,7 @@ ember-cli-babel@^7.1.3, ember-cli-babel@^7.10.0, ember-cli-babel@^7.13.0, ember-
rimraf "^3.0.1"
semver "^5.5.0"

ember-cli-babel@^8.3.2:
"ember-cli-babel@^7.26.6 || ^8.3.1", ember-cli-babel@^8.3.2:
version "8.3.2"
resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-8.3.2.tgz#e34944c104a280a3dcc7f1e3c136bdfb483901f7"
integrity sha512-Thvqx+jwGYhimYbkkL0gwhwMlhghTIR3uQ9R0yNaTjBIttZIfSWJ/2W40kaJlwhnsElXq7zbFjZcff22p6nzCg==
Expand Down Expand Up @@ -5100,13 +5058,12 @@ ember-destroyable-polyfill@^2.0.1, ember-destroyable-polyfill@^2.0.2, ember-dest
ember-cli-version-checker "^5.1.1"
ember-compatibility-helpers "^1.2.1"

ember-element-helper@^0.7.1:
version "0.7.1"
resolved "https://registry.yarnpkg.com/ember-element-helper/-/ember-element-helper-0.7.1.tgz#dcbfc6a07ed9d7c9e071df84845ba7b3de8892e8"
integrity sha512-vpD/ZVXU3MCbW/oKw/Wg2z3H/KHYIiO9ej28By1POnN+HVw4sHHJVStxgVoztiK1P43JoGRpyoJvMB986xrGSw==
ember-element-helper@^0.8.7:
version "0.8.8"
resolved "https://registry.yarnpkg.com/ember-element-helper/-/ember-element-helper-0.8.8.tgz#b7cb5a6450ec00ae6bc4974a5f6d7224aced8f35"
integrity sha512-3slTltQV5ke53t3YVP2GYoswsQ6y+lhuVzKmt09tbEx91DapG8I/xa8W5OA0StvcQlavL3/vHrz/vCQEFs8bBA==
dependencies:
"@embroider/addon-shim" "1.8.3"
"@embroider/util" "^0.39.1 || ^0.40.0 || ^0.41.0 || ^1.0.0"
"@embroider/addon-shim" "^1.8.3"

ember-focus-trap@^1.0.0:
version "1.1.1"
Expand Down Expand Up @@ -9581,10 +9538,10 @@ pkg-dir@^5.0.0:
dependencies:
find-up "^5.0.0"

pkg-entry-points@1.1.1, pkg-entry-points@^1.1.0, pkg-entry-points@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/pkg-entry-points/-/pkg-entry-points-1.1.1.tgz#d5cd87f934e873bf73143ed1d0baf637e5f8fda4"
integrity sha512-BhZa7iaPmB4b3vKIACoppyUoYn8/sFs17VJJtzrzPZvEnN2nqrgg911tdL65lA2m1ml6UI3iPeYbZQ4VXpn1mA==
pkg-entry-points@^1.1.0, pkg-entry-points@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/pkg-entry-points/-/pkg-entry-points-1.1.2.tgz#82f259db7db02e0d1bebfb1b6610fb4983952f66"
integrity sha512-bmmM+SdLXNNetFr4o53QiiZRZicls2apmzj8HRpo4bU+3nJHiPO/omv8TXHIOzTcirua3YBAwTlKE+7zkICh4g==

pkg-up@^2.0.0:
version "2.0.0"
Expand Down
Loading