@skyux/list-builder 5.0.2 → 5.5.0
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 +6 -4
- package/bundles/skyux-list-builder.umd.js +95 -94
- package/documentation.json +681 -468
- package/esm2015/index.js +78 -0
- package/esm2015/index.js.map +1 -0
- package/esm2015/lib/modules/list/list-data-request.model.js +18 -0
- package/esm2015/lib/modules/list/list-data-request.model.js.map +1 -0
- package/esm2015/lib/modules/list/list-data-response.model.js +9 -0
- package/esm2015/lib/modules/list/list-data-response.model.js.map +1 -0
- package/esm2015/lib/modules/list/list-data.provider.js +7 -0
- package/esm2015/lib/modules/list/list-data.provider.js.map +1 -0
- package/esm2015/lib/modules/list/list-paging.component.js +13 -0
- package/esm2015/lib/modules/list/list-paging.component.js.map +1 -0
- package/esm2015/lib/modules/list/list-view.component.js +28 -0
- package/esm2015/lib/modules/list/list-view.component.js.map +1 -0
- package/esm2015/lib/modules/list/list.component.js +305 -0
- package/esm2015/lib/modules/list/list.component.js.map +1 -0
- package/esm2015/lib/modules/list/list.module.js +18 -0
- package/esm2015/lib/modules/list/list.module.js.map +1 -0
- package/esm2015/lib/modules/list/state/filters/filters.orchestrator.js +16 -0
- package/esm2015/lib/modules/list/state/filters/filters.orchestrator.js.map +1 -0
- package/esm2015/lib/modules/list/state/filters/update.action.js +9 -0
- package/esm2015/lib/modules/list/state/filters/update.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/items/items.orchestrator.js +53 -0
- package/esm2015/lib/modules/list/state/items/items.orchestrator.js.map +1 -0
- package/esm2015/lib/modules/list/state/items/load.action.js +12 -0
- package/esm2015/lib/modules/list/state/items/load.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/items/set-items-selected.action.js +13 -0
- package/esm2015/lib/modules/list/state/items/set-items-selected.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/items/set-loading.action.js +9 -0
- package/esm2015/lib/modules/list/state/items/set-loading.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/list-state-action.type.js +2 -0
- package/esm2015/lib/modules/list/state/list-state-action.type.js.map +1 -0
- package/esm2015/lib/modules/list/state/list-state.model.js +24 -0
- package/esm2015/lib/modules/list/state/list-state.model.js.map +1 -0
- package/esm2015/lib/modules/list/state/list-state.rxstate.js +80 -0
- package/esm2015/lib/modules/list/state/list-state.rxstate.js.map +1 -0
- package/esm2015/lib/modules/list/state/list-state.state-node.js +37 -0
- package/esm2015/lib/modules/list/state/list-state.state-node.js.map +1 -0
- package/esm2015/lib/modules/list/state/paging/paging.model.js +14 -0
- package/esm2015/lib/modules/list/state/paging/paging.model.js.map +1 -0
- package/esm2015/lib/modules/list/state/paging/paging.orchestrator.js +27 -0
- package/esm2015/lib/modules/list/state/paging/paging.orchestrator.js.map +1 -0
- package/esm2015/lib/modules/list/state/paging/set-items-per-page.action.js +9 -0
- package/esm2015/lib/modules/list/state/paging/set-items-per-page.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/paging/set-max-pages.action.js +9 -0
- package/esm2015/lib/modules/list/state/paging/set-max-pages.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/paging/set-page-number.action.js +9 -0
- package/esm2015/lib/modules/list/state/paging/set-page-number.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/search/search.model.js +32 -0
- package/esm2015/lib/modules/list/state/search/search.model.js.map +1 -0
- package/esm2015/lib/modules/list/state/search/search.orchestrator.js +47 -0
- package/esm2015/lib/modules/list/state/search/search.orchestrator.js.map +1 -0
- package/esm2015/lib/modules/list/state/search/set-field-selectors.action.js +9 -0
- package/esm2015/lib/modules/list/state/search/set-field-selectors.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/search/set-functions.action.js +9 -0
- package/esm2015/lib/modules/list/state/search/set-functions.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/search/set-options.action.js +11 -0
- package/esm2015/lib/modules/list/state/search/set-options.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/search/set-search-text.action.js +9 -0
- package/esm2015/lib/modules/list/state/search/set-search-text.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/selected/load.action.js +9 -0
- package/esm2015/lib/modules/list/state/selected/load.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/selected/selected.model.js +9 -0
- package/esm2015/lib/modules/list/state/selected/selected.model.js.map +1 -0
- package/esm2015/lib/modules/list/state/selected/selected.orchestrator.js +56 -0
- package/esm2015/lib/modules/list/state/selected/selected.orchestrator.js.map +1 -0
- package/esm2015/lib/modules/list/state/selected/set-item-selected.action.js +10 -0
- package/esm2015/lib/modules/list/state/selected/set-item-selected.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/selected/set-items-selected.action.js +11 -0
- package/esm2015/lib/modules/list/state/selected/set-items-selected.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/selected/set-loading.action.js +9 -0
- package/esm2015/lib/modules/list/state/selected/set-loading.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/sort/label.model.js +25 -0
- package/esm2015/lib/modules/list/state/sort/label.model.js.map +1 -0
- package/esm2015/lib/modules/list/state/sort/set-available.action.js +9 -0
- package/esm2015/lib/modules/list/state/sort/set-available.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/sort/set-field-selectors.action.js +9 -0
- package/esm2015/lib/modules/list/state/sort/set-field-selectors.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/sort/set-global.action.js +9 -0
- package/esm2015/lib/modules/list/state/sort/set-global.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/sort/sort.model.js +27 -0
- package/esm2015/lib/modules/list/state/sort/sort.model.js.map +1 -0
- package/esm2015/lib/modules/list/state/sort/sort.orchestrator.js +30 -0
- package/esm2015/lib/modules/list/state/sort/sort.orchestrator.js.map +1 -0
- package/esm2015/lib/modules/list/state/toolbar/disable.action.js +9 -0
- package/esm2015/lib/modules/list/state/toolbar/disable.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/toolbar/load.action.js +10 -0
- package/esm2015/lib/modules/list/state/toolbar/load.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/toolbar/remove.action.js +9 -0
- package/esm2015/lib/modules/list/state/toolbar/remove.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/toolbar/set-exists.action.js +9 -0
- package/esm2015/lib/modules/list/state/toolbar/set-exists.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/toolbar/set-type.action.js +9 -0
- package/esm2015/lib/modules/list/state/toolbar/set-type.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/toolbar/show-multiselect-toolbar.action.js +9 -0
- package/esm2015/lib/modules/list/state/toolbar/show-multiselect-toolbar.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/toolbar/toolbar-item.model.js +16 -0
- package/esm2015/lib/modules/list/state/toolbar/toolbar-item.model.js.map +1 -0
- package/esm2015/lib/modules/list/state/toolbar/toolbar.model.js +17 -0
- package/esm2015/lib/modules/list/state/toolbar/toolbar.model.js.map +1 -0
- package/esm2015/lib/modules/list/state/toolbar/toolbar.orchestrator.js +80 -0
- package/esm2015/lib/modules/list/state/toolbar/toolbar.orchestrator.js.map +1 -0
- package/esm2015/lib/modules/list/state/views/load.action.js +9 -0
- package/esm2015/lib/modules/list/state/views/load.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/views/set-active.action.js +9 -0
- package/esm2015/lib/modules/list/state/views/set-active.action.js.map +1 -0
- package/esm2015/lib/modules/list/state/views/view.model.js +10 -0
- package/esm2015/lib/modules/list/state/views/view.model.js.map +1 -0
- package/esm2015/lib/modules/list/state/views/views.model.js +13 -0
- package/esm2015/lib/modules/list/state/views/views.model.js.map +1 -0
- package/esm2015/lib/modules/list/state/views/views.orchestrator.js +21 -0
- package/esm2015/lib/modules/list/state/views/views.orchestrator.js.map +1 -0
- package/esm2015/lib/modules/list-data-provider-in-memory/list-data-in-memory.provider.js +160 -0
- package/esm2015/lib/modules/list-data-provider-in-memory/list-data-in-memory.provider.js.map +1 -0
- package/esm2015/lib/modules/list-filters/filter.model.js +18 -0
- package/esm2015/lib/modules/list-filters/filter.model.js.map +1 -0
- package/esm2015/lib/modules/list-filters/list-filter-button.component.js +44 -0
- package/esm2015/lib/modules/list-filters/list-filter-button.component.js.map +1 -0
- package/esm2015/lib/modules/list-filters/list-filter-inline-item-renderer.component.js +34 -0
- package/esm2015/lib/modules/list-filters/list-filter-inline-item-renderer.component.js.map +1 -0
- package/esm2015/lib/modules/list-filters/list-filter-inline-item.component.js +45 -0
- package/esm2015/lib/modules/list-filters/list-filter-inline-item.component.js.map +1 -0
- package/esm2015/lib/modules/list-filters/list-filter-inline.component.js +74 -0
- package/esm2015/lib/modules/list-filters/list-filter-inline.component.js.map +1 -0
- package/esm2015/lib/modules/list-filters/list-filter-inline.model.js +21 -0
- package/esm2015/lib/modules/list-filters/list-filter-inline.model.js.map +1 -0
- package/esm2015/lib/modules/list-filters/list-filter-summary.component.js +60 -0
- package/esm2015/lib/modules/list-filters/list-filter-summary.component.js.map +1 -0
- package/esm2015/lib/modules/list-filters/list-filters.module.js +41 -0
- package/esm2015/lib/modules/list-filters/list-filters.module.js.map +1 -0
- package/esm2015/lib/modules/list-paging/list-paging.component.js +89 -0
- package/esm2015/lib/modules/list-paging/list-paging.component.js.map +1 -0
- package/esm2015/lib/modules/list-paging/list-paging.module.js +19 -0
- package/esm2015/lib/modules/list-paging/list-paging.module.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/list-multiselect-toolbar.component.js +153 -0
- package/esm2015/lib/modules/list-toolbar/list-multiselect-toolbar.component.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-action.component.js +33 -0
- package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-action.component.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-action.js +2 -0
- package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-action.js.map +1 -0
- package/esm2015/{modules → lib/modules}/list-toolbar/list-secondary-actions/list-secondary-actions-host.component.js +6 -5
- package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions-host.component.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.component.js +45 -0
- package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.component.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.module.js +46 -0
- package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.module.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.service.js +36 -0
- package/esm2015/lib/modules/list-toolbar/list-secondary-actions/list-secondary-actions.service.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/list-toolbar-item-renderer.component.js +30 -0
- package/esm2015/lib/modules/list-toolbar/list-toolbar-item-renderer.component.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/list-toolbar-item.component.js +47 -0
- package/esm2015/lib/modules/list-toolbar/list-toolbar-item.component.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/list-toolbar-search-actions.component.js +19 -0
- package/esm2015/lib/modules/list-toolbar/list-toolbar-search-actions.component.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/list-toolbar-sort.component.js +25 -0
- package/esm2015/lib/modules/list-toolbar/list-toolbar-sort.component.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/list-toolbar-view-actions.component.js +21 -0
- package/esm2015/lib/modules/list-toolbar/list-toolbar-view-actions.component.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/list-toolbar.component.js +360 -0
- package/esm2015/lib/modules/list-toolbar/list-toolbar.component.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/list-toolbar.module.js +87 -0
- package/esm2015/lib/modules/list-toolbar/list-toolbar.module.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/state/config/config.model.js +14 -0
- package/esm2015/lib/modules/list-toolbar/state/config/config.model.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/state/config/config.orchestrator.js +21 -0
- package/esm2015/lib/modules/list-toolbar/state/config/config.orchestrator.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/state/config/set-search-enabled.action.js +9 -0
- package/esm2015/lib/modules/list-toolbar/state/config/set-search-enabled.action.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/state/config/set-sort-selector-enabled.action.js +10 -0
- package/esm2015/lib/modules/list-toolbar/state/config/set-sort-selector-enabled.action.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/state/toolbar-state-action.type.js +2 -0
- package/esm2015/lib/modules/list-toolbar/state/toolbar-state-action.type.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/state/toolbar-state.model.js +10 -0
- package/esm2015/lib/modules/list-toolbar/state/toolbar-state.model.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/state/toolbar-state.rxstate.js +19 -0
- package/esm2015/lib/modules/list-toolbar/state/toolbar-state.rxstate.js.map +1 -0
- package/esm2015/lib/modules/list-toolbar/state/toolbar-state.state-node.js +23 -0
- package/esm2015/lib/modules/list-toolbar/state/toolbar-state.state-node.js.map +1 -0
- package/esm2015/lib/modules/shared/sky-list-builder-resources.module.js +53 -0
- package/esm2015/lib/modules/shared/sky-list-builder-resources.module.js.map +1 -0
- package/esm2015/skyux-list-builder.js +2 -2
- package/esm2015/skyux-list-builder.js.map +1 -0
- package/fesm2015/skyux-list-builder.js +117 -116
- package/fesm2015/skyux-list-builder.js.map +1 -1
- package/index.d.ts +74 -0
- package/{modules → lib/modules}/list/list-data-request.model.d.ts +0 -0
- package/{modules → lib/modules}/list/list-data-response.model.d.ts +0 -0
- package/{modules → lib/modules}/list/list-data.provider.d.ts +0 -0
- package/{modules → lib/modules}/list/list-paging.component.d.ts +0 -0
- package/{modules → lib/modules}/list/list-view.component.d.ts +0 -0
- package/{modules → lib/modules}/list/list.component.d.ts +0 -0
- package/{modules → lib/modules}/list/list.module.d.ts +0 -0
- package/{modules → lib/modules}/list/state/filters/filters.orchestrator.d.ts +0 -0
- package/{modules → lib/modules}/list/state/filters/update.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/items/items.orchestrator.d.ts +0 -0
- package/{modules → lib/modules}/list/state/items/load.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/items/set-items-selected.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/items/set-loading.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/list-state-action.type.d.ts +0 -0
- package/{modules → lib/modules}/list/state/list-state.model.d.ts +0 -0
- package/{modules → lib/modules}/list/state/list-state.rxstate.d.ts +0 -0
- package/{modules → lib/modules}/list/state/list-state.state-node.d.ts +0 -0
- package/{modules → lib/modules}/list/state/paging/paging.model.d.ts +0 -0
- package/{modules → lib/modules}/list/state/paging/paging.orchestrator.d.ts +0 -0
- package/{modules → lib/modules}/list/state/paging/set-items-per-page.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/paging/set-max-pages.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/paging/set-page-number.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/search/search.model.d.ts +1 -0
- package/{modules → lib/modules}/list/state/search/search.orchestrator.d.ts +0 -0
- package/{modules → lib/modules}/list/state/search/set-field-selectors.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/search/set-functions.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/search/set-options.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/search/set-search-text.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/selected/load.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/selected/selected.model.d.ts +0 -0
- package/{modules → lib/modules}/list/state/selected/selected.orchestrator.d.ts +0 -0
- package/{modules → lib/modules}/list/state/selected/set-item-selected.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/selected/set-items-selected.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/selected/set-loading.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/sort/label.model.d.ts +0 -0
- package/{modules → lib/modules}/list/state/sort/set-available.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/sort/set-field-selectors.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/sort/set-global.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/sort/sort.model.d.ts +0 -0
- package/{modules → lib/modules}/list/state/sort/sort.orchestrator.d.ts +0 -0
- package/{modules → lib/modules}/list/state/toolbar/disable.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/toolbar/load.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/toolbar/remove.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/toolbar/set-exists.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/toolbar/set-type.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/toolbar/show-multiselect-toolbar.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/toolbar/toolbar-item.model.d.ts +0 -0
- package/{modules → lib/modules}/list/state/toolbar/toolbar.model.d.ts +0 -0
- package/{modules → lib/modules}/list/state/toolbar/toolbar.orchestrator.d.ts +0 -0
- package/{modules → lib/modules}/list/state/views/load.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/views/set-active.action.d.ts +0 -0
- package/{modules → lib/modules}/list/state/views/view.model.d.ts +0 -0
- package/{modules → lib/modules}/list/state/views/views.model.d.ts +0 -0
- package/{modules → lib/modules}/list/state/views/views.orchestrator.d.ts +0 -0
- package/{modules → lib/modules}/list-data-provider-in-memory/list-data-in-memory.provider.d.ts +0 -0
- package/{modules → lib/modules}/list-filters/filter.model.d.ts +0 -0
- package/{modules → lib/modules}/list-filters/list-filter-button.component.d.ts +0 -0
- package/{modules → lib/modules}/list-filters/list-filter-inline-item-renderer.component.d.ts +0 -0
- package/{modules → lib/modules}/list-filters/list-filter-inline-item.component.d.ts +0 -0
- package/{modules → lib/modules}/list-filters/list-filter-inline.component.d.ts +0 -0
- package/{modules → lib/modules}/list-filters/list-filter-inline.model.d.ts +0 -0
- package/{modules → lib/modules}/list-filters/list-filter-summary.component.d.ts +0 -0
- package/{modules → lib/modules}/list-filters/list-filters.module.d.ts +0 -0
- package/{modules → lib/modules}/list-paging/list-paging.component.d.ts +0 -0
- package/{modules → lib/modules}/list-paging/list-paging.module.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/list-multiselect-toolbar.component.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/list-secondary-actions/list-secondary-action.component.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/list-secondary-actions/list-secondary-action.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/list-secondary-actions/list-secondary-actions-host.component.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/list-secondary-actions/list-secondary-actions.component.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/list-secondary-actions/list-secondary-actions.module.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/list-secondary-actions/list-secondary-actions.service.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/list-toolbar-item-renderer.component.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/list-toolbar-item.component.d.ts +3 -3
- package/{modules → lib/modules}/list-toolbar/list-toolbar-search-actions.component.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/list-toolbar-sort.component.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/list-toolbar-view-actions.component.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/list-toolbar.component.d.ts +2 -2
- package/{modules → lib/modules}/list-toolbar/list-toolbar.module.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/state/config/config.model.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/state/config/config.orchestrator.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/state/config/set-search-enabled.action.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/state/config/set-sort-selector-enabled.action.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/state/toolbar-state-action.type.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/state/toolbar-state.model.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/state/toolbar-state.rxstate.d.ts +0 -0
- package/{modules → lib/modules}/list-toolbar/state/toolbar-state.state-node.d.ts +0 -0
- package/{modules → lib/modules}/shared/sky-list-builder-resources.module.d.ts +0 -0
- package/package.json +27 -13
- package/skyux-list-builder.d.ts +1 -1
- package/LICENSE +0 -21
- package/esm2015/modules/list/list-data-request.model.js +0 -18
- package/esm2015/modules/list/list-data-response.model.js +0 -9
- package/esm2015/modules/list/list-data.provider.js +0 -7
- package/esm2015/modules/list/list-paging.component.js +0 -13
- package/esm2015/modules/list/list-view.component.js +0 -28
- package/esm2015/modules/list/list.component.js +0 -304
- package/esm2015/modules/list/list.module.js +0 -18
- package/esm2015/modules/list/state/filters/filters.orchestrator.js +0 -16
- package/esm2015/modules/list/state/filters/update.action.js +0 -9
- package/esm2015/modules/list/state/items/items.orchestrator.js +0 -53
- package/esm2015/modules/list/state/items/load.action.js +0 -12
- package/esm2015/modules/list/state/items/set-items-selected.action.js +0 -13
- package/esm2015/modules/list/state/items/set-loading.action.js +0 -9
- package/esm2015/modules/list/state/list-state-action.type.js +0 -2
- package/esm2015/modules/list/state/list-state.model.js +0 -24
- package/esm2015/modules/list/state/list-state.rxstate.js +0 -80
- package/esm2015/modules/list/state/list-state.state-node.js +0 -36
- package/esm2015/modules/list/state/paging/paging.model.js +0 -14
- package/esm2015/modules/list/state/paging/paging.orchestrator.js +0 -27
- package/esm2015/modules/list/state/paging/set-items-per-page.action.js +0 -9
- package/esm2015/modules/list/state/paging/set-max-pages.action.js +0 -9
- package/esm2015/modules/list/state/paging/set-page-number.action.js +0 -9
- package/esm2015/modules/list/state/search/search.model.js +0 -31
- package/esm2015/modules/list/state/search/search.orchestrator.js +0 -47
- package/esm2015/modules/list/state/search/set-field-selectors.action.js +0 -9
- package/esm2015/modules/list/state/search/set-functions.action.js +0 -9
- package/esm2015/modules/list/state/search/set-options.action.js +0 -11
- package/esm2015/modules/list/state/search/set-search-text.action.js +0 -9
- package/esm2015/modules/list/state/selected/load.action.js +0 -9
- package/esm2015/modules/list/state/selected/selected.model.js +0 -9
- package/esm2015/modules/list/state/selected/selected.orchestrator.js +0 -56
- package/esm2015/modules/list/state/selected/set-item-selected.action.js +0 -10
- package/esm2015/modules/list/state/selected/set-items-selected.action.js +0 -11
- package/esm2015/modules/list/state/selected/set-loading.action.js +0 -9
- package/esm2015/modules/list/state/sort/label.model.js +0 -25
- package/esm2015/modules/list/state/sort/set-available.action.js +0 -9
- package/esm2015/modules/list/state/sort/set-field-selectors.action.js +0 -9
- package/esm2015/modules/list/state/sort/set-global.action.js +0 -9
- package/esm2015/modules/list/state/sort/sort.model.js +0 -27
- package/esm2015/modules/list/state/sort/sort.orchestrator.js +0 -30
- package/esm2015/modules/list/state/toolbar/disable.action.js +0 -9
- package/esm2015/modules/list/state/toolbar/load.action.js +0 -10
- package/esm2015/modules/list/state/toolbar/remove.action.js +0 -9
- package/esm2015/modules/list/state/toolbar/set-exists.action.js +0 -9
- package/esm2015/modules/list/state/toolbar/set-type.action.js +0 -9
- package/esm2015/modules/list/state/toolbar/show-multiselect-toolbar.action.js +0 -9
- package/esm2015/modules/list/state/toolbar/toolbar-item.model.js +0 -16
- package/esm2015/modules/list/state/toolbar/toolbar.model.js +0 -17
- package/esm2015/modules/list/state/toolbar/toolbar.orchestrator.js +0 -80
- package/esm2015/modules/list/state/views/load.action.js +0 -9
- package/esm2015/modules/list/state/views/set-active.action.js +0 -9
- package/esm2015/modules/list/state/views/view.model.js +0 -10
- package/esm2015/modules/list/state/views/views.model.js +0 -13
- package/esm2015/modules/list/state/views/views.orchestrator.js +0 -21
- package/esm2015/modules/list-data-provider-in-memory/list-data-in-memory.provider.js +0 -160
- package/esm2015/modules/list-filters/filter.model.js +0 -18
- package/esm2015/modules/list-filters/list-filter-button.component.js +0 -43
- package/esm2015/modules/list-filters/list-filter-inline-item-renderer.component.js +0 -34
- package/esm2015/modules/list-filters/list-filter-inline-item.component.js +0 -45
- package/esm2015/modules/list-filters/list-filter-inline.component.js +0 -72
- package/esm2015/modules/list-filters/list-filter-inline.model.js +0 -21
- package/esm2015/modules/list-filters/list-filter-summary.component.js +0 -58
- package/esm2015/modules/list-filters/list-filters.module.js +0 -41
- package/esm2015/modules/list-paging/list-paging.component.js +0 -87
- package/esm2015/modules/list-paging/list-paging.module.js +0 -19
- package/esm2015/modules/list-toolbar/list-multiselect-toolbar.component.js +0 -151
- package/esm2015/modules/list-toolbar/list-secondary-actions/list-secondary-action.component.js +0 -32
- package/esm2015/modules/list-toolbar/list-secondary-actions/list-secondary-action.js +0 -2
- package/esm2015/modules/list-toolbar/list-secondary-actions/list-secondary-actions.component.js +0 -44
- package/esm2015/modules/list-toolbar/list-secondary-actions/list-secondary-actions.module.js +0 -46
- package/esm2015/modules/list-toolbar/list-secondary-actions/list-secondary-actions.service.js +0 -36
- package/esm2015/modules/list-toolbar/list-toolbar-item-renderer.component.js +0 -30
- package/esm2015/modules/list-toolbar/list-toolbar-item.component.js +0 -47
- package/esm2015/modules/list-toolbar/list-toolbar-search-actions.component.js +0 -19
- package/esm2015/modules/list-toolbar/list-toolbar-sort.component.js +0 -25
- package/esm2015/modules/list-toolbar/list-toolbar-view-actions.component.js +0 -21
- package/esm2015/modules/list-toolbar/list-toolbar.component.js +0 -358
- package/esm2015/modules/list-toolbar/list-toolbar.module.js +0 -87
- package/esm2015/modules/list-toolbar/state/config/config.model.js +0 -14
- package/esm2015/modules/list-toolbar/state/config/config.orchestrator.js +0 -21
- package/esm2015/modules/list-toolbar/state/config/set-search-enabled.action.js +0 -9
- package/esm2015/modules/list-toolbar/state/config/set-sort-selector-enabled.action.js +0 -10
- package/esm2015/modules/list-toolbar/state/toolbar-state-action.type.js +0 -2
- package/esm2015/modules/list-toolbar/state/toolbar-state.model.js +0 -10
- package/esm2015/modules/list-toolbar/state/toolbar-state.rxstate.js +0 -19
- package/esm2015/modules/list-toolbar/state/toolbar-state.state-node.js +0 -21
- package/esm2015/modules/shared/sky-list-builder-resources.module.js +0 -53
- package/esm2015/public-api.js +0 -78
- package/public-api.d.ts +0 -74
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ListStateOrchestrator } from '../list-state.rxstate';
|
|
2
|
+
import { ListViewsModel } from './views.model';
|
|
3
|
+
import { ListViewsLoadAction } from './load.action';
|
|
4
|
+
import { ListViewsSetActiveAction } from './set-active.action';
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export class ListViewsOrchestrator extends ListStateOrchestrator {
|
|
9
|
+
/* istanbul ignore next */
|
|
10
|
+
constructor() {
|
|
11
|
+
super();
|
|
12
|
+
this.register(ListViewsSetActiveAction, this.setActive).register(ListViewsLoadAction, this.load);
|
|
13
|
+
}
|
|
14
|
+
setActive(state, action) {
|
|
15
|
+
return new ListViewsModel(Object.assign({}, state, { active: action.view }));
|
|
16
|
+
}
|
|
17
|
+
load(state, action) {
|
|
18
|
+
return new ListViewsModel(Object.assign({}, state, { views: action.views }));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=views.orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views.orchestrator.js","sourceRoot":"","sources":["../../../../../../../../../../libs/components/list-builder/src/lib/modules/list/state/views/views.orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,qBAAqC;IAC9E,0BAA0B;IAC1B;QACE,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAC9D,mBAAmB,EACnB,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IAEO,SAAS,CACf,KAAqB,EACrB,MAAgC;QAEhC,OAAO,IAAI,cAAc,CACvB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAClD,CAAC;IACJ,CAAC;IAEO,IAAI,CACV,KAAqB,EACrB,MAA2B;QAE3B,OAAO,IAAI,cAAc,CACvB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAClD,CAAC;IACJ,CAAC;CACF","sourcesContent":["import { ListStateOrchestrator } from '../list-state.rxstate';\nimport { ListViewsModel } from './views.model';\nimport { ListViewsLoadAction } from './load.action';\nimport { ListViewsSetActiveAction } from './set-active.action';\n\n/**\n * @internal\n */\nexport class ListViewsOrchestrator extends ListStateOrchestrator<ListViewsModel> {\n /* istanbul ignore next */\n constructor() {\n super();\n\n this.register(ListViewsSetActiveAction, this.setActive).register(\n ListViewsLoadAction,\n this.load\n );\n }\n\n private setActive(\n state: ListViewsModel,\n action: ListViewsSetActiveAction\n ): ListViewsModel {\n return new ListViewsModel(\n Object.assign({}, state, { active: action.view })\n );\n }\n\n private load(\n state: ListViewsModel,\n action: ListViewsLoadAction\n ): ListViewsModel {\n return new ListViewsModel(\n Object.assign({}, state, { views: action.views })\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { BehaviorSubject } from 'rxjs';
|
|
2
|
+
import { map as observableMap } from 'rxjs/operators';
|
|
3
|
+
import { compare, getData, ListItemModel } from '@skyux/list-builder-common';
|
|
4
|
+
import { ListDataProvider } from '../list/list-data.provider';
|
|
5
|
+
import { ListDataResponseModel } from '../list/list-data-response.model';
|
|
6
|
+
import { ListSearchModel } from '../list/state/search/search.model';
|
|
7
|
+
let idIndex = 0;
|
|
8
|
+
export class SkyListInMemoryDataProvider extends ListDataProvider {
|
|
9
|
+
constructor(data, searchFunction) {
|
|
10
|
+
super(data);
|
|
11
|
+
this.items = new BehaviorSubject([]);
|
|
12
|
+
this.searchFunction = searchFunction;
|
|
13
|
+
if (data) {
|
|
14
|
+
data.subscribe((items) => {
|
|
15
|
+
this.items.next(items.map((d) => new ListItemModel(d.id || `sky-list-data-in-memory-provider-item-${++idIndex}`, d)));
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
count() {
|
|
20
|
+
return this.items.pipe(observableMap((items) => items.length));
|
|
21
|
+
}
|
|
22
|
+
get(request) {
|
|
23
|
+
return this.filteredItems(request).pipe(observableMap((result) => {
|
|
24
|
+
if (request.pageNumber && request.pageSize) {
|
|
25
|
+
let itemStart = (request.pageNumber - 1) * request.pageSize;
|
|
26
|
+
let pagedResult = result.slice(itemStart, itemStart + request.pageSize);
|
|
27
|
+
return new ListDataResponseModel({
|
|
28
|
+
count: result.length,
|
|
29
|
+
items: pagedResult,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return new ListDataResponseModel({
|
|
34
|
+
count: result.length,
|
|
35
|
+
items: result,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
filteredItems(request) {
|
|
41
|
+
const showSelectedId = ['show-selected'];
|
|
42
|
+
return this.items.pipe(observableMap((items) => {
|
|
43
|
+
let dataChanged = false;
|
|
44
|
+
let search = request.search;
|
|
45
|
+
let sort = request.sort;
|
|
46
|
+
let filters = request.filters;
|
|
47
|
+
if (this.lastItems === undefined || this.lastItems !== items) {
|
|
48
|
+
dataChanged = true;
|
|
49
|
+
this.lastItems = items;
|
|
50
|
+
}
|
|
51
|
+
let searchChanged = false;
|
|
52
|
+
let filtersChanged = false;
|
|
53
|
+
if (request.isToolbarDisabled) {
|
|
54
|
+
searchChanged = true;
|
|
55
|
+
search = new ListSearchModel();
|
|
56
|
+
filters = filters.filter((f) => showSelectedId.indexOf(f.name) >= 0);
|
|
57
|
+
filtersChanged = true;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
if (this.lastSearch === undefined || this.lastSearch !== search) {
|
|
61
|
+
searchChanged = true;
|
|
62
|
+
}
|
|
63
|
+
if (this.lastFilters === undefined || this.lastFilters !== filters) {
|
|
64
|
+
filtersChanged = true;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
this.lastSearch = search;
|
|
68
|
+
this.lastFilters = filters;
|
|
69
|
+
let result = items;
|
|
70
|
+
// Apply filters.
|
|
71
|
+
if (!dataChanged &&
|
|
72
|
+
!filtersChanged &&
|
|
73
|
+
this.lastFilterResults !== undefined) {
|
|
74
|
+
result = this.lastFilterResults;
|
|
75
|
+
}
|
|
76
|
+
else if (filters && filters.length > 0) {
|
|
77
|
+
result = result.filter((item) => {
|
|
78
|
+
for (let i = 0; i < filters.length; i++) {
|
|
79
|
+
let filter = filters[i];
|
|
80
|
+
if (filter.value === undefined ||
|
|
81
|
+
filter.value === '' ||
|
|
82
|
+
filter.value === false ||
|
|
83
|
+
filter.value === filter.defaultValue) {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (!filter.filterFunction(item, filter.value)) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return true;
|
|
91
|
+
});
|
|
92
|
+
this.lastFilterResults = result;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this.lastFilterResults = undefined;
|
|
96
|
+
}
|
|
97
|
+
// Apply search.
|
|
98
|
+
/* istanbul ignore next */
|
|
99
|
+
if (!dataChanged &&
|
|
100
|
+
!searchChanged &&
|
|
101
|
+
this.lastSearchResults !== undefined &&
|
|
102
|
+
!filtersChanged) {
|
|
103
|
+
result = this.lastSearchResults;
|
|
104
|
+
}
|
|
105
|
+
else if (search &&
|
|
106
|
+
search.searchText !== undefined &&
|
|
107
|
+
search.searchText.length > 0) {
|
|
108
|
+
let searchText = search.searchText.toLowerCase();
|
|
109
|
+
let searchFunctions;
|
|
110
|
+
if (this.searchFunction !== undefined) {
|
|
111
|
+
searchFunctions = [this.searchFunction];
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
searchFunctions = search.functions;
|
|
115
|
+
}
|
|
116
|
+
result = result.filter((item) => {
|
|
117
|
+
let isMatch = false;
|
|
118
|
+
for (let i = 0; i < searchFunctions.length; i++) {
|
|
119
|
+
let searchFunction = searchFunctions[i];
|
|
120
|
+
let searchResult = searchFunction(item.data, searchText);
|
|
121
|
+
if ((typeof searchResult === 'string' &&
|
|
122
|
+
searchResult.indexOf(searchText) !== -1) ||
|
|
123
|
+
searchResult === true) {
|
|
124
|
+
isMatch = true;
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return isMatch;
|
|
129
|
+
});
|
|
130
|
+
this.lastSearchResults = result;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
this.lastSearchResults = undefined;
|
|
134
|
+
}
|
|
135
|
+
// Apply sort.
|
|
136
|
+
if (sort && sort.fieldSelectors.length > 0) {
|
|
137
|
+
result = result
|
|
138
|
+
.slice()
|
|
139
|
+
.sort((item1, item2) => {
|
|
140
|
+
let compareResult = 0;
|
|
141
|
+
for (let i = 0; i < sort.fieldSelectors.length; i++) {
|
|
142
|
+
let selector = sort.fieldSelectors[i];
|
|
143
|
+
let value1 = getData(item1.data, selector.fieldSelector);
|
|
144
|
+
let value2 = getData(item2.data, selector.fieldSelector);
|
|
145
|
+
compareResult = compare(value1, value2);
|
|
146
|
+
if (selector.descending && compareResult !== 0) {
|
|
147
|
+
compareResult *= -1;
|
|
148
|
+
}
|
|
149
|
+
if (compareResult !== 0) {
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return compareResult;
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
return result;
|
|
157
|
+
}));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=list-data-in-memory.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-data-in-memory.provider.js","sourceRoot":"","sources":["../../../../../../../../libs/components/list-builder/src/lib/modules/list-data-provider-in-memory/list-data-in-memory.provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { BehaviorSubject, Observable } from 'rxjs';\n\nimport { map as observableMap } from 'rxjs/operators';\n\nimport { compare, getData, ListItemModel } from '@skyux/list-builder-common';\n\nimport { ListDataProvider } from '../list/list-data.provider';\nimport { ListDataRequestModel } from '../list/list-data-request.model';\nimport { ListDataResponseModel } from '../list/list-data-response.model';\nimport { ListSearchModel } from '../list/state/search/search.model';\nimport { ListFilterModel } from '../list-filters/filter.model';\n\nlet idIndex = 0;\n\nexport class SkyListInMemoryDataProvider extends ListDataProvider {\n public items: BehaviorSubject<Array<ListItemModel>> = new BehaviorSubject<\n Array<ListItemModel>\n >([]);\n\n private lastItems: ListItemModel[];\n private lastSearch: ListSearchModel;\n private lastSearchResults: ListItemModel[];\n private searchFunction: (data: any, searchText: string) => boolean;\n\n private lastFilters: ListFilterModel[];\n private lastFilterResults: ListItemModel[];\n\n constructor(\n data?: Observable<Array<any>>,\n searchFunction?: (data: any, searchText: string) => boolean\n ) {\n super(data);\n\n this.searchFunction = searchFunction;\n\n if (data) {\n data.subscribe((items) => {\n this.items.next(\n items.map(\n (d) =>\n new ListItemModel(\n d.id || `sky-list-data-in-memory-provider-item-${++idIndex}`,\n d\n )\n )\n );\n });\n }\n }\n\n public count(): Observable<number> {\n return this.items.pipe(observableMap((items) => items.length));\n }\n\n public get(request: ListDataRequestModel): Observable<ListDataResponseModel> {\n return this.filteredItems(request).pipe(\n observableMap((result) => {\n if (request.pageNumber && request.pageSize) {\n let itemStart = (request.pageNumber - 1) * request.pageSize;\n let pagedResult = result.slice(\n itemStart,\n itemStart + request.pageSize\n );\n return new ListDataResponseModel({\n count: result.length,\n items: pagedResult,\n });\n } else {\n return new ListDataResponseModel({\n count: result.length,\n items: result,\n });\n }\n })\n );\n }\n\n private filteredItems(\n request: ListDataRequestModel\n ): Observable<Array<ListItemModel>> {\n const showSelectedId = ['show-selected'];\n\n return this.items.pipe(\n observableMap((items) => {\n let dataChanged = false;\n let search = request.search;\n let sort = request.sort;\n let filters: ListFilterModel[] = request.filters;\n\n if (this.lastItems === undefined || this.lastItems !== items) {\n dataChanged = true;\n this.lastItems = items;\n }\n\n let searchChanged = false;\n let filtersChanged = false;\n\n if (request.isToolbarDisabled) {\n searchChanged = true;\n search = new ListSearchModel();\n\n filters = filters.filter((f) => showSelectedId.indexOf(f.name) >= 0);\n filtersChanged = true;\n } else {\n if (this.lastSearch === undefined || this.lastSearch !== search) {\n searchChanged = true;\n }\n\n if (this.lastFilters === undefined || this.lastFilters !== filters) {\n filtersChanged = true;\n }\n }\n\n this.lastSearch = search;\n this.lastFilters = filters;\n\n let result = items;\n\n // Apply filters.\n if (\n !dataChanged &&\n !filtersChanged &&\n this.lastFilterResults !== undefined\n ) {\n result = this.lastFilterResults;\n } else if (filters && filters.length > 0) {\n result = result.filter((item) => {\n for (let i = 0; i < filters.length; i++) {\n let filter = filters[i];\n if (\n filter.value === undefined ||\n filter.value === '' ||\n filter.value === false ||\n filter.value === filter.defaultValue\n ) {\n continue;\n }\n\n if (!filter.filterFunction(item, filter.value)) {\n return false;\n }\n }\n return true;\n });\n\n this.lastFilterResults = result;\n } else {\n this.lastFilterResults = undefined;\n }\n\n // Apply search.\n /* istanbul ignore next */\n if (\n !dataChanged &&\n !searchChanged &&\n this.lastSearchResults !== undefined &&\n !filtersChanged\n ) {\n result = this.lastSearchResults;\n } else if (\n search &&\n search.searchText !== undefined &&\n search.searchText.length > 0\n ) {\n let searchText = search.searchText.toLowerCase();\n let searchFunctions: any[];\n if (this.searchFunction !== undefined) {\n searchFunctions = [this.searchFunction];\n } else {\n searchFunctions = search.functions;\n }\n\n result = result.filter((item) => {\n let isMatch = false;\n\n for (let i = 0; i < searchFunctions.length; i++) {\n let searchFunction = searchFunctions[i];\n let searchResult = searchFunction(item.data, searchText);\n\n if (\n (typeof searchResult === 'string' &&\n searchResult.indexOf(searchText) !== -1) ||\n searchResult === true\n ) {\n isMatch = true;\n break;\n }\n }\n\n return isMatch;\n });\n\n this.lastSearchResults = result;\n } else {\n this.lastSearchResults = undefined;\n }\n\n // Apply sort.\n if (sort && sort.fieldSelectors.length > 0) {\n result = result\n .slice()\n .sort((item1: ListItemModel, item2: ListItemModel) => {\n let compareResult = 0;\n for (let i = 0; i < sort.fieldSelectors.length; i++) {\n let selector = sort.fieldSelectors[i];\n let value1 = getData(item1.data, selector.fieldSelector);\n let value2 = getData(item2.data, selector.fieldSelector);\n\n compareResult = compare(value1, value2);\n\n if (selector.descending && compareResult !== 0) {\n compareResult *= -1;\n }\n\n if (compareResult !== 0) {\n break;\n }\n }\n\n return compareResult;\n });\n }\n return result;\n })\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export class ListFilterModel {
|
|
2
|
+
constructor(data) {
|
|
3
|
+
/**
|
|
4
|
+
* Indicates whether users can dismiss the filter's summary item.
|
|
5
|
+
* @default true
|
|
6
|
+
*/
|
|
7
|
+
this.dismissible = true;
|
|
8
|
+
if (data) {
|
|
9
|
+
this.name = data.name;
|
|
10
|
+
this.label = data.label;
|
|
11
|
+
this.filterFunction = data.filterFunction;
|
|
12
|
+
this.value = data.value;
|
|
13
|
+
this.dismissible = data.dismissible;
|
|
14
|
+
this.defaultValue = data.defaultValue;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=filter.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.model.js","sourceRoot":"","sources":["../../../../../../../../libs/components/list-builder/src/lib/modules/list-filters/filter.model.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,eAAe;IAsC1B,YAAY,IAAU;QAzBtB;;;WAGG;QACI,gBAAW,GAAY,IAAI,CAAC;QAsBjC,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;SACvC;IACH,CAAC;CACF","sourcesContent":["import { ListItemModel } from '@skyux/list-builder-common';\n\nexport class ListFilterModel {\n /**\n * Specifies the name of the filter.\n * @required\n */\n public name: string;\n\n /**\n * Specifies a label for the filter's summary item.\n * The label defaults to the `value` of the filter.\n */\n public label: string;\n\n /**\n * Indicates whether users can dismiss the filter's summary item.\n * @default true\n */\n public dismissible: boolean = true;\n\n /**\n * Specifies the current value of the filter.\n */\n public value: any;\n\n /**\n * Specifies the default value of the filter. When users do not set the\n * default value, the filter does not affect the list.\n */\n public defaultValue: any;\n\n /**\n * Specifies a function to determine whether items are filtered.\n * This property is required when using an in-memory data provider.\n * For information about `ListItemModel`, see the\n * [shared classes for lists](https://developer.blackbaud.com/skyux-list-builder-common/docs/list-builder-common).\n */\n public filterFunction: (item: ListItemModel, filter: any) => boolean;\n\n constructor(data?: any) {\n if (data) {\n this.name = data.name;\n this.label = data.label;\n this.filterFunction = data.filterFunction;\n this.value = data.value;\n this.dismissible = data.dismissible;\n this.defaultValue = data.defaultValue;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Component, TemplateRef, ViewChild, } from '@angular/core';
|
|
2
|
+
import { ListStateDispatcher } from '../list/state/list-state.rxstate';
|
|
3
|
+
import { ListToolbarItemModel } from '../list/state/toolbar/toolbar-item.model';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../list/state/list-state.rxstate";
|
|
6
|
+
/**
|
|
7
|
+
* Contains a filter button for the list toolbar. Place a
|
|
8
|
+
* [`sky-filter-button`](https://developer.blackbaud.com/skyux/components/filter)
|
|
9
|
+
* component inside this component to open a modal with filtering options.
|
|
10
|
+
* To apply filter options, use the
|
|
11
|
+
* [list component's](https://developer.blackbaud.com/skyux/components/list/overview#list-properties)
|
|
12
|
+
* `appliedFilters` property.
|
|
13
|
+
*/
|
|
14
|
+
export class SkyListFilterButtonComponent {
|
|
15
|
+
constructor(dispatcher) {
|
|
16
|
+
this.dispatcher = dispatcher;
|
|
17
|
+
this.filterButtonItemToolbarIndex = 5000;
|
|
18
|
+
}
|
|
19
|
+
ngAfterViewInit() {
|
|
20
|
+
this.dispatcher.toolbarAddItems([
|
|
21
|
+
new ListToolbarItemModel({
|
|
22
|
+
template: this.filterButtonTemplate,
|
|
23
|
+
location: 'left',
|
|
24
|
+
index: this.filterButtonItemToolbarIndex,
|
|
25
|
+
}),
|
|
26
|
+
]);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
SkyListFilterButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyListFilterButtonComponent, deps: [{ token: i1.ListStateDispatcher }], target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
+
SkyListFilterButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyListFilterButtonComponent, selector: "sky-list-filter-button", viewQueries: [{ propertyName: "filterButtonTemplate", first: true, predicate: ["filterButton"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<ng-template #filterButton>\n <ng-content></ng-content>\n</ng-template>\n" });
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyListFilterButtonComponent, decorators: [{
|
|
32
|
+
type: Component,
|
|
33
|
+
args: [{
|
|
34
|
+
selector: 'sky-list-filter-button',
|
|
35
|
+
templateUrl: './list-filter-button.component.html',
|
|
36
|
+
}]
|
|
37
|
+
}], ctorParameters: function () { return [{ type: i1.ListStateDispatcher }]; }, propDecorators: { filterButtonTemplate: [{
|
|
38
|
+
type: ViewChild,
|
|
39
|
+
args: ['filterButton', {
|
|
40
|
+
read: TemplateRef,
|
|
41
|
+
static: true,
|
|
42
|
+
}]
|
|
43
|
+
}] } });
|
|
44
|
+
//# sourceMappingURL=list-filter-button.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-filter-button.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/list-builder/src/lib/modules/list-filters/list-filter-button.component.ts","../../../../../../../../libs/components/list-builder/src/lib/modules/list-filters/list-filter-button.component.html"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,WAAW,EACX,SAAS,GACV,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;;;AAEhF;;;;;;;GAOG;AAKH,MAAM,OAAO,4BAA4B;IASvC,YAAoB,UAA+B;QAA/B,eAAU,GAAV,UAAU,CAAqB;QAF3C,iCAA4B,GAAW,IAAI,CAAC;IAEE,CAAC;IAEhD,eAAe;QACpB,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;YAC9B,IAAI,oBAAoB,CAAC;gBACvB,QAAQ,EAAE,IAAI,CAAC,oBAAoB;gBACnC,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,IAAI,CAAC,4BAA4B;aACzC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;;0HAnBU,4BAA4B;8GAA5B,4BAA4B,+JAE/B,WAAW,2CCzBrB,4EAGA;4FDoBa,4BAA4B;kBAJxC,SAAS;mBAAC;oBACT,QAAQ,EAAE,wBAAwB;oBAClC,WAAW,EAAE,qCAAqC;iBACnD;0GAMS,oBAAoB;sBAJ3B,SAAS;uBAAC,cAAc,EAAE;wBACzB,IAAI,EAAE,WAAW;wBACjB,MAAM,EAAE,IAAI;qBACb","sourcesContent":["import {\n AfterViewInit,\n Component,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\n\nimport { ListStateDispatcher } from '../list/state/list-state.rxstate';\n\nimport { ListToolbarItemModel } from '../list/state/toolbar/toolbar-item.model';\n\n/**\n * Contains a filter button for the list toolbar. Place a\n * [`sky-filter-button`](https://developer.blackbaud.com/skyux/components/filter)\n * component inside this component to open a modal with filtering options.\n * To apply filter options, use the\n * [list component's](https://developer.blackbaud.com/skyux/components/list/overview#list-properties)\n * `appliedFilters` property.\n */\n@Component({\n selector: 'sky-list-filter-button',\n templateUrl: './list-filter-button.component.html',\n})\nexport class SkyListFilterButtonComponent implements AfterViewInit {\n @ViewChild('filterButton', {\n read: TemplateRef,\n static: true,\n })\n private filterButtonTemplate: TemplateRef<any>;\n\n private filterButtonItemToolbarIndex: number = 5000;\n\n constructor(private dispatcher: ListStateDispatcher) {}\n\n public ngAfterViewInit() {\n this.dispatcher.toolbarAddItems([\n new ListToolbarItemModel({\n template: this.filterButtonTemplate,\n location: 'left',\n index: this.filterButtonItemToolbarIndex,\n }),\n ]);\n }\n}\n","<ng-template #filterButton>\n <ng-content></ng-content>\n</ng-template>\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Component, ViewContainerRef, ViewChild, Input, TemplateRef, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export class SkyListFilterInlineItemRendererComponent {
|
|
7
|
+
ngOnInit() {
|
|
8
|
+
/* istanbul ignore else */
|
|
9
|
+
/* sanity check */
|
|
10
|
+
if (this.template !== undefined) {
|
|
11
|
+
this.container.createEmbeddedView(this.template, this);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
SkyListFilterInlineItemRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyListFilterInlineItemRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16
|
+
SkyListFilterInlineItemRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyListFilterInlineItemRendererComponent, selector: "sky-list-filter-inline-item-renderer", inputs: { template: "template", filter: "filter" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: '<ng-template #container></ng-template>', isInline: true });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyListFilterInlineItemRendererComponent, decorators: [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{
|
|
20
|
+
selector: 'sky-list-filter-inline-item-renderer',
|
|
21
|
+
template: '<ng-template #container></ng-template>',
|
|
22
|
+
}]
|
|
23
|
+
}], propDecorators: { template: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], filter: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}], container: [{
|
|
28
|
+
type: ViewChild,
|
|
29
|
+
args: ['container', {
|
|
30
|
+
read: ViewContainerRef,
|
|
31
|
+
static: true,
|
|
32
|
+
}]
|
|
33
|
+
}] } });
|
|
34
|
+
//# sourceMappingURL=list-filter-inline-item-renderer.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-filter-inline-item-renderer.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/list-builder/src/lib/modules/list-filters/list-filter-inline-item-renderer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,KAAK,EACL,WAAW,GAEZ,MAAM,eAAe,CAAC;;AAEvB;;GAEG;AAKH,MAAM,OAAO,wCAAwC;IAY5C,QAAQ;QACb,0BAA0B;QAC1B,kBAAkB;QAClB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SACxD;IACH,CAAC;;sIAlBU,wCAAwC;0HAAxC,wCAAwC,mNAO3C,gBAAgB,2CATd,wCAAwC;4FAEvC,wCAAwC;kBAJpD,SAAS;mBAAC;oBACT,QAAQ,EAAE,sCAAsC;oBAChD,QAAQ,EAAE,wCAAwC;iBACnD;8BAGQ,QAAQ;sBADd,KAAK;gBAGC,MAAM;sBADZ,KAAK;gBAOE,SAAS;sBAJhB,SAAS;uBAAC,WAAW,EAAE;wBACtB,IAAI,EAAE,gBAAgB;wBACtB,MAAM,EAAE,IAAI;qBACb","sourcesContent":["import {\n Component,\n ViewContainerRef,\n ViewChild,\n Input,\n TemplateRef,\n OnInit,\n} from '@angular/core';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-list-filter-inline-item-renderer',\n template: '<ng-template #container></ng-template>',\n})\nexport class SkyListFilterInlineItemRendererComponent implements OnInit {\n @Input()\n public template: TemplateRef<any>;\n @Input()\n public filter: any;\n\n @ViewChild('container', {\n read: ViewContainerRef,\n static: true,\n })\n private container: ViewContainerRef;\n\n public ngOnInit() {\n /* istanbul ignore else */\n /* sanity check */\n if (this.template !== undefined) {\n this.container.createEmbeddedView(this.template, this);\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Component, Input, ContentChildren, TemplateRef, QueryList, EventEmitter, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a filter in the list's inline filter area.
|
|
5
|
+
*/
|
|
6
|
+
export class SkyListFilterInlineItemComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.onChange = new EventEmitter();
|
|
9
|
+
}
|
|
10
|
+
ngOnInit() {
|
|
11
|
+
if (this.name === undefined || this.name.length === 0) {
|
|
12
|
+
throw new Error('Inline filter requires a name.');
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
get template() {
|
|
16
|
+
return this.templates.length > 0
|
|
17
|
+
? this.templates.first
|
|
18
|
+
: this.templateInput;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
SkyListFilterInlineItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyListFilterInlineItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
+
SkyListFilterInlineItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyListFilterInlineItemComponent, selector: "sky-list-filter-inline-item", inputs: { name: "name", value: "value", defaultValue: "defaultValue", filterFunction: ["filter", "filterFunction"], templateInput: ["template", "templateInput"] }, queries: [{ propertyName: "templates", predicate: TemplateRef }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyListFilterInlineItemComponent, decorators: [{
|
|
24
|
+
type: Component,
|
|
25
|
+
args: [{
|
|
26
|
+
selector: 'sky-list-filter-inline-item',
|
|
27
|
+
template: '<ng-content></ng-content>',
|
|
28
|
+
}]
|
|
29
|
+
}], propDecorators: { name: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], value: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}], defaultValue: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}], filterFunction: [{
|
|
36
|
+
type: Input,
|
|
37
|
+
args: ['filter']
|
|
38
|
+
}], templateInput: [{
|
|
39
|
+
type: Input,
|
|
40
|
+
args: ['template']
|
|
41
|
+
}], templates: [{
|
|
42
|
+
type: ContentChildren,
|
|
43
|
+
args: [TemplateRef]
|
|
44
|
+
}] } });
|
|
45
|
+
//# sourceMappingURL=list-filter-inline-item.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-filter-inline-item.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/list-builder/src/lib/modules/list-filters/list-filter-inline-item.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,EACL,eAAe,EACf,WAAW,EACX,SAAS,EAET,YAAY,GACb,MAAM,eAAe,CAAC;;AAIvB;;GAEG;AAKH,MAAM,OAAO,gCAAgC;IAJ7C;QA6CS,aAAQ,GAAsB,IAAI,YAAY,EAAO,CAAC;KAgB9D;IAXQ,QAAQ;QACb,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACrD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SACnD;IACH,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAC9B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK;YACtB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IACzB,CAAC;;8HAxDU,gCAAgC;kHAAhC,gCAAgC,iQA2C1B,WAAW,6BA7ClB,2BAA2B;4FAE1B,gCAAgC;kBAJ5C,SAAS;mBAAC;oBACT,QAAQ,EAAE,6BAA6B;oBACvC,QAAQ,EAAE,2BAA2B;iBACtC;8BAOQ,IAAI;sBADV,KAAK;gBAOC,KAAK;sBADX,KAAK;gBAQC,YAAY;sBADlB,KAAK;gBAWC,cAAc;sBADpB,KAAK;uBAAC,QAAQ;gBAWR,aAAa;sBADnB,KAAK;uBAAC,UAAU;gBAMT,SAAS;sBADhB,eAAe;uBAAC,WAAW","sourcesContent":["import {\n Component,\n Input,\n ContentChildren,\n TemplateRef,\n QueryList,\n OnInit,\n EventEmitter,\n} from '@angular/core';\n\nimport { ListItemModel } from '@skyux/list-builder-common';\n\n/**\n * Creates a filter in the list's inline filter area.\n */\n@Component({\n selector: 'sky-list-filter-inline-item',\n template: '<ng-content></ng-content>',\n})\nexport class SkyListFilterInlineItemComponent implements OnInit {\n /**\n * Specifies the name of the filter.\n * @required\n */\n @Input()\n public name: string;\n\n /**\n * Specifies the current value of the filter.\n */\n @Input()\n public value: any;\n\n /**\n * Specifies the default value of the filter. If the value of the filter\n * is set to the default value, then the filter is not applied.\n */\n @Input()\n public defaultValue: any;\n\n /**\n * Specifies the function to apply to determine whether an item is filtered.\n * This property is required when using an in-memory data provider. For information\n * about `ListItemModel`, see the\n * [shared classes for lists](https://developer.blackbaud.com/skyux-list-builder-common/docs/list-builder-common).\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('filter')\n public filterFunction: (item: ListItemModel, filter: any) => boolean;\n\n /**\n * Specifies the template for the filter. The template can access the `filter`\n * variable that contains the `value` of the filter control, which should be bound to\n * `ngModel`, and the `changed` function, which should be called when the model changes.\n * @required\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('template')\n public templateInput: TemplateRef<any>;\n\n public onChange: EventEmitter<any> = new EventEmitter<any>();\n\n @ContentChildren(TemplateRef)\n private templates: QueryList<TemplateRef<any>>;\n\n public ngOnInit() {\n if (this.name === undefined || this.name.length === 0) {\n throw new Error('Inline filter requires a name.');\n }\n }\n\n public get template(): TemplateRef<any> {\n return this.templates.length > 0\n ? this.templates.first\n : this.templateInput;\n }\n}\n"]}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Component, ContentChildren, QueryList, } from '@angular/core';
|
|
2
|
+
import { take } from 'rxjs/operators';
|
|
3
|
+
import { SkyListFilterInlineItemComponent } from './list-filter-inline-item.component';
|
|
4
|
+
import { ListState } from '../list/state/list-state.state-node';
|
|
5
|
+
import { ListStateDispatcher } from '../list/state/list-state.rxstate';
|
|
6
|
+
import { ListFilterModel } from './filter.model';
|
|
7
|
+
import { ListPagingSetPageNumberAction } from '../list/state/paging/set-page-number.action';
|
|
8
|
+
import { SkyListFilterInlineModel } from './list-filter-inline.model';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../list/state/list-state.rxstate";
|
|
11
|
+
import * as i2 from "../list/state/list-state.state-node";
|
|
12
|
+
import * as i3 from "@skyux/lists";
|
|
13
|
+
import * as i4 from "./list-filter-inline-item-renderer.component";
|
|
14
|
+
import * as i5 from "@angular/common";
|
|
15
|
+
/**
|
|
16
|
+
* Creates an inline filter area for the list. Place each filter
|
|
17
|
+
* in a `sky-list-filter-inline-item` component.
|
|
18
|
+
*/
|
|
19
|
+
export class SkyListFilterInlineComponent {
|
|
20
|
+
constructor(dispatcher, state) {
|
|
21
|
+
this.dispatcher = dispatcher;
|
|
22
|
+
this.state = state;
|
|
23
|
+
this.inlineFilters = [];
|
|
24
|
+
}
|
|
25
|
+
ngAfterContentInit() {
|
|
26
|
+
this.inlineFilters = this.filters.map((filter) => {
|
|
27
|
+
return new SkyListFilterInlineModel({
|
|
28
|
+
name: filter.name,
|
|
29
|
+
filterFunction: filter.filterFunction,
|
|
30
|
+
template: filter.template,
|
|
31
|
+
value: filter.value,
|
|
32
|
+
defaultValue: filter.defaultValue,
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
this.inlineFilters.forEach((filter) => {
|
|
36
|
+
filter.onChange.subscribe((value) => {
|
|
37
|
+
this.applyFilters();
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
this.dispatcher.filtersUpdate(this.getFilterModelFromInline(this.inlineFilters));
|
|
41
|
+
}
|
|
42
|
+
applyFilters() {
|
|
43
|
+
this.state.pipe(take(1)).subscribe((currentState) => {
|
|
44
|
+
if (currentState.paging.pageNumber &&
|
|
45
|
+
currentState.paging.pageNumber !== 1) {
|
|
46
|
+
this.dispatcher.next(new ListPagingSetPageNumberAction(Number(1)));
|
|
47
|
+
}
|
|
48
|
+
this.dispatcher.filtersUpdate(this.getFilterModelFromInline(this.inlineFilters));
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
getFilterModelFromInline(inlineFilters) {
|
|
52
|
+
return inlineFilters.map((filter) => {
|
|
53
|
+
return new ListFilterModel({
|
|
54
|
+
name: filter.name,
|
|
55
|
+
value: filter.value,
|
|
56
|
+
filterFunction: filter.filterFunction,
|
|
57
|
+
defaultValue: filter.defaultValue,
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
SkyListFilterInlineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyListFilterInlineComponent, deps: [{ token: i1.ListStateDispatcher }, { token: i2.ListState }], target: i0.ɵɵFactoryTarget.Component });
|
|
63
|
+
SkyListFilterInlineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyListFilterInlineComponent, selector: "sky-list-filter-inline", queries: [{ propertyName: "filters", predicate: SkyListFilterInlineItemComponent }], ngImport: i0, template: "<ng-content></ng-content>\n\n<sky-filter-inline>\n <sky-filter-inline-item *ngFor=\"let filter of inlineFilters\">\n <sky-list-filter-inline-item-renderer\n [template]=\"filter.template\"\n [filter]=\"filter\"\n >\n </sky-list-filter-inline-item-renderer>\n </sky-filter-inline-item>\n</sky-filter-inline>\n", components: [{ type: i3.λ2, selector: "sky-filter-inline" }, { type: i3.λ3, selector: "sky-filter-inline-item" }, { type: i4.SkyListFilterInlineItemRendererComponent, selector: "sky-list-filter-inline-item-renderer", inputs: ["template", "filter"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyListFilterInlineComponent, decorators: [{
|
|
65
|
+
type: Component,
|
|
66
|
+
args: [{
|
|
67
|
+
selector: 'sky-list-filter-inline',
|
|
68
|
+
templateUrl: './list-filter-inline.component.html',
|
|
69
|
+
}]
|
|
70
|
+
}], ctorParameters: function () { return [{ type: i1.ListStateDispatcher }, { type: i2.ListState }]; }, propDecorators: { filters: [{
|
|
71
|
+
type: ContentChildren,
|
|
72
|
+
args: [SkyListFilterInlineItemComponent]
|
|
73
|
+
}] } });
|
|
74
|
+
//# sourceMappingURL=list-filter-inline.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-filter-inline.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/list-builder/src/lib/modules/list-filters/list-filter-inline.component.ts","../../../../../../../../libs/components/list-builder/src/lib/modules/list-filters/list-filter-inline.component.html"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,eAAe,EACf,SAAS,GAEV,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AAEvF,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAE5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;;;;;;;AAEtE;;;GAGG;AAKH,MAAM,OAAO,4BAA4B;IAMvC,YACU,UAA+B,EAC/B,KAAgB;QADhB,eAAU,GAAV,UAAU,CAAqB;QAC/B,UAAK,GAAL,KAAK,CAAW;QAPnB,kBAAa,GAAoC,EAAE,CAAC;IAQxD,CAAC;IAEG,kBAAkB;QACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/C,OAAO,IAAI,wBAAwB,CAAC;gBAClC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACpC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAU,EAAE,EAAE;gBACvC,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,aAAa,CAC3B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC,CAClD,CAAC;IACJ,CAAC;IAEM,YAAY;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,EAAE;YAClD,IACE,YAAY,CAAC,MAAM,CAAC,UAAU;gBAC9B,YAAY,CAAC,MAAM,CAAC,UAAU,KAAK,CAAC,EACpC;gBACA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,6BAA6B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACpE;YAED,IAAI,CAAC,UAAU,CAAC,aAAa,CAC3B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC,CAClD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,wBAAwB,CAC9B,aAA8C;QAE9C,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAClC,OAAO,IAAI,eAAe,CAAC;gBACzB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;;0HA3DU,4BAA4B;8GAA5B,4BAA4B,sFAGtB,gCAAgC,6BChCnD,0UAWA;4FDkBa,4BAA4B;kBAJxC,SAAS;mBAAC;oBACT,QAAQ,EAAE,wBAAwB;oBAClC,WAAW,EAAE,qCAAqC;iBACnD;kIAKS,OAAO;sBADd,eAAe;uBAAC,gCAAgC","sourcesContent":["import {\n Component,\n ContentChildren,\n QueryList,\n AfterContentInit,\n} from '@angular/core';\n\nimport { take } from 'rxjs/operators';\n\nimport { SkyListFilterInlineItemComponent } from './list-filter-inline-item.component';\n\nimport { ListState } from '../list/state/list-state.state-node';\n\nimport { ListStateDispatcher } from '../list/state/list-state.rxstate';\n\nimport { ListFilterModel } from './filter.model';\n\nimport { ListPagingSetPageNumberAction } from '../list/state/paging/set-page-number.action';\n\nimport { SkyListFilterInlineModel } from './list-filter-inline.model';\n\n/**\n * Creates an inline filter area for the list. Place each filter\n * in a `sky-list-filter-inline-item` component.\n */\n@Component({\n selector: 'sky-list-filter-inline',\n templateUrl: './list-filter-inline.component.html',\n})\nexport class SkyListFilterInlineComponent implements AfterContentInit {\n public inlineFilters: Array<SkyListFilterInlineModel> = [];\n\n @ContentChildren(SkyListFilterInlineItemComponent)\n private filters: QueryList<SkyListFilterInlineItemComponent>;\n\n constructor(\n private dispatcher: ListStateDispatcher,\n private state: ListState\n ) {}\n\n public ngAfterContentInit() {\n this.inlineFilters = this.filters.map((filter) => {\n return new SkyListFilterInlineModel({\n name: filter.name,\n filterFunction: filter.filterFunction,\n template: filter.template,\n value: filter.value,\n defaultValue: filter.defaultValue,\n });\n });\n\n this.inlineFilters.forEach((filter) => {\n filter.onChange.subscribe((value: any) => {\n this.applyFilters();\n });\n });\n\n this.dispatcher.filtersUpdate(\n this.getFilterModelFromInline(this.inlineFilters)\n );\n }\n\n public applyFilters() {\n this.state.pipe(take(1)).subscribe((currentState) => {\n if (\n currentState.paging.pageNumber &&\n currentState.paging.pageNumber !== 1\n ) {\n this.dispatcher.next(new ListPagingSetPageNumberAction(Number(1)));\n }\n\n this.dispatcher.filtersUpdate(\n this.getFilterModelFromInline(this.inlineFilters)\n );\n });\n }\n\n private getFilterModelFromInline(\n inlineFilters: Array<SkyListFilterInlineModel>\n ) {\n return inlineFilters.map((filter) => {\n return new ListFilterModel({\n name: filter.name,\n value: filter.value,\n filterFunction: filter.filterFunction,\n defaultValue: filter.defaultValue,\n });\n });\n }\n}\n","<ng-content></ng-content>\n\n<sky-filter-inline>\n <sky-filter-inline-item *ngFor=\"let filter of inlineFilters\">\n <sky-list-filter-inline-item-renderer\n [template]=\"filter.template\"\n [filter]=\"filter\"\n >\n </sky-list-filter-inline-item-renderer>\n </sky-filter-inline-item>\n</sky-filter-inline>\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
export class SkyListFilterInlineModel {
|
|
6
|
+
constructor(data) {
|
|
7
|
+
this.onChange = new EventEmitter();
|
|
8
|
+
if (data) {
|
|
9
|
+
this.name = data.name;
|
|
10
|
+
this.filterFunction = data.filterFunction;
|
|
11
|
+
this.value = data.value;
|
|
12
|
+
this.template = data.template;
|
|
13
|
+
this.defaultValue = data.defaultValue;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
changed(value) {
|
|
17
|
+
this.value = value;
|
|
18
|
+
this.onChange.emit(value);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=list-filter-inline.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-filter-inline.model.js","sourceRoot":"","sources":["../../../../../../../../libs/components/list-builder/src/lib/modules/list-filters/list-filter-inline.model.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAe,MAAM,eAAe,CAAC;AAE1D;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAQnC,YAAY,IAAU;QAHf,aAAQ,GAAsB,IAAI,YAAY,EAAO,CAAC;QAI3D,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;SACvC;IACH,CAAC;IAEM,OAAO,CAAC,KAAU;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;CACF","sourcesContent":["import { ListItemModel } from '@skyux/list-builder-common';\n\nimport { EventEmitter, TemplateRef } from '@angular/core';\n\n/**\n * @internal\n */\nexport class SkyListFilterInlineModel {\n public name: string;\n public value: any;\n public defaultValue: any;\n public filterFunction: (item: ListItemModel, filter: any) => boolean;\n public onChange: EventEmitter<any> = new EventEmitter<any>();\n public template: TemplateRef<any>;\n\n constructor(data?: any) {\n if (data) {\n this.name = data.name;\n this.filterFunction = data.filterFunction;\n this.value = data.value;\n this.template = data.template;\n this.defaultValue = data.defaultValue;\n }\n }\n\n public changed(value: any) {\n this.value = value;\n this.onChange.emit(value);\n }\n}\n"]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Component, EventEmitter, Output, } from '@angular/core';
|
|
2
|
+
import { map as observableMap, take } from 'rxjs/operators';
|
|
3
|
+
import { ListState } from '../list/state/list-state.state-node';
|
|
4
|
+
import { ListStateDispatcher } from '../list/state/list-state.rxstate';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../list/state/list-state.state-node";
|
|
7
|
+
import * as i2 from "../list/state/list-state.rxstate";
|
|
8
|
+
import * as i3 from "@skyux/lists";
|
|
9
|
+
import * as i4 from "@angular/common";
|
|
10
|
+
/**
|
|
11
|
+
* Creates a filter summary based on the
|
|
12
|
+
* [list component's](https://developer.blackbaud.com/skyux/components/list/overview#list-properties)
|
|
13
|
+
* `appliedFilters` property. Place this component within the
|
|
14
|
+
* [`sky-list-toolbar`](https://developer.blackbaud.com/skyux/components/list/toolbar) component.
|
|
15
|
+
*/
|
|
16
|
+
export class SkyListFilterSummaryComponent {
|
|
17
|
+
constructor(state, dispatcher) {
|
|
18
|
+
this.state = state;
|
|
19
|
+
this.dispatcher = dispatcher;
|
|
20
|
+
/**
|
|
21
|
+
* Emits a `ListFilterModel` when users select a summary item. A common use case is
|
|
22
|
+
* to open a filter modal when this event is received.
|
|
23
|
+
*/
|
|
24
|
+
this.summaryItemClick = new EventEmitter();
|
|
25
|
+
}
|
|
26
|
+
ngAfterContentInit() {
|
|
27
|
+
// The setTimeout here is to ensure we avoid any ExpressionChangedAfterItHasBeenCheckedError issues.
|
|
28
|
+
setTimeout(() => {
|
|
29
|
+
this.appliedFilters = this.state.pipe(observableMap((state) => {
|
|
30
|
+
return state.filters.filter((filter) => {
|
|
31
|
+
return (filter.value !== '' &&
|
|
32
|
+
filter.value !== undefined &&
|
|
33
|
+
filter.value !== false &&
|
|
34
|
+
filter.value !== filter.defaultValue);
|
|
35
|
+
});
|
|
36
|
+
}));
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
filterSummaryItemDismiss(index) {
|
|
40
|
+
this.appliedFilters.pipe(take(1)).subscribe((filters) => {
|
|
41
|
+
filters.splice(index, 1);
|
|
42
|
+
this.dispatcher.filtersUpdate(filters.slice());
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
filterSummaryItemClick(item) {
|
|
46
|
+
this.summaryItemClick.emit(item);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
SkyListFilterSummaryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyListFilterSummaryComponent, deps: [{ token: i1.ListState }, { token: i2.ListStateDispatcher }], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
+
SkyListFilterSummaryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyListFilterSummaryComponent, selector: "sky-list-filter-summary", outputs: { summaryItemClick: "summaryItemClick" }, ngImport: i0, template: "<sky-filter-summary>\n <sky-filter-summary-item\n *ngFor=\"let item of appliedFilters | async; let i = index\"\n (dismiss)=\"filterSummaryItemDismiss(i)\"\n (itemClick)=\"filterSummaryItemClick(item)\"\n [dismissible]=\"item.dismissible\"\n >\n {{ item.label || item.value }}\n </sky-filter-summary-item>\n</sky-filter-summary>\n", components: [{ type: i3.λ5, selector: "sky-filter-summary" }, { type: i3.λ4, selector: "sky-filter-summary-item", inputs: ["dismissible"], outputs: ["dismiss", "itemClick"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i4.AsyncPipe } });
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyListFilterSummaryComponent, decorators: [{
|
|
52
|
+
type: Component,
|
|
53
|
+
args: [{
|
|
54
|
+
selector: 'sky-list-filter-summary',
|
|
55
|
+
templateUrl: './list-filter-summary.component.html',
|
|
56
|
+
}]
|
|
57
|
+
}], ctorParameters: function () { return [{ type: i1.ListState }, { type: i2.ListStateDispatcher }]; }, propDecorators: { summaryItemClick: [{
|
|
58
|
+
type: Output
|
|
59
|
+
}] } });
|
|
60
|
+
//# sourceMappingURL=list-filter-summary.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-filter-summary.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/list-builder/src/lib/modules/list-filters/list-filter-summary.component.ts","../../../../../../../../libs/components/list-builder/src/lib/modules/list-filters/list-filter-summary.component.html"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EACT,YAAY,EACZ,MAAM,GACP,MAAM,eAAe,CAAC;AAIvB,OAAO,EAAE,GAAG,IAAI,aAAa,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;;;;;;AAIvE;;;;;GAKG;AAKH,MAAM,OAAO,6BAA6B;IAUxC,YACU,KAAgB,EAChB,UAA+B;QAD/B,UAAK,GAAL,KAAK,CAAW;QAChB,eAAU,GAAV,UAAU,CAAqB;QAXzC;;;WAGG;QAEI,qBAAgB,GAAG,IAAI,YAAY,EAAmB,CAAC;IAO3D,CAAC;IAEG,kBAAkB;QACvB,oGAAoG;QACpG,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CACnC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtB,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;oBACrC,OAAO,CACL,MAAM,CAAC,KAAK,KAAK,EAAE;wBACnB,MAAM,CAAC,KAAK,KAAK,SAAS;wBAC1B,MAAM,CAAC,KAAK,KAAK,KAAK;wBACtB,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,YAAY,CACrC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,wBAAwB,CAAC,KAAa;QAC3C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;YACtD,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,sBAAsB,CAAC,IAAqB;QACjD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;;2HA1CU,6BAA6B;+GAA7B,6BAA6B,kHC3B1C,6VAUA;4FDiBa,6BAA6B;kBAJzC,SAAS;mBAAC;oBACT,QAAQ,EAAE,yBAAyB;oBACnC,WAAW,EAAE,sCAAsC;iBACpD;kIAOQ,gBAAgB;sBADtB,MAAM","sourcesContent":["import {\n AfterContentInit,\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { map as observableMap, take } from 'rxjs/operators';\n\nimport { ListState } from '../list/state/list-state.state-node';\n\nimport { ListStateDispatcher } from '../list/state/list-state.rxstate';\n\nimport { ListFilterModel } from './filter.model';\n\n/**\n * Creates a filter summary based on the\n * [list component's](https://developer.blackbaud.com/skyux/components/list/overview#list-properties)\n * `appliedFilters` property. Place this component within the\n * [`sky-list-toolbar`](https://developer.blackbaud.com/skyux/components/list/toolbar) component.\n */\n@Component({\n selector: 'sky-list-filter-summary',\n templateUrl: './list-filter-summary.component.html',\n})\nexport class SkyListFilterSummaryComponent implements AfterContentInit {\n /**\n * Emits a `ListFilterModel` when users select a summary item. A common use case is\n * to open a filter modal when this event is received.\n */\n @Output()\n public summaryItemClick = new EventEmitter<ListFilterModel>();\n\n public appliedFilters: Observable<Array<ListFilterModel>>;\n\n constructor(\n private state: ListState,\n private dispatcher: ListStateDispatcher\n ) {}\n\n public ngAfterContentInit() {\n // The setTimeout here is to ensure we avoid any ExpressionChangedAfterItHasBeenCheckedError issues.\n setTimeout(() => {\n this.appliedFilters = this.state.pipe(\n observableMap((state) => {\n return state.filters.filter((filter) => {\n return (\n filter.value !== '' &&\n filter.value !== undefined &&\n filter.value !== false &&\n filter.value !== filter.defaultValue\n );\n });\n })\n );\n });\n }\n\n public filterSummaryItemDismiss(index: number) {\n this.appliedFilters.pipe(take(1)).subscribe((filters) => {\n filters.splice(index, 1);\n this.dispatcher.filtersUpdate(filters.slice());\n });\n }\n\n public filterSummaryItemClick(item: ListFilterModel) {\n this.summaryItemClick.emit(item);\n }\n}\n","<sky-filter-summary>\n <sky-filter-summary-item\n *ngFor=\"let item of appliedFilters | async; let i = index\"\n (dismiss)=\"filterSummaryItemDismiss(i)\"\n (itemClick)=\"filterSummaryItemClick(item)\"\n [dismissible]=\"item.dismissible\"\n >\n {{ item.label || item.value }}\n </sky-filter-summary-item>\n</sky-filter-summary>\n"]}
|