@agorapulse/ui-components 18.0.35 → 18.0.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -47,7 +47,7 @@ export class NavSelectorMerger {
47
47
  }
48
48
  static mergeLeaf(newLeaf, oldLeaf) {
49
49
  if (this.isInternalLeafLogicValid(newLeaf)) {
50
- newLeaf.viewMoreDisplayable = oldLeaf.viewMoreDisplayable;
50
+ newLeaf.viewMoreDisplayable = newLeaf.details.length > newLeaf.viewMoreDetailsDisplayedLimit;
51
51
  newLeaf.viewMoreDisplayed = oldLeaf.viewMoreDisplayed;
52
52
  newLeaf.displayCounter = oldLeaf.displayCounter;
53
53
  newLeaf.folded = oldLeaf.folded;
@@ -73,4 +73,4 @@ export class NavSelectorMerger {
73
73
  return !leaf.disabled && !leaf.displayTokenInvalid && !leaf.displayFeatureLocked;
74
74
  }
75
75
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLm1lcmdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3Ivc3JjL3V0aWxzL25hdi1zZWxlY3Rvci5tZXJnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFLSCxnQ0FBZ0MsRUFDaEMsK0JBQStCLEVBQy9CLCtCQUErQixHQUNsQyxNQUFNLGlCQUFpQixDQUFDO0FBRXpCOzs7R0FHRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFDMUI7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLCtCQUErQixDQUN6QyxVQUFzQyxFQUN0QyxVQUFzQztRQUV0QyxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXJELEtBQUssTUFBTSxRQUFRLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsU0FBUztZQUNiLENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQWtDLEVBQUUsUUFBa0M7UUFDdkYsSUFBSSwrQkFBK0IsQ0FBQyxRQUFRLENBQUMsSUFBSSwrQkFBK0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3pGLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxJQUFJLCtCQUErQixDQUFDLFFBQVEsQ0FBQyxJQUFJLCtCQUEr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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzb2NpYXRlQnkgfSBmcm9tICcuLi8vdXRpbHMvbGVhZi51dGlscyc7XG5pbXBvcnQge1xuICAgIEludGVybmFsTmF2U2VsZWN0b3JDYXRlZ29yeSxcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnksXG4gICAgSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwLFxuICAgIEludGVybmFsTmF2U2VsZWN0b3JMZWFmLFxuICAgIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUdyb3VwLFxuICAgIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYsXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTm9kZSxcbn0gZnJvbSAnLi4vbmF2LXNlbGVjdG9yJztcblxuLyoqXG4gKiBOYXZTZWxlY3Rvck1lcmdlciBpcyBhIHV0aWxpdHkgY2xhc3MgdGhhdCBtZXJnZXMgb2xkIGVudHJpZXMgaW50byBuZXcgZW50cmllcy5cbiAqIEl0IGlzIHVzZWQgdG8ga2VlcCBzb21lIHByZXZpb3VzIHByb3BlcnRpZXMgb2YgdGhlIHByZXZpb3VzIHN0YXRlLiBFeDogZm9sZGVkLCBzZWxlY3RlZCwgZm9jdXNlZCwgZXRjLlxuICovXG5leHBvcnQgY2xhc3MgTmF2U2VsZWN0b3JNZXJnZXIge1xuICAgIC8qKlxuICAgICAqIE1lcmdlcyB0aGUgb2xkIGVudHJpZXMgaW50byB0aGUgbmV3IGVudHJpZXMuXG4gICAgICpcbiAgICAgKiBNb2RpZnkgZGlyZWN0bHkgdGhlIG5ldyBlbnRyaWVzIGFzIG5ldyBlbnRyaWVzIGFyZSBnZW5lcmF0ZWQgZnJvbSBzY3JhdGNoIHNvIG5vIG5lZWQgdG8gZGVzdHJ1Y3R1cmUgdGhlbSB0byBoYXZlIGEgbmV3IHJlZmVyZW5jZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdFbnRyaWVzXG4gICAgICogQHBhcmFtIG9sZEVudHJpZXNcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSBuZXcgZW50cmllcyB3aXRoIHRoZSBvbGQgZW50cmllcyBtZXJnZWQgaW50byB0aGVtXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBtZXJnZUludGVybmFsTmF2U2VsZWN0b3JFbnRyaWVzKFxuICAgICAgICBuZXdFbnRyaWVzOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSxcbiAgICAgICAgb2xkRW50cmllczogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W11cbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSB7XG4gICAgICAgIGNvbnN0IG9sZEVudHJ5QnlVaWQgPSBhc3NvY2lhdGVCeShvbGRFbnRyaWVzLCAndWlkJyk7XG5cbiAgICAgICAgZm9yIChjb25zdCBuZXdFbnRyeSBvZiBuZXdFbnRyaWVzKSB7XG4gICAgICAgICAgICBpZiAoIW9sZEVudHJ5QnlVaWRbbmV3RW50cnkudWlkXSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5tZXJnZShuZXdFbnRyeSwgb2xkRW50cnlCeVVpZFtuZXdFbnRyeS51aWRdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXdFbnRyaWVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIG1lcmdlKG5ld0VudHJ5OiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnksIG9sZEVudHJ5OiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkpIHtcbiAgICAgICAgaWYgKGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYobmV3RW50cnkpICYmIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYob2xkRW50cnkpKSB7XG4gICAgICAgICAgICB0aGlzLm1lcmdlTGVhZihuZXdFbnRyeSwgb2xkRW50cnkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QU5vZGUobmV3RW50cnkpICYmIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QU5vZGUob2xkRW50cnkpKSB7XG4gICAgICAgICAgICB0aGlzLm1lcmdlSW50ZXJuYWxOYXZTZWxlY3RvckVudHJpZXMobmV3RW50cnkuY2hpbGRyZW4sIG9sZEVudHJ5LmNoaWxkcmVuKTtcbiAgICAgICAgICAgIHRoaXMubWVyZ2VOb2RlKG5ld0VudHJ5LCBvbGRFbnRyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBtZXJnZU5vZGUoXG4gICAgICAgIG5ld05vZGU6IEludGVybmFsTmF2U2VsZWN0b3JHcm91cCB8IEludGVybmFsTmF2U2VsZWN0b3JDYXRlZ29yeSxcbiAgICAgICAgb2xkTm9kZTogSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwIHwgSW50ZXJuYWxOYXZTZWxlY3RvckNhdGVnb3J5XG4gICAgKSB7XG4gICAgICAgIG5ld05vZGUuZm9sZGVkID0gb2xkTm9kZS5mb2xkZWQ7XG4gICAgICAgIG5ld05vZGUuYWNjZXNzaWJpbGl0eS50YWJJbmRleCA9IG9sZE5vZGUuYWNjZXNzaWJpbGl0eS50YWJJbmRleDtcblxuICAgICAgICBpZiAoaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBR3JvdXAobmV3Tm9kZSkgJiYgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBR3JvdXAob2xkTm9kZSkpIHtcbiAgICAgICAgICAgIHRoaXMubWVyZ2VHcm91cChuZXdOb2RlLCBvbGROb2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIG1lcmdlR3JvdXAobmV3R3JvdXA6IEludGVybmFsTmF2U2VsZWN0b3JHcm91cCwgb2xkR3JvdXA6IEludGVybmFsTmF2U2VsZWN0b3JHcm91cCkge1xuICAgICAgICBuZXdHcm91cC5kaXNwbGF5Q291bnRlciA9IG9sZEdyb3VwLmRpc3BsYXlDb3VudGVyO1xuICAgICAgICBuZXdHcm91cC5kaXNwbGF5VG9rZW5JbnZhbGlkID0gb2xkR3JvdXAuZGlzcGxheVRva2VuSW52YWxpZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBtZXJnZUxlYWYobmV3TGVhZjogSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYsIG9sZExlYWY6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmKSB7XG4gICAgICAgIGlmICh0aGlzLmlzSW50ZXJuYWxMZWFmTG9naWNWYWxpZChuZXdMZWFmKSkge1xuICAgICAgICAgICAgbmV3TGVhZi52aWV3TW9yZURpc3BsYXlhYmxlID0gb2xkTGVhZi52aWV3TW9yZURpc3BsYXlhYmxlO1xuICAgICAgICAgICAgbmV3TGVhZi52aWV3TW9yZURpc3BsYXllZCA9IG9sZExlYWYudmlld01vcmVEaXNwbGF5ZWQ7XG5cbiAgICAgICAgICAgIG5ld0xlYWYuZGlzcGxheUNvdW50ZXIgPSBvbGRMZWFmLmRpc3BsYXlDb3VudGVyO1xuICAgICAgICAgICAgbmV3TGVhZi5mb2xkZWQgPSBvbGRMZWFmLmZvbGRlZDtcbiAgICAgICAgICAgIG5ld0xlYWYuc2VsZWN0ZWQgPSBvbGRMZWFmLnNlbGVjdGVkO1xuXG4gICAgICAgICAgICBuZXdMZWFmLmFjY2Vzc2liaWxpdHkudGFiSW5kZXggPSBvbGRMZWFmLmFjY2Vzc2liaWxpdHkudGFiSW5kZXg7XG5cbiAgICAgICAgICAgIGNvbnN0IG9sZERldGFpbEJ5VUlkID0gYXNzb2NpYXRlQnkob2xkTGVhZi5kZXRhaWxzLCAndWlkJyk7XG4gICAgICAgICAgICBuZXdMZWFmLmRldGFpbHMuZm9yRWFjaChuZXdEZXRhaWwgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghb2xkRGV0YWlsQnlVSWRbbmV3RGV0YWlsLnVpZF0gfHwgbmV3RGV0YWlsLmVycm9yUmVhc29uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3RGV0YWlsLnNlbGVjdGVkID0gb2xkRGV0YWlsQnlVSWRbbmV3RGV0YWlsLnVpZF0uc2VsZWN0ZWQ7XG4gICAgICAgICAgICAgICAgbmV3RGV0YWlsLmFjY2Vzc2liaWxpdHkudGFiSW5kZXggPSBvbGREZXRhaWxCeVVJZFtuZXdEZXRhaWwudWlkXS5hY2Nlc3NpYmlsaXR5LnRhYkluZGV4O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBvbGREZXRhaWxIYXNGb2N1c2VkID0gb2xkTGVhZi5kZXRhaWxzLnNvbWUob2xkRGV0YWlsID0+IG9sZERldGFpbC5hY2Nlc3NpYmlsaXR5LnRhYkluZGV4ID09PSAwKTtcbiAgICAgICAgICAgIGlmIChvbGREZXRhaWxIYXNGb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgbmV3TGVhZi5hY2Nlc3NpYmlsaXR5LnRhYkluZGV4ID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzSW50ZXJuYWxMZWFmTG9naWNWYWxpZChsZWFmOiBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIWxlYWYuZGlzYWJsZWQgJiYgIWxlYWYuZGlzcGxheVRva2VuSW52YWxpZCAmJiAhbGVhZi5kaXNwbGF5RmVhdHVyZUxvY2tlZDtcbiAgICB9XG59XG4iXX0=
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLm1lcmdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3Ivc3JjL3V0aWxzL25hdi1zZWxlY3Rvci5tZXJnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFLSCxnQ0FBZ0MsRUFDaEMsK0JBQStCLEVBQy9CLCtCQUErQixHQUNsQyxNQUFNLGlCQUFpQixDQUFDO0FBRXpCOzs7R0FHRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFDMUI7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLCtCQUErQixDQUN6QyxVQUFzQyxFQUN0QyxVQUFzQztRQUV0QyxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXJELEtBQUssTUFBTSxRQUFRLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsU0FBUztZQUNiLENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQWtDLEVBQUUsUUFBa0M7UUFDdkYsSUFBSSwrQkFBK0IsQ0FBQyxRQUFRLENBQUMsSUFBSSwrQkFBK0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3pGLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxJQUFJLCtCQUErQixDQUFDLFFBQVEsQ0FBQyxJQUFJLCtCQUEr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QUMsb0JBQW9CLENBQUM7SUFDckYsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzb2NpYXRlQnkgfSBmcm9tICcuLi8vdXRpbHMvbGVhZi51dGlscyc7XG5pbXBvcnQge1xuICAgIEludGVybmFsTmF2U2VsZWN0b3JDYXRlZ29yeSxcbiAgICBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnksXG4gICAgSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwLFxuICAgIEludGVybmFsTmF2U2VsZWN0b3JMZWFmLFxuICAgIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUdyb3VwLFxuICAgIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYsXG4gICAgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTm9kZSxcbn0gZnJvbSAnLi4vbmF2LXNlbGVjdG9yJztcblxuLyoqXG4gKiBOYXZTZWxlY3Rvck1lcmdlciBpcyBhIHV0aWxpdHkgY2xhc3MgdGhhdCBtZXJnZXMgb2xkIGVudHJpZXMgaW50byBuZXcgZW50cmllcy5cbiAqIEl0IGlzIHVzZWQgdG8ga2VlcCBzb21lIHByZXZpb3VzIHByb3BlcnRpZXMgb2YgdGhlIHByZXZpb3VzIHN0YXRlLiBFeDogZm9sZGVkLCBzZWxlY3RlZCwgZm9jdXNlZCwgZXRjLlxuICovXG5leHBvcnQgY2xhc3MgTmF2U2VsZWN0b3JNZXJnZXIge1xuICAgIC8qKlxuICAgICAqIE1lcmdlcyB0aGUgb2xkIGVudHJpZXMgaW50byB0aGUgbmV3IGVudHJpZXMuXG4gICAgICpcbiAgICAgKiBNb2RpZnkgZGlyZWN0bHkgdGhlIG5ldyBlbnRyaWVzIGFzIG5ldyBlbnRyaWVzIGFyZSBnZW5lcmF0ZWQgZnJvbSBzY3JhdGNoIHNvIG5vIG5lZWQgdG8gZGVzdHJ1Y3R1cmUgdGhlbSB0byBoYXZlIGEgbmV3IHJlZmVyZW5jZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdFbnRyaWVzXG4gICAgICogQHBhcmFtIG9sZEVudHJpZXNcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSBuZXcgZW50cmllcyB3aXRoIHRoZSBvbGQgZW50cmllcyBtZXJnZWQgaW50byB0aGVtXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBtZXJnZUludGVybmFsTmF2U2VsZWN0b3JFbnRyaWVzKFxuICAgICAgICBuZXdFbnRyaWVzOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSxcbiAgICAgICAgb2xkRW50cmllczogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5W11cbiAgICApOiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlbXSB7XG4gICAgICAgIGNvbnN0IG9sZEVudHJ5QnlVaWQgPSBhc3NvY2lhdGVCeShvbGRFbnRyaWVzLCAndWlkJyk7XG5cbiAgICAgICAgZm9yIChjb25zdCBuZXdFbnRyeSBvZiBuZXdFbnRyaWVzKSB7XG4gICAgICAgICAgICBpZiAoIW9sZEVudHJ5QnlVaWRbbmV3RW50cnkudWlkXSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5tZXJnZShuZXdFbnRyeSwgb2xkRW50cnlCeVVpZFtuZXdFbnRyeS51aWRdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXdFbnRyaWVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIG1lcmdlKG5ld0VudHJ5OiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnksIG9sZEVudHJ5OiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkpIHtcbiAgICAgICAgaWYgKGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYobmV3RW50cnkpICYmIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYob2xkRW50cnkpKSB7XG4gICAgICAgICAgICB0aGlzLm1lcmdlTGVhZihuZXdFbnRyeSwgb2xkRW50cnkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QU5vZGUobmV3RW50cnkpICYmIGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QU5vZGUob2xkRW50cnkpKSB7XG4gICAgICAgICAgICB0aGlzLm1lcmdlSW50ZXJuYWxOYXZTZWxlY3RvckVudHJpZXMobmV3RW50cnkuY2hpbGRyZW4sIG9sZEVudHJ5LmNoaWxkcmVuKTtcbiAgICAgICAgICAgIHRoaXMubWVyZ2VOb2RlKG5ld0VudHJ5LCBvbGRFbnRyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBtZXJnZU5vZGUoXG4gICAgICAgIG5ld05vZGU6IEludGVybmFsTmF2U2VsZWN0b3JHcm91cCB8IEludGVybmFsTmF2U2VsZWN0b3JDYXRlZ29yeSxcbiAgICAgICAgb2xkTm9kZTogSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwIHwgSW50ZXJuYWxOYXZTZWxlY3RvckNhdGVnb3J5XG4gICAgKSB7XG4gICAgICAgIG5ld05vZGUuZm9sZGVkID0gb2xkTm9kZS5mb2xkZWQ7XG4gICAgICAgIG5ld05vZGUuYWNjZXNzaWJpbGl0eS50YWJJbmRleCA9IG9sZE5vZGUuYWNjZXNzaWJpbGl0eS50YWJJbmRleDtcblxuICAgICAgICBpZiAoaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBR3JvdXAobmV3Tm9kZSkgJiYgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBR3JvdXAob2xkTm9kZSkpIHtcbiAgICAgICAgICAgIHRoaXMubWVyZ2VHcm91cChuZXdOb2RlLCBvbGROb2RlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIG1lcmdlR3JvdXAobmV3R3JvdXA6IEludGVybmFsTmF2U2VsZWN0b3JHcm91cCwgb2xkR3JvdXA6IEludGVybmFsTmF2U2VsZWN0b3JHcm91cCkge1xuICAgICAgICBuZXdHcm91cC5kaXNwbGF5Q291bnRlciA9IG9sZEdyb3VwLmRpc3BsYXlDb3VudGVyO1xuICAgICAgICBuZXdHcm91cC5kaXNwbGF5VG9rZW5JbnZhbGlkID0gb2xkR3JvdXAuZGlzcGxheVRva2VuSW52YWxpZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBtZXJnZUxlYWYobmV3TGVhZjogSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYsIG9sZExlYWY6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmKSB7XG4gICAgICAgIGlmICh0aGlzLmlzSW50ZXJuYWxMZWFmTG9naWNWYWxpZChuZXdMZWFmKSkge1xuICAgICAgICAgICAgbmV3TGVhZi52aWV3TW9yZURpc3BsYXlhYmxlID0gbmV3TGVhZi5kZXRhaWxzLmxlbmd0aCA+IG5ld0xlYWYudmlld01vcmVEZXRhaWxzRGlzcGxheWVkTGltaXQ7XG4gICAgICAgICAgICBuZXdMZWFmLnZpZXdNb3JlRGlzcGxheWVkID0gb2xkTGVhZi52aWV3TW9yZURpc3BsYXllZDtcblxuICAgICAgICAgICAgbmV3TGVhZi5kaXNwbGF5Q291bnRlciA9IG9sZExlYWYuZGlzcGxheUNvdW50ZXI7XG4gICAgICAgICAgICBuZXdMZWFmLmZvbGRlZCA9IG9sZExlYWYuZm9sZGVkO1xuICAgICAgICAgICAgbmV3TGVhZi5zZWxlY3RlZCA9IG9sZExlYWYuc2VsZWN0ZWQ7XG5cbiAgICAgICAgICAgIG5ld0xlYWYuYWNjZXNzaWJpbGl0eS50YWJJbmRleCA9IG9sZExlYWYuYWNjZXNzaWJpbGl0eS50YWJJbmRleDtcblxuICAgICAgICAgICAgY29uc3Qgb2xkRGV0YWlsQnlVSWQgPSBhc3NvY2lhdGVCeShvbGRMZWFmLmRldGFpbHMsICd1aWQnKTtcbiAgICAgICAgICAgIG5ld0xlYWYuZGV0YWlscy5mb3JFYWNoKG5ld0RldGFpbCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFvbGREZXRhaWxCeVVJZFtuZXdEZXRhaWwudWlkXSB8fCBuZXdEZXRhaWwuZXJyb3JSZWFzb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuZXdEZXRhaWwuc2VsZWN0ZWQgPSBvbGREZXRhaWxCeVVJZFtuZXdEZXRhaWwudWlkXS5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICBuZXdEZXRhaWwuYWNjZXNzaWJpbGl0eS50YWJJbmRleCA9IG9sZERldGFpbEJ5VUlkW25ld0RldGFpbC51aWRdLmFjY2Vzc2liaWxpdHkudGFiSW5kZXg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG9sZERldGFpbEhhc0ZvY3VzZWQgPSBvbGRMZWFmLmRldGFpbHMuc29tZShvbGREZXRhaWwgPT4gb2xkRGV0YWlsLmFjY2Vzc2liaWxpdHkudGFiSW5kZXggPT09IDApO1xuICAgICAgICAgICAgaWYgKG9sZERldGFpbEhhc0ZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICBuZXdMZWFmLmFjY2Vzc2liaWxpdHkudGFiSW5kZXggPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNJbnRlcm5hbExlYWZMb2dpY1ZhbGlkKGxlYWY6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhbGVhZi5kaXNhYmxlZCAmJiAhbGVhZi5kaXNwbGF5VG9rZW5JbnZhbGlkICYmICFsZWFmLmRpc3BsYXlGZWF0dXJlTG9ja2VkO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { HostListener, Directive, inject, ElementRef, ChangeDetectorRef, Input, EventEmitter, Output, forwardRef, Attribute } from '@angular/core';
3
- import { NG_VALIDATORS } from '@angular/forms';
2
+ import { HostListener, Directive, inject, ElementRef, ChangeDetectorRef, forwardRef, Renderer2, ViewContainerRef, EventEmitter, booleanAttribute, Output, Input, Attribute } from '@angular/core';
3
+ import { SymbolRegistry, apCheck, SymbolComponent } from '@agorapulse/ui-symbol';
4
+ import { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
4
5
  import DOMPurify from 'dompurify';
5
6
 
6
7
  /**
@@ -91,6 +92,444 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
91
92
  }]
92
93
  }] });
93
94
 
95
+ const AP_CHECKBOX_DIRECTIVE_CONTROL_VALUE_ACCESSOR = {
96
+ provide: NG_VALUE_ACCESSOR,
97
+ useExisting: forwardRef(() => CheckboxDirective),
98
+ multi: true,
99
+ };
100
+ /*
101
+ Host bindings is important here:
102
+ - This provides encapsulation and reactivity regardless of how the directive is used in templates.
103
+ - It guarantees that properties like checked, disabled, required, and ARIA attributes always reflect
104
+ only the directive's logic, not just consumer bindings.
105
+ - So we need to have host bindings for all the properties that we want to control.
106
+ - We could also use @HostListener.
107
+ */
108
+ class CheckboxDirective {
109
+ symbolRegistry = inject(SymbolRegistry);
110
+ elementRef = inject((ElementRef));
111
+ renderer = inject(Renderer2);
112
+ viewContainer = inject(ViewContainerRef);
113
+ ariaLabel;
114
+ ariaLabelledby;
115
+ ariaDescribedby;
116
+ disabled = false;
117
+ set indeterminate(indeterminate) {
118
+ if (indeterminate) {
119
+ this._checked = false;
120
+ }
121
+ this._indeterminate = indeterminate;
122
+ const input = this.elementRef.nativeElement;
123
+ if (input) {
124
+ input.indeterminate = indeterminate;
125
+ }
126
+ // Only update visibility if containers are ready
127
+ if (this.checkmarkContainer && this.indeterminateContainer) {
128
+ this.updateCheckmarkVisibility();
129
+ }
130
+ }
131
+ get indeterminate() {
132
+ return this._indeterminate;
133
+ }
134
+ set checked(checked) {
135
+ this._checked = checked;
136
+ // Only update visibility if containers are ready
137
+ if (this.checkmarkContainer && this.indeterminateContainer) {
138
+ this.updateCheckmarkVisibility();
139
+ }
140
+ }
141
+ get checked() {
142
+ return this._checked;
143
+ }
144
+ required = false;
145
+ set name(name) {
146
+ this._name = name;
147
+ }
148
+ get name() {
149
+ return this._name;
150
+ }
151
+ // eslint-disable-next-line @angular-eslint/no-output-native
152
+ change = new EventEmitter();
153
+ _checked = false;
154
+ _indeterminate = false;
155
+ _name = '';
156
+ _controlValueAccessorChangeFn = () => { };
157
+ _onTouched = () => { };
158
+ listeners = [];
159
+ styleElement;
160
+ wrapper;
161
+ checkmarkContainer;
162
+ indeterminateContainer;
163
+ symbolComponent;
164
+ ngOnInit() {
165
+ this.symbolRegistry.registerSymbols([apCheck]);
166
+ this.createCheckboxStructure();
167
+ this.setupEventListeners();
168
+ }
169
+ ngOnDestroy() {
170
+ this.listeners.forEach(unlisten => unlisten());
171
+ if (this.styleElement && this.styleElement.parentNode) {
172
+ this.styleElement.parentNode.removeChild(this.styleElement);
173
+ }
174
+ if (this.symbolComponent) {
175
+ this.symbolComponent.destroy();
176
+ }
177
+ if (this.checkmarkContainer && this.checkmarkContainer.parentNode) {
178
+ this.checkmarkContainer.parentNode.removeChild(this.checkmarkContainer);
179
+ }
180
+ if (this.indeterminateContainer && this.indeterminateContainer.parentNode) {
181
+ this.indeterminateContainer.parentNode.removeChild(this.indeterminateContainer);
182
+ }
183
+ // Move input back out of wrapper and remove wrapper
184
+ if (this.wrapper && this.wrapper.parentNode) {
185
+ const input = this.elementRef.nativeElement;
186
+ this.renderer.insertBefore(this.wrapper.parentNode, input, this.wrapper);
187
+ this.wrapper.parentNode.removeChild(this.wrapper);
188
+ }
189
+ }
190
+ createCheckboxStructure() {
191
+ const input = this.elementRef.nativeElement;
192
+ const parent = input.parentElement;
193
+ // Hot take - Input doesn't need positioning since it will be wrapped
194
+ // Make input's parent use inline-flex for alignment
195
+ if (parent) {
196
+ this.renderer.setStyle(parent, 'display', 'inline-flex');
197
+ this.renderer.setStyle(parent, 'align-items', 'center');
198
+ this.renderer.setStyle(parent, 'gap', 'var(--ref-spacing-xxs)');
199
+ }
200
+ this.renderer.addClass(input, 'ap-checkbox-styled');
201
+ this.checkmarkContainer = this.createOverlayContainer('ap-checkbox-checkmark');
202
+ this.wrapper = this.renderer.createElement('span');
203
+ this.renderer.setStyle(this.wrapper, 'position', 'relative');
204
+ this.renderer.setStyle(this.wrapper, 'display', 'inline-flex');
205
+ this.renderer.setStyle(this.wrapper, 'align-items', 'center');
206
+ this.renderer.setStyle(this.wrapper, 'vertical-align', 'middle');
207
+ this.renderer.insertBefore(parent, this.wrapper, input);
208
+ this.renderer.appendChild(this.wrapper, input);
209
+ this.renderer.appendChild(this.wrapper, this.checkmarkContainer);
210
+ this.indeterminateContainer = this.createOverlayContainer('ap-checkbox-indeterminate');
211
+ this.renderer.appendChild(this.wrapper, this.indeterminateContainer);
212
+ this.createCheckmarkSymbol();
213
+ this.createIndeterminateBar();
214
+ this.applyCheckboxStyles();
215
+ this.updateCheckmarkVisibility();
216
+ }
217
+ createOverlayContainer(className) {
218
+ const container = this.renderer.createElement('span');
219
+ this.renderer.addClass(container, className);
220
+ this.renderer.setStyle(container, 'position', 'absolute');
221
+ this.renderer.setStyle(container, 'top', '50%');
222
+ this.renderer.setStyle(container, 'left', '50%');
223
+ this.renderer.setStyle(container, 'transform', 'translate(-50%, -50%)');
224
+ this.renderer.setStyle(container, 'width', 'auto');
225
+ this.renderer.setStyle(container, 'height', 'auto');
226
+ this.renderer.setStyle(container, 'display', 'flex');
227
+ this.renderer.setStyle(container, 'justify-content', 'center');
228
+ this.renderer.setStyle(container, 'align-items', 'center');
229
+ this.renderer.setStyle(container, 'pointer-events', 'none');
230
+ this.renderer.setStyle(container, 'opacity', '0');
231
+ this.renderer.setStyle(container, 'z-index', '1');
232
+ return container;
233
+ }
234
+ createCheckmarkSymbol() {
235
+ // Create the symbol component
236
+ this.symbolComponent = this.viewContainer.createComponent(SymbolComponent);
237
+ // Set inputs using setInput method for signal-based inputs
238
+ this.symbolComponent.setInput('symbolId', 'check');
239
+ this.symbolComponent.setInput('color', 'white');
240
+ this.symbolComponent.setInput('size', 10);
241
+ // Append the symbol to our checkmark container
242
+ this.renderer.appendChild(this.checkmarkContainer, this.symbolComponent.location.nativeElement);
243
+ }
244
+ createIndeterminateBar() {
245
+ // Create the indeterminate bar element exactly like the component
246
+ const bar = this.renderer.createElement('span');
247
+ this.renderer.setStyle(bar, 'height', '1.5px');
248
+ this.renderer.setStyle(bar, 'background', 'var(--ref-color-white)');
249
+ this.renderer.setStyle(bar, 'width', '8px');
250
+ // Append the bar to the indeterminate container
251
+ this.renderer.appendChild(this.indeterminateContainer, bar);
252
+ }
253
+ updateCheckmarkVisibility() {
254
+ if (this.checkmarkContainer) {
255
+ const opacity = this._checked && !this._indeterminate ? '1' : '0';
256
+ this.renderer.setStyle(this.checkmarkContainer, 'opacity', opacity);
257
+ }
258
+ if (this.indeterminateContainer) {
259
+ const opacity = this._indeterminate && !this._checked ? '1' : '0';
260
+ this.renderer.setStyle(this.indeterminateContainer, 'opacity', opacity);
261
+ }
262
+ }
263
+ setupEventListeners() {
264
+ const input = this.elementRef.nativeElement;
265
+ // Input change listener (native checkbox change)
266
+ const changeListener = this.renderer.listen(input, 'change', () => {
267
+ this.onValueChange();
268
+ });
269
+ this.listeners.push(changeListener);
270
+ // Listen for label clicks to ensure focus is maintained
271
+ const parent = input.parentElement;
272
+ if (parent) {
273
+ const labelClickListener = this.renderer.listen(parent, 'click', (event) => {
274
+ const target = event.target;
275
+ // If clicking on a label that targets our input, ensure focus
276
+ if (target.tagName === 'LABEL' && target.getAttribute('for') === this.name) {
277
+ // Small delay to ensure the label click is processed first
278
+ setTimeout(() => {
279
+ input.focus();
280
+ }, 0);
281
+ }
282
+ });
283
+ this.listeners.push(labelClickListener);
284
+ }
285
+ }
286
+ applyCheckboxStyles() {
287
+ // Style the input directly without moving DOM elements
288
+ const styles = `
289
+ /* Complete reset and custom styling for our checkbox */
290
+ input[type="checkbox"].ap-checkbox-styled {
291
+ /* Targeted reset of problematic properties */
292
+ appearance: none !important;
293
+ -webkit-appearance: none !important;
294
+ -moz-appearance: none !important;
295
+
296
+ /* Our custom styling - use !important to override any global styles */
297
+ display: inline-block !important;
298
+ width: 16px !important;
299
+ height: 16px !important;
300
+ min-width: 16px !important;
301
+ min-height: 16px !important;
302
+ margin: 0 !important;
303
+ padding: 0 !important;
304
+ border: 1px solid var(--ref-color-grey-60);
305
+ border-radius: var(--sys-border-radius-sm);
306
+ background: var(--ref-color-white);
307
+ background-color: var(--ref-color-white);
308
+ box-sizing: border-box;
309
+ position: relative;
310
+ cursor: pointer;
311
+ vertical-align: middle;
312
+
313
+ /* Ensure no other styles can interfere */
314
+ box-shadow: none;
315
+ text-decoration: none;
316
+ font: inherit;
317
+ color: inherit;
318
+ letter-spacing: normal;
319
+ word-spacing: normal;
320
+ text-transform: none;
321
+ text-indent: 0;
322
+ text-shadow: none;
323
+ text-align: start;
324
+ }
325
+
326
+ /* Hover state */
327
+ input[type="checkbox"].ap-checkbox-styled:hover {
328
+ border-color: var(--ref-color-grey-80);
329
+ }
330
+
331
+ /* Active/pressed state */
332
+ input[type="checkbox"].ap-checkbox-styled:active {
333
+ border-color: var(--ref-color-grey-100);
334
+ }
335
+
336
+ /* Checked state */
337
+ input[type="checkbox"].ap-checkbox-styled:checked {
338
+ background: var(--ref-color-electric-blue-100);
339
+ border-color: var(--ref-color-electric-blue-100);
340
+ }
341
+
342
+ /* Checked hover state */
343
+ input[type="checkbox"].ap-checkbox-styled:checked:hover {
344
+ background: var(--ref-color-electric-blue-80);
345
+ border-color: var(--ref-color-electric-blue-100);
346
+ }
347
+
348
+ /* Checked active/pressed state */
349
+ input[type="checkbox"].ap-checkbox-styled:checked:active {
350
+ background: var(--ref-color-electric-blue-60);
351
+ border-color: var(--ref-color-electric-blue-100);
352
+ }
353
+
354
+ /* Indeterminate state */
355
+ input[type="checkbox"].ap-checkbox-styled:indeterminate {
356
+ background: var(--ref-color-electric-blue-100);
357
+ border-color: var(--ref-color-electric-blue-100);
358
+ }
359
+
360
+ /* Disabled state */
361
+ input[type="checkbox"].ap-checkbox-styled:disabled {
362
+ border-color: var(--ref-color-grey-20);
363
+ background: var(--ref-color-grey-10);
364
+ cursor: default;
365
+ }
366
+
367
+ input[type="checkbox"].ap-checkbox-styled:disabled:checked {
368
+ background: var(--ref-color-grey-20);
369
+ }
370
+
371
+ /* Focus state - only show on hover-capable devices like the component */
372
+ @media (hover: hover) {
373
+ input[type="checkbox"].ap-checkbox-styled:focus:not(.disabled) {
374
+ outline: 3px solid var(--ref-color-electric-blue-100) !important;
375
+ outline-offset: 1px !important;
376
+ }
377
+ }
378
+
379
+ /* Label styling - targets labels that follow our wrapper containing styled checkboxes */
380
+ span:has(input[type="checkbox"].ap-checkbox-styled) + label {
381
+ display: flex;
382
+ align-items: center;
383
+ font-family: var(--comp-forms-label-font-family);
384
+ font-size: var(--comp-forms-label-size);
385
+ font-weight: var(--comp-forms-label-font-weight);
386
+ line-height: var(--comp-forms-label-line-height);
387
+ color: var(--comp-forms-label-text-color);
388
+ }
389
+
390
+ /* Empty label styling */
391
+ span:has(input[type="checkbox"].ap-checkbox-styled) + label:empty {
392
+ display: none;
393
+ }
394
+
395
+ /* Disabled label styling */
396
+ span:has(input[type="checkbox"].ap-checkbox-styled:disabled) + label {
397
+ color: var(--ref-color-grey-60);
398
+ }
399
+
400
+ /* Label hover styling */
401
+ span:has(input[type="checkbox"].ap-checkbox-styled) + label:hover:not(.disabled) {
402
+ cursor: pointer;
403
+ }
404
+
405
+ /* Disabled label hover */
406
+ span:has(input[type="checkbox"].ap-checkbox-styled:disabled) + label:hover {
407
+ cursor: default;
408
+ }
409
+ `;
410
+ // Create and append style element
411
+ this.styleElement = this.renderer.createElement('style');
412
+ this.renderer.appendChild(this.styleElement, this.renderer.createText(styles));
413
+ this.renderer.appendChild(document.head, this.styleElement);
414
+ }
415
+ onBlur() {
416
+ this._onTouched();
417
+ }
418
+ onValueChange() {
419
+ if (!this.disabled) {
420
+ const input = this.elementRef.nativeElement;
421
+ if (this._indeterminate) {
422
+ // When indeterminate, clicking should go to checked state
423
+ this._checked = true;
424
+ this._indeterminate = false;
425
+ input.checked = true;
426
+ input.indeterminate = false;
427
+ }
428
+ else {
429
+ // Normal toggle behavior
430
+ this._checked = input.checked;
431
+ }
432
+ this.updateCheckmarkVisibility();
433
+ this.change.emit(this._checked);
434
+ this._controlValueAccessorChangeFn(this._checked);
435
+ }
436
+ }
437
+ // ControlValueAccessor implementation
438
+ writeValue(value) {
439
+ this._checked = value;
440
+ const input = this.elementRef.nativeElement;
441
+ input.checked = value;
442
+ // Ensure indeterminate state is properly set
443
+ input.indeterminate = this._indeterminate;
444
+ this.updateCheckmarkVisibility();
445
+ }
446
+ registerOnChange(fn) {
447
+ this._controlValueAccessorChangeFn = fn;
448
+ }
449
+ registerOnTouched(fn) {
450
+ this._onTouched = fn;
451
+ }
452
+ setDisabledState(isDisabled) {
453
+ this.disabled = isDisabled;
454
+ const input = this.elementRef.nativeElement;
455
+ input.disabled = isDisabled;
456
+ }
457
+ validate() {
458
+ const isNotValid = !this._checked && this.required;
459
+ return (isNotValid && {
460
+ invalid: true,
461
+ });
462
+ }
463
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CheckboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
464
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.9", type: CheckboxDirective, isStandalone: true, selector: "input[type=\"checkbox\"][apCheckbox]", inputs: { ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], ariaDescribedby: ["aria-describedby", "ariaDescribedby"], disabled: ["disabled", "disabled", booleanAttribute], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], checked: "checked", required: ["required", "required", booleanAttribute], name: "name" }, outputs: { change: "change" }, host: { listeners: { "blur": "onBlur()" }, properties: { "disabled": "disabled", "required": "required", "checked": "checked", "attr.aria-label": "ariaLabel", "attr.aria-labelledby": "ariaLabelledby", "attr.aria-describedby": "ariaDescribedby", "attr.data-test": "name", "id": "name" } }, providers: [
465
+ AP_CHECKBOX_DIRECTIVE_CONTROL_VALUE_ACCESSOR,
466
+ {
467
+ provide: NG_VALIDATORS,
468
+ useExisting: CheckboxDirective,
469
+ multi: true,
470
+ },
471
+ ], ngImport: i0 });
472
+ }
473
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CheckboxDirective, decorators: [{
474
+ type: Directive,
475
+ args: [{
476
+ selector: 'input[type="checkbox"][apCheckbox]',
477
+ standalone: true,
478
+ providers: [
479
+ AP_CHECKBOX_DIRECTIVE_CONTROL_VALUE_ACCESSOR,
480
+ {
481
+ provide: NG_VALIDATORS,
482
+ useExisting: CheckboxDirective,
483
+ multi: true,
484
+ },
485
+ ],
486
+ host: {
487
+ '(blur)': 'onBlur()',
488
+ '[disabled]': 'disabled',
489
+ '[required]': 'required',
490
+ '[checked]': 'checked',
491
+ '[attr.aria-label]': 'ariaLabel',
492
+ '[attr.aria-labelledby]': 'ariaLabelledby',
493
+ '[attr.aria-describedby]': 'ariaDescribedby',
494
+ '[attr.data-test]': 'name',
495
+ '[id]': 'name',
496
+ },
497
+ }]
498
+ }], propDecorators: { ariaLabel: [{
499
+ type: Input,
500
+ args: ['aria-label']
501
+ }], ariaLabelledby: [{
502
+ type: Input,
503
+ args: ['aria-labelledby']
504
+ }], ariaDescribedby: [{
505
+ type: Input,
506
+ args: ['aria-describedby']
507
+ }], disabled: [{
508
+ type: Input,
509
+ args: [{
510
+ transform: booleanAttribute,
511
+ }]
512
+ }], indeterminate: [{
513
+ type: Input,
514
+ args: [{
515
+ transform: booleanAttribute,
516
+ }]
517
+ }], checked: [{
518
+ type: Input
519
+ }], required: [{
520
+ type: Input,
521
+ args: [{
522
+ transform: booleanAttribute,
523
+ }]
524
+ }], name: [{
525
+ type: Input,
526
+ args: [{
527
+ required: true,
528
+ }]
529
+ }], change: [{
530
+ type: Output
531
+ }] } });
532
+
94
533
  class DefaultImageDirective {
95
534
  src = '';
96
535
  default = '';
@@ -469,5 +908,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
469
908
  * Generated bundle index. Do not edit.
470
909
  */
471
910
 
472
- export { AutosizeTextareaDirective, BaseButtonDirective, DefaultImageDirective, EllipsisDirective, EqualValidatorDirective, FrozenGifDirective, GifService, MultiStyleTextDirective };
911
+ export { AP_CHECKBOX_DIRECTIVE_CONTROL_VALUE_ACCESSOR, AutosizeTextareaDirective, BaseButtonDirective, CheckboxDirective, DefaultImageDirective, EllipsisDirective, EqualValidatorDirective, FrozenGifDirective, GifService, MultiStyleTextDirective };
473
912
  //# sourceMappingURL=agorapulse-ui-components-directives.mjs.map