@updevs/components 1.0.0-alpha.10 → 1.0.0-alpha.100
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/README.md +1 -8
- package/assets/styles/_core.scss +9 -0
- package/assets/styles/_debug.scss +49 -0
- package/assets/styles/_props.scss +91 -0
- package/assets/styles/_updevs.scss +12 -0
- package/assets/styles/_utilities-marketing.scss +209 -0
- package/assets/styles/_utilities.scss +127 -92
- package/assets/styles/_variables-dark.scss +8 -6
- package/assets/styles/_variables.scss +326 -257
- package/assets/styles/helpers/_index.scss +143 -0
- package/assets/styles/layout/_core.scss +3 -2
- package/assets/styles/layout/_dark.scss +40 -35
- package/assets/styles/layout/_footer.scss +1 -1
- package/assets/styles/layout/_navbar.scss +31 -19
- package/assets/styles/layout/_page.scss +6 -5
- package/assets/styles/layout/_root.scss +26 -34
- package/assets/styles/marketing/_browser.scss +67 -0
- package/assets/styles/marketing/_core.scss +8 -0
- package/assets/styles/marketing/_filters.scss +0 -0
- package/assets/styles/marketing/_hero.scss +70 -0
- package/assets/styles/marketing/_pricing.scss +111 -0
- package/assets/styles/marketing/_sections.scss +124 -0
- package/assets/styles/marketing/_shape.scss +31 -0
- package/assets/styles/mixins/_functions.scss +53 -0
- package/assets/styles/mixins/_mixins.scss +9 -9
- package/assets/styles/ui/_accordion.scss +165 -11
- package/assets/styles/ui/_alerts.scss +80 -38
- package/assets/styles/ui/_avatars.scss +36 -9
- package/assets/styles/ui/_badges.scss +47 -13
- package/assets/styles/ui/_button-group.scss +1 -1
- package/assets/styles/ui/_buttons.scss +33 -37
- package/assets/styles/ui/_calendars.scss +2 -2
- package/assets/styles/ui/_cards.scss +9 -0
- package/assets/styles/ui/_carousel.scss +1 -1
- package/assets/styles/ui/_charts.scss +1 -1
- package/assets/styles/ui/_chat.scss +38 -0
- package/assets/styles/ui/_close.scss +54 -1
- package/assets/styles/ui/_datagrid.scss +1 -1
- package/assets/styles/ui/_dropdowns.scss +3 -0
- package/assets/styles/ui/_empty.scss +0 -5
- package/assets/styles/ui/_flags.scss +2 -2
- package/assets/styles/ui/_forms.scss +33 -7
- package/assets/styles/ui/_grid.scss +1 -1
- package/assets/styles/ui/_icons.scss +1 -1
- package/assets/styles/ui/_images.scss +4 -0
- package/assets/styles/ui/_lists.scss +12 -16
- package/assets/styles/ui/_loaders.scss +1 -1
- package/assets/styles/ui/_markdown.scss +15 -4
- package/assets/styles/ui/_modals.scss +2 -2
- package/assets/styles/ui/_nav.scss +17 -3
- package/assets/styles/ui/_offcanvas.scss +2 -2
- package/assets/styles/ui/_pagination.scss +2 -0
- package/assets/styles/ui/_payments.scss +1 -1
- package/assets/styles/ui/_placeholder.scss +1 -1
- package/assets/styles/ui/_progress.scss +1 -1
- package/assets/styles/ui/_ribbons.scss +1 -0
- package/assets/styles/ui/_segmented.scss +101 -0
- package/assets/styles/ui/_signature.scss +15 -0
- package/assets/styles/ui/_social.scss +52 -0
- package/assets/styles/ui/_status.scss +1 -1
- package/assets/styles/ui/_steps.scss +5 -1
- package/assets/styles/ui/_switch-icon.scss +1 -1
- package/assets/styles/ui/_tables.scss +27 -1
- package/assets/styles/ui/_tags.scss +1 -1
- package/assets/styles/ui/_timeline.scss +1 -1
- package/assets/styles/ui/_toasts.scss +0 -1
- package/assets/styles/ui/_tracking.scss +1 -1
- package/assets/styles/ui/_type.scss +169 -8
- package/assets/styles/ui/forms/_form-check.scss +1 -1
- package/assets/styles/ui/forms/_form-colorinput.scss +1 -1
- package/assets/styles/ui/forms/_form-custom.scss +1 -1
- package/assets/styles/ui/forms/_form-imagecheck.scss +6 -5
- package/assets/styles/ui/forms/_form-selectgroup.scss +2 -2
- package/assets/styles/ui/typo/_hr.scss +4 -2
- package/assets/styles/utils/_colors.scss +72 -11
- package/assets/styles/utils/_opacity.scss +1 -1
- package/assets/styles/utils/_scroll.scss +0 -2
- package/assets/styles/utils/_sizing.scss +1 -1
- package/assets/styles/utils/_text.scss +1 -2
- package/assets/styles/vendor/_apexcharts.scss +52 -0
- package/assets/styles/vendor/_coloris.scss +72 -0
- package/assets/styles/vendor/_dropzone.scss +27 -0
- package/assets/styles/vendor/_fslightbox.scss +13 -0
- package/assets/styles/vendor/_jsvectormap.scss +47 -0
- package/assets/styles/vendor/_litepicker.scss +69 -0
- package/assets/styles/vendor/_nouislider.scss +49 -0
- package/assets/styles/vendor/_plyr.scss +3 -0
- package/assets/styles/vendor/_stars-rating.scss +22 -0
- package/assets/styles/vendor/_tom-select.scss +81 -0
- package/assets/styles/vendor/_turbo.scss +3 -0
- package/assets/styles/vendor/_typed.scss +4 -0
- package/assets/styles/vendor/_wysiwyg.scss +46 -0
- package/fesm2022/updevs-components-badge.mjs +29 -31
- package/fesm2022/updevs-components-badge.mjs.map +1 -1
- package/fesm2022/updevs-components-button.mjs +41 -41
- package/fesm2022/updevs-components-button.mjs.map +1 -1
- package/fesm2022/updevs-components-calendar.mjs +327 -1456
- package/fesm2022/updevs-components-calendar.mjs.map +1 -1
- package/fesm2022/updevs-components-card.mjs +25 -21
- package/fesm2022/updevs-components-card.mjs.map +1 -1
- package/fesm2022/updevs-components-drag-and-drop.mjs +17 -17
- package/fesm2022/updevs-components-drag-and-drop.mjs.map +1 -1
- package/fesm2022/updevs-components-dropdown.mjs +41 -20
- package/fesm2022/updevs-components-dropdown.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-abstractions.mjs +77 -18
- package/fesm2022/updevs-components-form-controls-abstractions.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-checkbox.mjs +31 -21
- package/fesm2022/updevs-components-form-controls-checkbox.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-date-picker.mjs +51 -66
- package/fesm2022/updevs-components-form-controls-date-picker.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-file-upload.mjs +272 -0
- package/fesm2022/updevs-components-form-controls-file-upload.mjs.map +1 -0
- package/fesm2022/updevs-components-form-controls-input.mjs +46 -28
- package/fesm2022/updevs-components-form-controls-input.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-radio.mjs +20 -14
- package/fesm2022/updevs-components-form-controls-radio.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-select.mjs +288 -111
- package/fesm2022/updevs-components-form-controls-select.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-textarea.mjs +25 -20
- package/fesm2022/updevs-components-form-controls-textarea.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-time-picker.mjs +14 -13
- package/fesm2022/updevs-components-form-controls-time-picker.mjs.map +1 -1
- package/fesm2022/updevs-components-form.mjs +255 -71
- package/fesm2022/updevs-components-form.mjs.map +1 -1
- package/fesm2022/updevs-components-layout.mjs +597 -330
- package/fesm2022/updevs-components-layout.mjs.map +1 -1
- package/fesm2022/updevs-components-link.mjs +9 -9
- package/fesm2022/updevs-components-link.mjs.map +1 -1
- package/fesm2022/updevs-components-list.mjs +20 -10
- package/fesm2022/updevs-components-list.mjs.map +1 -1
- package/fesm2022/updevs-components-modal.mjs +27 -25
- package/fesm2022/updevs-components-modal.mjs.map +1 -1
- package/fesm2022/updevs-components-paginator.mjs +38 -37
- package/fesm2022/updevs-components-paginator.mjs.map +1 -1
- package/fesm2022/updevs-components-popover.mjs +32 -40
- package/fesm2022/updevs-components-popover.mjs.map +1 -1
- package/fesm2022/updevs-components-pricing.mjs +130 -0
- package/fesm2022/updevs-components-pricing.mjs.map +1 -0
- package/fesm2022/updevs-components-table.mjs +678 -333
- package/fesm2022/updevs-components-table.mjs.map +1 -1
- package/fesm2022/updevs-components.mjs +5 -5
- package/fesm2022/updevs-components.mjs.map +1 -1
- package/package.json +70 -101
- package/types/updevs-components-badge.d.ts +44 -0
- package/types/updevs-components-button.d.ts +75 -0
- package/types/updevs-components-calendar.d.ts +175 -0
- package/{card/card.component.d.ts → types/updevs-components-card.d.ts} +52 -14
- package/types/updevs-components-drag-and-drop.d.ts +74 -0
- package/{dropdown/dropdown.component.d.ts → types/updevs-components-dropdown.d.ts} +56 -8
- package/types/updevs-components-form-controls-abstractions.d.ts +49 -0
- package/types/updevs-components-form-controls-checkbox.d.ts +33 -0
- package/types/updevs-components-form-controls-date-picker.d.ts +80 -0
- package/types/updevs-components-form-controls-file-upload.d.ts +69 -0
- package/types/updevs-components-form-controls-input.d.ts +95 -0
- package/types/updevs-components-form-controls-radio.d.ts +32 -0
- package/types/updevs-components-form-controls-select.d.ts +200 -0
- package/types/updevs-components-form-controls-textarea.d.ts +31 -0
- package/types/updevs-components-form-controls-time-picker.d.ts +164 -0
- package/types/updevs-components-form.d.ts +356 -0
- package/types/updevs-components-layout.d.ts +490 -0
- package/{link/link.component.d.ts → types/updevs-components-link.d.ts} +16 -4
- package/types/updevs-components-list.d.ts +107 -0
- package/types/updevs-components-modal.d.ts +155 -0
- package/types/updevs-components-paginator.d.ts +58 -0
- package/types/updevs-components-popover.d.ts +63 -0
- package/types/updevs-components-pricing.d.ts +91 -0
- package/types/updevs-components-table.d.ts +619 -0
- package/types/updevs-components.d.ts +44 -0
- package/badge/badge-config.model.d.ts +0 -14
- package/badge/badge.component.d.ts +0 -24
- package/badge/badge.config.d.ts +0 -12
- package/badge/index.d.ts +0 -1
- package/badge/public-api.d.ts +0 -3
- package/badge/upd-badge.module.d.ts +0 -8
- package/button/button.component.d.ts +0 -61
- package/button/index.d.ts +0 -1
- package/button/public-api.d.ts +0 -2
- package/button/upd-button.module.d.ts +0 -10
- package/calendar/calendar.component.d.ts +0 -127
- package/calendar/components/calendar-body/calendar-body.component.d.ts +0 -263
- package/calendar/components/calendar-header/calendar-header.component.d.ts +0 -57
- package/calendar/components/calendar-month-view/calendar-month-view.component.d.ts +0 -151
- package/calendar/components/calendar-multi-year-view/calendar-multi-year-view.component.d.ts +0 -10
- package/calendar/components/calendar-year-view/calendar-year-view.component.d.ts +0 -9
- package/calendar/index.d.ts +0 -1
- package/calendar/models/calendar-cell.model.d.ts +0 -16
- package/calendar/models/calendar-user-event.model.d.ts +0 -4
- package/calendar/models/date-range.model.d.ts +0 -26
- package/calendar/models/public-api.d.ts +0 -2
- package/calendar/public-api.d.ts +0 -5
- package/calendar/services/calendar-range-strategy.service.d.ts +0 -35
- package/calendar/services/calendar-signals.service.d.ts +0 -24
- package/calendar/services/calendar.service.d.ts +0 -15
- package/calendar/services/public-api.d.ts +0 -1
- package/calendar/tools/events-options.d.ts +0 -12
- package/calendar/tools/keyboard-tools.d.ts +0 -9
- package/calendar/tools/passive-listeners.d.ts +0 -16
- package/calendar/types/calendar-cell-class-function.type.d.ts +0 -3
- package/calendar/types/calendar-cell-css-classes.type.d.ts +0 -3
- package/calendar/types/calendar-view.type.d.ts +0 -1
- package/calendar/types/modifier-key.type.d.ts +0 -1
- package/calendar/types/public-api.d.ts +0 -1
- package/calendar/upd-calendar.module.d.ts +0 -18
- package/card/directives/card-actions.directive.d.ts +0 -7
- package/card/directives/card-footer.directive.d.ts +0 -7
- package/card/directives/card-header.directive.d.ts +0 -7
- package/card/directives/card-image.directive.d.ts +0 -7
- package/card/directives/public-api.d.ts +0 -4
- package/card/index.d.ts +0 -1
- package/card/public-api.d.ts +0 -3
- package/card/types/card-state.type.d.ts +0 -1
- package/card/types/card-style.type.d.ts +0 -1
- package/card/types/hover-effect.type.d.ts +0 -1
- package/card/types/ribbon-style.type.d.ts +0 -1
- package/card/types/status-position.type.d.ts +0 -1
- package/card/upd-card.module.d.ts +0 -14
- package/drag-and-drop/drag-and-drop.component.d.ts +0 -26
- package/drag-and-drop/index.d.ts +0 -1
- package/drag-and-drop/models/drag-and-drop-column.config.d.ts +0 -8
- package/drag-and-drop/models/drag-and-drop-column.model.d.ts +0 -10
- package/drag-and-drop/models/drag-and-drop-item.d.ts +0 -7
- package/drag-and-drop/models/drag-and-drop-item.model.d.ts +0 -13
- package/drag-and-drop/models/drag-and-drop.config.d.ts +0 -6
- package/drag-and-drop/models/public-api.d.ts +0 -4
- package/drag-and-drop/public-api.d.ts +0 -3
- package/drag-and-drop/upd-drag-and-drop.module.d.ts +0 -9
- package/dropdown/index.d.ts +0 -1
- package/dropdown/models/dropdown-action-clicked.model.d.ts +0 -6
- package/dropdown/models/dropdown-item.d.ts +0 -24
- package/dropdown/models/dropdown-item.type.d.ts +0 -1
- package/dropdown/models/public-api.d.ts +0 -4
- package/dropdown/models/toolbar.type.d.ts +0 -1
- package/dropdown/public-api.d.ts +0 -3
- package/dropdown/upd-dropdown.module.d.ts +0 -12
- package/esm2022/badge/badge-config.model.mjs +0 -14
- package/esm2022/badge/badge.component.mjs +0 -50
- package/esm2022/badge/badge.config.mjs +0 -2
- package/esm2022/badge/index.mjs +0 -2
- package/esm2022/badge/public-api.mjs +0 -4
- package/esm2022/badge/upd-badge.module.mjs +0 -24
- package/esm2022/badge/updevs-components-badge.mjs +0 -5
- package/esm2022/button/button.component.mjs +0 -157
- package/esm2022/button/index.mjs +0 -2
- package/esm2022/button/public-api.mjs +0 -3
- package/esm2022/button/upd-button.module.mjs +0 -32
- package/esm2022/button/updevs-components-button.mjs +0 -5
- package/esm2022/calendar/assets/i18n/en.json +0 -16
- package/esm2022/calendar/assets/i18n/pt.json +0 -16
- package/esm2022/calendar/calendar.component.mjs +0 -247
- package/esm2022/calendar/components/calendar-body/calendar-body.component.mjs +0 -515
- package/esm2022/calendar/components/calendar-header/calendar-header.component.mjs +0 -144
- package/esm2022/calendar/components/calendar-month-view/calendar-month-view.component.mjs +0 -423
- package/esm2022/calendar/components/calendar-multi-year-view/calendar-multi-year-view.component.mjs +0 -18
- package/esm2022/calendar/components/calendar-year-view/calendar-year-view.component.mjs +0 -17
- package/esm2022/calendar/index.mjs +0 -2
- package/esm2022/calendar/models/calendar-cell.model.mjs +0 -18
- package/esm2022/calendar/models/calendar-user-event.model.mjs +0 -2
- package/esm2022/calendar/models/date-range.model.mjs +0 -18
- package/esm2022/calendar/models/public-api.mjs +0 -3
- package/esm2022/calendar/public-api.mjs +0 -6
- package/esm2022/calendar/services/calendar-range-strategy.service.mjs +0 -99
- package/esm2022/calendar/services/calendar-signals.service.mjs +0 -47
- package/esm2022/calendar/services/calendar.service.mjs +0 -40
- package/esm2022/calendar/services/public-api.mjs +0 -2
- package/esm2022/calendar/tools/events-options.mjs +0 -14
- package/esm2022/calendar/tools/keyboard-tools.mjs +0 -14
- package/esm2022/calendar/tools/passive-listeners.mjs +0 -29
- package/esm2022/calendar/types/calendar-cell-class-function.type.mjs +0 -2
- package/esm2022/calendar/types/calendar-cell-css-classes.type.mjs +0 -2
- package/esm2022/calendar/types/calendar-view.type.mjs +0 -2
- package/esm2022/calendar/types/modifier-key.type.mjs +0 -2
- package/esm2022/calendar/types/public-api.mjs +0 -2
- package/esm2022/calendar/upd-calendar.module.mjs +0 -69
- package/esm2022/calendar/updevs-components-calendar.mjs +0 -5
- package/esm2022/card/card.component.mjs +0 -136
- package/esm2022/card/directives/card-actions.directive.mjs +0 -16
- package/esm2022/card/directives/card-footer.directive.mjs +0 -16
- package/esm2022/card/directives/card-header.directive.mjs +0 -16
- package/esm2022/card/directives/card-image.directive.mjs +0 -16
- package/esm2022/card/directives/public-api.mjs +0 -5
- package/esm2022/card/index.mjs +0 -2
- package/esm2022/card/public-api.mjs +0 -4
- package/esm2022/card/types/card-state.type.mjs +0 -2
- package/esm2022/card/types/card-style.type.mjs +0 -2
- package/esm2022/card/types/hover-effect.type.mjs +0 -2
- package/esm2022/card/types/ribbon-style.type.mjs +0 -2
- package/esm2022/card/types/status-position.type.mjs +0 -2
- package/esm2022/card/upd-card.module.mjs +0 -50
- package/esm2022/card/updevs-components-card.mjs +0 -5
- package/esm2022/drag-and-drop/drag-and-drop.component.mjs +0 -134
- package/esm2022/drag-and-drop/index.mjs +0 -2
- package/esm2022/drag-and-drop/models/drag-and-drop-column.config.mjs +0 -2
- package/esm2022/drag-and-drop/models/drag-and-drop-column.model.mjs +0 -9
- package/esm2022/drag-and-drop/models/drag-and-drop-item.mjs +0 -2
- package/esm2022/drag-and-drop/models/drag-and-drop-item.model.mjs +0 -14
- package/esm2022/drag-and-drop/models/drag-and-drop.config.mjs +0 -2
- package/esm2022/drag-and-drop/models/public-api.mjs +0 -5
- package/esm2022/drag-and-drop/public-api.mjs +0 -4
- package/esm2022/drag-and-drop/upd-drag-and-drop.module.mjs +0 -28
- package/esm2022/drag-and-drop/updevs-components-drag-and-drop.mjs +0 -5
- package/esm2022/dropdown/dropdown.component.mjs +0 -182
- package/esm2022/dropdown/index.mjs +0 -2
- package/esm2022/dropdown/models/dropdown-action-clicked.model.mjs +0 -2
- package/esm2022/dropdown/models/dropdown-item.mjs +0 -2
- package/esm2022/dropdown/models/dropdown-item.type.mjs +0 -2
- package/esm2022/dropdown/models/public-api.mjs +0 -5
- package/esm2022/dropdown/models/toolbar.type.mjs +0 -2
- package/esm2022/dropdown/public-api.mjs +0 -4
- package/esm2022/dropdown/upd-dropdown.module.mjs +0 -40
- package/esm2022/dropdown/updevs-components-dropdown.mjs +0 -5
- package/esm2022/form/assets/i18n/en.json +0 -17
- package/esm2022/form/assets/i18n/pt.json +0 -17
- package/esm2022/form/components/dynamic-field/dynamic-field.component.mjs +0 -96
- package/esm2022/form/form.component.mjs +0 -102
- package/esm2022/form/index.mjs +0 -2
- package/esm2022/form/models/checkbox-field.model.mjs +0 -2
- package/esm2022/form/models/checkbox-group-field.model.mjs +0 -2
- package/esm2022/form/models/dynamic-field.model.mjs +0 -2
- package/esm2022/form/models/enums/dynamic-field.type.mjs +0 -14
- package/esm2022/form/models/enums/public-api.mjs +0 -2
- package/esm2022/form/models/form-row.model.mjs +0 -2
- package/esm2022/form/models/public-api.mjs +0 -6
- package/esm2022/form/models/radio-field.model.mjs +0 -2
- package/esm2022/form/models/radio-group-field.model.mjs +0 -2
- package/esm2022/form/models/select-field.model.mjs +0 -2
- package/esm2022/form/models/single-select-field.model.mjs +0 -2
- package/esm2022/form/models/textarea-field.model.mjs +0 -2
- package/esm2022/form/models/validator-config.mjs +0 -2
- package/esm2022/form/public-api.mjs +0 -4
- package/esm2022/form/tools/errors-helper.mjs +0 -54
- package/esm2022/form/upd-form.module.mjs +0 -75
- package/esm2022/form/updevs-components-form.mjs +0 -5
- package/esm2022/form-controls/abstractions/base-control.mjs +0 -40
- package/esm2022/form-controls/abstractions/index.mjs +0 -2
- package/esm2022/form-controls/abstractions/public-api.mjs +0 -2
- package/esm2022/form-controls/abstractions/updevs-components-form-controls-abstractions.mjs +0 -5
- package/esm2022/form-controls/checkbox/checkbox.component.mjs +0 -53
- package/esm2022/form-controls/checkbox/index.mjs +0 -2
- package/esm2022/form-controls/checkbox/public-api.mjs +0 -3
- package/esm2022/form-controls/checkbox/upd-checkbox.module.mjs +0 -32
- package/esm2022/form-controls/checkbox/updevs-components-form-controls-checkbox.mjs +0 -5
- package/esm2022/form-controls/date-picker/date-picker.component.mjs +0 -147
- package/esm2022/form-controls/date-picker/index.mjs +0 -2
- package/esm2022/form-controls/date-picker/public-api.mjs +0 -3
- package/esm2022/form-controls/date-picker/upd-date-picker.module.mjs +0 -40
- package/esm2022/form-controls/date-picker/updevs-components-form-controls-date-picker.mjs +0 -5
- package/esm2022/form-controls/input/directives/input-append.directive.mjs +0 -16
- package/esm2022/form-controls/input/directives/input-prepend.directive.mjs +0 -16
- package/esm2022/form-controls/input/directives/public-api.mjs +0 -3
- package/esm2022/form-controls/input/index.mjs +0 -2
- package/esm2022/form-controls/input/input.component.mjs +0 -189
- package/esm2022/form-controls/input/public-api.mjs +0 -5
- package/esm2022/form-controls/input/types/input.type.mjs +0 -2
- package/esm2022/form-controls/input/types/loader-position.type.mjs +0 -2
- package/esm2022/form-controls/input/types/public-api.mjs +0 -3
- package/esm2022/form-controls/input/upd-input.module.mjs +0 -46
- package/esm2022/form-controls/input/updevs-components-form-controls-input.mjs +0 -5
- package/esm2022/form-controls/radio/index.mjs +0 -2
- package/esm2022/form-controls/radio/public-api.mjs +0 -3
- package/esm2022/form-controls/radio/radio.component.mjs +0 -56
- package/esm2022/form-controls/radio/upd-radio.module.mjs +0 -32
- package/esm2022/form-controls/radio/updevs-components-form-controls-radio.mjs +0 -5
- package/esm2022/form-controls/select/components/multiple/select-multiple.component.mjs +0 -76
- package/esm2022/form-controls/select/components/single/select.component.mjs +0 -72
- package/esm2022/form-controls/select/index.mjs +0 -2
- package/esm2022/form-controls/select/models/abstractions/base-select.component.mjs +0 -221
- package/esm2022/form-controls/select/models/defaults.mjs +0 -8
- package/esm2022/form-controls/select/models/public-api.mjs +0 -3
- package/esm2022/form-controls/select/models/select-item.mjs +0 -2
- package/esm2022/form-controls/select/public-api.mjs +0 -5
- package/esm2022/form-controls/select/upd-select.module.mjs +0 -57
- package/esm2022/form-controls/select/updevs-components-form-controls-select.mjs +0 -5
- package/esm2022/form-controls/textarea/index.mjs +0 -2
- package/esm2022/form-controls/textarea/public-api.mjs +0 -3
- package/esm2022/form-controls/textarea/textarea.component.mjs +0 -46
- package/esm2022/form-controls/textarea/upd-textarea.module.mjs +0 -24
- package/esm2022/form-controls/textarea/updevs-components-form-controls-textarea.mjs +0 -5
- package/esm2022/form-controls/time-picker/assets/i18n/en.json +0 -5
- package/esm2022/form-controls/time-picker/assets/i18n/pt.json +0 -5
- package/esm2022/form-controls/time-picker/index.mjs +0 -2
- package/esm2022/form-controls/time-picker/public-api.mjs +0 -4
- package/esm2022/form-controls/time-picker/time-picker.component.mjs +0 -130
- package/esm2022/form-controls/time-picker/time-selector/time-selector.component.mjs +0 -124
- package/esm2022/form-controls/time-picker/upd-time-picker.module.mjs +0 -60
- package/esm2022/form-controls/time-picker/updevs-components-form-controls-time-picker.mjs +0 -5
- package/esm2022/index.mjs +0 -2
- package/esm2022/layout/abstractions/base-page.component.mjs +0 -23
- package/esm2022/layout/abstractions/base.layout.mjs +0 -31
- package/esm2022/layout/abstractions/public-api.mjs +0 -2
- package/esm2022/layout/assets/i18n/en.json +0 -20
- package/esm2022/layout/assets/i18n/pt.json +0 -20
- package/esm2022/layout/index.mjs +0 -2
- package/esm2022/layout/layouts/blank-layout/blank-layout.component.mjs +0 -11
- package/esm2022/layout/layouts/blank-layout/blank-layout.module.mjs +0 -24
- package/esm2022/layout/layouts/public-api.mjs +0 -5
- package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.mjs +0 -31
- package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.mjs +0 -80
- package/esm2022/layout/models/login-page-config.model.mjs +0 -20
- package/esm2022/layout/models/login-page.config.mjs +0 -2
- package/esm2022/layout/models/public-api.mjs +0 -3
- package/esm2022/layout/models/security-layout-config.model.mjs +0 -10
- package/esm2022/layout/models/security-layout.config.mjs +0 -2
- package/esm2022/layout/models/upd-layout-config.model.mjs +0 -24
- package/esm2022/layout/models/upd-layout.config.mjs +0 -2
- package/esm2022/layout/pages/auth-flow/auth-flow-routing.module.mjs +0 -28
- package/esm2022/layout/pages/auth-flow/auth-flow.module.mjs +0 -65
- package/esm2022/layout/pages/auth-flow/logged-out/logged-out.component.mjs +0 -11
- package/esm2022/layout/pages/auth-flow/login/login.component.mjs +0 -99
- package/esm2022/layout/pages/auth-flow/oauth-callback/oauth-callback.component.mjs +0 -11
- package/esm2022/layout/pages/auth-flow/public-api.mjs +0 -6
- package/esm2022/layout/pages/public-api.mjs +0 -2
- package/esm2022/layout/partials/footer/footer-copyright.directive.mjs +0 -13
- package/esm2022/layout/partials/footer/footer.component.mjs +0 -55
- package/esm2022/layout/partials/footer/public-api.mjs +0 -3
- package/esm2022/layout/partials/header/header-style.type.mjs +0 -2
- package/esm2022/layout/partials/header/header.component.mjs +0 -77
- package/esm2022/layout/partials/header/public-api.mjs +0 -3
- package/esm2022/layout/partials/page-header/page-header.component.mjs +0 -15
- package/esm2022/layout/partials/page-header/public-api.mjs +0 -2
- package/esm2022/layout/partials/public-api.mjs +0 -5
- package/esm2022/layout/partials/sidebar/public-api.mjs +0 -2
- package/esm2022/layout/partials/sidebar/sidebar.component.mjs +0 -112
- package/esm2022/layout/public-api.mjs +0 -8
- package/esm2022/layout/services/public-api.mjs +0 -2
- package/esm2022/layout/services/upd-layout-config.service.mjs +0 -21
- package/esm2022/layout/tools/layout.constants.mjs +0 -15
- package/esm2022/layout/upd-layout.module.mjs +0 -43
- package/esm2022/layout/updevs-components-layout.mjs +0 -5
- package/esm2022/lib/index.mjs +0 -2
- package/esm2022/lib/models/public-api.mjs +0 -2
- package/esm2022/lib/models/row-column-size.mjs +0 -2
- package/esm2022/lib/public-api.mjs +0 -5
- package/esm2022/lib/tools/column-size.helper.mjs +0 -12
- package/esm2022/lib/tools/public-api.mjs +0 -2
- package/esm2022/lib/types/component-size.type.mjs +0 -2
- package/esm2022/lib/types/horizontal-vertical.type.mjs +0 -2
- package/esm2022/lib/types/public-api.mjs +0 -4
- package/esm2022/lib/types/validation-status.type.mjs +0 -2
- package/esm2022/lib/upd-components.module.mjs +0 -14
- package/esm2022/link/index.mjs +0 -2
- package/esm2022/link/link.component.mjs +0 -51
- package/esm2022/link/public-api.mjs +0 -4
- package/esm2022/link/target.type.mjs +0 -2
- package/esm2022/link/upd-link.module.mjs +0 -24
- package/esm2022/link/updevs-components-link.mjs +0 -5
- package/esm2022/list/assets/i18n/en.json +0 -9
- package/esm2022/list/assets/i18n/pt.json +0 -9
- package/esm2022/list/index.mjs +0 -2
- package/esm2022/list/list.component.mjs +0 -113
- package/esm2022/list/models/badge-position.type.mjs +0 -2
- package/esm2022/list/models/list-item.mjs +0 -2
- package/esm2022/list/models/list-item.model.mjs +0 -15
- package/esm2022/list/models/public-api.mjs +0 -3
- package/esm2022/list/public-api.mjs +0 -4
- package/esm2022/list/upd-list.module.mjs +0 -43
- package/esm2022/list/updevs-components-list.mjs +0 -5
- package/esm2022/modal/assets/i18n/en.json +0 -17
- package/esm2022/modal/assets/i18n/pt.json +0 -17
- package/esm2022/modal/components/modal-container/modal-container.component.mjs +0 -216
- package/esm2022/modal/index.mjs +0 -2
- package/esm2022/modal/models/base.modal.mjs +0 -14
- package/esm2022/modal/models/modal-config.model.mjs +0 -20
- package/esm2022/modal/models/modal-ref.mjs +0 -2
- package/esm2022/modal/models/modal.config.mjs +0 -2
- package/esm2022/modal/models/public-api.mjs +0 -4
- package/esm2022/modal/public-api.mjs +0 -4
- package/esm2022/modal/services/modal-alert.service.mjs +0 -99
- package/esm2022/modal/services/modal.service.mjs +0 -30
- package/esm2022/modal/services/public-api.mjs +0 -3
- package/esm2022/modal/types/modal-footer-style.type.mjs +0 -2
- package/esm2022/modal/types/modal-size.type.mjs +0 -2
- package/esm2022/modal/upd-modal.module.mjs +0 -89
- package/esm2022/modal/updevs-components-modal.mjs +0 -5
- package/esm2022/paginator/assets/i18n/en.json +0 -15
- package/esm2022/paginator/assets/i18n/pt.json +0 -15
- package/esm2022/paginator/index.mjs +0 -2
- package/esm2022/paginator/paginator.component.mjs +0 -66
- package/esm2022/paginator/public-api.mjs +0 -3
- package/esm2022/paginator/upd-paginator.module.mjs +0 -46
- package/esm2022/paginator/updevs-components-paginator.mjs +0 -5
- package/esm2022/popover/index.mjs +0 -2
- package/esm2022/popover/popover.component.mjs +0 -65
- package/esm2022/popover/popover.directive.mjs +0 -129
- package/esm2022/popover/public-api.mjs +0 -4
- package/esm2022/popover/upd-popover.module.mjs +0 -29
- package/esm2022/popover/updevs-components-popover.mjs +0 -5
- package/esm2022/public-api.mjs +0 -2
- package/esm2022/table/abstractions/base-column.model.mjs +0 -52
- package/esm2022/table/abstractions/base.column.mjs +0 -98
- package/esm2022/table/abstractions/filters-operands.service.mjs +0 -3
- package/esm2022/table/abstractions/public-api.mjs +0 -3
- package/esm2022/table/assets/i18n/en.json +0 -74
- package/esm2022/table/assets/i18n/pt.json +0 -74
- package/esm2022/table/components/columns/boolean-column/boolean-column.component.mjs +0 -26
- package/esm2022/table/components/columns/date-time-column/date-time-column.component.mjs +0 -13
- package/esm2022/table/components/columns/number-column/number-column.component.mjs +0 -13
- package/esm2022/table/components/columns/text-column/text-column.component.mjs +0 -31
- package/esm2022/table/components/columns-manager/columns-manager.component.mjs +0 -36
- package/esm2022/table/components/filter-row/filter-row.component.mjs +0 -114
- package/esm2022/table/components/save-search/save-search.component.mjs +0 -72
- package/esm2022/table/components/search-section/search-section.component.mjs +0 -93
- package/esm2022/table/directives/public-api.mjs +0 -2
- package/esm2022/table/directives/table-column.directive.mjs +0 -51
- package/esm2022/table/index.mjs +0 -2
- package/esm2022/table/models/columns/boolean-column.model.mjs +0 -22
- package/esm2022/table/models/columns/date-time-column.model.mjs +0 -16
- package/esm2022/table/models/columns/guid-column.model.mjs +0 -13
- package/esm2022/table/models/columns/image-column.model.mjs +0 -11
- package/esm2022/table/models/columns/number-column.model.mjs +0 -17
- package/esm2022/table/models/columns/public-api.mjs +0 -7
- package/esm2022/table/models/columns/text-column.model.mjs +0 -11
- package/esm2022/table/models/enums/column-type.enum.mjs +0 -15
- package/esm2022/table/models/enums/public-api.mjs +0 -2
- package/esm2022/table/models/filter-item.model.mjs +0 -2
- package/esm2022/table/models/filter-operand.config.mjs +0 -2
- package/esm2022/table/models/operands-lists/boolean-filter-operands-list.model.mjs +0 -25
- package/esm2022/table/models/operands-lists/date-filter-operands-list.model.mjs +0 -25
- package/esm2022/table/models/operands-lists/date-or-number-operands-list.config.mjs +0 -31
- package/esm2022/table/models/operands-lists/filter-operands-list.config.mjs +0 -31
- package/esm2022/table/models/operands-lists/guid-filter-operands-list.model.mjs +0 -16
- package/esm2022/table/models/operands-lists/number-filter-operands-list.model.mjs +0 -25
- package/esm2022/table/models/operands-lists/string-filter-operands-list.model.mjs +0 -45
- package/esm2022/table/models/public-api.mjs +0 -5
- package/esm2022/table/models/saved-view.model.mjs +0 -2
- package/esm2022/table/models/table-config.model.mjs +0 -21
- package/esm2022/table/models/table.config.mjs +0 -2
- package/esm2022/table/models/upd-table-config.model.mjs +0 -9
- package/esm2022/table/models/upd-table.config.mjs +0 -2
- package/esm2022/table/public-api.mjs +0 -6
- package/esm2022/table/services/default-filters-operands.service.mjs +0 -60
- package/esm2022/table/services/storages/saved-views.storage.mjs +0 -63
- package/esm2022/table/services/stores/filters-operands.store.mjs +0 -19
- package/esm2022/table/services/upd-table-config.service.mjs +0 -18
- package/esm2022/table/table.component.mjs +0 -382
- package/esm2022/table/tools/filters.tools.mjs +0 -48
- package/esm2022/table/tools/table.constants.mjs +0 -15
- package/esm2022/table/upd-table.module.mjs +0 -149
- package/esm2022/table/updevs-components-table.mjs +0 -5
- package/esm2022/updevs-components.mjs +0 -5
- package/form/components/dynamic-field/dynamic-field.component.d.ts +0 -45
- package/form/form.component.d.ts +0 -60
- package/form/index.d.ts +0 -1
- package/form/models/checkbox-field.model.d.ts +0 -4
- package/form/models/checkbox-group-field.model.d.ts +0 -6
- package/form/models/dynamic-field.model.d.ts +0 -30
- package/form/models/enums/dynamic-field.type.d.ts +0 -12
- package/form/models/enums/public-api.d.ts +0 -1
- package/form/models/form-row.model.d.ts +0 -8
- package/form/models/public-api.d.ts +0 -5
- package/form/models/radio-field.model.d.ts +0 -4
- package/form/models/radio-group-field.model.d.ts +0 -6
- package/form/models/select-field.model.d.ts +0 -28
- package/form/models/single-select-field.model.d.ts +0 -4
- package/form/models/textarea-field.model.d.ts +0 -10
- package/form/models/validator-config.d.ts +0 -5
- package/form/public-api.d.ts +0 -3
- package/form/tools/errors-helper.d.ts +0 -11
- package/form/upd-form.module.d.ts +0 -20
- package/form-controls/abstractions/base-control.d.ts +0 -24
- package/form-controls/abstractions/index.d.ts +0 -2
- package/form-controls/abstractions/public-api.d.ts +0 -2
- package/form-controls/checkbox/checkbox.component.d.ts +0 -21
- package/form-controls/checkbox/index.d.ts +0 -1
- package/form-controls/checkbox/public-api.d.ts +0 -2
- package/form-controls/checkbox/upd-checkbox.module.d.ts +0 -10
- package/form-controls/date-picker/date-picker.component.d.ts +0 -87
- package/form-controls/date-picker/index.d.ts +0 -1
- package/form-controls/date-picker/public-api.d.ts +0 -2
- package/form-controls/date-picker/upd-date-picker.module.d.ts +0 -12
- package/form-controls/input/directives/input-append.directive.d.ts +0 -7
- package/form-controls/input/directives/input-prepend.directive.d.ts +0 -7
- package/form-controls/input/directives/public-api.d.ts +0 -2
- package/form-controls/input/index.d.ts +0 -1
- package/form-controls/input/input.component.d.ts +0 -66
- package/form-controls/input/public-api.d.ts +0 -4
- package/form-controls/input/types/input.type.d.ts +0 -1
- package/form-controls/input/types/loader-position.type.d.ts +0 -1
- package/form-controls/input/types/public-api.d.ts +0 -2
- package/form-controls/input/upd-input.module.d.ts +0 -13
- package/form-controls/radio/index.d.ts +0 -1
- package/form-controls/radio/public-api.d.ts +0 -2
- package/form-controls/radio/radio.component.d.ts +0 -19
- package/form-controls/radio/upd-radio.module.d.ts +0 -10
- package/form-controls/select/components/multiple/select-multiple.component.d.ts +0 -25
- package/form-controls/select/components/single/select.component.d.ts +0 -26
- package/form-controls/select/index.d.ts +0 -1
- package/form-controls/select/models/abstractions/base-select.component.d.ts +0 -83
- package/form-controls/select/models/defaults.d.ts +0 -8
- package/form-controls/select/models/public-api.d.ts +0 -2
- package/form-controls/select/models/select-item.d.ts +0 -25
- package/form-controls/select/public-api.d.ts +0 -4
- package/form-controls/select/upd-select.module.d.ts +0 -16
- package/form-controls/textarea/index.d.ts +0 -1
- package/form-controls/textarea/public-api.d.ts +0 -2
- package/form-controls/textarea/textarea.component.d.ts +0 -21
- package/form-controls/textarea/upd-textarea.module.d.ts +0 -8
- package/form-controls/time-picker/index.d.ts +0 -1
- package/form-controls/time-picker/public-api.d.ts +0 -3
- package/form-controls/time-picker/time-picker.component.d.ts +0 -78
- package/form-controls/time-picker/time-selector/time-selector.component.d.ts +0 -69
- package/form-controls/time-picker/upd-time-picker.module.d.ts +0 -17
- package/index.d.ts +0 -2
- package/layout/abstractions/base-page.component.d.ts +0 -12
- package/layout/abstractions/base.layout.d.ts +0 -15
- package/layout/abstractions/public-api.d.ts +0 -1
- package/layout/index.d.ts +0 -1
- package/layout/layouts/blank-layout/blank-layout.component.d.ts +0 -5
- package/layout/layouts/blank-layout/blank-layout.module.d.ts +0 -8
- package/layout/layouts/public-api.d.ts +0 -4
- package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.d.ts +0 -12
- package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.d.ts +0 -21
- package/layout/models/login-page-config.model.d.ts +0 -37
- package/layout/models/login-page.config.d.ts +0 -35
- package/layout/models/public-api.d.ts +0 -2
- package/layout/models/security-layout-config.model.d.ts +0 -12
- package/layout/models/security-layout.config.d.ts +0 -10
- package/layout/models/upd-layout-config.model.d.ts +0 -48
- package/layout/models/upd-layout.config.d.ts +0 -46
- package/layout/pages/auth-flow/auth-flow-routing.module.d.ts +0 -12
- package/layout/pages/auth-flow/auth-flow.module.d.ts +0 -18
- package/layout/pages/auth-flow/logged-out/logged-out.component.d.ts +0 -5
- package/layout/pages/auth-flow/login/login.component.d.ts +0 -23
- package/layout/pages/auth-flow/oauth-callback/oauth-callback.component.d.ts +0 -5
- package/layout/pages/auth-flow/public-api.d.ts +0 -5
- package/layout/pages/public-api.d.ts +0 -1
- package/layout/partials/footer/footer-copyright.directive.d.ts +0 -5
- package/layout/partials/footer/footer.component.d.ts +0 -34
- package/layout/partials/footer/public-api.d.ts +0 -2
- package/layout/partials/header/header-style.type.d.ts +0 -1
- package/layout/partials/header/header.component.d.ts +0 -31
- package/layout/partials/header/public-api.d.ts +0 -2
- package/layout/partials/page-header/page-header.component.d.ts +0 -7
- package/layout/partials/page-header/public-api.d.ts +0 -1
- package/layout/partials/public-api.d.ts +0 -4
- package/layout/partials/sidebar/public-api.d.ts +0 -1
- package/layout/partials/sidebar/sidebar.component.d.ts +0 -22
- package/layout/public-api.d.ts +0 -7
- package/layout/services/public-api.d.ts +0 -1
- package/layout/services/upd-layout-config.service.d.ts +0 -15
- package/layout/tools/layout.constants.d.ts +0 -15
- package/layout/upd-layout.module.d.ts +0 -18
- package/lib/index.d.ts +0 -2
- package/lib/models/public-api.d.ts +0 -2
- package/lib/models/row-column-size.d.ts +0 -6
- package/lib/public-api.d.ts +0 -5
- package/lib/tools/column-size.helper.d.ts +0 -6
- package/lib/tools/public-api.d.ts +0 -2
- package/lib/types/component-size.type.d.ts +0 -2
- package/lib/types/horizontal-vertical.type.d.ts +0 -2
- package/lib/types/public-api.d.ts +0 -4
- package/lib/types/validation-status.type.d.ts +0 -2
- package/lib/upd-components.module.d.ts +0 -7
- package/link/index.d.ts +0 -1
- package/link/public-api.d.ts +0 -3
- package/link/target.type.d.ts +0 -1
- package/link/upd-link.module.d.ts +0 -8
- package/list/index.d.ts +0 -1
- package/list/list.component.d.ts +0 -46
- package/list/models/badge-position.type.d.ts +0 -1
- package/list/models/list-item.d.ts +0 -20
- package/list/models/list-item.model.d.ts +0 -25
- package/list/models/public-api.d.ts +0 -2
- package/list/public-api.d.ts +0 -3
- package/list/upd-list.module.d.ts +0 -13
- package/modal/components/modal-container/modal-container.component.d.ts +0 -74
- package/modal/index.d.ts +0 -1
- package/modal/models/base.modal.d.ts +0 -8
- package/modal/models/modal-config.model.d.ts +0 -32
- package/modal/models/modal-ref.d.ts +0 -6
- package/modal/models/modal.config.d.ts +0 -30
- package/modal/models/public-api.d.ts +0 -3
- package/modal/public-api.d.ts +0 -3
- package/modal/services/modal-alert.service.d.ts +0 -22
- package/modal/services/modal.service.d.ts +0 -12
- package/modal/services/public-api.d.ts +0 -2
- package/modal/types/modal-footer-style.type.d.ts +0 -1
- package/modal/types/modal-size.type.d.ts +0 -1
- package/modal/upd-modal.module.d.ts +0 -18
- package/paginator/index.d.ts +0 -1
- package/paginator/paginator.component.d.ts +0 -42
- package/paginator/public-api.d.ts +0 -2
- package/paginator/upd-paginator.module.d.ts +0 -14
- package/popover/index.d.ts +0 -1
- package/popover/popover.component.d.ts +0 -22
- package/popover/popover.directive.d.ts +0 -33
- package/popover/public-api.d.ts +0 -3
- package/popover/upd-popover.module.d.ts +0 -9
- package/public-api.d.ts +0 -2
- package/table/abstractions/base-column.model.d.ts +0 -31
- package/table/abstractions/base.column.d.ts +0 -22
- package/table/abstractions/filters-operands.service.d.ts +0 -8
- package/table/abstractions/public-api.d.ts +0 -2
- package/table/components/columns/boolean-column/boolean-column.component.d.ts +0 -9
- package/table/components/columns/date-time-column/date-time-column.component.d.ts +0 -7
- package/table/components/columns/number-column/number-column.component.d.ts +0 -7
- package/table/components/columns/text-column/text-column.component.d.ts +0 -9
- package/table/components/columns-manager/columns-manager.component.d.ts +0 -15
- package/table/components/filter-row/filter-row.component.d.ts +0 -40
- package/table/components/save-search/save-search.component.d.ts +0 -17
- package/table/components/search-section/search-section.component.d.ts +0 -36
- package/table/directives/public-api.d.ts +0 -1
- package/table/directives/table-column.directive.d.ts +0 -14
- package/table/index.d.ts +0 -1
- package/table/models/columns/boolean-column.model.d.ts +0 -15
- package/table/models/columns/date-time-column.model.d.ts +0 -8
- package/table/models/columns/guid-column.model.d.ts +0 -4
- package/table/models/columns/image-column.model.d.ts +0 -6
- package/table/models/columns/number-column.model.d.ts +0 -8
- package/table/models/columns/public-api.d.ts +0 -6
- package/table/models/columns/text-column.model.d.ts +0 -6
- package/table/models/enums/column-type.enum.d.ts +0 -13
- package/table/models/enums/public-api.d.ts +0 -1
- package/table/models/filter-item.model.d.ts +0 -6
- package/table/models/filter-operand.config.d.ts +0 -9
- package/table/models/operands-lists/boolean-filter-operands-list.model.d.ts +0 -6
- package/table/models/operands-lists/date-filter-operands-list.model.d.ts +0 -6
- package/table/models/operands-lists/date-or-number-operands-list.config.d.ts +0 -5
- package/table/models/operands-lists/filter-operands-list.config.d.ts +0 -5
- package/table/models/operands-lists/guid-filter-operands-list.model.d.ts +0 -6
- package/table/models/operands-lists/number-filter-operands-list.model.d.ts +0 -6
- package/table/models/operands-lists/string-filter-operands-list.model.d.ts +0 -6
- package/table/models/public-api.d.ts +0 -4
- package/table/models/saved-view.model.d.ts +0 -11
- package/table/models/table-config.model.d.ts +0 -24
- package/table/models/table.config.d.ts +0 -22
- package/table/models/upd-table-config.model.d.ts +0 -6
- package/table/models/upd-table.config.d.ts +0 -6
- package/table/public-api.d.ts +0 -5
- package/table/services/default-filters-operands.service.d.ts +0 -17
- package/table/services/storages/saved-views.storage.d.ts +0 -22
- package/table/services/stores/filters-operands.store.d.ts +0 -11
- package/table/services/upd-table-config.service.d.ts +0 -12
- package/table/table.component.d.ts +0 -78
- package/table/tools/filters.tools.d.ts +0 -9
- package/table/tools/table.constants.d.ts +0 -15
- package/table/upd-table.module.d.ts +0 -40
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { DataTypeEnum, StringColumnFilter, GuidColumnFilter, NumberColumnFilter, DateColumnFilter, BooleanColumnFilter, ColumnSort, SortDirectionEnum, BaseStore, FilterOperandEnum, FilterDateOperandEnum, FilterNumberOperandEnum, FilterBooleanOperandEnum, FilterGuidOperandEnum } from '@updevs/sdk/stores';
|
|
2
1
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { inject, Directive, Component, input, ViewContainerRef, effect, computed, signal, Injectable, model, InjectionToken, Inject, EventEmitter,
|
|
4
|
-
import { DynamicComponentLoaderService, BaseComponent, ButtonModel } from '@updevs/sdk/layout';
|
|
2
|
+
import { inject, Directive, Component, input, ViewContainerRef, effect, computed, signal, Injectable, model, InjectionToken, Inject, EventEmitter, Output, HostBinding, viewChild, ElementRef, NgModule } from '@angular/core';
|
|
5
3
|
import { TextService } from '@updevs/sdk';
|
|
4
|
+
import { DataTypeEnum, StringColumnFilter, FilterTypeEnum, GuidColumnFilter, SelectColumnFilter, NumberColumnFilter, DateColumnFilter, BooleanColumnFilter, SortDirectionEnum, ColumnSort, BaseStore, FilterOperandEnum, FilterDateOperandEnum, FilterNumberOperandEnum, FilterBooleanOperandEnum, FilterGuidOperandEnum } from '@updevs/sdk/stores';
|
|
5
|
+
import { DynamicComponentLoaderService, BaseComponent, ButtonModel } from '@updevs/sdk/layout';
|
|
6
6
|
import * as i1 from '@angular/common';
|
|
7
7
|
import { CommonModule } from '@angular/common';
|
|
8
8
|
import * as i3 from '@updevs/icons';
|
|
9
9
|
import { UpdIconsModule } from '@updevs/icons';
|
|
10
|
-
import { DateTimeFormatEnum,
|
|
10
|
+
import { DateTimeFormatEnum, Tools, SelectionModel, ServerResponseService } from '@updevs/sdk/core';
|
|
11
11
|
import { BaseModal, ModalService, ModalAlertService, UpdModalModule } from '@updevs/components/modal';
|
|
12
12
|
import { Subject, distinctUntilChanged, debounceTime, tap, switchMap, catchError, of, finalize, forkJoin } from 'rxjs';
|
|
13
13
|
import * as i1$1 from '@jsverse/transloco';
|
|
@@ -17,7 +17,7 @@ import { UpdDragAndDropModule } from '@updevs/components/drag-and-drop';
|
|
|
17
17
|
import { FormGroup, Validators } from '@angular/forms';
|
|
18
18
|
import * as i3$1 from '@updevs/components/form';
|
|
19
19
|
import { DynamicFieldType, UpdFormModule } from '@updevs/components/form';
|
|
20
|
-
import {
|
|
20
|
+
import { BaseByUserSignalStorage } from '@updevs/sdk/security';
|
|
21
21
|
import * as i4 from '@updevs/components/button';
|
|
22
22
|
import { UpdButtonModule } from '@updevs/components/button';
|
|
23
23
|
import * as i5$1 from '@updevs/components/paginator';
|
|
@@ -50,6 +50,87 @@ var ColumnTypeEnum;
|
|
|
50
50
|
ColumnTypeEnum[ColumnTypeEnum["Guid"] = 11] = "Guid";
|
|
51
51
|
})(ColumnTypeEnum || (ColumnTypeEnum = {}));
|
|
52
52
|
|
|
53
|
+
class BaseColumn {
|
|
54
|
+
constructor() {
|
|
55
|
+
this.textService = inject(TextService);
|
|
56
|
+
}
|
|
57
|
+
static { this.alignmentClassMap = {
|
|
58
|
+
justify: { text: 'text-justify', nonText: 'justify-content-between' },
|
|
59
|
+
center: { text: 'text-center', nonText: 'justify-content-center' },
|
|
60
|
+
right: { text: 'text-end', nonText: 'justify-content-end' },
|
|
61
|
+
left: { text: 'text-start', nonText: 'justify-content-start' }
|
|
62
|
+
}; }
|
|
63
|
+
static { this.overflowClassMap = {
|
|
64
|
+
'no-wrap': 'text-nowrap',
|
|
65
|
+
wrap: 'text-wrap',
|
|
66
|
+
'word-break': 'text-break',
|
|
67
|
+
truncate: 'text-truncate'
|
|
68
|
+
}; }
|
|
69
|
+
static { this.decorationClassMap = {
|
|
70
|
+
underline: 'text-decoration-underline',
|
|
71
|
+
strikethrough: 'text-decoration-line-through',
|
|
72
|
+
none: 'text-decoration-none'
|
|
73
|
+
}; }
|
|
74
|
+
static { this.weightClassMap = {
|
|
75
|
+
bold: 'fw-bold',
|
|
76
|
+
bolder: 'fw-bolder',
|
|
77
|
+
light: 'fw-light',
|
|
78
|
+
lighter: 'fw-lighter',
|
|
79
|
+
normal: 'fw-normal'
|
|
80
|
+
}; }
|
|
81
|
+
get value() {
|
|
82
|
+
return this.record[this.config.name];
|
|
83
|
+
}
|
|
84
|
+
get isTextType() {
|
|
85
|
+
return this.config.type !== ColumnTypeEnum.Boolean
|
|
86
|
+
&& this.config.type !== ColumnTypeEnum.Image
|
|
87
|
+
&& this.config.type !== ColumnTypeEnum.Custom;
|
|
88
|
+
}
|
|
89
|
+
get prefix() {
|
|
90
|
+
return this.textService.getText(this.config.prefix);
|
|
91
|
+
}
|
|
92
|
+
get suffix() {
|
|
93
|
+
return this.textService.getText(this.config.suffix);
|
|
94
|
+
}
|
|
95
|
+
get prefixSpace() {
|
|
96
|
+
return !!this.prefix && this.config.shouldSpaceAfterPrefix ? ' ' : '';
|
|
97
|
+
}
|
|
98
|
+
get suffixSpace() {
|
|
99
|
+
return !!this.suffix && this.config.shouldSpaceBeforeSuffix ? ' ' : '';
|
|
100
|
+
}
|
|
101
|
+
get alignmentClass() {
|
|
102
|
+
const map = BaseColumn.alignmentClassMap[this.config.alignment] || BaseColumn.alignmentClassMap['left'];
|
|
103
|
+
return this.isTextType ? map.text : map.nonText;
|
|
104
|
+
}
|
|
105
|
+
get overflowClass() {
|
|
106
|
+
return BaseColumn.overflowClassMap[this.config.overflowStrategy] || 'text-truncate';
|
|
107
|
+
}
|
|
108
|
+
get decorationClass() {
|
|
109
|
+
return this.config.decoration ? BaseColumn.decorationClassMap[this.config.decoration] : '';
|
|
110
|
+
}
|
|
111
|
+
get weightClass() {
|
|
112
|
+
return BaseColumn.weightClassMap[this.config.weight] || 'fw-normal';
|
|
113
|
+
}
|
|
114
|
+
getRecordAs() {
|
|
115
|
+
return this.record;
|
|
116
|
+
}
|
|
117
|
+
getClasses() {
|
|
118
|
+
return [
|
|
119
|
+
this.alignmentClass,
|
|
120
|
+
this.overflowClass,
|
|
121
|
+
this.decorationClass,
|
|
122
|
+
this.weightClass,
|
|
123
|
+
this.config.isItalic ? 'fst-italic' : ''
|
|
124
|
+
];
|
|
125
|
+
}
|
|
126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BaseColumn, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
127
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.4", type: BaseColumn, isStandalone: false, ngImport: i0 }); }
|
|
128
|
+
}
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BaseColumn, decorators: [{
|
|
130
|
+
type: Directive,
|
|
131
|
+
args: [{ standalone: false }]
|
|
132
|
+
}] });
|
|
133
|
+
|
|
53
134
|
class BaseColumnModel {
|
|
54
135
|
get dataType() {
|
|
55
136
|
switch (this.type) {
|
|
@@ -103,100 +184,6 @@ class BaseColumnModel {
|
|
|
103
184
|
class FiltersOperandsService {
|
|
104
185
|
}
|
|
105
186
|
|
|
106
|
-
class BaseColumn {
|
|
107
|
-
constructor() {
|
|
108
|
-
this.textService = inject(TextService);
|
|
109
|
-
}
|
|
110
|
-
get value() {
|
|
111
|
-
return this.record[this.config.name];
|
|
112
|
-
}
|
|
113
|
-
get isTextType() {
|
|
114
|
-
return this.config.type !== ColumnTypeEnum.Boolean
|
|
115
|
-
&& this.config.type !== ColumnTypeEnum.Image
|
|
116
|
-
&& this.config.type !== ColumnTypeEnum.Custom;
|
|
117
|
-
}
|
|
118
|
-
get prefix() {
|
|
119
|
-
return this.textService.getText(this.config.prefix);
|
|
120
|
-
}
|
|
121
|
-
get suffix() {
|
|
122
|
-
return this.textService.getText(this.config.suffix);
|
|
123
|
-
}
|
|
124
|
-
get prefixSpace() {
|
|
125
|
-
return !!this.prefix && this.config.shouldSpaceAfterPrefix ? ' ' : '';
|
|
126
|
-
}
|
|
127
|
-
get suffixSpace() {
|
|
128
|
-
return !!this.suffix && this.config.shouldSpaceBeforeSuffix ? ' ' : '';
|
|
129
|
-
}
|
|
130
|
-
get alignmentClass() {
|
|
131
|
-
const prefix = this.isTextType ? 'text' : 'justify-content';
|
|
132
|
-
switch (this.config.alignment) {
|
|
133
|
-
case 'justify':
|
|
134
|
-
return `${prefix}-${(this.isTextType ? 'justify' : 'between')}`;
|
|
135
|
-
case 'center':
|
|
136
|
-
return `${prefix}-center`;
|
|
137
|
-
case 'right':
|
|
138
|
-
return `${prefix}-end`;
|
|
139
|
-
default:
|
|
140
|
-
return `${prefix}-start`;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
get overflowClass() {
|
|
144
|
-
switch (this.config.overflowStrategy) {
|
|
145
|
-
case 'no-wrap':
|
|
146
|
-
return 'text-nowrap';
|
|
147
|
-
case 'wrap':
|
|
148
|
-
return 'text-wrap';
|
|
149
|
-
case 'word-break':
|
|
150
|
-
return 'text-break';
|
|
151
|
-
default:
|
|
152
|
-
return 'text-truncate';
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
get decorationClass() {
|
|
156
|
-
switch (this.config.decoration) {
|
|
157
|
-
case 'underline':
|
|
158
|
-
return 'text-decoration-underline';
|
|
159
|
-
case 'strikethrough':
|
|
160
|
-
return 'text-decoration-line-through';
|
|
161
|
-
case 'none':
|
|
162
|
-
return 'text-decoration-none';
|
|
163
|
-
default:
|
|
164
|
-
return '';
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
get weightClass() {
|
|
168
|
-
switch (this.config.weight) {
|
|
169
|
-
case 'bold':
|
|
170
|
-
return 'fw-bold';
|
|
171
|
-
case 'bolder':
|
|
172
|
-
return 'fw-bolder';
|
|
173
|
-
case 'light':
|
|
174
|
-
return 'fw-light';
|
|
175
|
-
case 'lighter':
|
|
176
|
-
return 'fw-lighter';
|
|
177
|
-
default:
|
|
178
|
-
return 'fw-normal';
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
getRecordAs() {
|
|
182
|
-
return this.record;
|
|
183
|
-
}
|
|
184
|
-
getClasses() {
|
|
185
|
-
return [
|
|
186
|
-
this.alignmentClass,
|
|
187
|
-
this.overflowClass,
|
|
188
|
-
this.decorationClass,
|
|
189
|
-
this.weightClass,
|
|
190
|
-
this.config.isItalic ? 'fst-italic' : ''
|
|
191
|
-
];
|
|
192
|
-
}
|
|
193
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BaseColumn, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
194
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0", type: BaseColumn, ngImport: i0 }); }
|
|
195
|
-
}
|
|
196
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BaseColumn, decorators: [{
|
|
197
|
-
type: Directive
|
|
198
|
-
}] });
|
|
199
|
-
|
|
200
187
|
class TextColumnComponent extends BaseColumn {
|
|
201
188
|
getClasses() {
|
|
202
189
|
return [
|
|
@@ -216,21 +203,21 @@ class TextColumnComponent extends BaseColumn {
|
|
|
216
203
|
return '';
|
|
217
204
|
}
|
|
218
205
|
}
|
|
219
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
220
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
206
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TextColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
207
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: TextColumnComponent, isStandalone: false, selector: "upd-text-column", usesInheritance: true, ngImport: i0, template: "<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value }}{{ suffixSpace }}{{ suffix }}</span>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
221
208
|
}
|
|
222
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TextColumnComponent, decorators: [{
|
|
223
210
|
type: Component,
|
|
224
|
-
args: [{ selector: 'upd-text-column', template: "<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value }}{{ suffixSpace }}{{ suffix }}</span>\n" }]
|
|
211
|
+
args: [{ standalone: false, selector: 'upd-text-column', template: "<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value }}{{ suffixSpace }}{{ suffix }}</span>\n" }]
|
|
225
212
|
}] });
|
|
226
213
|
|
|
227
214
|
class NumberColumnComponent extends BaseColumn {
|
|
228
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
229
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
215
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NumberColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
216
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: NumberColumnComponent, isStandalone: false, selector: "upd-number-column", usesInheritance: true, ngImport: i0, template: "<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value | number:config.numberFormat }}{{ suffixSpace }}{{ suffix }}</span>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }] }); }
|
|
230
217
|
}
|
|
231
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
218
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NumberColumnComponent, decorators: [{
|
|
232
219
|
type: Component,
|
|
233
|
-
args: [{ selector: 'upd-number-column', template: "<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value | number:config.numberFormat }}{{ suffixSpace }}{{ suffix }}</span>\n" }]
|
|
220
|
+
args: [{ standalone: false, selector: 'upd-number-column', template: "<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value | number:config.numberFormat }}{{ suffixSpace }}{{ suffix }}</span>\n" }]
|
|
234
221
|
}] });
|
|
235
222
|
|
|
236
223
|
class BooleanColumnComponent extends BaseColumn {
|
|
@@ -246,27 +233,27 @@ class BooleanColumnComponent extends BaseColumn {
|
|
|
246
233
|
}
|
|
247
234
|
return `text-${(!!this.value ? this.config.trueColor : this.config.falseColor)}`;
|
|
248
235
|
}
|
|
249
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
250
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
236
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BooleanColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
237
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: BooleanColumnComponent, isStandalone: false, selector: "upd-boolean-column", usesInheritance: true, ngImport: i0, template: "<div [ngClass]=\"getClasses()\">\n @switch (config.displayType) {\n @case ('text') {\n {{ prefix }}{{ prefixSpace }}{{ !!value ? textService.getText(config.trueText) : textService.getText(config.falseText) }}{{ suffixSpace }}{{ suffix }}\n }\n @case ('toggle') {\n {{ prefix }}{{ prefixSpace }}\n <upd-icon [tablerIcon]=\"!!value ? 'toggle-right' : 'toggle-left'\"></upd-icon>{{ suffixSpace }}{{ suffix }}\n }\n @case ('icon') {\n {{ prefix }}{{ prefixSpace }}\n <upd-icon [model]=\"!!value ? config.trueIcon : config.falseIcon\"></upd-icon>{{ suffixSpace }}{{ suffix }}\n }\n }\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }] }); }
|
|
251
238
|
}
|
|
252
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
239
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: BooleanColumnComponent, decorators: [{
|
|
253
240
|
type: Component,
|
|
254
|
-
args: [{ selector: 'upd-boolean-column', template: "<div [ngClass]=\"getClasses()\">\n @switch (config.displayType) {\n @case ('text') {\n {{ prefix }}{{ prefixSpace }}{{ !!value ? textService.getText(config.trueText) : textService.getText(config.falseText) }}{{ suffixSpace }}{{ suffix }}\n }\n @case ('toggle') {\n {{ prefix }}{{ prefixSpace }}\n <upd-icon [tablerIcon]=\"!!value ? 'toggle-right' : 'toggle-left'\"></upd-icon>{{ suffixSpace }}{{ suffix }}\n }\n @case ('icon') {\n {{ prefix }}{{ prefixSpace }}\n <upd-icon [model]=\"!!value ? config.trueIcon : config.falseIcon\"></upd-icon>{{ suffixSpace }}{{ suffix }}\n }\n }\n</div>\n" }]
|
|
241
|
+
args: [{ standalone: false, selector: 'upd-boolean-column', template: "<div [ngClass]=\"getClasses()\">\n @switch (config.displayType) {\n @case ('text') {\n {{ prefix }}{{ prefixSpace }}{{ !!value ? textService.getText(config.trueText) : textService.getText(config.falseText) }}{{ suffixSpace }}{{ suffix }}\n }\n @case ('toggle') {\n {{ prefix }}{{ prefixSpace }}\n <upd-icon [tablerIcon]=\"!!value ? 'toggle-right' : 'toggle-left'\"></upd-icon>{{ suffixSpace }}{{ suffix }}\n }\n @case ('icon') {\n {{ prefix }}{{ prefixSpace }}\n <upd-icon [model]=\"!!value ? config.trueIcon : config.falseIcon\"></upd-icon>{{ suffixSpace }}{{ suffix }}\n }\n }\n</div>\n" }]
|
|
255
242
|
}] });
|
|
256
243
|
|
|
257
244
|
class DateTimeColumnComponent extends BaseColumn {
|
|
258
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
259
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
245
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: DateTimeColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
246
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: DateTimeColumnComponent, isStandalone: false, selector: "upd-date-time-column", usesInheritance: true, ngImport: i0, template: "<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value | date:config.dateTimeFormat }}{{ suffixSpace }}{{ suffix }}</span>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] }); }
|
|
260
247
|
}
|
|
261
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
248
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: DateTimeColumnComponent, decorators: [{
|
|
262
249
|
type: Component,
|
|
263
|
-
args: [{ selector: 'upd-date-time-column', template: "<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value | date:config.dateTimeFormat }}{{ suffixSpace }}{{ suffix }}</span>\n" }]
|
|
250
|
+
args: [{ standalone: false, selector: 'upd-date-time-column', template: "<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value | date:config.dateTimeFormat }}{{ suffixSpace }}{{ suffix }}</span>\n" }]
|
|
264
251
|
}] });
|
|
265
252
|
|
|
266
253
|
class TableColumnDirective {
|
|
267
254
|
constructor() {
|
|
268
|
-
this.record = input.required();
|
|
269
|
-
this.config = input.required();
|
|
255
|
+
this.record = input.required(...(ngDevMode ? [{ debugName: "record" }] : []));
|
|
256
|
+
this.config = input.required(...(ngDevMode ? [{ debugName: "config" }] : []));
|
|
270
257
|
this.viewContainerRef = inject(ViewContainerRef);
|
|
271
258
|
this.dynamicLoaderService = inject(DynamicComponentLoaderService);
|
|
272
259
|
effect(() => {
|
|
@@ -287,24 +274,28 @@ class TableColumnDirective {
|
|
|
287
274
|
// @ts-ignore
|
|
288
275
|
return BooleanColumnComponent;
|
|
289
276
|
case ColumnTypeEnum.Date:
|
|
277
|
+
case ColumnTypeEnum.DateTime:
|
|
290
278
|
// @ts-ignore
|
|
291
279
|
return DateTimeColumnComponent;
|
|
292
280
|
case ColumnTypeEnum.Guid:
|
|
293
281
|
// @ts-ignore
|
|
294
282
|
return TextColumnComponent;
|
|
283
|
+
case ColumnTypeEnum.Custom:
|
|
284
|
+
return this.config().component;
|
|
295
285
|
default:
|
|
296
286
|
throw Error();
|
|
297
287
|
}
|
|
298
288
|
}
|
|
299
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
300
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
289
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TableColumnDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
290
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.4", type: TableColumnDirective, isStandalone: false, selector: "[updTableColumn]", inputs: { record: { classPropertyName: "record", publicName: "record", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
|
|
301
291
|
}
|
|
302
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
292
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TableColumnDirective, decorators: [{
|
|
303
293
|
type: Directive,
|
|
304
294
|
args: [{
|
|
295
|
+
standalone: false,
|
|
305
296
|
selector: '[updTableColumn]'
|
|
306
297
|
}]
|
|
307
|
-
}], ctorParameters: () => [] });
|
|
298
|
+
}], ctorParameters: () => [], propDecorators: { record: [{ type: i0.Input, args: [{ isSignal: true, alias: "record", required: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }] } });
|
|
308
299
|
|
|
309
300
|
class BooleanColumnModel extends BaseColumnModel {
|
|
310
301
|
constructor(init) {
|
|
@@ -326,6 +317,15 @@ class BooleanColumnModel extends BaseColumnModel {
|
|
|
326
317
|
}
|
|
327
318
|
}
|
|
328
319
|
|
|
320
|
+
class CustomColumnModel extends BaseColumnModel {
|
|
321
|
+
constructor(init) {
|
|
322
|
+
super(ColumnTypeEnum.Custom, init);
|
|
323
|
+
if (!!init) {
|
|
324
|
+
Object.assign(this, init);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
329
|
class DateTimeColumnModel extends BaseColumnModel {
|
|
330
330
|
get dateTimeFormat() {
|
|
331
331
|
return this.customFormat || this.format;
|
|
@@ -397,6 +397,24 @@ class TableConfigModel {
|
|
|
397
397
|
this.data = [];
|
|
398
398
|
this.preSelectedItems = [];
|
|
399
399
|
this.searchInputDebounceTime = 300;
|
|
400
|
+
/**
|
|
401
|
+
* Actions added to each record row as a group of buttons.
|
|
402
|
+
*/
|
|
403
|
+
this.customActions = [];
|
|
404
|
+
/**
|
|
405
|
+
* Actions added to the header of the table as regular buttons.
|
|
406
|
+
*/
|
|
407
|
+
this.customHeaderActions = [];
|
|
408
|
+
/**
|
|
409
|
+
* Define custom filterable fields.
|
|
410
|
+
* If not provided and useColumnsAsFilters is true, filters will be auto-generated from columns.
|
|
411
|
+
*/
|
|
412
|
+
this.filterFields = [];
|
|
413
|
+
/**
|
|
414
|
+
* Whether to use columns as filters.
|
|
415
|
+
* If false, filterFields must be provided.
|
|
416
|
+
*/
|
|
417
|
+
this.useColumnsAsFilters = false;
|
|
400
418
|
this.getIdFunction = (item) => item.id;
|
|
401
419
|
if (!!init) {
|
|
402
420
|
Object.assign(this, init);
|
|
@@ -407,8 +425,8 @@ class TableConfigModel {
|
|
|
407
425
|
class ColumnsManagerComponent extends BaseModal {
|
|
408
426
|
constructor() {
|
|
409
427
|
super(...arguments);
|
|
410
|
-
this.config = computed(() => ({ columns: [this.visibleColumn(), this.hiddenColumn()], canReorder: true }));
|
|
411
|
-
this.columns = signal([]);
|
|
428
|
+
this.config = computed(() => ({ columns: [this.visibleColumn(), this.hiddenColumn()], canReorder: true }), ...(ngDevMode ? [{ debugName: "config" }] : []));
|
|
429
|
+
this.columns = signal([], ...(ngDevMode ? [{ debugName: "columns" }] : []));
|
|
412
430
|
this.visibleColumn = computed(() => ({
|
|
413
431
|
name: 'visible',
|
|
414
432
|
title: { text: 'UpDevs.Table.VisibleColumns', isTranslated: false },
|
|
@@ -417,7 +435,7 @@ class ColumnsManagerComponent extends BaseModal {
|
|
|
417
435
|
name: c.name,
|
|
418
436
|
text: c.title || { text: 'UpDevs.Table.ColumnTitleNotSet', isTranslated: false }
|
|
419
437
|
}))
|
|
420
|
-
}));
|
|
438
|
+
}), ...(ngDevMode ? [{ debugName: "visibleColumn" }] : []));
|
|
421
439
|
this.hiddenColumn = computed(() => ({
|
|
422
440
|
name: 'hidden',
|
|
423
441
|
title: { text: 'UpDevs.Table.HiddenColumns', isTranslated: false },
|
|
@@ -425,42 +443,38 @@ class ColumnsManagerComponent extends BaseModal {
|
|
|
425
443
|
name: c.name,
|
|
426
444
|
text: c.title || { text: 'UpDevs.Table.ColumnTitleNotSet', isTranslated: false }
|
|
427
445
|
}))
|
|
428
|
-
}));
|
|
446
|
+
}), ...(ngDevMode ? [{ debugName: "hiddenColumn" }] : []));
|
|
429
447
|
}
|
|
430
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
431
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
448
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ColumnsManagerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
449
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: ColumnsManagerComponent, isStandalone: false, selector: "upd-columns-manager", usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table.ColumnsManager'\">\n <upd-drag-and-drop [config]=\"config()\" [(columns)]=\"columns\"></upd-drag-and-drop>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i2.DragAndDropComponent, selector: "upd-drag-and-drop", inputs: ["config", "columns"], outputs: ["columnsChange"] }] }); }
|
|
432
450
|
}
|
|
433
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
451
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ColumnsManagerComponent, decorators: [{
|
|
434
452
|
type: Component,
|
|
435
|
-
args: [{ selector: 'upd-columns-manager', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table.ColumnsManager'\">\n <upd-drag-and-drop [config]=\"config()\" [(columns)]=\"columns\"></upd-drag-and-drop>\n</ng-container>\n" }]
|
|
453
|
+
args: [{ standalone: false, selector: 'upd-columns-manager', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table.ColumnsManager'\">\n <upd-drag-and-drop [config]=\"config()\" [(columns)]=\"columns\"></upd-drag-and-drop>\n</ng-container>\n" }]
|
|
436
454
|
}] });
|
|
437
455
|
|
|
438
|
-
class SavedViewsStorage extends
|
|
439
|
-
get loggedUserId() {
|
|
440
|
-
return this.securityStorage.getUserInfo()?.id || 'nl';
|
|
441
|
-
}
|
|
456
|
+
class SavedViewsStorage extends BaseByUserSignalStorage {
|
|
442
457
|
constructor() {
|
|
443
458
|
super('saved-views');
|
|
444
|
-
this.securityStorage = inject(SecurityStorage);
|
|
445
459
|
this.lastStateKey = 'last-state';
|
|
446
460
|
}
|
|
447
461
|
saveView(data) {
|
|
448
462
|
data.id = data.id || Tools.Guid.generate();
|
|
449
|
-
data.userId = this.
|
|
450
|
-
this.save(data, this.
|
|
463
|
+
data.userId = this._loggedUserId;
|
|
464
|
+
this.save(data, this._getUserKey(data.id, data.tableName));
|
|
451
465
|
}
|
|
452
466
|
saveLastState(data) {
|
|
453
467
|
data.id = this.lastStateKey;
|
|
454
468
|
this.saveView(data);
|
|
455
469
|
}
|
|
456
470
|
getById(tableName, id) {
|
|
457
|
-
return this.get(this.
|
|
471
|
+
return this.get(this._getUserKey(id, tableName));
|
|
458
472
|
}
|
|
459
473
|
getAll(tableName) {
|
|
460
474
|
return computed(() => {
|
|
461
475
|
const records = this.getAllItems();
|
|
462
476
|
return records().filter(sv => sv.tableName.toLowerCase() === tableName.toLowerCase()
|
|
463
|
-
&& sv.userId === this.
|
|
477
|
+
&& sv.userId === this._loggedUserId
|
|
464
478
|
&& sv.id !== this.lastStateKey);
|
|
465
479
|
});
|
|
466
480
|
}
|
|
@@ -475,29 +489,26 @@ class SavedViewsStorage extends BaseSignalStorage {
|
|
|
475
489
|
});
|
|
476
490
|
}
|
|
477
491
|
removeViews(tableName, ...keys) {
|
|
478
|
-
super.remove(...keys.map(k => this.
|
|
492
|
+
super.remove(...keys.map(k => this._getUserKey(k, tableName)));
|
|
479
493
|
}
|
|
480
494
|
getByName(tableName, name) {
|
|
481
495
|
const records = this.getAllItems();
|
|
482
496
|
return records().find(sv => sv.tableName.toLowerCase() === tableName.toLowerCase()
|
|
483
|
-
&& sv.userId === this.
|
|
497
|
+
&& sv.userId === this._loggedUserId
|
|
484
498
|
&& sv.name?.toLowerCase() === name?.toLowerCase()
|
|
485
499
|
&& sv.id !== this.lastStateKey);
|
|
486
500
|
}
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
}
|
|
490
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SavedViewsStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
491
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SavedViewsStorage }); }
|
|
501
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: SavedViewsStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
502
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: SavedViewsStorage }); }
|
|
492
503
|
}
|
|
493
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
504
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: SavedViewsStorage, decorators: [{
|
|
494
505
|
type: Injectable
|
|
495
506
|
}], ctorParameters: () => [] });
|
|
496
507
|
|
|
497
508
|
class SaveSearchComponent extends BaseModal {
|
|
498
509
|
constructor() {
|
|
499
510
|
super(...arguments);
|
|
500
|
-
this.formGroup = model(new FormGroup({}));
|
|
511
|
+
this.formGroup = model(new FormGroup({}), ...(ngDevMode ? [{ debugName: "formGroup" }] : []));
|
|
501
512
|
this.formRows = [];
|
|
502
513
|
this.savedViewsStorage = inject(SavedViewsStorage);
|
|
503
514
|
this.uniqueNameValidator = () => (control) => {
|
|
@@ -549,12 +560,263 @@ class SaveSearchComponent extends BaseModal {
|
|
|
549
560
|
this.savedViewsStorage.saveView(data);
|
|
550
561
|
this.modalRef().close();
|
|
551
562
|
}
|
|
552
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
553
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
563
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: SaveSearchComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
564
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.4", type: SaveSearchComponent, isStandalone: false, selector: "upd-save-search", inputs: { formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { formGroup: "formGroupChange" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table.SaveSearch'\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{ t('Title') }}</h5>\n </div>\n <div class=\"modal-body py-4\">\n <upd-form [rows]=\"formRows\" [hasActionsSection]=\"false\" [(formGroup)]=\"formGroup\"></upd-form>\n </div>\n <div class=\"modal-footer\">\n <upd-button colorStyle=\"secondary\" [isLink]=\"true\" (clicked)=\"cancel()\">\n {{ t('Cancel') }}\n </upd-button>\n <upd-button colorStyle=\"primary\" [iconModel]=\"{tablerIcon:'device-floppy'}\" (clicked)=\"save()\" [isDisabled]=\"!formGroup().valid\">\n {{ t('Save') }}\n </upd-button>\n </div>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i4.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title", "stopPropagation"], outputs: ["clicked"] }, { kind: "component", type: i3$1.FormComponent, selector: "upd-form", inputs: ["rows", "layout", "title", "hasActionsSection", "isCard", "isDisabled", "isLoading", "isSaving", "formData", "formGroup"], outputs: ["initialized", "dataLoaded", "submitted", "formDataChange", "formGroupChange"] }] }); }
|
|
554
565
|
}
|
|
555
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
566
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: SaveSearchComponent, decorators: [{
|
|
556
567
|
type: Component,
|
|
557
|
-
args: [{ selector: 'upd-save-search', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table.SaveSearch'\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{ t('Title') }}</h5>\n </div>\n <div class=\"modal-body py-4\">\n <upd-form [rows]=\"formRows\" [hasActionsSection]=\"false\" [(formGroup)]=\"formGroup\"></upd-form>\n </div>\n <div class=\"modal-footer\">\n <upd-button colorStyle=\"secondary\" [isLink]=\"true\" (clicked)=\"cancel()\">\n {{ t('Cancel') }}\n </upd-button>\n <upd-button colorStyle=\"primary\" [iconModel]=\"{tablerIcon:'device-floppy'}\" (clicked)=\"save()\" [isDisabled]=\"!formGroup().valid\">\n {{ t('Save') }}\n </upd-button>\n </div>\n</ng-container>\n" }]
|
|
568
|
+
args: [{ standalone: false, selector: 'upd-save-search', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table.SaveSearch'\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{ t('Title') }}</h5>\n </div>\n <div class=\"modal-body py-4\">\n <upd-form [rows]=\"formRows\" [hasActionsSection]=\"false\" [(formGroup)]=\"formGroup\"></upd-form>\n </div>\n <div class=\"modal-footer\">\n <upd-button colorStyle=\"secondary\" [isLink]=\"true\" (clicked)=\"cancel()\">\n {{ t('Cancel') }}\n </upd-button>\n <upd-button colorStyle=\"primary\" [iconModel]=\"{tablerIcon:'device-floppy'}\" (clicked)=\"save()\" [isDisabled]=\"!formGroup().valid\">\n {{ t('Save') }}\n </upd-button>\n </div>\n</ng-container>\n" }]
|
|
569
|
+
}], propDecorators: { formGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "formGroup", required: false }] }, { type: i0.Output, args: ["formGroupChange"] }] } });
|
|
570
|
+
|
|
571
|
+
/**
|
|
572
|
+
* Service to manage the current search request state across table components.
|
|
573
|
+
* Uses Angular signals for reactive state management, eliminating the need for prop drilling.
|
|
574
|
+
* Should be provided at the table component level so each table instance has its own state.
|
|
575
|
+
*/
|
|
576
|
+
class CurrentSearchRequestService {
|
|
577
|
+
constructor() {
|
|
578
|
+
this._searchRequest = signal({}, ...(ngDevMode ? [{ debugName: "_searchRequest" }] : []));
|
|
579
|
+
this._isSearching = signal(false, ...(ngDevMode ? [{ debugName: "_isSearching" }] : []));
|
|
580
|
+
this._hasChanges = signal(false, ...(ngDevMode ? [{ debugName: "_hasChanges" }] : []));
|
|
581
|
+
/**
|
|
582
|
+
* Read-only signal for the current search request
|
|
583
|
+
*/
|
|
584
|
+
this.searchRequest = this._searchRequest.asReadonly();
|
|
585
|
+
/**
|
|
586
|
+
* Read-only signal for the searching state
|
|
587
|
+
*/
|
|
588
|
+
this.isSearching = this._isSearching.asReadonly();
|
|
589
|
+
/**
|
|
590
|
+
* Read-only signal indicating if the search request has changed from default
|
|
591
|
+
*/
|
|
592
|
+
this.hasChanges = this._hasChanges.asReadonly();
|
|
593
|
+
/**
|
|
594
|
+
* Subject to trigger search operations
|
|
595
|
+
*/
|
|
596
|
+
this.searchRequestSubject = new Subject();
|
|
597
|
+
/**
|
|
598
|
+
* Count of active filters (non-hidden)
|
|
599
|
+
*/
|
|
600
|
+
this.activeFilterCount = computed(() => this.searchRequest().filters?.filter(f => !f.isHidden).length || 0, ...(ngDevMode ? [{ debugName: "activeFilterCount" }] : []));
|
|
601
|
+
/**
|
|
602
|
+
* Whether there are any active filters
|
|
603
|
+
*/
|
|
604
|
+
this.hasFilters = computed(() => (this.searchRequest().filters?.length || 0) > 0, ...(ngDevMode ? [{ debugName: "hasFilters" }] : []));
|
|
605
|
+
/**
|
|
606
|
+
* Count of visible (non-hidden) filters
|
|
607
|
+
*/
|
|
608
|
+
this.visibleFilterCount = computed(() => this.searchRequest().filters?.filter(f => !f.isHidden).length || 0, ...(ngDevMode ? [{ debugName: "visibleFilterCount" }] : []));
|
|
609
|
+
/**
|
|
610
|
+
* Whether there's a search description/text query
|
|
611
|
+
*/
|
|
612
|
+
this.hasDescription = computed(() => !!this.searchRequest().description && this.searchRequest().description.length > 0, ...(ngDevMode ? [{ debugName: "hasDescription" }] : []));
|
|
613
|
+
/**
|
|
614
|
+
* Whether there are any sortings applied
|
|
615
|
+
*/
|
|
616
|
+
this.hasSorting = computed(() => (this.searchRequest().sortings?.length || 0) > 0, ...(ngDevMode ? [{ debugName: "hasSorting" }] : []));
|
|
617
|
+
/**
|
|
618
|
+
* The current sorting (first one if multiple exist)
|
|
619
|
+
*/
|
|
620
|
+
this.currentSorting = computed(() => this.hasSorting() ? this.searchRequest().sortings[0] : undefined, ...(ngDevMode ? [{ debugName: "currentSorting" }] : []));
|
|
621
|
+
/**
|
|
622
|
+
* Whether any search criteria is active (filters, description, or sorting)
|
|
623
|
+
*/
|
|
624
|
+
this.hasAnySearchCriteria = computed(() => this.hasFilters() || this.hasDescription() || this.hasSorting(), ...(ngDevMode ? [{ debugName: "hasAnySearchCriteria" }] : []));
|
|
625
|
+
/**
|
|
626
|
+
* Current page number (1-indexed for display)
|
|
627
|
+
*/
|
|
628
|
+
this.currentPageNumber = computed(() => (this.searchRequest().pageIndex || 0) + 1, ...(ngDevMode ? [{ debugName: "currentPageNumber" }] : []));
|
|
629
|
+
/**
|
|
630
|
+
* Whether pagination is configured
|
|
631
|
+
*/
|
|
632
|
+
this.hasPagination = computed(() => !!this.searchRequest().pageSize && this.searchRequest().pageSize > 0, ...(ngDevMode ? [{ debugName: "hasPagination" }] : []));
|
|
633
|
+
}
|
|
634
|
+
/**
|
|
635
|
+
* Updates the entire search request
|
|
636
|
+
* @param request The new search request
|
|
637
|
+
*/
|
|
638
|
+
updateSearchRequest(request) {
|
|
639
|
+
const previousRequest = this._searchRequest();
|
|
640
|
+
this._searchRequest.set(request);
|
|
641
|
+
// Only mark as changed if the new request is actually different from previous
|
|
642
|
+
if (!this.areSearchRequestsEqual(previousRequest, request)) {
|
|
643
|
+
this._hasChanges.set(true);
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
/**
|
|
647
|
+
* Partially updates the search request
|
|
648
|
+
* @param partial Partial search request properties to update
|
|
649
|
+
*/
|
|
650
|
+
patchSearchRequest(partial) {
|
|
651
|
+
const previousRequest = this._searchRequest();
|
|
652
|
+
const newRequest = { ...previousRequest, ...partial };
|
|
653
|
+
this._searchRequest.set(newRequest);
|
|
654
|
+
// Only mark as changed if the patch actually changed something
|
|
655
|
+
if (!this.areSearchRequestsEqual(previousRequest, newRequest)) {
|
|
656
|
+
this._hasChanges.set(true);
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
/**
|
|
660
|
+
* Sets the searching state
|
|
661
|
+
* @param isSearching Whether a search is in progress
|
|
662
|
+
*/
|
|
663
|
+
setSearching(isSearching) {
|
|
664
|
+
this._isSearching.set(isSearching);
|
|
665
|
+
}
|
|
666
|
+
/**
|
|
667
|
+
* Resets the search request to default state
|
|
668
|
+
*/
|
|
669
|
+
reset() {
|
|
670
|
+
this._searchRequest.set({});
|
|
671
|
+
this._isSearching.set(false);
|
|
672
|
+
this._hasChanges.set(false);
|
|
673
|
+
}
|
|
674
|
+
/**
|
|
675
|
+
* Triggers a search operation by emitting on the searchRequestSubject
|
|
676
|
+
*/
|
|
677
|
+
triggerSearch() {
|
|
678
|
+
this.searchRequestSubject.next(this._searchRequest());
|
|
679
|
+
}
|
|
680
|
+
/**
|
|
681
|
+
* Manually sets the hasChanges flag
|
|
682
|
+
* Useful for changes that aren't part of the search request but should enable Save View
|
|
683
|
+
* (e.g., column visibility changes)
|
|
684
|
+
* @param hasChanges Whether there are changes
|
|
685
|
+
*/
|
|
686
|
+
setHasChanges(hasChanges) {
|
|
687
|
+
this._hasChanges.set(hasChanges);
|
|
688
|
+
}
|
|
689
|
+
/**
|
|
690
|
+
* Adds a filter to the search request
|
|
691
|
+
* @param filter The filter to add
|
|
692
|
+
*/
|
|
693
|
+
addFilter(filter) {
|
|
694
|
+
const currentFilters = this.searchRequest().filters || [];
|
|
695
|
+
this.patchSearchRequest({ filters: [...currentFilters, filter] });
|
|
696
|
+
}
|
|
697
|
+
/**
|
|
698
|
+
* Removes a filter by name
|
|
699
|
+
* @param filterName The name of the filter column to remove
|
|
700
|
+
*/
|
|
701
|
+
removeFilter(filterName) {
|
|
702
|
+
const currentFilters = this.searchRequest().filters || [];
|
|
703
|
+
this.patchSearchRequest({ filters: currentFilters.filter(f => f.column !== filterName) });
|
|
704
|
+
}
|
|
705
|
+
/**
|
|
706
|
+
* Removes a filter by index
|
|
707
|
+
* @param index The index of the filter to remove
|
|
708
|
+
*/
|
|
709
|
+
removeFilterByIndex(index) {
|
|
710
|
+
const currentFilters = this.searchRequest().filters || [];
|
|
711
|
+
this.patchSearchRequest({ filters: currentFilters.filter((_, i) => i !== index) });
|
|
712
|
+
}
|
|
713
|
+
/**
|
|
714
|
+
* Updates a specific filter by column name
|
|
715
|
+
* @param columnName The column name of the filter to update
|
|
716
|
+
* @param newData Partial filter properties to update
|
|
717
|
+
*/
|
|
718
|
+
updateFilter(columnName, newData) {
|
|
719
|
+
const currentFilters = this.searchRequest().filters || [];
|
|
720
|
+
this.patchSearchRequest({ filters: currentFilters.map(f => f.column === columnName ? { ...f, ...newData } : f) });
|
|
721
|
+
}
|
|
722
|
+
/**
|
|
723
|
+
* Updates a filter by its index position
|
|
724
|
+
* @param index The index of the filter to update
|
|
725
|
+
* @param newData Partial filter properties to update
|
|
726
|
+
*/
|
|
727
|
+
updateFilterByIndex(index, newData) {
|
|
728
|
+
const currentFilters = this.searchRequest().filters || [];
|
|
729
|
+
if (index >= 0 && index < currentFilters.length) {
|
|
730
|
+
this.patchSearchRequest({ filters: currentFilters.map((f, i) => i === index ? { ...f, ...newData } : f) });
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
/**
|
|
734
|
+
* Clears all filters
|
|
735
|
+
*/
|
|
736
|
+
clearFilters() {
|
|
737
|
+
this.patchSearchRequest({ filters: [] });
|
|
738
|
+
}
|
|
739
|
+
/**
|
|
740
|
+
* Sets the sorting (replaces existing sortings)
|
|
741
|
+
* @param column The column name to sort by
|
|
742
|
+
* @param direction The sort direction
|
|
743
|
+
*/
|
|
744
|
+
setSorting(column, direction) {
|
|
745
|
+
this.patchSearchRequest({ sortings: [{ column, direction }] });
|
|
746
|
+
}
|
|
747
|
+
/**
|
|
748
|
+
* Clears all sorting
|
|
749
|
+
*/
|
|
750
|
+
clearSorting() {
|
|
751
|
+
this.patchSearchRequest({ sortings: [] });
|
|
752
|
+
}
|
|
753
|
+
/**
|
|
754
|
+
* Sets the search description/text query
|
|
755
|
+
* @param description The search text
|
|
756
|
+
*/
|
|
757
|
+
setDescription(description) {
|
|
758
|
+
this.patchSearchRequest({ description });
|
|
759
|
+
}
|
|
760
|
+
/**
|
|
761
|
+
* Clears the search description
|
|
762
|
+
*/
|
|
763
|
+
clearDescription() {
|
|
764
|
+
this.patchSearchRequest({ description: '' });
|
|
765
|
+
}
|
|
766
|
+
/**
|
|
767
|
+
* Clears ALL search criteria (filters, description, sorting)
|
|
768
|
+
* Note: Does not reset pagination - use reset() for that
|
|
769
|
+
*/
|
|
770
|
+
clearAll() {
|
|
771
|
+
this.patchSearchRequest({ filters: [], description: '', sortings: [] });
|
|
772
|
+
}
|
|
773
|
+
/**
|
|
774
|
+
* Clears all search criteria except pagination
|
|
775
|
+
* Useful when you want to reset search but maintain current page
|
|
776
|
+
*/
|
|
777
|
+
clearAllExceptPagination() {
|
|
778
|
+
this.clearAll();
|
|
779
|
+
}
|
|
780
|
+
/**
|
|
781
|
+
* Deep comparison of two search requests
|
|
782
|
+
* @param a First search request
|
|
783
|
+
* @param b Second search request
|
|
784
|
+
* @returns true if they are equal, false otherwise
|
|
785
|
+
*/
|
|
786
|
+
areSearchRequestsEqual(a, b) {
|
|
787
|
+
if ((a.description || '') !== (b.description || '')) {
|
|
788
|
+
return false;
|
|
789
|
+
}
|
|
790
|
+
const aFilters = a.filters || [];
|
|
791
|
+
const bFilters = b.filters || [];
|
|
792
|
+
if (aFilters.length !== bFilters.length) {
|
|
793
|
+
return false;
|
|
794
|
+
}
|
|
795
|
+
for (let i = 0; i < aFilters.length; i++) {
|
|
796
|
+
if (JSON.stringify(aFilters[i]) !== JSON.stringify(bFilters[i])) {
|
|
797
|
+
return false;
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
const aSortings = a.sortings || [];
|
|
801
|
+
const bSortings = b.sortings || [];
|
|
802
|
+
if (aSortings.length !== bSortings.length) {
|
|
803
|
+
return false;
|
|
804
|
+
}
|
|
805
|
+
for (let i = 0; i < aSortings.length; i++) {
|
|
806
|
+
if (JSON.stringify(aSortings[i]) !== JSON.stringify(bSortings[i])) {
|
|
807
|
+
return false;
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
if (a.pageSize !== b.pageSize || a.pageIndex !== b.pageIndex) {
|
|
811
|
+
return false;
|
|
812
|
+
}
|
|
813
|
+
return true;
|
|
814
|
+
}
|
|
815
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CurrentSearchRequestService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
816
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CurrentSearchRequestService }); }
|
|
817
|
+
}
|
|
818
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CurrentSearchRequestService, decorators: [{
|
|
819
|
+
type: Injectable
|
|
558
820
|
}] });
|
|
559
821
|
|
|
560
822
|
class FilterTools {
|
|
@@ -562,42 +824,64 @@ class FilterTools {
|
|
|
562
824
|
return filters.map(f => ({
|
|
563
825
|
name: f.column,
|
|
564
826
|
value: f.value,
|
|
565
|
-
operandConfig: operands[f.
|
|
827
|
+
operandConfig: f.type && operands[f.type] ? operands[f.type].find(op => op.operand === f.operand) : undefined,
|
|
828
|
+
isHidden: f.isHidden,
|
|
829
|
+
type: f.type
|
|
566
830
|
}));
|
|
567
831
|
}
|
|
568
|
-
static convertToRequestFilter(filters, columns) {
|
|
832
|
+
static convertToRequestFilter(filters, filtersConfigs = [], columns = []) {
|
|
569
833
|
return filters.map(af => {
|
|
570
|
-
const
|
|
571
|
-
|
|
572
|
-
|
|
834
|
+
const filterType = filtersConfigs.length > 0
|
|
835
|
+
? filtersConfigs.find(c => c.name === af.name).type
|
|
836
|
+
: columns.find(c => c.name === af.name).filterType;
|
|
837
|
+
switch (filterType) {
|
|
838
|
+
case FilterTypeEnum.Boolean:
|
|
573
839
|
return new BooleanColumnFilter({
|
|
574
840
|
column: af.name,
|
|
575
841
|
value: af.value,
|
|
576
|
-
operand: !!af.operandConfig ? af.operandConfig.operand : undefined
|
|
842
|
+
operand: !!af.operandConfig ? af.operandConfig.operand : undefined,
|
|
843
|
+
isHidden: af.isHidden,
|
|
844
|
+
type: filterType
|
|
577
845
|
});
|
|
578
|
-
case
|
|
846
|
+
case FilterTypeEnum.Date:
|
|
579
847
|
return new DateColumnFilter({
|
|
580
848
|
column: af.name,
|
|
581
849
|
value: af.value,
|
|
582
|
-
operand: !!af.operandConfig ? af.operandConfig.operand : undefined
|
|
850
|
+
operand: !!af.operandConfig ? af.operandConfig.operand : undefined,
|
|
851
|
+
isHidden: af.isHidden,
|
|
852
|
+
type: filterType
|
|
583
853
|
});
|
|
584
|
-
case
|
|
854
|
+
case FilterTypeEnum.Number:
|
|
585
855
|
return new NumberColumnFilter({
|
|
586
856
|
column: af.name,
|
|
587
857
|
value: af.value,
|
|
588
|
-
operand: !!af.operandConfig ? af.operandConfig.operand : undefined
|
|
858
|
+
operand: !!af.operandConfig ? af.operandConfig.operand : undefined,
|
|
859
|
+
isHidden: af.isHidden,
|
|
860
|
+
type: filterType
|
|
589
861
|
});
|
|
590
|
-
case
|
|
862
|
+
case FilterTypeEnum.Select:
|
|
863
|
+
return new SelectColumnFilter({
|
|
864
|
+
column: af.name,
|
|
865
|
+
value: af.value,
|
|
866
|
+
operand: !!af.operandConfig ? af.operandConfig.operand : undefined,
|
|
867
|
+
isHidden: af.isHidden,
|
|
868
|
+
type: filterType
|
|
869
|
+
});
|
|
870
|
+
case FilterTypeEnum.Guid:
|
|
591
871
|
return new GuidColumnFilter({
|
|
592
872
|
column: af.name,
|
|
593
873
|
value: af.value,
|
|
594
|
-
operand: !!af.operandConfig ? af.operandConfig.operand : undefined
|
|
874
|
+
operand: !!af.operandConfig ? af.operandConfig.operand : undefined,
|
|
875
|
+
isHidden: af.isHidden,
|
|
876
|
+
type: filterType
|
|
595
877
|
});
|
|
596
878
|
default:
|
|
597
879
|
return new StringColumnFilter({
|
|
598
880
|
column: af.name,
|
|
599
881
|
value: af.value,
|
|
600
|
-
operand: !!af.operandConfig ? af.operandConfig.operand : undefined
|
|
882
|
+
operand: !!af.operandConfig ? af.operandConfig.operand : undefined,
|
|
883
|
+
isHidden: af.isHidden,
|
|
884
|
+
type: filterType
|
|
601
885
|
});
|
|
602
886
|
}
|
|
603
887
|
});
|
|
@@ -631,10 +915,10 @@ class UpdTableConfigService {
|
|
|
631
915
|
constructor(layoutConfig) {
|
|
632
916
|
this.config = new UpdTableConfigModel(layoutConfig);
|
|
633
917
|
}
|
|
634
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
635
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
918
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: UpdTableConfigService, deps: [{ token: TableConstants.defaultOptionsInjectionToken }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
919
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: UpdTableConfigService }); }
|
|
636
920
|
}
|
|
637
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
921
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: UpdTableConfigService, decorators: [{
|
|
638
922
|
type: Injectable
|
|
639
923
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
640
924
|
type: Inject,
|
|
@@ -646,25 +930,27 @@ class FilterRowComponent extends BaseComponent {
|
|
|
646
930
|
super(...arguments);
|
|
647
931
|
this.wrapperClasses = 'd-flex gap-2';
|
|
648
932
|
this.removed = new EventEmitter();
|
|
649
|
-
this.
|
|
650
|
-
this.
|
|
651
|
-
this.
|
|
652
|
-
this.
|
|
653
|
-
this.
|
|
654
|
-
this.
|
|
655
|
-
this.currentFilter = input();
|
|
656
|
-
this.currentField = signal(undefined);
|
|
657
|
-
this.currentOperand = signal(undefined);
|
|
658
|
-
this.fieldsOptions = signal([]);
|
|
659
|
-
this.comparisonOperatorOptions = signal([]);
|
|
660
|
-
this.
|
|
933
|
+
this.FilterTypeEnum = FilterTypeEnum;
|
|
934
|
+
this.rowIndex = input.required(...(ngDevMode ? [{ debugName: "rowIndex" }] : []));
|
|
935
|
+
this.columns = input.required(...(ngDevMode ? [{ debugName: "columns" }] : []));
|
|
936
|
+
this.isDisabled = input.required(...(ngDevMode ? [{ debugName: "isDisabled" }] : []));
|
|
937
|
+
this.store = input(...(ngDevMode ? [undefined, { debugName: "store" }] : []));
|
|
938
|
+
this.filterFields = input(...(ngDevMode ? [undefined, { debugName: "filterFields" }] : []));
|
|
939
|
+
this.currentFilter = input(...(ngDevMode ? [undefined, { debugName: "currentFilter" }] : []));
|
|
940
|
+
this.currentField = signal(undefined, ...(ngDevMode ? [{ debugName: "currentField" }] : []));
|
|
941
|
+
this.currentOperand = signal(undefined, ...(ngDevMode ? [{ debugName: "currentOperand" }] : []));
|
|
942
|
+
this.fieldsOptions = signal([], ...(ngDevMode ? [{ debugName: "fieldsOptions" }] : []));
|
|
943
|
+
this.comparisonOperatorOptions = signal([], ...(ngDevMode ? [{ debugName: "comparisonOperatorOptions" }] : []));
|
|
944
|
+
this.fieldAllowedValues = signal([], ...(ngDevMode ? [{ debugName: "fieldAllowedValues" }] : []));
|
|
945
|
+
this.isValueSectionEnabled = signal(true, ...(ngDevMode ? [{ debugName: "isValueSectionEnabled" }] : []));
|
|
661
946
|
this.currentOperands = [];
|
|
662
947
|
this.configService = inject(UpdTableConfigService);
|
|
663
948
|
this.filtersOperandsService = inject(FiltersOperandsService);
|
|
664
949
|
this.textService = inject(TextService);
|
|
950
|
+
this.currentSearchRequestService = inject(CurrentSearchRequestService);
|
|
665
951
|
}
|
|
666
952
|
get fieldType() {
|
|
667
|
-
return this.currentField()?.objectData ||
|
|
953
|
+
return this.currentField()?.objectData || FilterTypeEnum.Text;
|
|
668
954
|
}
|
|
669
955
|
get selectedField() {
|
|
670
956
|
const currentFilter = this.currentFilter();
|
|
@@ -683,17 +969,38 @@ class FilterRowComponent extends BaseComponent {
|
|
|
683
969
|
return !!currentFilter?.name ? currentFilter.value : undefined;
|
|
684
970
|
}
|
|
685
971
|
ngOnInit() {
|
|
686
|
-
|
|
687
|
-
|
|
972
|
+
// Priority 1: User-defined filter fields
|
|
973
|
+
if (!!this.filterFields() && this.filterFields().length > 0) {
|
|
974
|
+
this.fieldsOptions.set(this.filterFields().map(f => ({
|
|
975
|
+
value: f.name,
|
|
976
|
+
text: this.textService.getText(f.label),
|
|
977
|
+
objectData: f.type
|
|
978
|
+
})));
|
|
688
979
|
}
|
|
980
|
+
// Priority 2: Server-loaded fields
|
|
981
|
+
else if (!!this.store() && this.configService.config.shouldLoadFieldsFromServer) {
|
|
982
|
+
this.store().getFilterableFields().subscribe(fields => this.fieldsOptions.set(fields.map(f => ({
|
|
983
|
+
value: f.name,
|
|
984
|
+
text: f.description,
|
|
985
|
+
objectData: f.type
|
|
986
|
+
}))));
|
|
987
|
+
}
|
|
988
|
+
// Priority 3: Fallback to columns
|
|
689
989
|
else {
|
|
690
|
-
this.fieldsOptions.set(this.columns().filter(c => !!c.title).map(c => ({
|
|
990
|
+
this.fieldsOptions.set(this.columns().filter(c => !!c.title).map(c => ({
|
|
991
|
+
value: c.name,
|
|
992
|
+
text: this.textService.getText(c.title),
|
|
993
|
+
objectData: c.dataType
|
|
994
|
+
})));
|
|
691
995
|
}
|
|
692
996
|
if (!!this.selectedField) {
|
|
997
|
+
this.onSelectField(this.selectedField);
|
|
693
998
|
if (!!this.selectedOperand) {
|
|
694
999
|
this.onSelectOperand(this.selectedOperand);
|
|
695
1000
|
}
|
|
696
|
-
|
|
1001
|
+
if (!!this.selectedValue) {
|
|
1002
|
+
this.updateValue(this.selectedValue);
|
|
1003
|
+
}
|
|
697
1004
|
}
|
|
698
1005
|
}
|
|
699
1006
|
onSelectField(item) {
|
|
@@ -706,78 +1013,68 @@ class FilterRowComponent extends BaseComponent {
|
|
|
706
1013
|
else {
|
|
707
1014
|
this.comparisonOperatorOptions.set([]);
|
|
708
1015
|
}
|
|
709
|
-
this.
|
|
710
|
-
|
|
711
|
-
|
|
1016
|
+
this.currentSearchRequestService.updateFilterByIndex(this.rowIndex(), {
|
|
1017
|
+
column: this.currentField()?.value,
|
|
1018
|
+
type: this.fieldType,
|
|
1019
|
+
dataType: dataType
|
|
712
1020
|
});
|
|
713
1021
|
}
|
|
714
1022
|
onSelectOperand(item) {
|
|
715
1023
|
this.currentOperand.set(this.currentOperands.find(co => co.operand === item?.value));
|
|
716
1024
|
this.isValueSectionEnabled.set(!!this.currentOperand()?.requiresValue);
|
|
717
|
-
this.
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
1025
|
+
this.currentSearchRequestService.updateFilterByIndex(this.rowIndex(), { operand: this.currentOperand()?.operand });
|
|
1026
|
+
if (this.fieldType === FilterTypeEnum.Select) {
|
|
1027
|
+
const values = this.filterFields()?.find(f => f.name === this.currentField()?.value)?.allowedValues || [];
|
|
1028
|
+
this.fieldAllowedValues.set(values.map(v => ({ value: v.key, text: v.value })));
|
|
1029
|
+
}
|
|
721
1030
|
}
|
|
722
1031
|
updateValue(value) {
|
|
723
|
-
this.
|
|
724
|
-
curr[this.rowIndex()].value = value;
|
|
725
|
-
return [...curr];
|
|
726
|
-
});
|
|
1032
|
+
this.currentSearchRequestService.updateFilterByIndex(this.rowIndex(), { value });
|
|
727
1033
|
}
|
|
728
1034
|
removeFilterItem() {
|
|
729
|
-
this.
|
|
730
|
-
curr.splice(this.rowIndex(), 1);
|
|
731
|
-
return [...curr];
|
|
732
|
-
});
|
|
1035
|
+
this.currentSearchRequestService.removeFilterByIndex(this.rowIndex());
|
|
733
1036
|
this.removed.emit();
|
|
734
1037
|
}
|
|
735
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
736
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1038
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: FilterRowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1039
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: FilterRowComponent, isStandalone: false, selector: "upd-filter-row", inputs: { rowIndex: { classPropertyName: "rowIndex", publicName: "rowIndex", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: true, transformFunction: null }, store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: false, transformFunction: null }, filterFields: { classPropertyName: "filterFields", publicName: "filterFields", isSignal: true, isRequired: false, transformFunction: null }, currentFilter: { classPropertyName: "currentFilter", publicName: "currentFilter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { removed: "removed" }, host: { properties: { "class": "this.wrapperClasses" } }, usesInheritance: true, ngImport: i0, template: "<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldsOptions()\" (selectedItem)=\"onSelectField($event)\"\n [value]=\"selectedField?.value\">\n</upd-select>\n<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"comparisonOperatorOptions()\"\n (selectedItem)=\"onSelectOperand($event)\" [value]=\"selectedOperand?.value\">\n</upd-select>\n\n@if (isValueSectionEnabled()) {\n @switch (fieldType) {\n @case (FilterTypeEnum.Number) {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"number\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n @case (FilterTypeEnum.Date) {\n\n }\n @case (FilterTypeEnum.Select) {\n <upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldAllowedValues()\"\n (selectedItem)=\"updateValue($event?.value)\" [value]=\"selectedValue\">\n </upd-select>\n }\n @default {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"text\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n }\n} @else {\n <div class=\"w-100\">\n <input type=\"text\" class=\"form-control h-100\" disabled>\n </div>\n}\n\n<upd-button class=\"flex-shrink-1\" colorStyle=\"danger\" [isDisabled]=\"isDisabled()\" [isOutline]=\"true\" [isIcon]=\"true\"\n [iconModel]=\"{tablerIcon:'x'}\" (clicked)=\"removeFilterItem()\"></upd-button>", styles: [""], dependencies: [{ kind: "component", type: i4.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title", "stopPropagation"], outputs: ["clicked"] }, { kind: "component", type: i5.InputComponent, selector: "upd-input", inputs: ["type", "mask", "maskConfig", "value", "size", "customClasses", "wrapperClasses", "maxLength", "isPlainText", "isReadOnly", "isLoading", "isRound", "isFlush", "isInputGroupFlat", "isPrependButton", "isAppendButton", "isFloating", "loaderPosition", "prependIconModel", "appendIconModel", "isValidationStatusLight", "layout"], outputs: ["valueChange", "blurred", "keyDown", "keyDownEsc", "keyUpEnter"] }, { kind: "component", type: i3$2.SelectComponent, selector: "upd-select", inputs: ["useSystemStyle", "shouldShowClearButton", "shouldTruncateSelectedText", "isCompact", "value"], outputs: ["valueChange", "selectedItem"] }] }); }
|
|
737
1040
|
}
|
|
738
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1041
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: FilterRowComponent, decorators: [{
|
|
739
1042
|
type: Component,
|
|
740
|
-
args: [{ selector: 'upd-filter-row', template: "<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldsOptions()\" (selectedItem)=\"onSelectField($event)\"\n [
|
|
1043
|
+
args: [{ standalone: false, selector: 'upd-filter-row', template: "<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldsOptions()\" (selectedItem)=\"onSelectField($event)\"\n [value]=\"selectedField?.value\">\n</upd-select>\n<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"comparisonOperatorOptions()\"\n (selectedItem)=\"onSelectOperand($event)\" [value]=\"selectedOperand?.value\">\n</upd-select>\n\n@if (isValueSectionEnabled()) {\n @switch (fieldType) {\n @case (FilterTypeEnum.Number) {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"number\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n @case (FilterTypeEnum.Date) {\n\n }\n @case (FilterTypeEnum.Select) {\n <upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldAllowedValues()\"\n (selectedItem)=\"updateValue($event?.value)\" [value]=\"selectedValue\">\n </upd-select>\n }\n @default {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"text\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n }\n} @else {\n <div class=\"w-100\">\n <input type=\"text\" class=\"form-control h-100\" disabled>\n </div>\n}\n\n<upd-button class=\"flex-shrink-1\" colorStyle=\"danger\" [isDisabled]=\"isDisabled()\" [isOutline]=\"true\" [isIcon]=\"true\"\n [iconModel]=\"{tablerIcon:'x'}\" (clicked)=\"removeFilterItem()\"></upd-button>" }]
|
|
741
1044
|
}], propDecorators: { wrapperClasses: [{
|
|
742
1045
|
type: HostBinding,
|
|
743
1046
|
args: ['class']
|
|
744
1047
|
}], removed: [{
|
|
745
1048
|
type: Output
|
|
746
|
-
}] } });
|
|
1049
|
+
}], rowIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowIndex", required: true }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: true }] }], isDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDisabled", required: true }] }], store: [{ type: i0.Input, args: [{ isSignal: true, alias: "store", required: false }] }], filterFields: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterFields", required: false }] }], currentFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentFilter", required: false }] }] } });
|
|
747
1050
|
|
|
748
1051
|
class SearchSectionComponent extends BaseComponent {
|
|
749
1052
|
constructor() {
|
|
750
1053
|
super();
|
|
751
1054
|
this.wrapperClass = 'card-body border-bottom py-3 d-flex flex-column gap-2';
|
|
752
|
-
this.
|
|
753
|
-
this.
|
|
754
|
-
this.
|
|
755
|
-
this.
|
|
756
|
-
this.
|
|
757
|
-
this.config = input.required();
|
|
758
|
-
this.actionsTpl = input();
|
|
759
|
-
this.activeFilters = signal([]);
|
|
760
|
-
this.isFilterSectionOpen = signal(false);
|
|
1055
|
+
this.columns = input.required(...(ngDevMode ? [{ debugName: "columns" }] : []));
|
|
1056
|
+
this.config = input.required(...(ngDevMode ? [{ debugName: "config" }] : []));
|
|
1057
|
+
this.actionsTpl = input(...(ngDevMode ? [undefined, { debugName: "actionsTpl" }] : []));
|
|
1058
|
+
this.activeFilters = computed(() => FilterTools.convertToFilterItem(this.currentSearchRequestService.searchRequest().filters?.filter(af => !af.isHidden) || [], this.filtersOperandsService.getAllOperands()), ...(ngDevMode ? [{ debugName: "activeFilters" }] : []));
|
|
1059
|
+
this.isFilterSectionOpen = signal(false, ...(ngDevMode ? [{ debugName: "isFilterSectionOpen" }] : []));
|
|
761
1060
|
this.canApplyFilters = computed(() => this.activeFilters().length > 0
|
|
762
|
-
&& this.activeFilters().every(af => !!af.name && !!af.operandConfig?.operand && (!af.operandConfig?.requiresValue || !!af.value)));
|
|
763
|
-
this.canPerformActions = computed(() => this.canApplyFilters() && !this.isSearching());
|
|
764
|
-
this.badgeConfig = computed(() =>
|
|
1061
|
+
&& this.activeFilters().every(af => !af.isHidden && !!af.name && !!af.operandConfig?.operand && (!af.operandConfig?.requiresValue || !!af.value)), ...(ngDevMode ? [{ debugName: "canApplyFilters" }] : []));
|
|
1062
|
+
this.canPerformActions = computed(() => this.canApplyFilters() && !this.currentSearchRequestService.isSearching(), ...(ngDevMode ? [{ debugName: "canPerformActions" }] : []));
|
|
1063
|
+
this.badgeConfig = computed(() => this.currentSearchRequestService.visibleFilterCount() > 0
|
|
765
1064
|
? ({
|
|
766
1065
|
isNotification: true,
|
|
767
1066
|
isPill: true,
|
|
768
1067
|
bgColor: 'primary-lt',
|
|
769
|
-
text: { text: this.
|
|
1068
|
+
text: { text: this.currentSearchRequestService.visibleFilterCount().toString(), isTranslated: true }
|
|
770
1069
|
})
|
|
771
|
-
: undefined);
|
|
772
|
-
this.filterSectionBtnColor = computed(() => this.isFilterSectionOpen() ? 'primary' : undefined);
|
|
1070
|
+
: undefined, ...(ngDevMode ? [{ debugName: "badgeConfig" }] : []));
|
|
1071
|
+
this.filterSectionBtnColor = computed(() => this.isFilterSectionOpen() ? 'primary' : undefined, ...(ngDevMode ? [{ debugName: "filterSectionBtnColor" }] : []));
|
|
773
1072
|
this.searchSubject = new Subject();
|
|
774
1073
|
this.filtersOperandsService = inject(FiltersOperandsService);
|
|
1074
|
+
this.currentSearchRequestService = inject(CurrentSearchRequestService);
|
|
775
1075
|
effect(() => {
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
}
|
|
779
|
-
else {
|
|
780
|
-
this.activeFilters.set([]);
|
|
1076
|
+
// Auto-close filter section when all filters are removed
|
|
1077
|
+
if (this.currentSearchRequestService.visibleFilterCount() === 0 && this.isFilterSectionOpen()) {
|
|
781
1078
|
this.isFilterSectionOpen.set(false);
|
|
782
1079
|
}
|
|
783
1080
|
}, { allowSignalWrites: true });
|
|
@@ -785,17 +1082,14 @@ class SearchSectionComponent extends BaseComponent {
|
|
|
785
1082
|
ngOnInit() {
|
|
786
1083
|
const searchSub = this.searchSubject
|
|
787
1084
|
.pipe(distinctUntilChanged(), debounceTime(this.config().searchInputDebounceTime))
|
|
788
|
-
.subscribe(term => this.
|
|
789
|
-
...this.searchRequest(),
|
|
790
|
-
description: term
|
|
791
|
-
}));
|
|
1085
|
+
.subscribe(term => this.currentSearchRequestService.setDescription(term));
|
|
792
1086
|
this.addSubscriptions(searchSub);
|
|
793
1087
|
}
|
|
794
1088
|
search() {
|
|
795
|
-
this.
|
|
796
|
-
|
|
797
|
-
filters: FilterTools.convertToRequestFilter(this.activeFilters(), this.config().columns)
|
|
1089
|
+
this.currentSearchRequestService.patchSearchRequest({
|
|
1090
|
+
filters: FilterTools.convertToRequestFilter(this.activeFilters(), this.config().filterFields, this.config().columns)
|
|
798
1091
|
});
|
|
1092
|
+
this.currentSearchRequestService.triggerSearch();
|
|
799
1093
|
}
|
|
800
1094
|
toggleFilterSection() {
|
|
801
1095
|
if (this.activeFilters().length === 0) {
|
|
@@ -810,26 +1104,26 @@ class SearchSectionComponent extends BaseComponent {
|
|
|
810
1104
|
this.search();
|
|
811
1105
|
}
|
|
812
1106
|
addEmptyFilterRow() {
|
|
813
|
-
this.
|
|
814
|
-
curr.push({});
|
|
815
|
-
return [...curr];
|
|
816
|
-
});
|
|
1107
|
+
this.currentSearchRequestService.addFilter({});
|
|
817
1108
|
}
|
|
818
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
819
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1109
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: SearchSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1110
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: SearchSectionComponent, isStandalone: false, selector: "upd-search-section", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, actionsTpl: { classPropertyName: "actionsTpl", publicName: "actionsTpl", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.wrapperClass" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n @if (!!actionsTpl()) {\n <ng-template [ngTemplateOutlet]=\"actionsTpl()!\"></ng-template>\n }\n\n <div class=\"d-flex align-items-center gap-2\">\n <upd-input wrapperClasses=\"w-100\" [placeholder]=\"{text:'UpDevs.Table.Search', isTranslated:false}\"\n [isAppendButton]=\"true\" (valueChange)=\"searchSubject.next($event)\"\n [value]=\"currentSearchRequestService.searchRequest().description\">\n <ng-template updInputAppend>\n <upd-button [isIcon]=\"true\" [colorStyle]=\"filterSectionBtnColor()\" (clicked)=\"toggleFilterSection()\"\n [badgeConfig]=\"badgeConfig()\">\n <upd-icon [tablerIcon]=\"isFilterSectionOpen() ? 'filter-up' : 'filter-down'\"\n [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n </ng-template>\n </upd-input>\n </div>\n\n @if (isFilterSectionOpen()) {\n @for (row of activeFilters(); track row.name; let i = $index) {\n <upd-filter-row [store]=\"config().store\" [currentFilter]=\"row\" [columns]=\"columns()\" [rowIndex]=\"i\"\n (removed)=\"onRowRemoved()\" [isDisabled]=\"currentSearchRequestService.isSearching()\"\n [filterFields]=\"config().filterFields\">\n </upd-filter-row>\n }\n\n <div class=\"ms-auto d-flex gap-2\">\n <upd-button customClasses=\"gap-2\" colorStyle=\"primary\" [isOutline]=\"true\" (clicked)=\"addEmptyFilterRow()\"\n [isDisabled]=\"!canPerformActions()\">\n <upd-icon tablerIcon=\"plus\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('AddNewFilter') }}\n </upd-button>\n <upd-button customClasses=\"gap-2\" colorStyle=\"success\" [isDisabled]=\"!canPerformActions()\"\n (clicked)=\"search()\">\n <upd-icon tablerIcon=\"checks\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ApplyFilters') }}\n </upd-button>\n </div>\n }\n</ng-container>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i3.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i4.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title", "stopPropagation"], outputs: ["clicked"] }, { kind: "component", type: i5.InputComponent, selector: "upd-input", inputs: ["type", "mask", "maskConfig", "value", "size", "customClasses", "wrapperClasses", "maxLength", "isPlainText", "isReadOnly", "isLoading", "isRound", "isFlush", "isInputGroupFlat", "isPrependButton", "isAppendButton", "isFloating", "loaderPosition", "prependIconModel", "appendIconModel", "isValidationStatusLight", "layout"], outputs: ["valueChange", "blurred", "keyDown", "keyDownEsc", "keyUpEnter"] }, { kind: "directive", type: i5.InputAppendDirective, selector: "ng-template[updInputAppend]" }, { kind: "component", type: FilterRowComponent, selector: "upd-filter-row", inputs: ["rowIndex", "columns", "isDisabled", "store", "filterFields", "currentFilter"], outputs: ["removed"] }] }); }
|
|
820
1111
|
}
|
|
821
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1112
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: SearchSectionComponent, decorators: [{
|
|
822
1113
|
type: Component,
|
|
823
|
-
args: [{ selector: 'upd-search-section', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n @if (!!actionsTpl()) {\n <ng-template [ngTemplateOutlet]=\"actionsTpl()!\"></ng-template>\n }\n\n <div class=\"d-flex align-items-center gap-2\">\n <upd-input wrapperClasses=\"w-100\" [placeholder]=\"{text:'UpDevs.Table.Search', isTranslated:false}\"
|
|
1114
|
+
args: [{ standalone: false, selector: 'upd-search-section', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n @if (!!actionsTpl()) {\n <ng-template [ngTemplateOutlet]=\"actionsTpl()!\"></ng-template>\n }\n\n <div class=\"d-flex align-items-center gap-2\">\n <upd-input wrapperClasses=\"w-100\" [placeholder]=\"{text:'UpDevs.Table.Search', isTranslated:false}\"\n [isAppendButton]=\"true\" (valueChange)=\"searchSubject.next($event)\"\n [value]=\"currentSearchRequestService.searchRequest().description\">\n <ng-template updInputAppend>\n <upd-button [isIcon]=\"true\" [colorStyle]=\"filterSectionBtnColor()\" (clicked)=\"toggleFilterSection()\"\n [badgeConfig]=\"badgeConfig()\">\n <upd-icon [tablerIcon]=\"isFilterSectionOpen() ? 'filter-up' : 'filter-down'\"\n [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n </ng-template>\n </upd-input>\n </div>\n\n @if (isFilterSectionOpen()) {\n @for (row of activeFilters(); track row.name; let i = $index) {\n <upd-filter-row [store]=\"config().store\" [currentFilter]=\"row\" [columns]=\"columns()\" [rowIndex]=\"i\"\n (removed)=\"onRowRemoved()\" [isDisabled]=\"currentSearchRequestService.isSearching()\"\n [filterFields]=\"config().filterFields\">\n </upd-filter-row>\n }\n\n <div class=\"ms-auto d-flex gap-2\">\n <upd-button customClasses=\"gap-2\" colorStyle=\"primary\" [isOutline]=\"true\" (clicked)=\"addEmptyFilterRow()\"\n [isDisabled]=\"!canPerformActions()\">\n <upd-icon tablerIcon=\"plus\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('AddNewFilter') }}\n </upd-button>\n <upd-button customClasses=\"gap-2\" colorStyle=\"success\" [isDisabled]=\"!canPerformActions()\"\n (clicked)=\"search()\">\n <upd-icon tablerIcon=\"checks\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ApplyFilters') }}\n </upd-button>\n </div>\n }\n</ng-container>" }]
|
|
824
1115
|
}], ctorParameters: () => [], propDecorators: { wrapperClass: [{
|
|
825
1116
|
type: HostBinding,
|
|
826
1117
|
args: ['class']
|
|
827
|
-
}] } });
|
|
1118
|
+
}], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], actionsTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionsTpl", required: false }] }] } });
|
|
828
1119
|
|
|
829
1120
|
var Utils = Tools.Utils;
|
|
830
1121
|
class TableComponent extends BaseComponent {
|
|
831
1122
|
get numberOfColumns() {
|
|
832
|
-
return this.columns().length
|
|
1123
|
+
return this.columns().length
|
|
1124
|
+
+ (this.configModel().hasCheckboxColumn ? 1 : 0)
|
|
1125
|
+
+ (this.configModel().customActions.length > 0 ? 1 : 0)
|
|
1126
|
+
+ (!!this.pendingWidthColClass ? 1 : 0);
|
|
833
1127
|
}
|
|
834
1128
|
get hasWidth() {
|
|
835
1129
|
return this.columns().some(rec => !!rec.width);
|
|
@@ -841,6 +1135,7 @@ class TableComponent extends BaseComponent {
|
|
|
841
1135
|
const isGrid = this.columns().some(rec => !!rec.width?.gridColumn);
|
|
842
1136
|
const total = isGrid ? 12 : 100;
|
|
843
1137
|
const remainingSize = total - this.columns().reduce((acc, item) => acc + item.widthSize, 0);
|
|
1138
|
+
// TODO: add spaces of checkbox and customactions columns
|
|
844
1139
|
return remainingSize > 0 ? `${(isGrid ? 'col' : 'w')}-${remainingSize}` : '';
|
|
845
1140
|
}
|
|
846
1141
|
get isWidthInPixels() {
|
|
@@ -854,39 +1149,35 @@ class TableComponent extends BaseComponent {
|
|
|
854
1149
|
}
|
|
855
1150
|
constructor() {
|
|
856
1151
|
super();
|
|
857
|
-
this.savedViewsRef = viewChild('savedViewsBtn', { read: ElementRef });
|
|
858
|
-
this.config = model.required();
|
|
859
|
-
this.
|
|
860
|
-
this.
|
|
861
|
-
this.activeSavedView = signal(undefined);
|
|
1152
|
+
this.savedViewsRef = viewChild('savedViewsBtn', { ...(ngDevMode ? { debugName: "savedViewsRef" } : {}), read: ElementRef });
|
|
1153
|
+
this.config = model.required(...(ngDevMode ? [{ debugName: "config" }] : []));
|
|
1154
|
+
this.selectedItems = computed(() => this.selectionModel().selected(), ...(ngDevMode ? [{ debugName: "selectedItems" }] : []));
|
|
1155
|
+
this.activeSavedView = signal(undefined, ...(ngDevMode ? [{ debugName: "activeSavedView" }] : []));
|
|
862
1156
|
this.isMainCheckboxChecked = false;
|
|
863
1157
|
this.isMainCheckboxIndeterminate = false;
|
|
864
1158
|
this.isSavedViewsDropdownOpen = false;
|
|
865
|
-
this.
|
|
866
|
-
this.
|
|
867
|
-
this.
|
|
868
|
-
this.
|
|
869
|
-
this.
|
|
870
|
-
this.
|
|
871
|
-
this.
|
|
872
|
-
this.
|
|
873
|
-
this.
|
|
874
|
-
this.currentSorting = signal(undefined);
|
|
875
|
-
this.hiddenColumns = computed(() => this.configModel().canManageColumns ? this.configModel().columns.filter(c => c.isHidden).length : 0);
|
|
876
|
-
this.columns = signal([]);
|
|
877
|
-
this.searchRequestSubject = new Subject();
|
|
1159
|
+
this.currentPage = model(1, ...(ngDevMode ? [{ debugName: "currentPage" }] : []));
|
|
1160
|
+
this.pageSize = model(0, ...(ngDevMode ? [{ debugName: "pageSize" }] : []));
|
|
1161
|
+
this.totalRecords = signal(0, ...(ngDevMode ? [{ debugName: "totalRecords" }] : []));
|
|
1162
|
+
this.configModel = computed(() => new TableConfigModel(this.config()), ...(ngDevMode ? [{ debugName: "configModel" }] : []));
|
|
1163
|
+
this.data = computed(() => this.configModel().data.length > 0 ? this.configModel().data : this.currentData(), ...(ngDevMode ? [{ debugName: "data" }] : []));
|
|
1164
|
+
this.selectionModel = computed(() => new SelectionModel(this.configModel().getIdFunction), ...(ngDevMode ? [{ debugName: "selectionModel" }] : []));
|
|
1165
|
+
this.currentSorting = signal(undefined, ...(ngDevMode ? [{ debugName: "currentSorting" }] : []));
|
|
1166
|
+
this.hiddenColumns = computed(() => this.configModel().canManageColumns ? this.configModel().columns.filter(c => c.isHidden).length : 0, ...(ngDevMode ? [{ debugName: "hiddenColumns" }] : []));
|
|
1167
|
+
this.columns = signal([], ...(ngDevMode ? [{ debugName: "columns" }] : []));
|
|
878
1168
|
this.textService = inject(TextService);
|
|
1169
|
+
this.currentSearchRequestService = inject(CurrentSearchRequestService);
|
|
879
1170
|
this.savedViewsOptions = computed(() => {
|
|
880
1171
|
const allSavedViewsOptions = [];
|
|
881
1172
|
this.allSavedViews().forEach(sv => allSavedViewsOptions.push(this.getSavedViewOption(sv)));
|
|
882
1173
|
return allSavedViewsOptions;
|
|
883
|
-
});
|
|
1174
|
+
}, ...(ngDevMode ? [{ debugName: "savedViewsOptions" }] : []));
|
|
884
1175
|
this.shouldForceSearch = false;
|
|
885
1176
|
this.columnsBackup = [];
|
|
886
|
-
this.currentData = signal([]);
|
|
887
|
-
this.currentFavoriteButtons = computed(() => this.favoriteButtons);
|
|
888
|
-
this.smallSizeSignal = signal('small');
|
|
889
|
-
this.allSavedViews = computed(() => this.savedViewsStorage.getAll(this.configModel().name)());
|
|
1177
|
+
this.currentData = signal([], ...(ngDevMode ? [{ debugName: "currentData" }] : []));
|
|
1178
|
+
this.currentFavoriteButtons = computed(() => this.favoriteButtons, ...(ngDevMode ? [{ debugName: "currentFavoriteButtons" }] : []));
|
|
1179
|
+
this.smallSizeSignal = signal('small', ...(ngDevMode ? [{ debugName: "smallSizeSignal" }] : []));
|
|
1180
|
+
this.allSavedViews = computed(() => this.savedViewsStorage.getAll(this.configModel().name)(), ...(ngDevMode ? [{ debugName: "allSavedViews" }] : []));
|
|
890
1181
|
this.favoriteButtons = [];
|
|
891
1182
|
this.serverResponseService = inject(ServerResponseService);
|
|
892
1183
|
this.savedViewsStorage = inject(SavedViewsStorage);
|
|
@@ -914,27 +1205,22 @@ class TableComponent extends BaseComponent {
|
|
|
914
1205
|
}
|
|
915
1206
|
ngOnInit() {
|
|
916
1207
|
this.columnsBackup = [...this.config().columns];
|
|
917
|
-
const searchSubjectSub = this.searchRequestSubject
|
|
918
|
-
.pipe(distinctUntilChanged((prev, curr) => !this.shouldForceSearch
|
|
919
|
-
this.
|
|
1208
|
+
const searchSubjectSub = this.currentSearchRequestService.searchRequestSubject
|
|
1209
|
+
.pipe(distinctUntilChanged((prev, curr) => !this.shouldForceSearch ? Utils.areEqual(prev, curr) : false), tap((request) => {
|
|
1210
|
+
this.currentSearchRequestService.setSearching(true);
|
|
920
1211
|
this.currentData.set([]);
|
|
921
|
-
this.
|
|
922
|
-
|
|
923
|
-
|| (request.description || '').length > 0
|
|
924
|
-
|| (request.sortings?.length || 0) > 0) {
|
|
925
|
-
this.hasSearchChanged.set(true);
|
|
926
|
-
}
|
|
927
|
-
}), switchMap(() => this.store.search(this.searchRequest()).pipe(catchError(() => of()) // Already handled by the ServerResponseService.
|
|
1212
|
+
this.currentSearchRequestService.updateSearchRequest(request);
|
|
1213
|
+
}), switchMap(() => this.store.search(this.currentSearchRequestService.searchRequest()).pipe(catchError(() => of()) // Already handled by the ServerResponseService.
|
|
928
1214
|
)), finalize(() => this.shouldForceSearch = false))
|
|
929
1215
|
.subscribe(resp => this.setupSearchResults(resp));
|
|
930
1216
|
const serverResponseSub = this.serverResponseService.onError.subscribe(error => {
|
|
931
1217
|
if (!!error) {
|
|
932
|
-
this.
|
|
1218
|
+
this.currentSearchRequestService.setSearching(false);
|
|
933
1219
|
}
|
|
934
1220
|
});
|
|
935
1221
|
if (this.configModel().shouldAutoSearch && this.isRemote) {
|
|
936
1222
|
this.shouldForceSearch = true;
|
|
937
|
-
this.searchRequestSubject.next({});
|
|
1223
|
+
this.currentSearchRequestService.searchRequestSubject.next({});
|
|
938
1224
|
}
|
|
939
1225
|
this.updateColumns(this.configModel().columns);
|
|
940
1226
|
this.addSubscriptions(searchSubjectSub, serverResponseSub);
|
|
@@ -959,23 +1245,17 @@ class TableComponent extends BaseComponent {
|
|
|
959
1245
|
return this.getColumnByName(columnName).allowSort;
|
|
960
1246
|
}
|
|
961
1247
|
sortByColumn(columnName) {
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
: SortDirectionEnum.Asc
|
|
971
|
-
}));
|
|
972
|
-
}
|
|
1248
|
+
const currentSort = this.currentSorting();
|
|
1249
|
+
const nextDirection = (currentSort?.column === columnName && currentSort.direction === SortDirectionEnum.Asc)
|
|
1250
|
+
? SortDirectionEnum.Desc
|
|
1251
|
+
: SortDirectionEnum.Asc;
|
|
1252
|
+
this.currentSorting.set(new ColumnSort({
|
|
1253
|
+
column: columnName,
|
|
1254
|
+
direction: nextDirection
|
|
1255
|
+
}));
|
|
973
1256
|
if (this.isRemote) {
|
|
974
|
-
this.
|
|
975
|
-
|
|
976
|
-
sortings: [this.currentSorting()]
|
|
977
|
-
});
|
|
978
|
-
this.searchRequestSubject.next(this.searchRequest());
|
|
1257
|
+
this.currentSearchRequestService.setSorting(columnName, nextDirection);
|
|
1258
|
+
this.currentSearchRequestService.triggerSearch();
|
|
979
1259
|
}
|
|
980
1260
|
else {
|
|
981
1261
|
const col = this.getColumnByName(columnName);
|
|
@@ -988,12 +1268,11 @@ class TableComponent extends BaseComponent {
|
|
|
988
1268
|
: 'arrows-sort';
|
|
989
1269
|
}
|
|
990
1270
|
onPageSettingsChanged() {
|
|
991
|
-
this.
|
|
992
|
-
...this.searchRequest(),
|
|
1271
|
+
this.currentSearchRequestService.patchSearchRequest({
|
|
993
1272
|
pageSize: this.pageSize(),
|
|
994
1273
|
pageIndex: this.currentPage()
|
|
995
1274
|
});
|
|
996
|
-
this.searchRequestSubject.next(this.searchRequest());
|
|
1275
|
+
this.currentSearchRequestService.searchRequestSubject.next(this.currentSearchRequestService.searchRequest());
|
|
997
1276
|
}
|
|
998
1277
|
getRecordId(record) {
|
|
999
1278
|
return this.configModel().getIdFunction(record);
|
|
@@ -1036,9 +1315,11 @@ class TableComponent extends BaseComponent {
|
|
|
1036
1315
|
});
|
|
1037
1316
|
this.updateColumns(newColumns);
|
|
1038
1317
|
const newVisibleColumnsOrder = newColumns.map(c => c.name);
|
|
1318
|
+
// Column visibility changes should enable "Save View" button since views include column config
|
|
1039
1319
|
if (previousVisibleColumnsOrder.length !== newVisibleColumnsOrder.length
|
|
1040
1320
|
|| !previousVisibleColumnsOrder.every((v, i) => v === newVisibleColumnsOrder[i])) {
|
|
1041
|
-
|
|
1321
|
+
// Manually trigger hasChanges since column visibility isn't part of search request
|
|
1322
|
+
this.currentSearchRequestService.setHasChanges(true);
|
|
1042
1323
|
}
|
|
1043
1324
|
}
|
|
1044
1325
|
};
|
|
@@ -1046,7 +1327,7 @@ class TableComponent extends BaseComponent {
|
|
|
1046
1327
|
openSaveSearchModal(data) {
|
|
1047
1328
|
data = data || {
|
|
1048
1329
|
tableName: this.configModel().name,
|
|
1049
|
-
request: this.searchRequest(),
|
|
1330
|
+
request: this.currentSearchRequestService.searchRequest(),
|
|
1050
1331
|
columns: this.configModel().columns
|
|
1051
1332
|
};
|
|
1052
1333
|
this.modalService.open(SaveSearchComponent, { showCloseButton: false, data });
|
|
@@ -1061,7 +1342,7 @@ class TableComponent extends BaseComponent {
|
|
|
1061
1342
|
return { ...curr };
|
|
1062
1343
|
});
|
|
1063
1344
|
this.activeSavedView.set(savedView);
|
|
1064
|
-
this.searchRequestSubject.next({ ...savedView.request });
|
|
1345
|
+
this.currentSearchRequestService.searchRequestSubject.next({ ...savedView.request });
|
|
1065
1346
|
}
|
|
1066
1347
|
}
|
|
1067
1348
|
resetViewState() {
|
|
@@ -1071,10 +1352,59 @@ class TableComponent extends BaseComponent {
|
|
|
1071
1352
|
curr.columns = this.columnsBackup;
|
|
1072
1353
|
return { ...curr };
|
|
1073
1354
|
});
|
|
1074
|
-
this.searchRequestSubject.next({});
|
|
1355
|
+
this.currentSearchRequestService.searchRequestSubject.next({});
|
|
1356
|
+
}
|
|
1357
|
+
reload() {
|
|
1358
|
+
this.shouldForceSearch = true;
|
|
1359
|
+
this.currentSearchRequestService.searchRequestSubject.next({});
|
|
1360
|
+
}
|
|
1361
|
+
adaptCustomAction(btn, item) {
|
|
1362
|
+
const newBtn = new ButtonModel({
|
|
1363
|
+
id: btn.id,
|
|
1364
|
+
iconModel: btn.iconModel,
|
|
1365
|
+
title: btn.title,
|
|
1366
|
+
isIcon: signal(true),
|
|
1367
|
+
isLink: signal(true),
|
|
1368
|
+
size: signal('small'),
|
|
1369
|
+
text: undefined,
|
|
1370
|
+
colorStyle: btn.colorStyle,
|
|
1371
|
+
isOutline: btn.isOutline
|
|
1372
|
+
});
|
|
1373
|
+
const defaultFunction = btn.clickFunction;
|
|
1374
|
+
newBtn.clickFunction = (evt) => {
|
|
1375
|
+
evt.event?.preventDefault();
|
|
1376
|
+
evt.event?.stopPropagation();
|
|
1377
|
+
if (!!defaultFunction) {
|
|
1378
|
+
defaultFunction({ event: evt.event, data: item });
|
|
1379
|
+
}
|
|
1380
|
+
};
|
|
1381
|
+
return newBtn;
|
|
1075
1382
|
}
|
|
1076
1383
|
updateColumns(columns) {
|
|
1077
|
-
this.columns.set(columns.filter(c => !c.isHidden).map(c =>
|
|
1384
|
+
this.columns.set(columns.filter(c => !c.isHidden).map(c => this.createColumnModel(c)));
|
|
1385
|
+
}
|
|
1386
|
+
createColumnModel(data) {
|
|
1387
|
+
switch (data.type) {
|
|
1388
|
+
case ColumnTypeEnum.Text:
|
|
1389
|
+
return new TextColumnModel({ ...data });
|
|
1390
|
+
case ColumnTypeEnum.Number:
|
|
1391
|
+
return new NumberColumnModel({ ...data });
|
|
1392
|
+
case ColumnTypeEnum.Boolean:
|
|
1393
|
+
return new BooleanColumnModel({ ...data });
|
|
1394
|
+
case ColumnTypeEnum.DateTime:
|
|
1395
|
+
case ColumnTypeEnum.Date:
|
|
1396
|
+
case ColumnTypeEnum.Time:
|
|
1397
|
+
return new DateTimeColumnModel({ ...data });
|
|
1398
|
+
case ColumnTypeEnum.Image:
|
|
1399
|
+
return new ImageColumnModel({ ...data });
|
|
1400
|
+
case ColumnTypeEnum.Guid:
|
|
1401
|
+
return new GuidColumnModel({ ...data });
|
|
1402
|
+
case ColumnTypeEnum.Masked:
|
|
1403
|
+
case ColumnTypeEnum.Custom:
|
|
1404
|
+
case ColumnTypeEnum.Currency:
|
|
1405
|
+
default:
|
|
1406
|
+
return new BaseColumnModel(data.type, { ...data });
|
|
1407
|
+
}
|
|
1078
1408
|
}
|
|
1079
1409
|
getColumnByName(columnName) {
|
|
1080
1410
|
const col = this.columns().find(c => c.name === columnName);
|
|
@@ -1092,7 +1422,8 @@ class TableComponent extends BaseComponent {
|
|
|
1092
1422
|
});
|
|
1093
1423
|
}
|
|
1094
1424
|
setupSearchResults(resp) {
|
|
1095
|
-
this.
|
|
1425
|
+
this.currentSearchRequestService.setSearching(false);
|
|
1426
|
+
this.currentSearchRequestService.setHasChanges(false);
|
|
1096
1427
|
this.currentData.set(resp.records);
|
|
1097
1428
|
this.totalRecords.set(resp.totalRecords || 0);
|
|
1098
1429
|
this.currentPage.set(resp.pageIndex || 0);
|
|
@@ -1171,19 +1502,19 @@ class TableComponent extends BaseComponent {
|
|
|
1171
1502
|
return {
|
|
1172
1503
|
id: savedView.id,
|
|
1173
1504
|
type: 'with-toolbar',
|
|
1174
|
-
text: { text: savedView.name },
|
|
1505
|
+
text: { text: savedView.name, isTranslated: true },
|
|
1175
1506
|
toolbarType: 'spaced',
|
|
1176
1507
|
isActive: this.activeSavedView()?.id === savedView.id,
|
|
1177
1508
|
actionButtons
|
|
1178
1509
|
};
|
|
1179
1510
|
}
|
|
1180
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1181
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: TableComponent, selector: "upd-table", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, searchRequest: { classPropertyName: "searchRequest", publicName: "searchRequest", isSignal: true, isRequired: false, transformFunction: null }, activeFilters: { classPropertyName: "activeFilters", publicName: "activeFilters", isSignal: true, isRequired: false, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange", searchRequest: "searchRequestChange", activeFilters: "activeFiltersChange", currentPage: "currentPageChange", pageSize: "pageSizeChange" }, viewQueries: [{ propertyName: "savedViewsRef", first: true, predicate: ["savedViewsBtn"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n <div class=\"card\">\n @if (!!configModel().title || !configModel().canSearch) {\n <div class=\"card-header\">\n @if (!!configModel().title) {\n <h3 class=\"card-title\">{{ textService.getText(configModel().title) }}</h3>\n }\n <ng-template [ngTemplateOutlet]=\"actionsTpl\"></ng-template>\n </div>\n }\n\n @if (configModel().canSearch) {\n <upd-search-section [actionsTpl]=\"!configModel().title ? actionsTpl : undefined\" [isSearching]=\"isSearching()\"\n [(searchRequest)]=\"searchRequest\" [searchRequestSubject]=\"searchRequestSubject\" [config]=\"configModel()\"\n [(hasChanges)]=\"hasSearchChanged\" [columns]=\"columns()\">\n </upd-search-section>\n }\n\n <div [class.table-responsive]=\"configModel().isResponsive\">\n <!-- TODO: implement pixel sized table - complex... -->\n <table class=\"table card-table table-vcenter table-nowrap\" [class.fixed]=\"hasWidth\"\n [class.pixel-sized]=\"isWidthInPixels\">\n <thead [class.sticky-top]=\"configModel().hasStickyHeader\">\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <th class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleAllSelection($event)\"\n [(isChecked)]=\"isMainCheckboxChecked\" [(isIndeterminate)]=\"isMainCheckboxIndeterminate\"></upd-checkbox>\n </th>\n }\n\n @for (col of columns(); track col) {\n <th [ngClass]=\"col.widthClass\" [style.width.px]=\"col.pixelsSize\">\n {{ textService.getText(col.title) }}\n @if (canSortColumn(col.name)) {\n <upd-icon [tablerIcon]=\"getSortingIcon(col.name)\" tablerIconWeight=\"bold\" colorClass=\"text-body-tertiary\"\n [tablerIconSize]=\"16\" (click)=\"sortByColumn(col.name)\">\n </upd-icon>\n }\n </th>\n }\n\n @if (!!pendingWidthColClass) {\n <th [ngClass]=\"pendingWidthColClass\"></th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (isSearching()) {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ t('Loading') }}...</h1>\n <div class=\"progress progress-sm w-25\">\n <div class=\"progress-bar progress-bar-indeterminate bg-body-tertiary\"></div>\n </div>\n </div>\n </td>\n </tr>\n } @else {\n @for (record of data(); track record) {\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <td>\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleItemSelection(record)\"\n [isChecked]=\"selectionModel().isSelected(record)\"></upd-checkbox>\n </td>\n }\n\n @for (col of columns(); track col) {\n <td>\n <ng-container updTableColumn [record]=\"record\" [config]=\"col\"></ng-container>\n </td>\n }\n\n @if (!!pendingWidthColClass) {\n <td></td>\n }\n </tr>\n } @empty {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <p class=\"empty-title\">{{ t('NoRecordsFoundTitle') }}</p>\n <p class=\"empty-subtitle text-secondary\">{{ t('NoRecordsFoundSubtitle') }}</p>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n <upd-paginator wrapperClasses=\"card-footer\" [shouldDisplayPreviousText]=\"false\" [shouldDisplayNextText]=\"false\"\n [(pageSize)]=\"pageSize\" [shouldDisplayFirstText]=\"false\" [shouldDisplayLastText]=\"false\" [(currentPage)]=\"currentPage\"\n [totalRecords]=\"totalRecords()\" (changed)=\"onPageSettingsChanged()\">\n </upd-paginator>\n </div>\n\n <ng-template #actionsTpl>\n <div class=\"ms-auto d-flex gap-2\">\n @if (!!activeSavedView()) {\n @if (activeSavedView()!.isDefault) {\n <div class=\"ribbon ribbon-top ribbon-start\">\n <upd-icon tablerIcon=\"heart\" [tablerIconSize]=\"20\"></upd-icon>\n </div>\n }\n <div class=\"tag align-self-center py-3 text-primary bg-primary-lt border-primary\" updPopover=\"{{ t('CurrentSavedView') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"list-details\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ activeSavedView()!.name }}</span>\n </div>\n }\n @if (hiddenColumns() > 0) {\n <div class=\"tag align-self-center py-3 text-orange bg-orange-lt border-orange\" updPopover=\"{{ t('HiddenColumnsTooltip') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"eye-off\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ hiddenColumns() }}</span>\n </div>\n }\n @if (!!activeSavedView() || hiddenColumns() > 0) {\n <upd-button (clicked)=\"resetViewState()\" colorStyle=\"danger\" updPopover=\"{{ t('ResetView') }}\"\n [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\" [isOutline]=\"true\">\n <upd-icon tablerIcon=\"restore\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canSaveViews) {\n <upd-button customClasses=\"gap-2\" [isDisabled]=\"!hasSearchChanged()\" (clicked)=\"openSaveSearchModal()\"\n updPopover=\"{{ t('SaveCurrentView') }}\" [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\">\n <upd-icon tablerIcon=\"device-floppy\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canManageColumns) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"openColumnsManagerModal()\">\n <upd-icon tablerIcon=\"columns\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ColumnsManagerButton') }}\n </upd-button>\n }\n @if (configModel().canSaveViews || configModel().canLoadSavedViews) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"isSavedViewsDropdownOpen = true\" #savedViewsBtn>\n <upd-icon tablerIcon=\"folders\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('SavedViews.ButtonTitle') }}\n </upd-button>\n <upd-dropdown wrapperClasses=\"overflow-x-hidden mt-1\" [isOpen]=\"isSavedViewsDropdownOpen\"\n [dropdownReference]=\"savedViewsRef()\" [items]=\"savedViewsOptions()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isSavedViewsDropdownOpen = $event\" [minWidth]=\"350\" (selectedItem)=\"selectSavedView($event)\">\n @if (savedViewsOptions().length < 1) {\n <span class=\"m-2\">{{ t('NoSavedViews') }}</span>\n }\n </upd-dropdown>\n }\n </div>\n </ng-template>\n</ng-container>\n", styles: [".fixed{table-layout:fixed!important}.fixed td,.fixed th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.checkbox-selector{width:52px!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i3.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i4.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "component", type: i5$1.PaginatorComponent, selector: "upd-paginator", inputs: ["startPageIndex", "currentPage", "wrapperClasses", "availablePageSizes", "defaultInitPageSize", "pageSize", "shouldDisplayFirstIcon", "shouldDisplayFirstText", "shouldDisplayPreviousIcon", "shouldDisplayPreviousText", "shouldDisplayNextIcon", "shouldDisplayNextText", "shouldDisplayLastIcon", "shouldDisplayLastText", "previousDescription", "nextDescription", "totalRecords"], outputs: ["changed", "currentPageChange", "pageSizeChange"] }, { kind: "component", type: i6.CheckboxComponent, selector: "upd-checkbox", inputs: ["wrapperClasses", "value", "customClasses", "name", "isDisabled", "isChecked", "isInline", "isSwitch", "isIndeterminate"], outputs: ["changed", "isCheckedChange", "isIndeterminateChange"] }, { kind: "component", type: i7.DropdownComponent, selector: "upd-dropdown", inputs: ["items", "header", "isOpen", "shouldCloseOnOutsideClick", "arrowType", "wrapperClasses", "elementsExcludedFromOutsideClick", "minHeight", "maxHeight", "minWidth", "maxWidth", "dropdownReference", "dropdownReferencePosition", "textOverflowStrategy"], outputs: ["isOpenChange", "selectedItem", "checkboxChanged"] }, { kind: "directive", type: i8.PopoverDirective, selector: "[updPopover]", inputs: ["updPopover", "updPopoverTitle", "updPopoverTitleTemplate", "updPopoverTemplate", "updPopoverPlacement", "updPopoverCustomClasses", "updPopoverActAsTooltip"] }, { kind: "component", type: SearchSectionComponent, selector: "upd-search-section", inputs: ["searchRequest", "hasChanges", "columns", "isSearching", "searchRequestSubject", "config", "actionsTpl"], outputs: ["searchRequestChange", "hasChangesChange"] }, { kind: "directive", type: TableColumnDirective, selector: "[updTableColumn]", inputs: ["record", "config"] }] }); }
|
|
1511
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1512
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: TableComponent, isStandalone: false, selector: "upd-table", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange", currentPage: "currentPageChange", pageSize: "pageSizeChange" }, providers: [CurrentSearchRequestService], viewQueries: [{ propertyName: "savedViewsRef", first: true, predicate: ["savedViewsBtn"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n <div class=\"card\">\n @if (!!configModel().title || !configModel().canSearch) {\n <div class=\"card-header\">\n @if (!!configModel().title) {\n <h3 class=\"card-title\">{{ textService.getText(configModel().title) }}</h3>\n }\n <ng-template [ngTemplateOutlet]=\"actionsTpl\"></ng-template>\n </div>\n }\n\n @if (configModel().customHeaderActions.length > 0) {\n <div class=\"card-body py-3 d-flex flex-column gap-2\">\n <div class=\"ms-auto d-flex gap-2\">\n @for (btn of configModel().customHeaderActions; track btn) {\n <upd-button customClasses=\"gap-2\" [model]=\"btn\"></upd-button>\n }\n </div>\n </div>\n }\n\n @if (configModel().canSearch) {\n <upd-search-section [actionsTpl]=\"!configModel().title ? actionsTpl : undefined\" [config]=\"configModel()\"\n [columns]=\"columns()\">\n </upd-search-section>\n }\n\n <div [class.table-responsive]=\"configModel().isResponsive\">\n <!-- TODO: implement pixel sized table -->\n <table class=\"table card-table table-vcenter table-nowrap\" [class.fixed]=\"hasWidth\"\n [class.pixel-sized]=\"isWidthInPixels\">\n <thead [class.sticky-top]=\"configModel().hasStickyHeader\">\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <th class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleAllSelection($event)\"\n [(isChecked)]=\"isMainCheckboxChecked\"\n [(isIndeterminate)]=\"isMainCheckboxIndeterminate\"></upd-checkbox>\n </th>\n }\n\n @for (col of columns(); track col) {\n <th [ngClass]=\"col.widthClass\" [style.width.px]=\"col.pixelsSize\">\n {{ textService.getText(col.title) }}\n @if (canSortColumn(col.name)) {\n <upd-icon [tablerIcon]=\"getSortingIcon(col.name)\" tablerIconWeight=\"bold\"\n colorClass=\"text-body-tertiary\" [tablerIconSize]=\"16\"\n (click)=\"sortByColumn(col.name)\">\n </upd-icon>\n }\n </th>\n }\n\n @if (!!pendingWidthColClass) {\n <th [ngClass]=\"pendingWidthColClass\"></th>\n }\n\n @if (configModel().customActions.length > 0) {\n <th class=\"custom-actions\"></th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (currentSearchRequestService.isSearching()) {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ t('Loading') }}...</h1>\n <div class=\"progress progress-sm w-25\">\n <div class=\"progress-bar progress-bar-indeterminate bg-body-tertiary\"></div>\n </div>\n </div>\n </td>\n </tr>\n } @else {\n @for (record of data(); track record) {\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <td class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleItemSelection(record)\"\n [isChecked]=\"selectionModel().isSelected(record)\"></upd-checkbox>\n </td>\n }\n\n @for (col of columns(); track col) {\n <td [style.width.px]=\"col.pixelsSize\">\n <ng-container updTableColumn [record]=\"record\" [config]=\"col\"></ng-container>\n </td>\n }\n\n @if (!!pendingWidthColClass) {\n <td></td>\n }\n\n @if (configModel().customActions.length > 0) {\n <td style=\"overflow: unset\">\n <div class=\"grow-left d-flex\">\n @if (configModel().customActions.length > 1) {\n <upd-button customClasses=\"ca-item\" [iconModel]=\"{tablerIcon:'dots'}\"\n [isIcon]=\"true\" [isLink]=\"true\" size=\"small\"></upd-button>\n\n <div class=\"ca-dropdown-content rounded shadow-sm\">\n @for (btn of configModel().customActions; track btn) {\n <upd-button\n [model]=\"adaptCustomAction(btn, record)\"></upd-button>\n }\n </div>\n } @else {\n <upd-button\n [model]=\"adaptCustomAction(configModel().customActions[0], record)\">\n </upd-button>\n }\n </div>\n </td>\n }\n </tr>\n } @empty {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <p class=\"empty-title\">{{ t('NoRecordsFoundTitle') }}</p>\n <p class=\"empty-subtitle text-secondary\">{{ t('NoRecordsFoundSubtitle') }}</p>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n <upd-paginator wrapperClasses=\"card-footer\" [shouldDisplayPreviousText]=\"false\" [shouldDisplayNextText]=\"false\"\n [(pageSize)]=\"pageSize\" [shouldDisplayFirstText]=\"false\" [shouldDisplayLastText]=\"false\"\n [(currentPage)]=\"currentPage\" [totalRecords]=\"totalRecords()\" (changed)=\"onPageSettingsChanged()\">\n </upd-paginator>\n </div>\n\n <ng-template #actionsTpl>\n <div class=\"ms-auto d-flex gap-2\">\n @if (!!activeSavedView()) {\n @if (activeSavedView()!.isDefault) {\n <div class=\"ribbon ribbon-top ribbon-start\">\n <upd-icon tablerIcon=\"heart\" [tablerIconSize]=\"20\"></upd-icon>\n </div>\n }\n <div class=\"tag align-self-center py-3 text-primary bg-primary-lt border-primary\"\n updPopover=\"{{ t('CurrentSavedView') }}\" [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"list-details\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ activeSavedView()!.name }}</span>\n </div>\n }\n @if (hiddenColumns() > 0) {\n <div class=\"tag align-self-center py-3 text-orange bg-orange-lt border-orange\"\n updPopover=\"{{ t('HiddenColumnsTooltip') }}\" [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"eye-off\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ hiddenColumns() }}</span>\n </div>\n }\n @if (!!activeSavedView() || hiddenColumns() > 0) {\n <upd-button (clicked)=\"resetViewState()\" colorStyle=\"danger\" updPopover=\"{{ t('ResetView') }}\"\n [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\" [isOutline]=\"true\">\n <upd-icon tablerIcon=\"restore\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canSaveViews) {\n <upd-button customClasses=\"gap-2\" [isDisabled]=\"!currentSearchRequestService.hasChanges()\"\n (clicked)=\"openSaveSearchModal()\" updPopover=\"{{ t('SaveCurrentView') }}\"\n [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\">\n <upd-icon tablerIcon=\"device-floppy\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canManageColumns) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"openColumnsManagerModal()\">\n <upd-icon tablerIcon=\"columns\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ColumnsManagerButton') }}\n </upd-button>\n }\n @if (configModel().canSaveViews || configModel().canLoadSavedViews) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"isSavedViewsDropdownOpen = true\" #savedViewsBtn>\n <upd-icon tablerIcon=\"folders\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('SavedViews.ButtonTitle') }}\n </upd-button>\n <upd-dropdown wrapperClasses=\"overflow-x-hidden mt-1\" [isOpen]=\"isSavedViewsDropdownOpen\"\n [dropdownReference]=\"savedViewsRef()\" [items]=\"savedViewsOptions()\"\n [shouldCloseOnOutsideClick]=\"true\" (isOpenChange)=\"isSavedViewsDropdownOpen = $event\"\n [minWidth]=\"350\" (selectedItem)=\"selectSavedView($event)\">\n @if (savedViewsOptions().length < 1) {\n <span class=\"m-2\">{{ t('NoSavedViews') }}</span>\n }\n </upd-dropdown>\n }\n </div>\n </ng-template>\n</ng-container>", styles: [".fixed{table-layout:fixed!important}.fixed td,.fixed th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.checkbox-selector{width:52px!important}.custom-actions{width:56px!important}.ca-item{transition:all,.5s}.ca-item:hover{width:400px}.grow-left{direction:rtl}.ca-dropdown-content{display:none;background:var(--upd-secondary-lt)}.grow-left:hover .ca-dropdown-content{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i3.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i4.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title", "stopPropagation"], outputs: ["clicked"] }, { kind: "component", type: i5$1.PaginatorComponent, selector: "upd-paginator", inputs: ["startPageIndex", "currentPage", "wrapperClasses", "availablePageSizes", "defaultInitPageSize", "pageSize", "shouldDisplayFirstIcon", "shouldDisplayFirstText", "shouldDisplayPreviousIcon", "shouldDisplayPreviousText", "shouldDisplayNextIcon", "shouldDisplayNextText", "shouldDisplayLastIcon", "shouldDisplayLastText", "previousDescription", "nextDescription", "totalRecords"], outputs: ["changed", "currentPageChange", "pageSizeChange"] }, { kind: "component", type: i6.CheckboxComponent, selector: "upd-checkbox", inputs: ["wrapperClasses", "value", "customClasses", "isChecked", "isInline", "isSwitch", "isIndeterminate"], outputs: ["changed", "isCheckedChange", "isIndeterminateChange"] }, { kind: "component", type: i7.DropdownComponent, selector: "upd-dropdown", inputs: ["items", "header", "isOpen", "shouldCloseOnOutsideClick", "arrowType", "wrapperClasses", "elementsExcludedFromOutsideClick", "minHeight", "maxHeight", "minWidth", "maxWidth", "dropdownReference", "dropdownReferencePosition", "textOverflowStrategy"], outputs: ["isOpenChange", "selectedItem", "checkboxChanged"] }, { kind: "directive", type: i8.PopoverDirective, selector: "[updPopover]", inputs: ["updPopover", "updPopoverTitle", "updPopoverTitleTemplate", "updPopoverTemplate", "updPopoverPlacement", "updPopoverCustomClasses", "updPopoverActAsTooltip"] }, { kind: "component", type: SearchSectionComponent, selector: "upd-search-section", inputs: ["columns", "config", "actionsTpl"] }, { kind: "directive", type: TableColumnDirective, selector: "[updTableColumn]", inputs: ["record", "config"] }] }); }
|
|
1182
1513
|
}
|
|
1183
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1514
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TableComponent, decorators: [{
|
|
1184
1515
|
type: Component,
|
|
1185
|
-
args: [{ selector: 'upd-table', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n <div class=\"card\">\n @if (!!configModel().title || !configModel().canSearch) {\n <div class=\"card-header\">\n @if (!!configModel().title) {\n <h3 class=\"card-title\">{{ textService.getText(configModel().title) }}</h3>\n }\n <ng-template [ngTemplateOutlet]=\"actionsTpl\"></ng-template>\n </div>\n }\n\n @if (configModel().canSearch) {\n <upd-search-section [actionsTpl]=\"!configModel().title ? actionsTpl : undefined\" [isSearching]=\"isSearching()\"\n [(searchRequest)]=\"searchRequest\" [searchRequestSubject]=\"searchRequestSubject\" [config]=\"configModel()\"\n [(hasChanges)]=\"hasSearchChanged\" [columns]=\"columns()\">\n </upd-search-section>\n }\n\n <div [class.table-responsive]=\"configModel().isResponsive\">\n <!-- TODO: implement pixel sized table - complex... -->\n <table class=\"table card-table table-vcenter table-nowrap\" [class.fixed]=\"hasWidth\"\n [class.pixel-sized]=\"isWidthInPixels\">\n <thead [class.sticky-top]=\"configModel().hasStickyHeader\">\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <th class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleAllSelection($event)\"\n [(isChecked)]=\"isMainCheckboxChecked\" [(isIndeterminate)]=\"isMainCheckboxIndeterminate\"></upd-checkbox>\n </th>\n }\n\n @for (col of columns(); track col) {\n <th [ngClass]=\"col.widthClass\" [style.width.px]=\"col.pixelsSize\">\n {{ textService.getText(col.title) }}\n @if (canSortColumn(col.name)) {\n <upd-icon [tablerIcon]=\"getSortingIcon(col.name)\" tablerIconWeight=\"bold\" colorClass=\"text-body-tertiary\"\n [tablerIconSize]=\"16\" (click)=\"sortByColumn(col.name)\">\n </upd-icon>\n }\n </th>\n }\n\n @if (!!pendingWidthColClass) {\n <th [ngClass]=\"pendingWidthColClass\"></th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (isSearching()) {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ t('Loading') }}...</h1>\n <div class=\"progress progress-sm w-25\">\n <div class=\"progress-bar progress-bar-indeterminate bg-body-tertiary\"></div>\n </div>\n </div>\n </td>\n </tr>\n } @else {\n @for (record of data(); track record) {\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <td>\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleItemSelection(record)\"\n [isChecked]=\"selectionModel().isSelected(record)\"></upd-checkbox>\n </td>\n }\n\n @for (col of columns(); track col) {\n <td>\n <ng-container updTableColumn [record]=\"record\" [config]=\"col\"></ng-container>\n </td>\n }\n\n @if (!!pendingWidthColClass) {\n <td></td>\n }\n </tr>\n } @empty {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <p class=\"empty-title\">{{ t('NoRecordsFoundTitle') }}</p>\n <p class=\"empty-subtitle text-secondary\">{{ t('NoRecordsFoundSubtitle') }}</p>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n <upd-paginator wrapperClasses=\"card-footer\" [shouldDisplayPreviousText]=\"false\" [shouldDisplayNextText]=\"false\"\n [(pageSize)]=\"pageSize\" [shouldDisplayFirstText]=\"false\" [shouldDisplayLastText]=\"false\" [(currentPage)]=\"currentPage\"\n [totalRecords]=\"totalRecords()\" (changed)=\"onPageSettingsChanged()\">\n </upd-paginator>\n </div>\n\n <ng-template #actionsTpl>\n <div class=\"ms-auto d-flex gap-2\">\n @if (!!activeSavedView()) {\n @if (activeSavedView()!.isDefault) {\n <div class=\"ribbon ribbon-top ribbon-start\">\n <upd-icon tablerIcon=\"heart\" [tablerIconSize]=\"20\"></upd-icon>\n </div>\n }\n <div class=\"tag align-self-center py-3 text-primary bg-primary-lt border-primary\" updPopover=\"{{ t('CurrentSavedView') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"list-details\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ activeSavedView()!.name }}</span>\n </div>\n }\n @if (hiddenColumns() > 0) {\n <div class=\"tag align-self-center py-3 text-orange bg-orange-lt border-orange\" updPopover=\"{{ t('HiddenColumnsTooltip') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"eye-off\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ hiddenColumns() }}</span>\n </div>\n }\n @if (!!activeSavedView() || hiddenColumns() > 0) {\n <upd-button (clicked)=\"resetViewState()\" colorStyle=\"danger\" updPopover=\"{{ t('ResetView') }}\"\n [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\" [isOutline]=\"true\">\n <upd-icon tablerIcon=\"restore\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canSaveViews) {\n <upd-button customClasses=\"gap-2\" [isDisabled]=\"!hasSearchChanged()\" (clicked)=\"openSaveSearchModal()\"\n updPopover=\"{{ t('SaveCurrentView') }}\" [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\">\n <upd-icon tablerIcon=\"device-floppy\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canManageColumns) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"openColumnsManagerModal()\">\n <upd-icon tablerIcon=\"columns\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ColumnsManagerButton') }}\n </upd-button>\n }\n @if (configModel().canSaveViews || configModel().canLoadSavedViews) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"isSavedViewsDropdownOpen = true\" #savedViewsBtn>\n <upd-icon tablerIcon=\"folders\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('SavedViews.ButtonTitle') }}\n </upd-button>\n <upd-dropdown wrapperClasses=\"overflow-x-hidden mt-1\" [isOpen]=\"isSavedViewsDropdownOpen\"\n [dropdownReference]=\"savedViewsRef()\" [items]=\"savedViewsOptions()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isSavedViewsDropdownOpen = $event\" [minWidth]=\"350\" (selectedItem)=\"selectSavedView($event)\">\n @if (savedViewsOptions().length < 1) {\n <span class=\"m-2\">{{ t('NoSavedViews') }}</span>\n }\n </upd-dropdown>\n }\n </div>\n </ng-template>\n</ng-container>\n", styles: [".fixed{table-layout:fixed!important}.fixed td,.fixed th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.checkbox-selector{width:52px!important}\n"] }]
|
|
1186
|
-
}], ctorParameters: () => [] });
|
|
1516
|
+
args: [{ standalone: false, selector: 'upd-table', providers: [CurrentSearchRequestService], template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n <div class=\"card\">\n @if (!!configModel().title || !configModel().canSearch) {\n <div class=\"card-header\">\n @if (!!configModel().title) {\n <h3 class=\"card-title\">{{ textService.getText(configModel().title) }}</h3>\n }\n <ng-template [ngTemplateOutlet]=\"actionsTpl\"></ng-template>\n </div>\n }\n\n @if (configModel().customHeaderActions.length > 0) {\n <div class=\"card-body py-3 d-flex flex-column gap-2\">\n <div class=\"ms-auto d-flex gap-2\">\n @for (btn of configModel().customHeaderActions; track btn) {\n <upd-button customClasses=\"gap-2\" [model]=\"btn\"></upd-button>\n }\n </div>\n </div>\n }\n\n @if (configModel().canSearch) {\n <upd-search-section [actionsTpl]=\"!configModel().title ? actionsTpl : undefined\" [config]=\"configModel()\"\n [columns]=\"columns()\">\n </upd-search-section>\n }\n\n <div [class.table-responsive]=\"configModel().isResponsive\">\n <!-- TODO: implement pixel sized table -->\n <table class=\"table card-table table-vcenter table-nowrap\" [class.fixed]=\"hasWidth\"\n [class.pixel-sized]=\"isWidthInPixels\">\n <thead [class.sticky-top]=\"configModel().hasStickyHeader\">\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <th class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleAllSelection($event)\"\n [(isChecked)]=\"isMainCheckboxChecked\"\n [(isIndeterminate)]=\"isMainCheckboxIndeterminate\"></upd-checkbox>\n </th>\n }\n\n @for (col of columns(); track col) {\n <th [ngClass]=\"col.widthClass\" [style.width.px]=\"col.pixelsSize\">\n {{ textService.getText(col.title) }}\n @if (canSortColumn(col.name)) {\n <upd-icon [tablerIcon]=\"getSortingIcon(col.name)\" tablerIconWeight=\"bold\"\n colorClass=\"text-body-tertiary\" [tablerIconSize]=\"16\"\n (click)=\"sortByColumn(col.name)\">\n </upd-icon>\n }\n </th>\n }\n\n @if (!!pendingWidthColClass) {\n <th [ngClass]=\"pendingWidthColClass\"></th>\n }\n\n @if (configModel().customActions.length > 0) {\n <th class=\"custom-actions\"></th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (currentSearchRequestService.isSearching()) {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ t('Loading') }}...</h1>\n <div class=\"progress progress-sm w-25\">\n <div class=\"progress-bar progress-bar-indeterminate bg-body-tertiary\"></div>\n </div>\n </div>\n </td>\n </tr>\n } @else {\n @for (record of data(); track record) {\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <td class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleItemSelection(record)\"\n [isChecked]=\"selectionModel().isSelected(record)\"></upd-checkbox>\n </td>\n }\n\n @for (col of columns(); track col) {\n <td [style.width.px]=\"col.pixelsSize\">\n <ng-container updTableColumn [record]=\"record\" [config]=\"col\"></ng-container>\n </td>\n }\n\n @if (!!pendingWidthColClass) {\n <td></td>\n }\n\n @if (configModel().customActions.length > 0) {\n <td style=\"overflow: unset\">\n <div class=\"grow-left d-flex\">\n @if (configModel().customActions.length > 1) {\n <upd-button customClasses=\"ca-item\" [iconModel]=\"{tablerIcon:'dots'}\"\n [isIcon]=\"true\" [isLink]=\"true\" size=\"small\"></upd-button>\n\n <div class=\"ca-dropdown-content rounded shadow-sm\">\n @for (btn of configModel().customActions; track btn) {\n <upd-button\n [model]=\"adaptCustomAction(btn, record)\"></upd-button>\n }\n </div>\n } @else {\n <upd-button\n [model]=\"adaptCustomAction(configModel().customActions[0], record)\">\n </upd-button>\n }\n </div>\n </td>\n }\n </tr>\n } @empty {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <p class=\"empty-title\">{{ t('NoRecordsFoundTitle') }}</p>\n <p class=\"empty-subtitle text-secondary\">{{ t('NoRecordsFoundSubtitle') }}</p>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n <upd-paginator wrapperClasses=\"card-footer\" [shouldDisplayPreviousText]=\"false\" [shouldDisplayNextText]=\"false\"\n [(pageSize)]=\"pageSize\" [shouldDisplayFirstText]=\"false\" [shouldDisplayLastText]=\"false\"\n [(currentPage)]=\"currentPage\" [totalRecords]=\"totalRecords()\" (changed)=\"onPageSettingsChanged()\">\n </upd-paginator>\n </div>\n\n <ng-template #actionsTpl>\n <div class=\"ms-auto d-flex gap-2\">\n @if (!!activeSavedView()) {\n @if (activeSavedView()!.isDefault) {\n <div class=\"ribbon ribbon-top ribbon-start\">\n <upd-icon tablerIcon=\"heart\" [tablerIconSize]=\"20\"></upd-icon>\n </div>\n }\n <div class=\"tag align-self-center py-3 text-primary bg-primary-lt border-primary\"\n updPopover=\"{{ t('CurrentSavedView') }}\" [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"list-details\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ activeSavedView()!.name }}</span>\n </div>\n }\n @if (hiddenColumns() > 0) {\n <div class=\"tag align-self-center py-3 text-orange bg-orange-lt border-orange\"\n updPopover=\"{{ t('HiddenColumnsTooltip') }}\" [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"eye-off\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ hiddenColumns() }}</span>\n </div>\n }\n @if (!!activeSavedView() || hiddenColumns() > 0) {\n <upd-button (clicked)=\"resetViewState()\" colorStyle=\"danger\" updPopover=\"{{ t('ResetView') }}\"\n [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\" [isOutline]=\"true\">\n <upd-icon tablerIcon=\"restore\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canSaveViews) {\n <upd-button customClasses=\"gap-2\" [isDisabled]=\"!currentSearchRequestService.hasChanges()\"\n (clicked)=\"openSaveSearchModal()\" updPopover=\"{{ t('SaveCurrentView') }}\"\n [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\">\n <upd-icon tablerIcon=\"device-floppy\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canManageColumns) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"openColumnsManagerModal()\">\n <upd-icon tablerIcon=\"columns\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ColumnsManagerButton') }}\n </upd-button>\n }\n @if (configModel().canSaveViews || configModel().canLoadSavedViews) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"isSavedViewsDropdownOpen = true\" #savedViewsBtn>\n <upd-icon tablerIcon=\"folders\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('SavedViews.ButtonTitle') }}\n </upd-button>\n <upd-dropdown wrapperClasses=\"overflow-x-hidden mt-1\" [isOpen]=\"isSavedViewsDropdownOpen\"\n [dropdownReference]=\"savedViewsRef()\" [items]=\"savedViewsOptions()\"\n [shouldCloseOnOutsideClick]=\"true\" (isOpenChange)=\"isSavedViewsDropdownOpen = $event\"\n [minWidth]=\"350\" (selectedItem)=\"selectSavedView($event)\">\n @if (savedViewsOptions().length < 1) {\n <span class=\"m-2\">{{ t('NoSavedViews') }}</span>\n }\n </upd-dropdown>\n }\n </div>\n </ng-template>\n</ng-container>", styles: [".fixed{table-layout:fixed!important}.fixed td,.fixed th{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.checkbox-selector{width:52px!important}.custom-actions{width:56px!important}.ca-item{transition:all,.5s}.ca-item:hover{width:400px}.grow-left{direction:rtl}.ca-dropdown-content{display:none;background:var(--upd-secondary-lt)}.grow-left:hover .ca-dropdown-content{display:block}\n"] }]
|
|
1517
|
+
}], ctorParameters: () => [], propDecorators: { savedViewsRef: [{ type: i0.ViewChild, args: ['savedViewsBtn', { ...{ read: ElementRef }, isSignal: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }, { type: i0.Output, args: ["configChange"] }], currentPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentPage", required: false }] }, { type: i0.Output, args: ["currentPageChange"] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }, { type: i0.Output, args: ["pageSizeChange"] }] } });
|
|
1187
1518
|
|
|
1188
1519
|
var UpDevs$1 = {
|
|
1189
1520
|
Table: {
|
|
@@ -1356,10 +1687,10 @@ class FiltersOperandsStore extends BaseStore {
|
|
|
1356
1687
|
load(fieldType) {
|
|
1357
1688
|
return this._requestService.makeGet(this.getRequestModel(fieldType.toString()));
|
|
1358
1689
|
}
|
|
1359
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1360
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1690
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: FiltersOperandsStore, deps: [{ token: UpdTableConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1691
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: FiltersOperandsStore }); }
|
|
1361
1692
|
}
|
|
1362
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1693
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: FiltersOperandsStore, decorators: [{
|
|
1363
1694
|
type: Injectable
|
|
1364
1695
|
}], ctorParameters: () => [{ type: UpdTableConfigService }] });
|
|
1365
1696
|
|
|
@@ -1546,6 +1877,16 @@ class GuidFilterOperandsListModel {
|
|
|
1546
1877
|
}
|
|
1547
1878
|
}
|
|
1548
1879
|
|
|
1880
|
+
class SelectFilterOperandsListModel {
|
|
1881
|
+
static { this.options = {
|
|
1882
|
+
[FilterOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],
|
|
1883
|
+
[FilterOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals]
|
|
1884
|
+
}; }
|
|
1885
|
+
static get optionsAsList() {
|
|
1886
|
+
return (Object.values(this.options) || []);
|
|
1887
|
+
}
|
|
1888
|
+
}
|
|
1889
|
+
|
|
1549
1890
|
class DefaultFiltersOperandsService extends FiltersOperandsService {
|
|
1550
1891
|
get isLoaded() {
|
|
1551
1892
|
return this._isLoaded;
|
|
@@ -1558,26 +1899,29 @@ class DefaultFiltersOperandsService extends FiltersOperandsService {
|
|
|
1558
1899
|
this.cachedData = {};
|
|
1559
1900
|
if (!!this.configService.config.urlToLoadOperandsFromServer) {
|
|
1560
1901
|
forkJoin({
|
|
1561
|
-
guidOps: this.filterOperandsStore.load(
|
|
1562
|
-
stringOps: this.filterOperandsStore.load(
|
|
1563
|
-
numberOps: this.filterOperandsStore.load(
|
|
1564
|
-
dateOps: this.filterOperandsStore.load(
|
|
1565
|
-
booleanOps: this.filterOperandsStore.load(
|
|
1902
|
+
guidOps: this.filterOperandsStore.load(FilterTypeEnum.Guid),
|
|
1903
|
+
stringOps: this.filterOperandsStore.load(FilterTypeEnum.Text),
|
|
1904
|
+
numberOps: this.filterOperandsStore.load(FilterTypeEnum.Number),
|
|
1905
|
+
dateOps: this.filterOperandsStore.load(FilterTypeEnum.Date),
|
|
1906
|
+
booleanOps: this.filterOperandsStore.load(FilterTypeEnum.Boolean),
|
|
1907
|
+
selectOps: this.filterOperandsStore.load(FilterTypeEnum.Select)
|
|
1566
1908
|
}).subscribe(resp => {
|
|
1567
|
-
this.cachedData[
|
|
1568
|
-
this.cachedData[
|
|
1569
|
-
this.cachedData[
|
|
1570
|
-
this.cachedData[
|
|
1571
|
-
this.cachedData[
|
|
1909
|
+
this.cachedData[FilterTypeEnum.Guid] = resp.guidOps;
|
|
1910
|
+
this.cachedData[FilterTypeEnum.Text] = resp.stringOps;
|
|
1911
|
+
this.cachedData[FilterTypeEnum.Number] = resp.numberOps;
|
|
1912
|
+
this.cachedData[FilterTypeEnum.Date] = resp.dateOps;
|
|
1913
|
+
this.cachedData[FilterTypeEnum.Boolean] = resp.booleanOps;
|
|
1914
|
+
this.cachedData[FilterTypeEnum.Select] = resp.selectOps;
|
|
1572
1915
|
this._isLoaded = true;
|
|
1573
1916
|
});
|
|
1574
1917
|
}
|
|
1575
1918
|
else {
|
|
1576
|
-
this.cachedData[
|
|
1577
|
-
this.cachedData[
|
|
1578
|
-
this.cachedData[
|
|
1579
|
-
this.cachedData[
|
|
1580
|
-
this.cachedData[
|
|
1919
|
+
this.cachedData[FilterTypeEnum.Guid] = GuidFilterOperandsListModel.optionsAsList;
|
|
1920
|
+
this.cachedData[FilterTypeEnum.Text] = StringFilterOperandsListModel.optionsAsList;
|
|
1921
|
+
this.cachedData[FilterTypeEnum.Number] = NumberFilterOperandsListModel.optionsAsList;
|
|
1922
|
+
this.cachedData[FilterTypeEnum.Date] = DateFilterOperandsListModel.optionsAsList;
|
|
1923
|
+
this.cachedData[FilterTypeEnum.Boolean] = BooleanFilterOperandsListModel.optionsAsList;
|
|
1924
|
+
this.cachedData[FilterTypeEnum.Select] = SelectFilterOperandsListModel.optionsAsList;
|
|
1581
1925
|
this._isLoaded = true;
|
|
1582
1926
|
}
|
|
1583
1927
|
}
|
|
@@ -1587,15 +1931,16 @@ class DefaultFiltersOperandsService extends FiltersOperandsService {
|
|
|
1587
1931
|
getAllOperands() {
|
|
1588
1932
|
return this.cachedData;
|
|
1589
1933
|
}
|
|
1590
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1591
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1934
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: DefaultFiltersOperandsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1935
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: DefaultFiltersOperandsService }); }
|
|
1592
1936
|
}
|
|
1593
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1937
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: DefaultFiltersOperandsService, decorators: [{
|
|
1594
1938
|
type: Injectable
|
|
1595
1939
|
}], ctorParameters: () => [] });
|
|
1596
1940
|
|
|
1597
1941
|
class UpdTableModule {
|
|
1598
1942
|
constructor(translocoService) {
|
|
1943
|
+
translocoService.setFallbackLangForMissingTranslation({ fallbackLang: 'en' });
|
|
1599
1944
|
translocoService.setTranslation(en$1, 'en');
|
|
1600
1945
|
translocoService.setTranslation(pt$1, 'pt');
|
|
1601
1946
|
}
|
|
@@ -1618,8 +1963,8 @@ class UpdTableModule {
|
|
|
1618
1963
|
]
|
|
1619
1964
|
};
|
|
1620
1965
|
}
|
|
1621
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1622
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
1966
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: UpdTableModule, deps: [{ token: i1$1.TranslocoService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1967
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.4", ngImport: i0, type: UpdTableModule, declarations: [TableComponent,
|
|
1623
1968
|
SearchSectionComponent,
|
|
1624
1969
|
FilterRowComponent,
|
|
1625
1970
|
TableColumnDirective,
|
|
@@ -1644,7 +1989,7 @@ class UpdTableModule {
|
|
|
1644
1989
|
UpdBadgeModule,
|
|
1645
1990
|
UpdPopoverModule], exports: [TableComponent,
|
|
1646
1991
|
TableColumnDirective] }); }
|
|
1647
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
1992
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: UpdTableModule, providers: [
|
|
1648
1993
|
UpdTableConfigService,
|
|
1649
1994
|
FiltersOperandsStore,
|
|
1650
1995
|
SavedViewsStorage
|
|
@@ -1663,7 +2008,7 @@ class UpdTableModule {
|
|
|
1663
2008
|
UpdBadgeModule,
|
|
1664
2009
|
UpdPopoverModule] }); }
|
|
1665
2010
|
}
|
|
1666
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2011
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: UpdTableModule, decorators: [{
|
|
1667
2012
|
type: NgModule,
|
|
1668
2013
|
args: [{
|
|
1669
2014
|
imports: [
|
|
@@ -1711,5 +2056,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
1711
2056
|
* Generated bundle index. Do not edit.
|
|
1712
2057
|
*/
|
|
1713
2058
|
|
|
1714
|
-
export { BaseColumnModel, BooleanColumnModel, ColumnTypeEnum, DateTimeColumnModel, FiltersOperandsService, GuidColumnModel, ImageColumnModel, NumberColumnModel, TableColumnDirective, TableComponent, TextColumnModel, UpdTableModule };
|
|
2059
|
+
export { BaseColumn, BaseColumnModel, BooleanColumnModel, ColumnTypeEnum, CustomColumnModel, DateTimeColumnModel, FiltersOperandsService, GuidColumnModel, ImageColumnModel, NumberColumnModel, TableColumnDirective, TableComponent, TextColumnModel, UpdTableModule };
|
|
1715
2060
|
//# sourceMappingURL=updevs-components-table.mjs.map
|