Skip to content

Commit ecf2c4f

Browse files
authored
support Ember Bootstrap after <BsForm::element> is refactored to @glimmer/component (#34)
1 parent daaa0e8 commit ecf2c4f

File tree

4 files changed

+1915
-190
lines changed

4 files changed

+1915
-190
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ further details.
1010
Compatibility
1111
------------------------------------------------------------------------------
1212

13-
* Ember Bootstrap v3
13+
* Ember Bootstrap v4.5 or above
1414
* Ember Changeset and Ember Changeset Validations v3
1515
* Ember.js v3.16 or above
1616
* Ember CLI v2.13 or above

addon/components/bs-form/element.js

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,15 @@
11
import BsFormElement from 'ember-bootstrap/components/bs-form/element';
22
import { action, get } from '@ember/object';
3-
import { dependentKeyCompat } from '@ember/object/compat';
43
import { isNone, typeOf } from '@ember/utils';
54

65
export default class BsFormElementWithChangesetValidationsSupport extends BsFormElement {
76
'__ember-bootstrap_subclass' = true;
87

9-
// We convert
10-
//
11-
// `model.error.${this.property}.validation` which could be either a string or an array
12-
// see https://github.com/validated-changeset/validated-changeset/#error
13-
//
14-
// into
15-
//
16-
// Ember Bootstrap expects errors property of FormElement to be an array of validation messages:
17-
// see https://www.ember-bootstrap.com/api/classes/Components.FormElement.html#property_errors
18-
//
19-
// If the if the property is valid but no validation is present `model.error.[this.property] could also be undefined.
20-
@dependentKeyCompat
218
get errors() {
22-
let errors = get(this, `model.error.${this.property}.validation`);
9+
let { model, property } = this.args;
10+
11+
// must use `get` method to support nested properties
12+
let errors = get(model, `error.${property}.validation`);
2313

2414
// no messages
2515
if (isNone(errors)) {
@@ -36,7 +26,7 @@ export default class BsFormElementWithChangesetValidationsSupport extends BsForm
3626
}
3727

3828
get hasValidator() {
39-
return typeof this.model?.validate === 'function';
29+
return typeof this.args.model?.validate === 'function';
4030
}
4131

4232
// Ember Changeset does not validate the initial state. Properties are not
@@ -71,10 +61,10 @@ export default class BsFormElementWithChangesetValidationsSupport extends BsForm
7161

7262
// run initial validation if
7363
// - visibility of validations changed
74-
let canValidate = this.hasValidator && this.property;
64+
let canValidate = this.hasValidator && this.args.property;
7565
let validationVisibilityChanged = !validationShowBefore && this.showOwnValidation;
7666
if (canValidate && validationVisibilityChanged) {
77-
await this.model.validate(this.property);
67+
await this.args.model.validate(this.args.property);
7868
}
7969
}
8070
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"bootstrap": "^4.3.1",
4141
"broccoli-asset-rev": "^3.0.0",
4242
"ember-auto-import": "^1.5.3",
43-
"ember-bootstrap": "^3.1.1",
43+
"ember-bootstrap": "^4.5.0",
4444
"ember-cli": "~3.16.0",
4545
"ember-cli-dependency-checker": "^3.2.0",
4646
"ember-cli-eslint": "^5.1.0",

0 commit comments

Comments
 (0)