@bravobit/bb-foundation 0.50.9 → 0.51.1
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.
- package/collections/lib/collections.config.d.ts +3 -0
- package/collections/lib/collections.interfaces.d.ts +10 -0
- package/collections/lib/components/collections-actions/collections-actions.component.d.ts +3 -0
- package/collections/lib/components/collections-pager/collections-pager.component.d.ts +3 -0
- package/collections/public_api.d.ts +2 -0
- package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +3 -5
- package/dialog/lib/dialog-header/dialog-header.component.d.ts +7 -1
- package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +4 -7
- package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +3 -2
- package/dialog/lib/dialog.insertion.d.ts +1 -2
- package/dialog/lib/dialog.interfaces.d.ts +5 -0
- package/dialog/lib/dialog.module.d.ts +5 -6
- package/dialog/lib/dialog.service.d.ts +4 -4
- package/dialog/lib/directives/confirm.directive.d.ts +2 -1
- package/dialog/public_api.d.ts +0 -1
- package/elements/lib/checkbox/checkbox.component.d.ts +3 -1
- package/elements/lib/elements.module.d.ts +22 -23
- package/elements/lib/radio-button/radio-button.component.d.ts +1 -3
- package/elements/public_api.d.ts +0 -1
- package/fesm2022/bravobit-bb-foundation-auth.mjs +19 -19
- package/fesm2022/bravobit-bb-foundation-collections.mjs +67 -49
- package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-combobox.mjs +15 -15
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs +27 -27
- package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-dialog.mjs +95 -105
- package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-elements.mjs +95 -122
- package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-http.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-localize.mjs +40 -16
- package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-masking.mjs +16 -16
- package/fesm2022/bravobit-bb-foundation-notifications.mjs +14 -14
- package/fesm2022/bravobit-bb-foundation-notifications.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-permissions.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-select.mjs +19 -19
- package/fesm2022/bravobit-bb-foundation-storage.mjs +3 -3
- package/fesm2022/bravobit-bb-foundation-table.mjs +47 -29
- package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
- package/fesm2022/bravobit-bb-foundation-tooltip.mjs +10 -10
- package/fesm2022/bravobit-bb-foundation-utils.mjs +16 -16
- package/fesm2022/bravobit-bb-foundation.mjs +21 -21
- package/localize/lib/localizations/dutch.localization.d.ts +6 -0
- package/localize/lib/localizations/english.localization.d.ts +6 -0
- package/localize/lib/localizations/papiamento.localization.d.ts +6 -0
- package/localize/lib/localizations/spanish.localization.d.ts +6 -0
- package/localize/lib/transforms/plural.transform.d.ts +1 -1
- package/package.json +5 -5
- package/styles/theme.scss +7 -1
- package/table/lib/components/table/table.component.d.ts +3 -0
- package/table/lib/components/table-pager/table-pager.component.d.ts +3 -0
- package/table/lib/interfaces/table.interfaces.d.ts +10 -0
- package/table/lib/table.config.d.ts +3 -0
- package/table/public_api.d.ts +1 -0
- package/dialog/lib/dialog-link/dialog-link.component.d.ts +0 -5
- package/elements/lib/directives/addon.directive.d.ts +0 -9
|
@@ -14,10 +14,10 @@ import { switchMap, filter, map } from 'rxjs/operators';
|
|
|
14
14
|
class BbSelectOptionGroup {
|
|
15
15
|
// Dependencies.
|
|
16
16
|
template = inject(TemplateRef);
|
|
17
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.
|
|
18
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.
|
|
17
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbSelectOptionGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
18
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: BbSelectOptionGroup, isStandalone: true, selector: "ng-template[bbSelectOptionGroup]", ngImport: i0 });
|
|
19
19
|
}
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbSelectOptionGroup, decorators: [{
|
|
21
21
|
type: Directive,
|
|
22
22
|
args: [{
|
|
23
23
|
selector: 'ng-template[bbSelectOptionGroup]'
|
|
@@ -27,10 +27,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImpor
|
|
|
27
27
|
class BbSelectMultiLabel {
|
|
28
28
|
// Dependencies.
|
|
29
29
|
template = inject(TemplateRef);
|
|
30
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.
|
|
31
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.
|
|
30
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbSelectMultiLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
31
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: BbSelectMultiLabel, isStandalone: true, selector: "ng-template[bbSelectMultiLabel]", ngImport: i0 });
|
|
32
32
|
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbSelectMultiLabel, decorators: [{
|
|
34
34
|
type: Directive,
|
|
35
35
|
args: [{
|
|
36
36
|
selector: 'ng-template[bbSelectMultiLabel]'
|
|
@@ -40,10 +40,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImpor
|
|
|
40
40
|
class BbSelectOption {
|
|
41
41
|
// Dependencies.
|
|
42
42
|
template = inject(TemplateRef);
|
|
43
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.
|
|
44
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.
|
|
43
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbSelectOption, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
44
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: BbSelectOption, isStandalone: true, selector: "ng-template[bbSelectOption]", ngImport: i0 });
|
|
45
45
|
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbSelectOption, decorators: [{
|
|
47
47
|
type: Directive,
|
|
48
48
|
args: [{
|
|
49
49
|
selector: 'ng-template[bbSelectOption]'
|
|
@@ -53,10 +53,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImpor
|
|
|
53
53
|
class BbSelectLabel {
|
|
54
54
|
// Dependencies.
|
|
55
55
|
template = inject(TemplateRef);
|
|
56
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.
|
|
57
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.
|
|
56
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbSelectLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
57
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: BbSelectLabel, isStandalone: true, selector: "ng-template[bbSelectLabel]", ngImport: i0 });
|
|
58
58
|
}
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbSelectLabel, decorators: [{
|
|
60
60
|
type: Directive,
|
|
61
61
|
args: [{
|
|
62
62
|
selector: 'ng-template[bbSelectLabel]'
|
|
@@ -196,14 +196,14 @@ class BbSelect {
|
|
|
196
196
|
}
|
|
197
197
|
return null;
|
|
198
198
|
}
|
|
199
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.
|
|
200
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.
|
|
199
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbSelect, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
200
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: BbSelect, isStandalone: true, selector: "bb-select", inputs: { label: "label", hint: "hint", data: ["data", "data", observableAttribute], required: ["required", "required", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], grouped: ["grouped", "grouped", booleanAttribute], hideErrors: ["hideErrors", "hideErrors", booleanAttribute], loading: ["loading", "loading", booleanAttribute], multiple: ["multiple", "multiple", booleanAttribute], clearable: ["clearable", "clearable", booleanAttribute], searchable: ["searchable", "searchable", booleanAttribute], virtualScroll: ["virtualScroll", "virtualScroll", booleanAttribute], closeOnSelect: ["closeOnSelect", "closeOnSelect", booleanAttribute], selectableGroup: ["selectableGroup", "selectableGroup", booleanAttribute], selectableGroupAsModel: ["selectableGroupAsModel", "selectableGroupAsModel", booleanAttribute], hideArrow: ["hideArrow", "hideArrow", booleanAttribute], selectOnTab: ["selectOnTab", "selectOnTab", booleanAttribute], hideSelected: ["hideSelected", "hideSelected", booleanAttribute], maxSelectedItems: ["maxSelectedItems", "maxSelectedItems", numberAttribute], disablePanelScrolling: ["disablePanelScrolling", "disablePanelScrolling", booleanAttribute], bindLabel: "bindLabel", bindValue: "bindValue", placeholder: "placeholder", typeahead: "typeahead", trackByFn: "trackByFn", groupBy: "groupBy", isOpen: "isOpen", clearSearchOnAdd: "clearSearchOnAdd", addTag: "addTag", appendTo: "appendTo", disabled: ["disabled", "disabled", booleanAttribute], value: "value" }, outputs: { valueChange: "valueChange", onBlur: "onBlur", onChange: "onChange" }, host: { properties: { "class.required": "required", "class.readonly": "readonly", "class.disabled": "disabled", "class.grouped": "grouped", "class.error": "error", "class.hide-arrow": "hideArrow" }, classAttribute: "bb-select" }, providers: [{
|
|
201
201
|
provide: NG_VALUE_ACCESSOR,
|
|
202
202
|
useExisting: forwardRef(() => BbSelect),
|
|
203
203
|
multi: true
|
|
204
204
|
}], queries: [{ propertyName: "optionTemplate", first: true, predicate: BbSelectOption, descendants: true, read: TemplateRef }, { propertyName: "optionGroupTemplate", first: true, predicate: BbSelectOptionGroup, descendants: true, read: TemplateRef }, { propertyName: "labelTemplate", first: true, predicate: BbSelectLabel, descendants: true, read: TemplateRef }, { propertyName: "multiLabelTemplate", first: true, predicate: BbSelectMultiLabel, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "selectComponent", first: true, predicate: NgSelectComponent, descendants: true, static: true }], ngImport: i0, template: "<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-select-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<ng-select [formControl]=\"control\"\n [notFoundText]=\"'select.not_found_text' | bbLocalize\"\n [clearAllText]=\"'select.clear_all_text' | bbLocalize\"\n [loadingText]=\"'select.loading_text' | bbLocalize\"\n [typeToSearchText]=\"'select.type_to_search_text' | bbLocalize\"\n [addTagText]=\"'select.add_tag_text' | bbLocalize\"\n [virtualScroll]=\"virtualScroll\"\n [items]=\"data | async\"\n [multiple]=\"multiple\"\n [loading]=\"loading\"\n [labelForId]=\"labelId\"\n [searchable]=\"searchable\"\n [placeholder]=\"placeholder\"\n [clearable]=\"clearable\"\n [closeOnSelect]=\"closeOnSelect\"\n [trackByFn]=\"trackByFn\"\n [typeahead]=\"typeahead\"\n [bindLabel]=\"bindLabel\"\n [bindValue]=\"bindValue\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"selectableGroupAsModel\"\n [clearSearchOnAdd]=\"clearSearchOnAdd\"\n [hideSelected]=\"hideSelected\"\n [maxSelectedItems]=\"maxSelectedItems\"\n [groupBy]=\"groupBy\"\n [isOpen]=\"isOpen\"\n [readonly]=\"readonly\"\n [addTag]=\"addTag\"\n [appendTo]=\"appendTo\"\n (blur)=\"onBlur?.emit($event)\"\n (change)=\"onChange?.emit($event)\">\n @if (optionTemplate) {\n <ng-template ng-option-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (labelTemplate) {\n <ng-template ng-label-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n @if (multiLabelTemplate) {\n <ng-template ng-multi-label-tmp\n let-items=\"items\"\n let-clear=\"clear\">\n <ng-container *ngTemplateOutlet=\"multiLabelTemplate; context: {items: items, clear: clear}\"></ng-container>\n </ng-template>\n }\n @if (optionGroupTemplate) {\n <ng-template ng-optgroup-tmp\n let-item=\"item\"\n let-item$=\"item$\"\n let-index=\"index\">\n <ng-container\n *ngTemplateOutlet=\"optionGroupTemplate; context: {item: item, item$: item$, index: index}\"></ng-container>\n </ng-template>\n }\n</ng-select>\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-select-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-select{color:#2d3c4d;display:block;font-size:1rem}.bb-select.grouped{margin-bottom:1.5rem}.bb-select.required>.bb-select-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-select.error>.bb-select-label{color:var(--bb-control-error-color)}.bb-select.error>.ng-select.ng-select-focused>.ng-select-container{box-shadow:var(--bb-control-error-box-shadow)}.bb-select.error>.ng-select>.ng-select-container{border:1px solid var(--bb-control-error-border-color);background-color:var(--bb-control-error-background-color)}.bb-select.error>.ng-select>.ng-select-container>.ng-value-container>.ng-placeholder{color:var(--bb-control-error-placeholder-color)}.bb-select.readonly>.ng-select>.ng-select-container{cursor:default;border-style:dotted;border-color:#bdc4c9;color:#111;background-color:var(--bb-select-background-color)}.bb-select.hide-arrow .ng-arrow-wrapper{width:0;opacity:0;overflow:hidden;-webkit-user-select:none;user-select:none;pointer-events:none}.bb-select-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-select-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}.ng-select.ng-select-opened>.ng-select-container{background:var(--bb-select-background-color)}.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:var(--bb-select-box-shadow)}.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-.125rem;border-width:0 .3125rem .3125rem;border-color:transparent transparent var(--bb-select-border-color)}.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-left-radius:0;border-top-right-radius:0}.ng-select.ng-select-opened.ng-select-right>.ng-select-container{border-top-right-radius:0;border-bottom-right-radius:0}.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-opened.ng-select-left>.ng-select-container{border-top-left-radius:0;border-bottom-left-radius:0}.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{box-shadow:var(--bb-select-focus-box-shadow);border-color:var(--bb-select-focus-border-color)}.ng-select:has(.ng-input input:focus)>.ng-select-container{box-shadow:var(--bb-select-focus-box-shadow);border-color:var(--bb-select-focus-border-color)}.ng-select.ng-select-disabled>.ng-select-container{color:gray;background-color:#e6e6e6}.ng-select .ng-has-value .ng-placeholder{display:none}.ng-select .ng-select-container{align-items:center;transition-duration:.25s;min-height:2.625rem;color:#111;background-color:var(--bb-select-background-color);box-shadow:var(--bb-select-box-shadow);border:1px solid var(--bb-select-border-color);border-radius:var(--bb-select-border-radius);transition-property:background-color,box-shadow;transition-timing-function:cubic-bezier(0,0,.2,1)}.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:.5rem}.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#d1d1d1}.ng-select.ng-select-single .ng-select-container{height:2.625rem}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{left:0;top:50%;padding-right:3.125rem;transform:translateY(-50%);padding-left:.5rem}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{border-radius:.25rem;border:1px solid var(--bb-select-border-color);background-color:#f9f9f9}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 .3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:.3125rem;padding-left:.4375rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{line-height:1.6;margin-right:.3125rem;border-radius:.125rem;margin-bottom:.3125rem;color:#111;font-size:1rem;background-color:#ebf5ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:.3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label,.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:.0625rem .3125rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-top-left-radius:.125rem;border-bottom-left-radius:.125rem;border-right:1px solid rgb(183.6,218.88,255)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-top-right-radius:.125rem;border-bottom-right-radius:.125rem;border-left:1px solid rgb(183.6,218.88,255)}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 .3125rem .1875rem}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input>input{color:#111}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-left:.1875rem;padding-bottom:.3125rem}.ng-select .ng-clear-wrapper{margin-left:.5rem;color:var(--bb-select-border-color)}.ng-select .ng-clear-wrapper:hover .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus .ng-clear{color:#d0021b}.ng-select .ng-clear-wrapper:focus{outline:none}.ng-select .ng-spinner-zone{padding:.3125rem .3125rem 0 0}.ng-select .ng-arrow-wrapper{width:1.5625rem;padding-right:.3125rem}.ng-select .ng-arrow-wrapper .ng-arrow{border-style:solid;border-width:.3125rem .3125rem .15625rem;border-color:var(--bb-select-border-color) transparent transparent}.ng-select>.ng-select-container>.ng-spinner-loader{margin-left:.375rem;margin-right:.125rem}.ng-dropdown-panel{left:0;overflow:hidden;box-shadow:0 1px #0000000f;background-color:var(--bb-select-background-color);border:1px solid var(--bb-select-border-color)}.ng-dropdown-panel.ng-select-top{bottom:100%;margin-bottom:-1px;border-bottom-color:var(--bb-select-border-color);border-top-left-radius:var(--bb-select-border-radius);border-top-right-radius:var(--bb-select-border-radius)}.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:var(--bb-select-border-radius);border-top-right-radius:var(--bb-select-border-radius)}.ng-dropdown-panel.ng-select-right{top:0;left:100%;margin-bottom:-1px;border-bottom-color:var(--bb-select-border-color);border-top-right-radius:var(--bb-select-border-radius);border-bottom-left-radius:var(--bb-select-border-radius);border-bottom-right-radius:var(--bb-select-border-radius)}.ng-dropdown-panel.ng-select-right .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:var(--bb-select-border-radius)}.ng-dropdown-panel.ng-select-bottom{top:100%;margin-top:-1px;border-top-color:var(--bb-select-border-color);border-bottom-left-radius:var(--bb-select-border-radius);border-bottom-right-radius:var(--bb-select-border-radius)}.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-left-radius:var(--bb-select-border-radius);border-bottom-right-radius:var(--bb-select-border-radius)}.ng-dropdown-panel.ng-select-left{top:0;left:-100%;margin-bottom:-1px;border-bottom-color:var(--bb-select-border-color);border-top-left-radius:var(--bb-select-border-radius);border-bottom-left-radius:var(--bb-select-border-radius);border-bottom-right-radius:var(--bb-select-border-radius)}.ng-dropdown-panel.ng-select-left .ng-dropdown-panel-items .ng-option:first-child{border-top-left-radius:var(--bb-select-border-radius)}.ng-dropdown-panel .ng-dropdown-header{padding:.3125rem .4375rem;border-bottom:1px solid var(--bb-select-border-color)}.ng-dropdown-panel .ng-dropdown-footer{padding:.3125rem .4375rem;border-top:1px solid var(--bb-select-border-color)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{cursor:pointer;font-weight:500;-webkit-user-select:none;user-select:none;padding:.5rem .625rem;color:#0000008a}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5faff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{font-weight:500;background-color:#ebf5ff;color:#0000008a}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:1rem;font-weight:400;padding:.5rem .625rem;color:#000000de;background-color:var(--bb-select-background-color)}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#111;background-color:#ebf5ff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:500}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{color:#111;background-color:#f5faff}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#aaa}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:1.375rem}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:.3125rem}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "component", type: BbFormError, selector: "bb-form-error", inputs: ["control"], outputs: ["errorChange"] }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }, { kind: "component", type: NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "bindLabel", "bindValue", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick", "keyDownFn"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
205
205
|
}
|
|
206
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.
|
|
206
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbSelect, decorators: [{
|
|
207
207
|
type: Component,
|
|
208
208
|
args: [{ selector: 'bb-select', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{
|
|
209
209
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -343,8 +343,8 @@ function provideSelectConfig() {
|
|
|
343
343
|
}
|
|
344
344
|
|
|
345
345
|
class SelectModule {
|
|
346
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.
|
|
347
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.
|
|
346
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
347
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.5", ngImport: i0, type: SelectModule, imports: [BbSelect,
|
|
348
348
|
BbSelectLabel,
|
|
349
349
|
BbSelectOption,
|
|
350
350
|
BbSelectOptionGroup,
|
|
@@ -353,11 +353,11 @@ class SelectModule {
|
|
|
353
353
|
BbSelectOption,
|
|
354
354
|
BbSelectOptionGroup,
|
|
355
355
|
BbSelectMultiLabel] });
|
|
356
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.
|
|
356
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SelectModule, providers: [
|
|
357
357
|
provideSelectConfig()
|
|
358
358
|
], imports: [BbSelect] });
|
|
359
359
|
}
|
|
360
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.
|
|
360
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SelectModule, decorators: [{
|
|
361
361
|
type: NgModule,
|
|
362
362
|
args: [{
|
|
363
363
|
imports: [
|
|
@@ -399,10 +399,10 @@ class Storage {
|
|
|
399
399
|
return null;
|
|
400
400
|
}
|
|
401
401
|
};
|
|
402
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.
|
|
403
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.
|
|
402
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: Storage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
403
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: Storage, providedIn: 'root' });
|
|
404
404
|
}
|
|
405
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.
|
|
405
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: Storage, decorators: [{
|
|
406
406
|
type: Injectable,
|
|
407
407
|
args: [{
|
|
408
408
|
providedIn: 'root'
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, booleanAttribute, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Directive, TemplateRef, ContentChildren, ContentChild, Optional, Host, Attribute, HostListener, NgModule, makeEnvironmentProviders } from '@angular/core';
|
|
1
3
|
import { BehaviorSubject, of, combineLatest, merge, defer } from 'rxjs';
|
|
2
4
|
import { filter, switchMap, map, tap, share, catchError, debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
3
|
-
import
|
|
4
|
-
import { booleanAttribute, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Directive, TemplateRef, ContentChildren, ContentChild, Optional, Host, Attribute, HostListener, NgModule } from '@angular/core';
|
|
5
|
-
import { BbIcon, BbFormControl, BbInput, BbSuffix } from '@bravobit/bb-foundation/elements';
|
|
5
|
+
import { BbIcon, BbFormControl, BbInput } from '@bravobit/bb-foundation/elements';
|
|
6
6
|
import * as i1 from '@angular/forms';
|
|
7
7
|
import { NG_VALUE_ACCESSOR, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
|
|
8
8
|
import { AsyncPipe, NgTemplateOutlet } from '@angular/common';
|
|
9
9
|
import { BbLocalize } from '@bravobit/bb-foundation/localize';
|
|
10
10
|
import { getControlValue } from '@bravobit/bb-foundation/rxjs';
|
|
11
11
|
|
|
12
|
+
const TABLE_CONFIG = new InjectionToken('table config');
|
|
13
|
+
|
|
12
14
|
class DataSourceRequest {
|
|
13
15
|
// Data.
|
|
14
16
|
_request$ = new BehaviorSubject(null);
|
|
@@ -119,6 +121,11 @@ class GenericDataSource extends DataSource {
|
|
|
119
121
|
}
|
|
120
122
|
|
|
121
123
|
class BbTablePager {
|
|
124
|
+
// Dependencies.
|
|
125
|
+
_config = inject(TABLE_CONFIG, { optional: true });
|
|
126
|
+
// Readonly data.
|
|
127
|
+
arrowPreviousIconName = this._config?.icons?.pagerArrowPrevious ?? 'material:keyboard_arrow_left';
|
|
128
|
+
arrowNextIconName = this._config?.icons?.pagerArrowNext ?? 'material:keyboard_arrow_right';
|
|
122
129
|
// Inputs.
|
|
123
130
|
amountOfButtons = 5;
|
|
124
131
|
showArrowButtons = true;
|
|
@@ -221,19 +228,19 @@ class BbTablePager {
|
|
|
221
228
|
.filter(page => page > 0 && page <= totalPages)
|
|
222
229
|
.map(page => ({ page, active: pageNumber === page }));
|
|
223
230
|
}
|
|
224
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.
|
|
225
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.
|
|
231
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbTablePager, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
232
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: BbTablePager, isStandalone: true, selector: "bb-table-pager", inputs: { amountOfButtons: "amountOfButtons", showArrowButtons: "showArrowButtons", disabled: ["disabled", "disabled", booleanAttribute], pageNumber: "pageNumber", totalPages: "totalPages" }, host: { properties: { "class.disabled": "disabled" }, classAttribute: "bb-table-pager" }, providers: [
|
|
226
233
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbTablePager), multi: true }
|
|
227
|
-
], ngImport: i0, template: "<ul class=\"bb-pager-list\">\n <!-- The previous page arrow button. -->\n @if (showArrowButtons) {\n <li class=\"bb-pager-list-item\"\n title=\"Previous page\">\n <button [disabled]=\"isPreviousDisabled$ | async\"\n (click)=\"goToPrevious()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"
|
|
234
|
+
], ngImport: i0, template: "<ul class=\"bb-pager-list\">\n <!-- The previous page arrow button. -->\n @if (showArrowButtons) {\n <li class=\"bb-pager-list-item\"\n title=\"Previous page\">\n <button [disabled]=\"isPreviousDisabled$ | async\"\n (click)=\"goToPrevious()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon [src]=\"arrowPreviousIconName\"></bb-icon>\n </button>\n </li>\n }\n\n <!-- The list of number buttons to navigate through the list. -->\n @if (list$ | async; as list) {\n @for (item of list; track $index) {\n <li [title]=\"'Page ' + item?.page\"\n class=\"bb-pager-list-item\">\n <button (click)=\"goToIndex(item?.page)\"\n [class.active]=\"item?.active\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n }\n }\n\n <!-- The next page arrow button. -->\n @if (showArrowButtons) {\n <li class=\"bb-pager-list-item\"\n title=\"Next page\">\n <button [disabled]=\"isNextDisabled$ | async\"\n (click)=\"goToNext()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon [src]=\"arrowNextIconName\"></bb-icon>\n </button>\n </li>\n }\n</ul>\n", styles: [".bb-table-pager{flex:1;display:flex;align-items:center;justify-content:flex-end}.bb-table-pager.disabled{opacity:.5;-webkit-user-select:none;user-select:none;pointer-events:none}.bb-pager-list{display:flex}.bb-pager-list-item{margin-left:.5rem}.bb-pager-list-button{padding:0;color:#3d464d;line-height:1;min-width:2rem;font-size:1rem;appearance:none;font-weight:500;min-height:2rem;-webkit-user-select:none;user-select:none;align-items:center;display:inline-flex;border-radius:.25rem;justify-content:center;border:1px solid #b6bbc1;transition-duration:.2s;background-color:transparent;transition-timing-function:cubic-bezier(0,0,.2,1);box-shadow:0 .375rem .375rem -.375rem #0000001a;transition-property:color,border-color,opacity,background-color}.bb-pager-list-button:hover,.bb-pager-list-button:focus{background-color:#0000000a}.bb-pager-list-button.active,.bb-pager-list-button.active:hover{cursor:default;background-color:transparent;color:var(--bb-collections-pager-color);border-color:var(--bb-collections-pager-outline-color)}.bb-pager-list-button:disabled{opacity:.35;cursor:default;pointer-events:none}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: BbIcon, selector: "bb-icon", inputs: ["alt", "size", "ariaHidden", "unit", "src"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
228
235
|
}
|
|
229
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.
|
|
236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbTablePager, decorators: [{
|
|
230
237
|
type: Component,
|
|
231
238
|
args: [{ selector: 'bb-table-pager', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
232
239
|
'class': 'bb-table-pager',
|
|
233
240
|
'[class.disabled]': 'disabled'
|
|
234
241
|
}, encapsulation: ViewEncapsulation.None, providers: [
|
|
235
242
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbTablePager), multi: true }
|
|
236
|
-
], imports: [AsyncPipe, BbIcon], template: "<ul class=\"bb-pager-list\">\n <!-- The previous page arrow button. -->\n @if (showArrowButtons) {\n <li class=\"bb-pager-list-item\"\n title=\"Previous page\">\n <button [disabled]=\"isPreviousDisabled$ | async\"\n (click)=\"goToPrevious()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"
|
|
243
|
+
], imports: [AsyncPipe, BbIcon], template: "<ul class=\"bb-pager-list\">\n <!-- The previous page arrow button. -->\n @if (showArrowButtons) {\n <li class=\"bb-pager-list-item\"\n title=\"Previous page\">\n <button [disabled]=\"isPreviousDisabled$ | async\"\n (click)=\"goToPrevious()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon [src]=\"arrowPreviousIconName\"></bb-icon>\n </button>\n </li>\n }\n\n <!-- The list of number buttons to navigate through the list. -->\n @if (list$ | async; as list) {\n @for (item of list; track $index) {\n <li [title]=\"'Page ' + item?.page\"\n class=\"bb-pager-list-item\">\n <button (click)=\"goToIndex(item?.page)\"\n [class.active]=\"item?.active\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n }\n }\n\n <!-- The next page arrow button. -->\n @if (showArrowButtons) {\n <li class=\"bb-pager-list-item\"\n title=\"Next page\">\n <button [disabled]=\"isNextDisabled$ | async\"\n (click)=\"goToNext()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon [src]=\"arrowNextIconName\"></bb-icon>\n </button>\n </li>\n }\n</ul>\n", styles: [".bb-table-pager{flex:1;display:flex;align-items:center;justify-content:flex-end}.bb-table-pager.disabled{opacity:.5;-webkit-user-select:none;user-select:none;pointer-events:none}.bb-pager-list{display:flex}.bb-pager-list-item{margin-left:.5rem}.bb-pager-list-button{padding:0;color:#3d464d;line-height:1;min-width:2rem;font-size:1rem;appearance:none;font-weight:500;min-height:2rem;-webkit-user-select:none;user-select:none;align-items:center;display:inline-flex;border-radius:.25rem;justify-content:center;border:1px solid #b6bbc1;transition-duration:.2s;background-color:transparent;transition-timing-function:cubic-bezier(0,0,.2,1);box-shadow:0 .375rem .375rem -.375rem #0000001a;transition-property:color,border-color,opacity,background-color}.bb-pager-list-button:hover,.bb-pager-list-button:focus{background-color:#0000000a}.bb-pager-list-button.active,.bb-pager-list-button.active:hover{cursor:default;background-color:transparent;color:var(--bb-collections-pager-color);border-color:var(--bb-collections-pager-outline-color)}.bb-pager-list-button:disabled{opacity:.35;cursor:default;pointer-events:none}\n"] }]
|
|
237
244
|
}], propDecorators: { amountOfButtons: [{
|
|
238
245
|
type: Input
|
|
239
246
|
}], showArrowButtons: [{
|
|
@@ -248,26 +255,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImpor
|
|
|
248
255
|
}] } });
|
|
249
256
|
|
|
250
257
|
class BbTableColumnDef {
|
|
251
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.
|
|
252
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.
|
|
258
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbTableColumnDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
259
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: BbTableColumnDef, isStandalone: true, selector: "ng-template[bbTableColumnDef]", ngImport: i0 });
|
|
253
260
|
}
|
|
254
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.
|
|
261
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbTableColumnDef, decorators: [{
|
|
255
262
|
type: Directive,
|
|
256
263
|
args: [{
|
|
257
264
|
selector: 'ng-template[bbTableColumnDef]'
|
|
258
265
|
}]
|
|
259
266
|
}] });
|
|
260
267
|
class BbTableRowDef {
|
|
261
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.
|
|
262
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.
|
|
268
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbTableRowDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
269
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: BbTableRowDef, isStandalone: true, selector: "ng-template[bbTableRowDef]", ngImport: i0 });
|
|
263
270
|
}
|
|
264
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.
|
|
271
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbTableRowDef, decorators: [{
|
|
265
272
|
type: Directive,
|
|
266
273
|
args: [{
|
|
267
274
|
selector: 'ng-template[bbTableRowDef]'
|
|
268
275
|
}]
|
|
269
276
|
}] });
|
|
270
277
|
class BbTable {
|
|
278
|
+
// Dependencies.
|
|
279
|
+
_config = inject(TABLE_CONFIG, { optional: true });
|
|
280
|
+
// Readonly data.
|
|
281
|
+
actionsSearchIconName = this._config?.icons?.actionsSearch ?? 'material:search';
|
|
282
|
+
actionsCloseIconName = this._config?.icons?.actionsClose ?? 'material:close';
|
|
271
283
|
// Content.
|
|
272
284
|
tableColumnTemplates;
|
|
273
285
|
tableRowTemplate;
|
|
@@ -406,12 +418,12 @@ class BbTable {
|
|
|
406
418
|
getFormChanges() {
|
|
407
419
|
return merge(this.form.valueChanges, defer(() => of(this.form?.value)));
|
|
408
420
|
}
|
|
409
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.
|
|
410
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.4", type: BbTable, isStandalone: true, selector: "bb-table", inputs: { identifier: "identifier", dataSource: "dataSource", queryFields: "queryFields", sortingStrategy: "sortingStrategy", header: "header", footer: "footer", sizes: "sizes" }, host: { classAttribute: "bb-table" }, queries: [{ propertyName: "tableRowTemplate", first: true, predicate: BbTableRowDef, descendants: true, read: TemplateRef }, { propertyName: "tableColumnTemplates", predicate: BbTableColumnDef, read: TemplateRef }], ngImport: i0, template: "<!--\n This is the header of the table. It can be a user\n defined custom header or just the default header.\n-->\n\n@if ((header === true ? headerTemplate : header); as template) {\n <header class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </header>\n}\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n @if (isLoading$ | async) {\n <div class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n }\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell\"></ng-content>\n </tr>\n </thead>\n <tbody>\n @if (data$ | async; as data) {\n @switch (data?.state) {\n @case ('success') {\n @if (!!tableRowTemplate) {\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data ?? []}\"></ng-container>\n } @else {\n @for (item of data?.result?.data; track (identifier ? item[identifier] : $index)) {\n <tr>\n @for (template of tableColumnTemplates; track $index) {\n <ng-container\n *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n }\n </tr>\n }\n }\n }\n @case ('empty') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_datasource') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_not_found') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_server') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_down') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n }\n\n } @else {\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n {{ 'tables.loading' | bbLocalize }}\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n\n@if ((footer === true ? footerTemplate : footer); as template) {\n <footer class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </footer>\n}\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom header template.\n-->\n\n<ng-template #headerTemplate>\n <ng-content></ng-content>\n <bb-form-control>\n <input [formControl]=\"queryControl\"\n [placeholder]=\"'tables.search' | bbLocalize\"\n bbInput\n autocomplete=\"off\">\n @if (queryControl?.value?.length <= 0) {\n <bb-icon bbSuffix\n src=\"material:search\">\n </bb-icon>\n } @else {\n <button (click)=\"queryControl?.patchValue('')\"\n bbSuffix\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon src=\"material:close\"></bb-icon>\n </button>\n }\n </bb-form-control>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom footer template.\n-->\n\n<ng-template #footerTemplate>\n @if (sizes?.length > 1) {\n <bb-form-control>\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n @for (item of sizes; track item) {\n <option [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n }\n </select>\n </bb-form-control>\n }\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<ng-template #errorTemplate\n let-state=\"state\"\n let-status=\"statusCode\">\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 64 41\"\n width=\"4rem\"\n height=\"2.5625rem\">\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\n <path\n d=\"M55 12.7605604L44.8543047 1.25739633C44.3674414.47382661 43.6558789 0 42.9067617 0H21.0932383c-.7491172 0-1.4606797.47395025-1.947543 1.25739633L9 12.7605604V22h46v-9.2394396z\"></path>\n <path fill=\"#FAFAFA\"\n d=\"M41.6132813 15.9315c0-1.6056489.9936718-2.931266 2.2264179-2.9315H55v18.1371277C55 33.2589574 53.6793867 35 52.0504297 35H11.94957031C10.32052344 35 9 33.2588404 9 31.1371277V13h11.1603008c1.2327461 0 2.226418 1.3228085 2.226418 2.9284574v.0211809c0 1.6056489 1.0049921 2.9015426 2.2377382 2.9015426h14.751086c1.2327461 0 2.2377383-1.3078298 2.2377383-2.9134788V15.9315z\"></path>\n </g>\n </g>\n </svg>\n @if (state; as stateLabel) {\n <span>{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n }\n @if (status; as statusCode) {\n <span class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n }\n </div>\n </td>\n </tr>\n</ng-template>\n", styles: [".bb-table{width:100%;display:block;box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-table.plain{box-shadow:none}.bb-table.plain>.bb-table-wrapper{border-top-left-radius:0;border-top-right-radius:0}.bb-table-wrapper{overflow-x:auto;position:relative;background-color:#fff;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bb-table-container{width:100%}.bb-table-container td{border-bottom:1px solid #d8d8d8}.bb-table-top-actions{display:flex;flex-wrap:wrap;flex-direction:column;background-color:#fff;justify-content:flex-end;padding:1.5rem 1.5rem .75rem;border-top-left-radius:.25rem;border-bottom:1px solid #d8d8d8;border-top-right-radius:.25rem}.bb-table-top-actions>*{margin-left:0;margin-bottom:.75rem}.bb-table-top-actions+.bb-table-wrapper{border-radius:0}.bb-table-bottom-actions{height:4rem;display:flex;overflow-x:auto;padding:0 1.5rem;align-items:center;background-color:#fff;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.bb-table-template{border:none;background-color:#f5f5f5;border-bottom:1px solid #d8d8d8}.bb-table-template-content{display:flex;color:#3d464d;padding:1.5rem;line-height:1.2;font-weight:400;text-align:center;font-size:.875rem;min-height:8.75rem;align-items:center;flex-direction:column;justify-content:center}.bb-table-template-content>svg{margin-bottom:.75rem}.bb-table-template-content-code{opacity:.5;margin-top:.25rem;display:inline-block}.bb-table-progress{top:0;left:0;right:0;opacity:0;width:100%;display:block;height:.25rem;overflow:hidden;position:absolute;animation:fadeIn .25s cubic-bezier(0,0,.2,1) .1s forwards}.bb-table-progress .bb-table-indeterminate{background-color:var(--bb-collections-table-loader-color)}.bb-table-progress .bb-table-indeterminate:before{top:0;left:0;bottom:0;content:\"\";position:absolute;will-change:left,right;background-color:inherit;animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.bb-table-progress .bb-table-indeterminate:after{top:0;left:0;bottom:0;content:\"\";position:absolute;animation-delay:1.15s;will-change:left,right;background-color:inherit;animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite}.bb-table-progress-close-query{padding:0;border:none;border-radius:.25rem;background-color:transparent;transition:background-color .25s cubic-bezier(0,0,.2,1)}.bb-table-progress-close-query:hover{background-color:#00000014}.bb-table-progress-close-query:focus{background-color:#0000001f}.bb-table-progress-close-query:active{background-color:#00000029}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}@media only screen and (min-width: 768px){.bb-table-top-actions{flex-direction:row}.bb-table-top-actions>*:not(:first-child){margin-left:.75rem;margin-bottom:.75rem}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }, { kind: "component", type: BbFormControl, selector: "bb-form-control", inputs: ["label", "hint", "grouped", "hideErrors"] }, { kind: "directive", type: BbInput, selector: "input[bbInput],textarea[bbInput],select[bbInput]", inputs: ["required"] }, { kind: "component", type: BbIcon, selector: "bb-icon", inputs: ["alt", "size", "ariaHidden", "unit", "src"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: BbSuffix, selector: "[bbSuffix]" }, { kind: "component", type: BbTablePager, selector: "bb-table-pager", inputs: ["amountOfButtons", "showArrowButtons", "disabled", "pageNumber", "totalPages"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
421
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbTable, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
422
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: BbTable, isStandalone: true, selector: "bb-table", inputs: { identifier: "identifier", dataSource: "dataSource", queryFields: "queryFields", sortingStrategy: "sortingStrategy", header: "header", footer: "footer", sizes: "sizes" }, host: { classAttribute: "bb-table" }, queries: [{ propertyName: "tableRowTemplate", first: true, predicate: BbTableRowDef, descendants: true, read: TemplateRef }, { propertyName: "tableColumnTemplates", predicate: BbTableColumnDef, read: TemplateRef }], ngImport: i0, template: "<!--\n This is the header of the table. It can be a user\n defined custom header or just the default header.\n-->\n\n@if ((header === true ? headerTemplate : header); as template) {\n <header class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </header>\n}\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n @if (isLoading$ | async) {\n <div class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n }\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell\"></ng-content>\n </tr>\n </thead>\n <tbody>\n @if (data$ | async; as data) {\n @switch (data?.state) {\n @case ('success') {\n @if (!!tableRowTemplate) {\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data ?? []}\"></ng-container>\n } @else {\n @for (item of data?.result?.data; track (identifier ? item[identifier] : $index)) {\n <tr>\n @for (template of tableColumnTemplates; track $index) {\n <ng-container\n *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n }\n </tr>\n }\n }\n }\n @case ('empty') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_datasource') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_not_found') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_server') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_down') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n }\n\n } @else {\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n {{ 'tables.loading' | bbLocalize }}\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n\n@if ((footer === true ? footerTemplate : footer); as template) {\n <footer class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </footer>\n}\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom header template.\n-->\n\n<ng-template #headerTemplate>\n <ng-content></ng-content>\n <bb-form-control>\n <input [formControl]=\"queryControl\"\n [placeholder]=\"'tables.search' | bbLocalize\"\n bbInput\n autocomplete=\"off\">\n @if (queryControl?.value?.length <= 0) {\n <bb-icon [src]=\"actionsSearchIconName\"\n bbSuffix>\n </bb-icon>\n } @else {\n <button (click)=\"queryControl?.patchValue('')\"\n bbSuffix\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon [src]=\"actionsCloseIconName\"></bb-icon>\n </button>\n }\n </bb-form-control>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom footer template.\n-->\n\n<ng-template #footerTemplate>\n @if (sizes?.length > 1) {\n <bb-form-control>\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n @for (item of sizes; track item) {\n <option [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n }\n </select>\n </bb-form-control>\n }\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<ng-template #errorTemplate\n let-state=\"state\"\n let-status=\"statusCode\">\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 64 41\"\n width=\"4rem\"\n height=\"2.5625rem\">\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\n <path\n d=\"M55 12.7605604L44.8543047 1.25739633C44.3674414.47382661 43.6558789 0 42.9067617 0H21.0932383c-.7491172 0-1.4606797.47395025-1.947543 1.25739633L9 12.7605604V22h46v-9.2394396z\"></path>\n <path fill=\"#FAFAFA\"\n d=\"M41.6132813 15.9315c0-1.6056489.9936718-2.931266 2.2264179-2.9315H55v18.1371277C55 33.2589574 53.6793867 35 52.0504297 35H11.94957031C10.32052344 35 9 33.2588404 9 31.1371277V13h11.1603008c1.2327461 0 2.226418 1.3228085 2.226418 2.9284574v.0211809c0 1.6056489 1.0049921 2.9015426 2.2377382 2.9015426h14.751086c1.2327461 0 2.2377383-1.3078298 2.2377383-2.9134788V15.9315z\"></path>\n </g>\n </g>\n </svg>\n @if (state; as stateLabel) {\n <span>{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n }\n @if (status; as statusCode) {\n <span class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n }\n </div>\n </td>\n </tr>\n</ng-template>\n", styles: [".bb-table{width:100%;display:block;box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-table.plain{box-shadow:none}.bb-table.plain>.bb-table-wrapper{border-top-left-radius:0;border-top-right-radius:0}.bb-table-wrapper{overflow-x:auto;position:relative;background-color:#fff;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bb-table-container{width:100%}.bb-table-container td{border-bottom:1px solid #d8d8d8}.bb-table-top-actions{display:flex;flex-wrap:wrap;flex-direction:column;background-color:#fff;justify-content:flex-end;padding:1.5rem 1.5rem .75rem;border-top-left-radius:.25rem;border-bottom:1px solid #d8d8d8;border-top-right-radius:.25rem}.bb-table-top-actions>*{margin-left:0;margin-bottom:.75rem}.bb-table-top-actions+.bb-table-wrapper{border-radius:0}.bb-table-bottom-actions{height:4rem;display:flex;overflow-x:auto;padding:0 1.5rem;align-items:center;background-color:#fff;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.bb-table-template{border:none;background-color:#f5f5f5;border-bottom:1px solid #d8d8d8}.bb-table-template-content{display:flex;color:#3d464d;padding:1.5rem;line-height:1.2;font-weight:400;text-align:center;font-size:.875rem;min-height:8.75rem;align-items:center;flex-direction:column;justify-content:center}.bb-table-template-content>svg{margin-bottom:.75rem}.bb-table-template-content-code{opacity:.5;margin-top:.25rem;display:inline-block}.bb-table-progress{top:0;left:0;right:0;opacity:0;width:100%;display:block;height:.25rem;overflow:hidden;position:absolute;animation:fadeIn .25s cubic-bezier(0,0,.2,1) .1s forwards}.bb-table-progress .bb-table-indeterminate{background-color:var(--bb-collections-table-loader-color)}.bb-table-progress .bb-table-indeterminate:before{top:0;left:0;bottom:0;content:\"\";position:absolute;will-change:left,right;background-color:inherit;animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.bb-table-progress .bb-table-indeterminate:after{top:0;left:0;bottom:0;content:\"\";position:absolute;animation-delay:1.15s;will-change:left,right;background-color:inherit;animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite}.bb-table-progress-close-query{padding:0;border:none;border-radius:.25rem;background-color:transparent;transition:background-color .2s cubic-bezier(0,0,.2,1)}.bb-table-progress-close-query:hover{background-color:#00000014}.bb-table-progress-close-query:focus{background-color:#0000001f}.bb-table-progress-close-query:active{background-color:#00000029}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}@media only screen and (min-width: 768px){.bb-table-top-actions{flex-direction:row}.bb-table-top-actions>*:not(:first-child){margin-left:.75rem;margin-bottom:.75rem}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }, { kind: "component", type: BbFormControl, selector: "bb-form-control", inputs: ["label", "hint", "grouped", "hideErrors"] }, { kind: "directive", type: BbInput, selector: "input[bbInput],textarea[bbInput],select[bbInput]", inputs: ["required"] }, { kind: "component", type: BbIcon, selector: "bb-icon", inputs: ["alt", "size", "ariaHidden", "unit", "src"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: BbTablePager, selector: "bb-table-pager", inputs: ["amountOfButtons", "showArrowButtons", "disabled", "pageNumber", "totalPages"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
411
423
|
}
|
|
412
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.
|
|
424
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbTable, decorators: [{
|
|
413
425
|
type: Component,
|
|
414
|
-
args: [{ selector: 'bb-table', host: { 'class': 'bb-table' }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [NgTemplateOutlet, AsyncPipe, BbLocalize, BbFormControl, BbInput, BbIcon, ReactiveFormsModule, BbSuffix, BbTablePager, BbLocalize], template: "<!--\n This is the header of the table. It can be a user\n defined custom header or just the default header.\n-->\n\n@if ((header === true ? headerTemplate : header); as template) {\n <header class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </header>\n}\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n @if (isLoading$ | async) {\n <div class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n }\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell\"></ng-content>\n </tr>\n </thead>\n <tbody>\n @if (data$ | async; as data) {\n @switch (data?.state) {\n @case ('success') {\n @if (!!tableRowTemplate) {\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data ?? []}\"></ng-container>\n } @else {\n @for (item of data?.result?.data; track (identifier ? item[identifier] : $index)) {\n <tr>\n @for (template of tableColumnTemplates; track $index) {\n <ng-container\n *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n }\n </tr>\n }\n }\n }\n @case ('empty') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_datasource') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_not_found') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_server') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_down') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n }\n\n } @else {\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n {{ 'tables.loading' | bbLocalize }}\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n\n@if ((footer === true ? footerTemplate : footer); as template) {\n <footer class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </footer>\n}\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom header template.\n-->\n\n<ng-template #headerTemplate>\n <ng-content></ng-content>\n <bb-form-control>\n <input [formControl]=\"queryControl\"\n [placeholder]=\"'tables.search' | bbLocalize\"\n bbInput\n autocomplete=\"off\">\n @if (queryControl?.value?.length <= 0) {\n <bb-icon bbSuffix\n src=\"material:search\">\n </bb-icon>\n } @else {\n <button (click)=\"queryControl?.patchValue('')\"\n bbSuffix\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon src=\"material:close\"></bb-icon>\n </button>\n }\n </bb-form-control>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom footer template.\n-->\n\n<ng-template #footerTemplate>\n @if (sizes?.length > 1) {\n <bb-form-control>\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n @for (item of sizes; track item) {\n <option [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n }\n </select>\n </bb-form-control>\n }\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<ng-template #errorTemplate\n let-state=\"state\"\n let-status=\"statusCode\">\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 64 41\"\n width=\"4rem\"\n height=\"2.5625rem\">\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\n <path\n d=\"M55 12.7605604L44.8543047 1.25739633C44.3674414.47382661 43.6558789 0 42.9067617 0H21.0932383c-.7491172 0-1.4606797.47395025-1.947543 1.25739633L9 12.7605604V22h46v-9.2394396z\"></path>\n <path fill=\"#FAFAFA\"\n d=\"M41.6132813 15.9315c0-1.6056489.9936718-2.931266 2.2264179-2.9315H55v18.1371277C55 33.2589574 53.6793867 35 52.0504297 35H11.94957031C10.32052344 35 9 33.2588404 9 31.1371277V13h11.1603008c1.2327461 0 2.226418 1.3228085 2.226418 2.9284574v.0211809c0 1.6056489 1.0049921 2.9015426 2.2377382 2.9015426h14.751086c1.2327461 0 2.2377383-1.3078298 2.2377383-2.9134788V15.9315z\"></path>\n </g>\n </g>\n </svg>\n @if (state; as stateLabel) {\n <span>{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n }\n @if (status; as statusCode) {\n <span class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n }\n </div>\n </td>\n </tr>\n</ng-template>\n", styles: [".bb-table{width:100%;display:block;box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-table.plain{box-shadow:none}.bb-table.plain>.bb-table-wrapper{border-top-left-radius:0;border-top-right-radius:0}.bb-table-wrapper{overflow-x:auto;position:relative;background-color:#fff;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bb-table-container{width:100%}.bb-table-container td{border-bottom:1px solid #d8d8d8}.bb-table-top-actions{display:flex;flex-wrap:wrap;flex-direction:column;background-color:#fff;justify-content:flex-end;padding:1.5rem 1.5rem .75rem;border-top-left-radius:.25rem;border-bottom:1px solid #d8d8d8;border-top-right-radius:.25rem}.bb-table-top-actions>*{margin-left:0;margin-bottom:.75rem}.bb-table-top-actions+.bb-table-wrapper{border-radius:0}.bb-table-bottom-actions{height:4rem;display:flex;overflow-x:auto;padding:0 1.5rem;align-items:center;background-color:#fff;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.bb-table-template{border:none;background-color:#f5f5f5;border-bottom:1px solid #d8d8d8}.bb-table-template-content{display:flex;color:#3d464d;padding:1.5rem;line-height:1.2;font-weight:400;text-align:center;font-size:.875rem;min-height:8.75rem;align-items:center;flex-direction:column;justify-content:center}.bb-table-template-content>svg{margin-bottom:.75rem}.bb-table-template-content-code{opacity:.5;margin-top:.25rem;display:inline-block}.bb-table-progress{top:0;left:0;right:0;opacity:0;width:100%;display:block;height:.25rem;overflow:hidden;position:absolute;animation:fadeIn .25s cubic-bezier(0,0,.2,1) .1s forwards}.bb-table-progress .bb-table-indeterminate{background-color:var(--bb-collections-table-loader-color)}.bb-table-progress .bb-table-indeterminate:before{top:0;left:0;bottom:0;content:\"\";position:absolute;will-change:left,right;background-color:inherit;animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.bb-table-progress .bb-table-indeterminate:after{top:0;left:0;bottom:0;content:\"\";position:absolute;animation-delay:1.15s;will-change:left,right;background-color:inherit;animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite}.bb-table-progress-close-query{padding:0;border:none;border-radius:.25rem;background-color:transparent;transition:background-color .25s cubic-bezier(0,0,.2,1)}.bb-table-progress-close-query:hover{background-color:#00000014}.bb-table-progress-close-query:focus{background-color:#0000001f}.bb-table-progress-close-query:active{background-color:#00000029}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}@media only screen and (min-width: 768px){.bb-table-top-actions{flex-direction:row}.bb-table-top-actions>*:not(:first-child){margin-left:.75rem;margin-bottom:.75rem}}\n"] }]
|
|
426
|
+
args: [{ selector: 'bb-table', host: { 'class': 'bb-table' }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [NgTemplateOutlet, AsyncPipe, BbLocalize, BbFormControl, BbInput, BbIcon, ReactiveFormsModule, BbTablePager, BbLocalize], template: "<!--\n This is the header of the table. It can be a user\n defined custom header or just the default header.\n-->\n\n@if ((header === true ? headerTemplate : header); as template) {\n <header class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </header>\n}\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n @if (isLoading$ | async) {\n <div class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n }\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell\"></ng-content>\n </tr>\n </thead>\n <tbody>\n @if (data$ | async; as data) {\n @switch (data?.state) {\n @case ('success') {\n @if (!!tableRowTemplate) {\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data ?? []}\"></ng-container>\n } @else {\n @for (item of data?.result?.data; track (identifier ? item[identifier] : $index)) {\n <tr>\n @for (template of tableColumnTemplates; track $index) {\n <ng-container\n *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n }\n </tr>\n }\n }\n }\n @case ('empty') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_datasource') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_not_found') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_server') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @case ('error_down') {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n }\n }\n\n } @else {\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n {{ 'tables.loading' | bbLocalize }}\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n\n@if ((footer === true ? footerTemplate : footer); as template) {\n <footer class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </footer>\n}\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom header template.\n-->\n\n<ng-template #headerTemplate>\n <ng-content></ng-content>\n <bb-form-control>\n <input [formControl]=\"queryControl\"\n [placeholder]=\"'tables.search' | bbLocalize\"\n bbInput\n autocomplete=\"off\">\n @if (queryControl?.value?.length <= 0) {\n <bb-icon [src]=\"actionsSearchIconName\"\n bbSuffix>\n </bb-icon>\n } @else {\n <button (click)=\"queryControl?.patchValue('')\"\n bbSuffix\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon [src]=\"actionsCloseIconName\"></bb-icon>\n </button>\n }\n </bb-form-control>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom footer template.\n-->\n\n<ng-template #footerTemplate>\n @if (sizes?.length > 1) {\n <bb-form-control>\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n @for (item of sizes; track item) {\n <option [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n }\n </select>\n </bb-form-control>\n }\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<ng-template #errorTemplate\n let-state=\"state\"\n let-status=\"statusCode\">\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 64 41\"\n width=\"4rem\"\n height=\"2.5625rem\">\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\n <path\n d=\"M55 12.7605604L44.8543047 1.25739633C44.3674414.47382661 43.6558789 0 42.9067617 0H21.0932383c-.7491172 0-1.4606797.47395025-1.947543 1.25739633L9 12.7605604V22h46v-9.2394396z\"></path>\n <path fill=\"#FAFAFA\"\n d=\"M41.6132813 15.9315c0-1.6056489.9936718-2.931266 2.2264179-2.9315H55v18.1371277C55 33.2589574 53.6793867 35 52.0504297 35H11.94957031C10.32052344 35 9 33.2588404 9 31.1371277V13h11.1603008c1.2327461 0 2.226418 1.3228085 2.226418 2.9284574v.0211809c0 1.6056489 1.0049921 2.9015426 2.2377382 2.9015426h14.751086c1.2327461 0 2.2377383-1.3078298 2.2377383-2.9134788V15.9315z\"></path>\n </g>\n </g>\n </svg>\n @if (state; as stateLabel) {\n <span>{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n }\n @if (status; as statusCode) {\n <span class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n }\n </div>\n </td>\n </tr>\n</ng-template>\n", styles: [".bb-table{width:100%;display:block;box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-table.plain{box-shadow:none}.bb-table.plain>.bb-table-wrapper{border-top-left-radius:0;border-top-right-radius:0}.bb-table-wrapper{overflow-x:auto;position:relative;background-color:#fff;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.bb-table-container{width:100%}.bb-table-container td{border-bottom:1px solid #d8d8d8}.bb-table-top-actions{display:flex;flex-wrap:wrap;flex-direction:column;background-color:#fff;justify-content:flex-end;padding:1.5rem 1.5rem .75rem;border-top-left-radius:.25rem;border-bottom:1px solid #d8d8d8;border-top-right-radius:.25rem}.bb-table-top-actions>*{margin-left:0;margin-bottom:.75rem}.bb-table-top-actions+.bb-table-wrapper{border-radius:0}.bb-table-bottom-actions{height:4rem;display:flex;overflow-x:auto;padding:0 1.5rem;align-items:center;background-color:#fff;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.bb-table-template{border:none;background-color:#f5f5f5;border-bottom:1px solid #d8d8d8}.bb-table-template-content{display:flex;color:#3d464d;padding:1.5rem;line-height:1.2;font-weight:400;text-align:center;font-size:.875rem;min-height:8.75rem;align-items:center;flex-direction:column;justify-content:center}.bb-table-template-content>svg{margin-bottom:.75rem}.bb-table-template-content-code{opacity:.5;margin-top:.25rem;display:inline-block}.bb-table-progress{top:0;left:0;right:0;opacity:0;width:100%;display:block;height:.25rem;overflow:hidden;position:absolute;animation:fadeIn .25s cubic-bezier(0,0,.2,1) .1s forwards}.bb-table-progress .bb-table-indeterminate{background-color:var(--bb-collections-table-loader-color)}.bb-table-progress .bb-table-indeterminate:before{top:0;left:0;bottom:0;content:\"\";position:absolute;will-change:left,right;background-color:inherit;animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.bb-table-progress .bb-table-indeterminate:after{top:0;left:0;bottom:0;content:\"\";position:absolute;animation-delay:1.15s;will-change:left,right;background-color:inherit;animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite}.bb-table-progress-close-query{padding:0;border:none;border-radius:.25rem;background-color:transparent;transition:background-color .2s cubic-bezier(0,0,.2,1)}.bb-table-progress-close-query:hover{background-color:#00000014}.bb-table-progress-close-query:focus{background-color:#0000001f}.bb-table-progress-close-query:active{background-color:#00000029}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}@media only screen and (min-width: 768px){.bb-table-top-actions{flex-direction:row}.bb-table-top-actions>*:not(:first-child){margin-left:.75rem;margin-bottom:.75rem}}\n"] }]
|
|
415
427
|
}], propDecorators: { tableColumnTemplates: [{
|
|
416
428
|
type: ContentChildren,
|
|
417
429
|
args: [BbTableColumnDef, { read: TemplateRef }]
|
|
@@ -435,10 +447,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImpor
|
|
|
435
447
|
}] } });
|
|
436
448
|
|
|
437
449
|
class BbTableCell {
|
|
438
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.
|
|
439
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.
|
|
450
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbTableCell, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
451
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: BbTableCell, isStandalone: true, selector: "bb-table-cell", host: { classAttribute: "bb-table-cell" }, ngImport: i0, template: "<div>\n <ng-content></ng-content>\n</div>", styles: [".bb-table-cell{color:#848f99;text-align:left;line-height:1.2;font-weight:400;display:table-cell;font-size:.875rem;word-wrap:break-word;vertical-align:middle;padding:.75rem 1.5rem;background-color:#f5f5f5;border-bottom:1px solid #d8d8d8}.bb-table-cell:not(:last-child){border-right:1px solid #d8d8d8}.bb-table-cell.fit{width:1%;white-space:nowrap}.bb-table-cell.left{text-align:left}.bb-table-cell.center{text-align:center}.bb-table-cell.right{text-align:right}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
440
452
|
}
|
|
441
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.
|
|
453
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbTableCell, decorators: [{
|
|
442
454
|
type: Component,
|
|
443
455
|
args: [{ selector: 'bb-table-cell', changeDetection: ChangeDetectionStrategy.OnPush, host: { 'class': 'bb-table-cell' }, encapsulation: ViewEncapsulation.None, template: "<div>\n <ng-content></ng-content>\n</div>", styles: [".bb-table-cell{color:#848f99;text-align:left;line-height:1.2;font-weight:400;display:table-cell;font-size:.875rem;word-wrap:break-word;vertical-align:middle;padding:.75rem 1.5rem;background-color:#f5f5f5;border-bottom:1px solid #d8d8d8}.bb-table-cell:not(:last-child){border-right:1px solid #d8d8d8}.bb-table-cell.fit{width:1%;white-space:nowrap}.bb-table-cell.left{text-align:left}.bb-table-cell.center{text-align:center}.bb-table-cell.right{text-align:right}\n"] }]
|
|
444
456
|
}] });
|
|
@@ -544,10 +556,10 @@ class BbTableHeaderCell {
|
|
|
544
556
|
logWarning = (message) => {
|
|
545
557
|
console && console.warn && console.warn(message);
|
|
546
558
|
};
|
|
547
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.
|
|
548
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.
|
|
559
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbTableHeaderCell, deps: [{ token: BbTable, host: true, optional: true }, { token: 'name', attribute: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
560
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: BbTableHeaderCell, isStandalone: true, selector: "bb-table-header-cell", inputs: { disabled: ["disabled", "disabled", booleanAttribute], sort: "sort" }, host: { listeners: { "click": "onClick()" }, properties: { "class.disabled": "isDisabled" }, classAttribute: "bb-table-header-cell" }, ngImport: i0, template: "<!-- The content. -->\n<ng-content></ng-content>\n\n<!-- The indicator for the sort direction. -->\n@if (valueChanges$ | async; as value) {\n @if (!isDisabled) {\n <button [class.asc]=\"value === 'asc'\"\n [class.desc]=\"value === 'desc'\"\n class=\"bb-table-header-cell-toggle\"\n type=\"button\"></button>\n }\n}\n", styles: [".bb-table-header-cell{height:3rem;color:#212529;cursor:pointer;font-size:1rem;font-weight:500;-webkit-user-select:none;user-select:none;position:relative;display:table-cell;vertical-align:middle;padding:.75rem 1.5rem;border-bottom:1px solid #d8d8d8}.bb-table-header-cell:active>.bb-table-header-cell-toggle{background-color:#00000014}.bb-table-header-cell:not(.disabled){padding-right:3.25rem}.bb-table-header-cell.fit{width:1%;white-space:nowrap}.bb-table-header-cell.left{text-align:left}.bb-table-header-cell.center{text-align:center}.bb-table-header-cell.right{text-align:right}.bb-table-header-cell.disabled{cursor:default;pointer-events:none}.bb-table-header-cell-toggle{top:50%;right:1rem;border:none;width:1.5rem;height:1.5rem;margin-left:auto;position:absolute;border-radius:.25rem;transform:translateY(-50%);background-position:center;background-repeat:no-repeat;background-color:transparent;transition:background-color .2s cubic-bezier(0,0,.2,1);background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 15\" width=\"9\" height=\"15\"%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 0L0 7h9z\"%3E%3C/path%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 15L9 8H0z\"%3E%3C/path%3E%3C/svg%3E')}.bb-table-header-cell-toggle.desc{background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 15\" width=\"9\" height=\"15\"%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 0L0 7h9z\"%3E%3C/path%3E%3Cpath fill=\"black\" d=\"M4.5 15L9 8H0z\"%3E%3C/path%3E%3C/svg%3E')}.bb-table-header-cell-toggle.asc{background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 15\" width=\"9\" height=\"15\"%3E%3Cpath fill=\"black\" d=\"M4.5 0L0 7h9z\"%3E%3C/path%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 15L9 8H0z\"%3E%3C/path%3E%3C/svg%3E')}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
549
561
|
}
|
|
550
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.
|
|
562
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: BbTableHeaderCell, decorators: [{
|
|
551
563
|
type: Component,
|
|
552
564
|
args: [{ selector: 'bb-table-header-cell', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
553
565
|
'class': 'bb-table-header-cell',
|
|
@@ -573,8 +585,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImpor
|
|
|
573
585
|
}] } });
|
|
574
586
|
|
|
575
587
|
class TableModule {
|
|
576
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.
|
|
577
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.
|
|
588
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: TableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
589
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.5", ngImport: i0, type: TableModule, imports: [BbTable,
|
|
578
590
|
BbTableColumnDef,
|
|
579
591
|
BbTableRowDef,
|
|
580
592
|
BbTableHeaderCell,
|
|
@@ -585,10 +597,10 @@ class TableModule {
|
|
|
585
597
|
BbTableHeaderCell,
|
|
586
598
|
BbTableCell,
|
|
587
599
|
BbTablePager] });
|
|
588
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.
|
|
600
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: TableModule, imports: [BbTable,
|
|
589
601
|
BbTablePager] });
|
|
590
602
|
}
|
|
591
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.
|
|
603
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: TableModule, decorators: [{
|
|
592
604
|
type: NgModule,
|
|
593
605
|
args: [{
|
|
594
606
|
imports: [
|
|
@@ -610,9 +622,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImpor
|
|
|
610
622
|
}]
|
|
611
623
|
}] });
|
|
612
624
|
|
|
625
|
+
function provideTableConfig(config) {
|
|
626
|
+
return makeEnvironmentProviders([
|
|
627
|
+
{ provide: TABLE_CONFIG, useValue: config }
|
|
628
|
+
]);
|
|
629
|
+
}
|
|
630
|
+
|
|
613
631
|
/**
|
|
614
632
|
* Generated bundle index. Do not edit.
|
|
615
633
|
*/
|
|
616
634
|
|
|
617
|
-
export { BbTable, BbTableCell, BbTableColumnDef, BbTableHeaderCell, BbTablePager, BbTableRowDef, DataSource, DataSourceRequest, GenericDataSource, TableModule };
|
|
635
|
+
export { BbTable, BbTableCell, BbTableColumnDef, BbTableHeaderCell, BbTablePager, BbTableRowDef, DataSource, DataSourceRequest, GenericDataSource, TABLE_CONFIG, TableModule, provideTableConfig };
|
|
618
636
|
//# sourceMappingURL=bravobit-bb-foundation-table.mjs.map
|