@doku-dev/doku-fragment
Version:
A new Angular UI library that moving away from Bootstrap and built from scratch.
67 lines • 11.9 kB
JavaScript
import { ViewElementUtil } from './view-element.util';
export class ItemInjectionUtil {
static injectSelectOptions(items = [], props, template) {
const portalElement = props.portalRef.location.nativeElement;
// Cleanup the portal element's children.
this.refs.forEach((ref) => ref.destroy());
this.refs = [];
if (props.loading) {
const loadingSelectOption = this.createLoadingStateItemSelectOption(props, template?.loading);
props.renderer.appendChild(portalElement, loadingSelectOption.location.nativeElement);
this.refs.push(loadingSelectOption);
return;
}
if (!items.length) {
const emptyStateSelectOption = this.createEmptyStateItemSelectOption(props, template?.noItem);
props.renderer.appendChild(portalElement, emptyStateSelectOption.location.nativeElement);
this.refs.push(emptyStateSelectOption);
return;
}
const selectOptions = items.map((item) => this.createItemSelectOption(item, props, template?.option));
selectOptions.forEach((item) => {
props.renderer.appendChild(portalElement, item.location.nativeElement);
});
this.refs.push(...selectOptions);
}
static createItemSelectOption(item, props, template) {
const ref = this.createBaseSelectOption(item, { ...props, templateRef: template?.templateRef });
ref.location.nativeElement.onclick = props.clickFn?.(item);
return ref;
}
static createEmptyStateItemSelectOption(props, template) {
const defaultItem = {
[props.bindLabel]: 'No items found',
[props.bindValue]: '',
disabled: true,
};
return this.createBaseSelectOption(defaultItem, {
...props,
templateRef: template?.templateRef,
});
}
static createLoadingStateItemSelectOption(props, template) {
const defaultItem = {
[props.bindLabel]: 'Loading...',
[props.bindValue]: '',
disabled: true,
};
return this.createBaseSelectOption(defaultItem, {
...props,
templateRef: template?.templateRef,
});
}
static createBaseSelectOption(item, props) {
return ViewElementUtil.createSelectOption({
item: item,
bindLabel: props.bindLabel,
bindValue: props.bindValue,
applicationRef: props.appRef,
environmentInjector: props.envInjector,
renderer: props.renderer,
portalRef: props.portalRef,
templateRef: props.templateRef,
});
}
}
ItemInjectionUtil.refs = [];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1pbmplY3Rpb24udXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rva3UtZnJhZ21lbnQvc3JjL2xpYi9zZWxlY3QvdXRpbHMvaXRlbS1pbmplY3Rpb24udXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFhdEQsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixNQUFNLENBQUMsbUJBQW1CLENBQ3hCLFFBQXNDLEVBQUUsRUFDeEMsS0FBOEIsRUFDOUIsUUFJQztRQUVELE1BQU0sYUFBYSxHQUFnQixLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFFMUUseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVmLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNqQixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzlGLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdEYsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNwQyxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNqQixNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzlGLEtB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Q29tcG9uZW50UmVmLFxuICBFbnZpcm9ubWVudEluamVjdG9yLFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERva3VTZWxlY3RMb2FkaW5nVGVtcGxhdGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3NlbGVjdC1sb2FkaW5nLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEb2t1U2VsZWN0Tm9JdGVtVGVtcGxhdGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3NlbGVjdC1uby1pdGVtLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEb2t1U2VsZWN0T3B0aW9uVGVtcGxhdGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3NlbGVjdC1vcHRpb24tdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IERva3VTZWxlY3REcm9wZG93blBvcnRhbCB9IGZyb20gJy4uL3NlbGVjdC1kcm9wZG93bi1wb3J0YWwuY29tcG9uZW50JztcbmltcG9ydCB7IERva3VTZWxlY3RPcHRpb24gfSBmcm9tICcuLi9zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb2t1U2VsZWN0T3B0aW9uSXRlbVJlY29yZCB9IGZyb20gJy4uL3NlbGVjdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVmlld0VsZW1lbnRVdGlsIH0gZnJvbSAnLi92aWV3LWVsZW1lbnQudXRpbCc7XG5cbnR5cGUgQ3JlYXRlU2VsZWN0T3B0aW9uUHJvcHMgPSB7XG4gIGJpbmRMYWJlbDogc3RyaW5nO1xuICBiaW5kVmFsdWU6IHN0cmluZztcbiAgYXBwUmVmOiBBcHBsaWNhdGlvblJlZjtcbiAgZW52SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3I7XG4gIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG4gIHBvcnRhbFJlZjogQ29tcG9uZW50UmVmPERva3VTZWxlY3REcm9wZG93blBvcnRhbD47XG4gIGNsaWNrRm4/OiAoaXRlbTogRG9rdVNlbGVjdE9wdGlvbkl0ZW1SZWNvcmQpID0+IHZvaWQ7XG4gIGxvYWRpbmc/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNsYXNzIEl0ZW1JbmplY3Rpb25VdGlsIHtcbiAgc3RhdGljIHJlZnM6IENvbXBvbmVudFJlZjxEb2t1U2VsZWN0T3B0aW9uPltdID0gW107XG5cbiAgc3RhdGljIGluamVjdFNlbGVjdE9wdGlvbnMoXG4gICAgaXRlbXM6IERva3VTZWxlY3RPcHRpb25JdGVtUmVjb3JkW10gPSBbXSxcbiAgICBwcm9wczogQ3JlYXRlU2VsZWN0T3B0aW9uUHJvcHMsXG4gICAgdGVtcGxhdGU/OiB7XG4gICAgICBub0l0ZW0/OiBEb2t1U2VsZWN0Tm9JdGVtVGVtcGxhdGU7XG4gICAgICBsb2FkaW5nPzogRG9rdVNlbGVjdExvYWRpbmdUZW1wbGF0ZTtcbiAgICAgIG9wdGlvbj86IERva3VTZWxlY3RPcHRpb25UZW1wbGF0ZTtcbiAgICB9XG4gICkge1xuICAgIGNvbnN0IHBvcnRhbEVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gcHJvcHMucG9ydGFsUmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvLyBDbGVhbnVwIHRoZSBwb3J0YWwgZWxlbWVudCdzIGNoaWxkcmVuLlxuICAgIHRoaXMucmVmcy5mb3JFYWNoKChyZWYpID0+IHJlZi5kZXN0cm95KCkpO1xuICAgIHRoaXMucmVmcyA9IFtdO1xuXG4gICAgaWYgKHByb3BzLmxvYWRpbmcpIHtcbiAgICAgIGNvbnN0IGxvYWRpbmdTZWxlY3RPcHRpb24gPSB0aGlzLmNyZWF0ZUxvYWRpbmdTdGF0ZUl0ZW1TZWxlY3RPcHRpb24ocHJvcHMsIHRlbXBsYXRlPy5sb2FkaW5nKTtcbiAgICAgIHByb3BzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBvcnRhbEVsZW1lbnQsIGxvYWRpbmdTZWxlY3RPcHRpb24ubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgICB0aGlzLnJlZnMucHVzaChsb2FkaW5nU2VsZWN0T3B0aW9uKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWl0ZW1zLmxlbmd0aCkge1xuICAgICAgY29uc3QgZW1wdHlTdGF0ZVNlbGVjdE9wdGlvbiA9IHRoaXMuY3JlYXRlRW1wdHlTdGF0ZUl0ZW1TZWxlY3RPcHRpb24ocHJvcHMsIHRlbXBsYXRlPy5ub0l0ZW0pO1xuICAgICAgcHJvcHMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocG9ydGFsRWxlbWVudCwgZW1wdHlTdGF0ZVNlbGVjdE9wdGlvbi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgIHRoaXMucmVmcy5wdXNoKGVtcHR5U3RhdGVTZWxlY3RPcHRpb24pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+XG4gICAgICB0aGlzLmNyZWF0ZUl0ZW1TZWxlY3RPcHRpb24oaXRlbSwgcHJvcHMsIHRlbXBsYXRlPy5vcHRpb24pXG4gICAgKTtcbiAgICBzZWxlY3RPcHRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIHByb3BzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBvcnRhbEVsZW1lbnQsIGl0ZW0ubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgfSk7XG4gICAgdGhpcy5yZWZzLnB1c2goLi4uc2VsZWN0T3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVJdGVtU2VsZWN0T3B0aW9uKFxuICAgIGl0ZW06IERva3VTZWxlY3RPcHRpb25JdGVtUmVjb3JkLFxuICAgIHByb3BzOiBDcmVhdGVTZWxlY3RPcHRpb25Qcm9wcyxcbiAgICB0ZW1wbGF0ZT86IERva3VTZWxlY3RPcHRpb25UZW1wbGF0ZVxuICApIHtcbiAgICBjb25zdCByZWYgPSB0aGlzLmNyZWF0ZUJhc2VTZWxlY3RPcHRpb24oaXRlbSwgeyAuLi5wcm9wcywgdGVtcGxhdGVSZWY6IHRlbXBsYXRlPy50ZW1wbGF0ZVJlZiB9KTtcbiAgICByZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudC5vbmNsaWNrID0gcHJvcHMuY2xpY2tGbj8uKGl0ZW0pO1xuICAgIHJldHVybiByZWY7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVFbXB0eVN0YXRlSXRlbVNlbGVjdE9wdGlvbihcbiAgICBwcm9wczogQ3JlYXRlU2VsZWN0T3B0aW9uUHJvcHMsXG4gICAgdGVtcGxhdGU/OiBEb2t1U2VsZWN0Tm9JdGVtVGVtcGxhdGVcbiAgKSB7XG4gICAgY29uc3QgZGVmYXVsdEl0ZW06IERva3VTZWxlY3RPcHRpb25JdGVtUmVjb3JkID0ge1xuICAgICAgW3Byb3BzLmJpbmRMYWJlbF06ICdObyBpdGVtcyBmb3VuZCcsXG4gICAgICBbcHJvcHMuYmluZFZhbHVlXTogJycsXG4gICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZUJhc2VTZWxlY3RPcHRpb24oZGVmYXVsdEl0ZW0sIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgdGVtcGxhdGVSZWY6IHRlbXBsYXRlPy50ZW1wbGF0ZVJlZixcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNyZWF0ZUxvYWRpbmdTdGF0ZUl0ZW1TZWxlY3RPcHRpb24oXG4gICAgcHJvcHM6IENyZWF0ZVNlbGVjdE9wdGlvblByb3BzLFxuICAgIHRlbXBsYXRlPzogRG9rdVNlbGVjdExvYWRpbmdUZW1wbGF0ZVxuICApIHtcbiAgICBjb25zdCBkZWZhdWx0SXRlbTogRG9rdVNlbGVjdE9wdGlvbkl0ZW1SZWNvcmQgPSB7XG4gICAgICBbcHJvcHMuYmluZExhYmVsXTogJ0xvYWRpbmcuLi4nLFxuICAgICAgW3Byb3BzLmJpbmRWYWx1ZV06ICcnLFxuICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVCYXNlU2VsZWN0T3B0aW9uKGRlZmF1bHRJdGVtLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHRlbXBsYXRlUmVmOiB0ZW1wbGF0ZT8udGVtcGxhdGVSZWYsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVCYXNlU2VsZWN0T3B0aW9uKFxuICAgIGl0ZW06IERva3VTZWxlY3RPcHRpb25JdGVtUmVjb3JkLFxuICAgIHByb3BzOiBDcmVhdGVTZWxlY3RPcHRpb25Qcm9wcyAmIHsgdGVtcGxhdGVSZWY/OiBUZW1wbGF0ZVJlZjx1bmtub3duPiB9XG4gICkge1xuICAgIHJldHVybiBWaWV3RWxlbWVudFV0aWwuY3JlYXRlU2VsZWN0T3B0aW9uKHtcbiAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICBiaW5kTGFiZWw6IHByb3BzLmJpbmRMYWJlbCxcbiAgICAgIGJpbmRWYWx1ZTogcHJvcHMuYmluZFZhbHVlLFxuICAgICAgYXBwbGljYXRpb25SZWY6IHByb3BzLmFwcFJlZixcbiAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IHByb3BzLmVudkluamVjdG9yLFxuICAgICAgcmVuZGVyZXI6IHByb3BzLnJlbmRlcmVyLFxuICAgICAgcG9ydGFsUmVmOiBwcm9wcy5wb3J0YWxSZWYsXG4gICAgICB0ZW1wbGF0ZVJlZjogcHJvcHMudGVtcGxhdGVSZWYsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==