@cute-widgets/base 20.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -0
- package/LICENSE.md +191 -0
- package/README.md +190 -0
- package/abstract/index.d.ts +327 -0
- package/alert/index.d.ts +68 -0
- package/autocomplete/index.d.ts +442 -0
- package/badge/index.d.ts +26 -0
- package/bottom-sheet/index.d.ts +231 -0
- package/button/index.d.ts +182 -0
- package/button-toggle/index.d.ts +225 -0
- package/card/index.d.ts +163 -0
- package/checkbox/index.d.ts +174 -0
- package/chips/index.d.ts +963 -0
- package/collapse/index.d.ts +97 -0
- package/core/animation/index.d.ts +43 -0
- package/core/datetime/index.d.ts +404 -0
- package/core/directives/index.d.ts +168 -0
- package/core/error/index.d.ts +74 -0
- package/core/index.d.ts +1039 -0
- package/core/interfaces/index.d.ts +114 -0
- package/core/layout/index.d.ts +53 -0
- package/core/line/index.d.ts +37 -0
- package/core/nav/index.d.ts +321 -0
- package/core/observers/index.d.ts +124 -0
- package/core/option/index.d.ts +185 -0
- package/core/pipes/index.d.ts +53 -0
- package/core/ripple/index.d.ts +66 -0
- package/core/testing/index.d.ts +154 -0
- package/core/theming/index.d.ts +118 -0
- package/core/types/index.d.ts +53 -0
- package/core/utils/index.d.ts +129 -0
- package/cute-widgets-base-20.0.1.tgz +0 -0
- package/datepicker/index.d.ts +1817 -0
- package/dialog/index.d.ts +484 -0
- package/divider/index.d.ts +24 -0
- package/expansion/README.md +8 -0
- package/expansion/index.d.ts +308 -0
- package/fesm2022/cute-widgets-base-abstract.mjs +547 -0
- package/fesm2022/cute-widgets-base-abstract.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-alert.mjs +198 -0
- package/fesm2022/cute-widgets-base-alert.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-autocomplete.mjs +1217 -0
- package/fesm2022/cute-widgets-base-autocomplete.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-badge.mjs +75 -0
- package/fesm2022/cute-widgets-base-badge.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-bottom-sheet.mjs +416 -0
- package/fesm2022/cute-widgets-base-bottom-sheet.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-button-toggle.mjs +640 -0
- package/fesm2022/cute-widgets-base-button-toggle.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-button.mjs +546 -0
- package/fesm2022/cute-widgets-base-button.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-card.mjs +471 -0
- package/fesm2022/cute-widgets-base-card.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-checkbox.mjs +390 -0
- package/fesm2022/cute-widgets-base-checkbox.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-chips.mjs +2360 -0
- package/fesm2022/cute-widgets-base-chips.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-collapse.mjs +259 -0
- package/fesm2022/cute-widgets-base-collapse.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-animation.mjs +53 -0
- package/fesm2022/cute-widgets-base-core-animation.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-datetime.mjs +568 -0
- package/fesm2022/cute-widgets-base-core-datetime.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-directives.mjs +404 -0
- package/fesm2022/cute-widgets-base-core-directives.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-error.mjs +105 -0
- package/fesm2022/cute-widgets-base-core-error.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-interfaces.mjs +22 -0
- package/fesm2022/cute-widgets-base-core-interfaces.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-layout.mjs +74 -0
- package/fesm2022/cute-widgets-base-core-layout.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-line.mjs +87 -0
- package/fesm2022/cute-widgets-base-core-line.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-nav.mjs +863 -0
- package/fesm2022/cute-widgets-base-core-nav.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-observers.mjs +304 -0
- package/fesm2022/cute-widgets-base-core-observers.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-option.mjs +373 -0
- package/fesm2022/cute-widgets-base-core-option.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-pipes.mjs +97 -0
- package/fesm2022/cute-widgets-base-core-pipes.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-ripple.mjs +172 -0
- package/fesm2022/cute-widgets-base-core-ripple.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-testing.mjs +210 -0
- package/fesm2022/cute-widgets-base-core-testing.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-theming.mjs +314 -0
- package/fesm2022/cute-widgets-base-core-theming.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-types.mjs +22 -0
- package/fesm2022/cute-widgets-base-core-types.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core-utils.mjs +257 -0
- package/fesm2022/cute-widgets-base-core-utils.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-core.mjs +1600 -0
- package/fesm2022/cute-widgets-base-core.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-datepicker.mjs +4827 -0
- package/fesm2022/cute-widgets-base-datepicker.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-dialog.mjs +1046 -0
- package/fesm2022/cute-widgets-base-dialog.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-divider.mjs +86 -0
- package/fesm2022/cute-widgets-base-divider.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-expansion.mjs +623 -0
- package/fesm2022/cute-widgets-base-expansion.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-form-field.mjs +969 -0
- package/fesm2022/cute-widgets-base-form-field.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-grid-list.mjs +715 -0
- package/fesm2022/cute-widgets-base-grid-list.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-icon.mjs +1105 -0
- package/fesm2022/cute-widgets-base-icon.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-input.mjs +726 -0
- package/fesm2022/cute-widgets-base-input.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-layout-container.mjs +95 -0
- package/fesm2022/cute-widgets-base-layout-container.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-layout-stack.mjs +166 -0
- package/fesm2022/cute-widgets-base-layout-stack.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-layout.mjs +250 -0
- package/fesm2022/cute-widgets-base-layout.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-list.mjs +1557 -0
- package/fesm2022/cute-widgets-base-list.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-menu.mjs +1283 -0
- package/fesm2022/cute-widgets-base-menu.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-navbar.mjs +359 -0
- package/fesm2022/cute-widgets-base-navbar.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-paginator.mjs +485 -0
- package/fesm2022/cute-widgets-base-paginator.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-progress.mjs +321 -0
- package/fesm2022/cute-widgets-base-progress.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-radio.mjs +637 -0
- package/fesm2022/cute-widgets-base-radio.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-select.mjs +1208 -0
- package/fesm2022/cute-widgets-base-select.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-sidenav.mjs +1095 -0
- package/fesm2022/cute-widgets-base-sidenav.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-slider.mjs +99 -0
- package/fesm2022/cute-widgets-base-slider.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-snack-bar.mjs +897 -0
- package/fesm2022/cute-widgets-base-snack-bar.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-sort.mjs +639 -0
- package/fesm2022/cute-widgets-base-sort.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-spinner.mjs +154 -0
- package/fesm2022/cute-widgets-base-spinner.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-stepper.mjs +673 -0
- package/fesm2022/cute-widgets-base-stepper.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-table.mjs +1023 -0
- package/fesm2022/cute-widgets-base-table.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-tabs.mjs +729 -0
- package/fesm2022/cute-widgets-base-tabs.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-timepicker.mjs +965 -0
- package/fesm2022/cute-widgets-base-timepicker.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-toolbar.mjs +120 -0
- package/fesm2022/cute-widgets-base-toolbar.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-tooltip.mjs +947 -0
- package/fesm2022/cute-widgets-base-tooltip.mjs.map +1 -0
- package/fesm2022/cute-widgets-base-tree.mjs +598 -0
- package/fesm2022/cute-widgets-base-tree.mjs.map +1 -0
- package/fesm2022/cute-widgets-base.mjs +68 -0
- package/fesm2022/cute-widgets-base.mjs.map +1 -0
- package/form-field/index.d.ts +401 -0
- package/grid-list/index.d.ts +361 -0
- package/icon/index.d.ts +477 -0
- package/index.d.ts +3 -0
- package/input/index.d.ts +256 -0
- package/layout/container/index.d.ts +31 -0
- package/layout/index.d.ts +78 -0
- package/layout/stack/index.d.ts +52 -0
- package/list/index.d.ts +659 -0
- package/menu/index.d.ts +497 -0
- package/navbar/index.d.ts +91 -0
- package/package.json +279 -0
- package/paginator/index.d.ts +216 -0
- package/progress/index.d.ts +130 -0
- package/radio/index.d.ts +259 -0
- package/select/index.d.ts +426 -0
- package/sidenav/index.d.ts +369 -0
- package/slider/index.d.ts +48 -0
- package/snack-bar/index.d.ts +374 -0
- package/sort/index.d.ts +334 -0
- package/spinner/index.d.ts +70 -0
- package/stepper/index.d.ts +295 -0
- package/table/index.d.ts +395 -0
- package/tabs/index.d.ts +307 -0
- package/timepicker/index.d.ts +350 -0
- package/toolbar/index.d.ts +36 -0
- package/tooltip/index.d.ts +299 -0
- package/tree/index.d.ts +314 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cute-widgets-base-paginator.mjs","sources":["../../../../projects/cute-widgets/base/paginator/src/paginator-intl.service.ts","../../../../projects/cute-widgets/base/paginator/src/paginator.component.ts","../../../../projects/cute-widgets/base/paginator/src/paginator.component.html","../../../../projects/cute-widgets/base/paginator/src/paginator.module.ts","../../../../projects/cute-widgets/base/paginator/cute-widgets-base-paginator.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Injectable} from '@angular/core';\r\nimport {Subject} from 'rxjs';\r\n\r\n/**\r\n * To modify the labels and text displayed, create a new instance of CutePaginatorIntl and\r\n * include it in a custom provider\r\n */\r\n@Injectable({providedIn: 'root'})\r\nexport class CutePaginatorIntl {\r\n /**\r\n * Stream to emit from when labels are changed. Use this to notify components when the labels have\r\n * changed after initialization.\r\n */\r\n readonly changes: Subject<void> = new Subject<void>();\r\n\r\n /** A label for the page size selector. */\r\n itemsPerPageLabel: string = 'Items per page:';\r\n\r\n /** A label for the button that increments the current page. */\r\n nextPageLabel: string = 'Next';\r\n\r\n /** A hint for the button that increments the current page. */\r\n nextPageLabelHint: string = 'Next page';\r\n\r\n /** A label for the button that decrements the current page. */\r\n previousPageLabel: string = 'Previous';\r\n\r\n /** A hint for the button that decrements the current page. */\r\n previousPageLabelHint: string = 'Previous page';\r\n\r\n /** A label for the button that moves to the first page. */\r\n firstPageLabel: string = 'First';\r\n\r\n /** A hint for the button that moves to the first page. */\r\n firstPageLabelHint: string = 'First page';\r\n\r\n /** A label for the button that moves to the last page. */\r\n lastPageLabel: string = 'Last';\r\n\r\n /** A hint for the button that moves to the last page. */\r\n lastPageLabelHint: string = 'Last page';\r\n\r\n /** A label for the range of items within the current page and the length of the whole list. */\r\n getRangeLabel: (page: number, pageSize: number, length: number) => string = (\r\n page: number,\r\n pageSize: number,\r\n length: number,\r\n ) => {\r\n\r\n let range = \"0\";\r\n\r\n if (length != 0 && pageSize != 0) {\r\n length = Math.max(length, 0);\r\n\r\n const startIndex = page * pageSize;\r\n // If the start index exceeds the list length, do not try and fix the end index to the end.\r\n const endIndex =\r\n startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\r\n\r\n range = `${startIndex + 1} – ${endIndex}`;\r\n }\r\n\r\n return `${range} of ${length}`;\r\n };\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n InjectionToken,\r\n Input,\r\n Optional,\r\n Output,\r\n ViewEncapsulation,\r\n booleanAttribute,\r\n numberAttribute, SimpleChanges, AfterViewChecked,\r\n} from '@angular/core';\r\nimport {CuteFormField, CuteLabel} from '@cute-widgets/base/form-field';\r\nimport {CuteSelect} from '@cute-widgets/base/select';\r\nimport {CuteTooltip} from '@cute-widgets/base/tooltip';\r\nimport {Subscription} from 'rxjs';\r\nimport {CutePaginatorIntl} from './paginator-intl.service';\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {RelativeSize} from \"@cute-widgets/base/core\";\r\nimport {CuteOption} from \"@cute-widgets/base/core/option\";\r\n\r\n/** The default page size if there is no page size and there are no provided page size options. */\r\nconst DEFAULT_PAGE_SIZE = 50;\r\n/** Maximum visible page indexes */\r\nconst MAX_VISIBLE_PAGES: number = 5;\r\n\r\n/** Object that can used to configure the underlying `CuteSelect` inside a `CutePaginator`. */\r\nexport interface CutePaginatorSelectConfig {\r\n /** Whether to center the active option over the trigger. */\r\n disableOptionCentering?: boolean;\r\n\r\n /** Classes to be passed to the select panel. */\r\n panelClass?: string | string[];\r\n}\r\n\r\n/**\r\n * Change an event object emitted when the user selects a\r\n * different page size or navigates to another page.\r\n */\r\nexport interface PageEvent {\r\n /** The current page index. */\r\n pageIndex: number;\r\n\r\n /** Index of the page that was selected previously. */\r\n previousPageIndex: number;\r\n\r\n /** The current page size. */\r\n pageSize: number;\r\n\r\n /** The current total number of items being paged. */\r\n length: number;\r\n}\r\n\r\n/** Object that can be used to configure the default options for the paginator module. */\r\nexport interface CutePaginatorDefaultOptions {\r\n /** Number of items to display on a page. By default, set to 50. */\r\n pageSize?: number;\r\n\r\n /** The set of provided page size options to display to the user. */\r\n pageSizeOptions?: number[];\r\n\r\n /** Whether to hide the page size selection UI from the user. */\r\n hidePageSize?: boolean;\r\n\r\n /** Whether to show the first/last buttons UI to the user. */\r\n showFirstLastButtons?: boolean;\r\n\r\n /** Whether to change the previous/next buttons UI with a text labels */\r\n showPrevNextLabels?: boolean;\r\n\r\n /** Whether to hide all internal borders in the paginator */\r\n hideBorders?: boolean;\r\n\r\n /** The default form-field appearance to apply to the page size options' selector. */\r\n //formFieldAppearance?: CuteFormFieldAppearance;\r\n}\r\n\r\n/** Injection token that can be used to provide the default options for the paginator module. */\r\nexport const CUTE_PAGINATOR_DEFAULT_OPTIONS = new InjectionToken<CutePaginatorDefaultOptions>(\r\n 'CUTE_PAGINATOR_DEFAULT_OPTIONS',\r\n);\r\n\r\nlet nextUniqueId = 0;\r\n\r\n/**\r\n * Component to provide navigation between paged information. Displays the size of the current\r\n * page, user-selectable options to change that size, what items are being shown, and\r\n * navigational button to go to the previous or next page.\r\n */\r\n@Component({\r\n selector: 'cute-paginator',\r\n exportAs: 'cutePaginator',\r\n templateUrl: './paginator.component.html',\r\n styleUrls: ['./paginator.component.scss'],\r\n host: {\r\n 'class': 'cute-paginator',\r\n '[class.pe-none]': 'disabled',\r\n '[class.opacity-75]': 'disabled',\r\n '[class]': 'alignment ? \"justify-content-\"+alignment : undefined',\r\n 'tabindex': '-1',\r\n 'role': 'group',\r\n },\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [CuteFormField, CuteSelect, CuteTooltip, CuteOption, CuteLabel]\r\n})\r\nexport class CutePaginator extends CuteFocusableControl implements AfterViewChecked\r\n{\r\n private _intlChanges: Subscription;\r\n private _firstVisiblePageIndex: number = 0;\r\n private _lastVisiblePageIndex: number = NaN;\r\n\r\n /** If set, styles the \"page size\" form field with the designated style. */\r\n //_formFieldAppearance?: CuteFormFieldAppearance;\r\n\r\n /** ID for the DOM node containing the pagination's items per-page label. */\r\n protected readonly _pageSizeLabelId = `cute-paginator-page-size-label-${nextUniqueId++}`;\r\n protected hideActive: boolean = false;\r\n\r\n /** The zero-based page index of the displayed list of items. Defaulted to 0. */\r\n @Input({transform: numberAttribute})\r\n get pageIndex(): number { return this._pageIndex; }\r\n set pageIndex(value: number) {\r\n const oldIndex = this._pageIndex;\r\n if (oldIndex != value) {\r\n this._pageIndex = Math.max(value || 0, 0);\r\n this._updateFirstLastVisibleIndexes(this._pageIndex, oldIndex);\r\n this.markForCheck();\r\n }\r\n }\r\n private _pageIndex = 0;\r\n\r\n /** The total number of items that are being paginated. Defaulted to 0. */\r\n @Input({transform: numberAttribute})\r\n get length(): number { return this._length; }\r\n set length(value: number) {\r\n this._length = value || 0;\r\n this.markForCheck();\r\n }\r\n private _length = 0;\r\n\r\n /** Number of items to display on a page. By default, set to 50. */\r\n @Input({transform: numberAttribute})\r\n get pageSize(): number { return this._pageSize; }\r\n set pageSize(value: number) {\r\n this._pageSize = Math.max(value || 0, 0);\r\n this._updateDisplayedPageSizeOptions();\r\n }\r\n private _pageSize: number = 0;\r\n\r\n /** The set of provided page size options to display to the user. */\r\n @Input()\r\n get pageSizeOptions(): number[] { return this._pageSizeOptions; }\r\n set pageSizeOptions(value: number[] | readonly number[]) {\r\n this._pageSizeOptions = (value || ([] as number[])).map(p => numberAttribute(p, 0));\r\n this._updateDisplayedPageSizeOptions();\r\n }\r\n private _pageSizeOptions: number[] = [];\r\n\r\n /** Whether to hide the page size selection UI from the user. */\r\n @Input({transform: booleanAttribute})\r\n hidePageSize: boolean = false;\r\n\r\n /** Whether to show the first/last buttons UI to the user. */\r\n @Input({transform: booleanAttribute})\r\n showFirstLastButtons: boolean = false;\r\n\r\n /** Whether to change the previous/next buttons UI with a text labels */\r\n @Input({transform: booleanAttribute})\r\n showPrevNextLabels: boolean = false;\r\n\r\n /** Whether to hide all internal borders in the paginator */\r\n @Input({transform: booleanAttribute})\r\n hideBorders: boolean = false;\r\n\r\n /** Style of the pagination's middle section. Note that previous/next buttons are always shown. */\r\n @Input()\r\n middleSectionStyle: 'pages'|'5-pages'|'range'|'none' = 'range';\r\n\r\n /** Changes the alignment of the pagination sections in the parent container */\r\n @Input()\r\n alignment: 'start'|'end'|'center'|'between' = \"between\";\r\n\r\n /** Changes the pagination's size to smaller or larger */\r\n @Input() magnitude: RelativeSize | undefined;\r\n\r\n /** Used to configure the underlying `CuteSelect` inside the paginator. */\r\n @Input() selectConfig: CutePaginatorSelectConfig = {};\r\n\r\n /** Event emitted when the paginator changes the page size or page index. */\r\n @Output() readonly page: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\r\n\r\n /** Displayed a set of page size options. Will be sorted and include the current page size. */\r\n protected _displayedPageSizeOptions: number[] = [];\r\n\r\n constructor(\r\n public _intl: CutePaginatorIntl,\r\n @Optional() @Inject(CUTE_PAGINATOR_DEFAULT_OPTIONS) defaults?: CutePaginatorDefaultOptions,\r\n ) {\r\n super();\r\n this._intlChanges = _intl.changes.subscribe(() => this.markForCheck());\r\n\r\n if (defaults) {\r\n const {\r\n pageSize,\r\n pageSizeOptions,\r\n hidePageSize,\r\n showFirstLastButtons,\r\n showPrevNextLabels,\r\n hideBorders,\r\n } = defaults;\r\n\r\n if (pageSize != null) { this._pageSize = pageSize; }\r\n if (pageSizeOptions != null) { this._pageSizeOptions = pageSizeOptions; }\r\n if (hidePageSize != null) { this.hidePageSize = hidePageSize; }\r\n if (showFirstLastButtons != null) { this.showFirstLastButtons = showFirstLastButtons; }\r\n if (showPrevNextLabels != null) { this.showPrevNextLabels = showPrevNextLabels; }\r\n if (hideBorders != null) { this.hideBorders = hideBorders; }\r\n }\r\n\r\n //this._formFieldAppearance = defaults?.formFieldAppearance || 'outline';\r\n }\r\n\r\n protected override generateId(): string {\r\n return `cute-paginator-${nextUniqueId++}`;\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n this._updateDisplayedPageSizeOptions();\r\n }\r\n\r\n override ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n\r\n this._updateFirstLastVisibleIndexes(this.pageIndex, this.pageIndex);\r\n }\r\n\r\n ngAfterViewChecked() {\r\n this.hideActive = false;\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._intlChanges.unsubscribe();\r\n }\r\n\r\n protected onMouseDown(event: MouseEvent): void {\r\n if (this.middleSectionStyle==\"5-pages\") {\r\n this.hideActive = true;\r\n this._changeDetectorRef.detectChanges();\r\n }\r\n }\r\n\r\n /** Whether the specified index is the `active` page of the paginator */\r\n protected isActivePage(index: number): boolean {\r\n return index == this.pageIndex;\r\n }\r\n\r\n private _updateFirstLastVisibleIndexes(newIndex: number, oldIndex: number): void {\r\n\r\n if (this.middleSectionStyle != \"5-pages\") {\r\n return;\r\n }\r\n\r\n const numPages = this.getNumberOfPages();\r\n if (numPages > 0 && (newIndex >= 0 && newIndex < numPages)) {\r\n\r\n const numVisiblePages = Math.min(numPages, MAX_VISIBLE_PAGES);\r\n const middleIndex = this._firstVisiblePageIndex + Math.ceil(numVisiblePages/2) - 1;\r\n if (newIndex <= middleIndex && numPages <= numVisiblePages) {\r\n this._firstVisiblePageIndex = 0;\r\n this._lastVisiblePageIndex = numVisiblePages - 1;\r\n } else if (newIndex == (numPages - 1)) {\r\n this._firstVisiblePageIndex = newIndex - numVisiblePages + 1;\r\n this._lastVisiblePageIndex = newIndex;\r\n } else if (newIndex > middleIndex) {\r\n // go forward\r\n this._lastVisiblePageIndex += newIndex - middleIndex;\r\n this._lastVisiblePageIndex = Math.min(this._lastVisiblePageIndex, numPages - 1);\r\n this._firstVisiblePageIndex = this._lastVisiblePageIndex - numVisiblePages + 1;\r\n this._firstVisiblePageIndex = Math.max(this._firstVisiblePageIndex, 0);\r\n } else if (newIndex < middleIndex) {\r\n // go backward\r\n this._firstVisiblePageIndex -= middleIndex - newIndex;\r\n this._firstVisiblePageIndex = Math.max(this._firstVisiblePageIndex, 0);\r\n this._lastVisiblePageIndex = this._firstVisiblePageIndex + numVisiblePages - 1;\r\n }\r\n }\r\n }\r\n\r\n /** Advances to the next page if it exists. */\r\n nextPage(): void {\r\n if (!this.hasNextPage()) {\r\n return;\r\n }\r\n\r\n const previousPageIndex = this.pageIndex;\r\n this.pageIndex = this.pageIndex + 1;\r\n\r\n this._emitPageEvent(previousPageIndex);\r\n }\r\n\r\n /** Move back to the previous page if it exists. */\r\n previousPage(): void {\r\n if (!this.hasPreviousPage()) {\r\n return;\r\n }\r\n\r\n const previousPageIndex = this.pageIndex;\r\n this.pageIndex = this.pageIndex - 1;\r\n\r\n this._emitPageEvent(previousPageIndex);\r\n }\r\n\r\n /** Move to the first page if not already there. */\r\n firstPage(): void {\r\n // hasPreviousPage being false implies at the start\r\n if (!this.hasPreviousPage()) {\r\n return;\r\n }\r\n\r\n const previousPageIndex = this.pageIndex;\r\n this.pageIndex = 0;\r\n\r\n this._emitPageEvent(previousPageIndex);\r\n }\r\n\r\n /** Move to the last page if not already there. */\r\n lastPage(): void {\r\n // hasNextPage being false implies at the end\r\n if (!this.hasNextPage()) {\r\n return;\r\n }\r\n\r\n const previousPageIndex = this.pageIndex;\r\n this.pageIndex = this.getNumberOfPages() - 1;\r\n\r\n this._emitPageEvent(previousPageIndex);\r\n }\r\n\r\n /**\r\n * Move to the page with the specified index\r\n * @param index Zero based page number to move\r\n */\r\n gotoPage(index: number): void {\r\n if (index >= 0 && index < this.getNumberOfPages() && !this.isActivePage(index)) {\r\n const previousPageIndex = this.pageIndex;\r\n this.pageIndex = index;\r\n\r\n this._emitPageEvent(previousPageIndex);\r\n }\r\n }\r\n\r\n /** Whether there is a previous page. */\r\n hasPreviousPage(): boolean {\r\n return this.pageIndex >= 1 && this.pageSize != 0;\r\n }\r\n\r\n /** Whether there is a next page. */\r\n hasNextPage(): boolean {\r\n const maxPageIndex = this.getNumberOfPages() - 1;\r\n return this.pageIndex < maxPageIndex && this.pageSize != 0;\r\n }\r\n\r\n /** Calculate the number of pages */\r\n getNumberOfPages(): number {\r\n if (!this.pageSize) {\r\n return 0;\r\n }\r\n return Math.ceil(this.length / this.pageSize);\r\n }\r\n\r\n /** Whether the paginator hasn't any page to paginate */\r\n empty(): boolean {\r\n return this.getNumberOfPages() == 0;\r\n }\r\n\r\n /** Transforms the calculated total pages' value to an array of page numbers */\r\n getPageNumbers(): number[] {\r\n let count = this.getNumberOfPages();\r\n if (count == 0) {\r\n return [];\r\n }\r\n let pages:number[] = [];\r\n if (this.middleSectionStyle == \"5-pages\") {\r\n if (isNaN(this._lastVisiblePageIndex)) {\r\n return [];\r\n }\r\n count = this._lastVisiblePageIndex - this._firstVisiblePageIndex + 1;\r\n pages = Array(count);\r\n for (let i=0; i < count; i++) {\r\n pages[i] = i + this._firstVisiblePageIndex;\r\n }\r\n } else {\r\n pages = Array(count);\r\n for (let i=0; i < count; i++) {\r\n pages[i] = i;\r\n }\r\n }\r\n\r\n return pages;\r\n }\r\n\r\n /**\r\n * Changes the page size so that the first item displayed on the page will still be\r\n * displayed using the new page size.\r\n *\r\n * For example, if the page size is 10 and on the second page (items indexed 10-19), then\r\n * switching so that the page size is 5 will set the third page as the current page so\r\n * that the 10th item will still be displayed.\r\n */\r\n _changePageSize(pageSize: number) {\r\n // The current page needs to be updated to reflect the new page size. Navigate to the page\r\n // containing the previous page's first item.\r\n const startIndex = this.pageIndex * this.pageSize;\r\n const previousPageIndex = this.pageIndex;\r\n\r\n this.pageIndex = Math.floor(startIndex / pageSize) || 0;\r\n this.pageSize = pageSize;\r\n\r\n this._updateFirstLastVisibleIndexes(this.pageIndex, previousPageIndex);\r\n this.markForCheck();\r\n\r\n this._emitPageEvent(previousPageIndex);\r\n }\r\n\r\n /** Checks whether the buttons for going forwards should be disabled. */\r\n protected _nextButtonDisabled() {\r\n return this.disabled || !this.hasNextPage();\r\n }\r\n\r\n /** Checks whether the buttons for going backwards should be disabled. */\r\n protected _previousButtonDisabled() {\r\n return this.disabled || !this.hasPreviousPage();\r\n }\r\n\r\n protected _getMagnitudeCssClass(): string {\r\n if (this.magnitude == \"large\") {\r\n return \"pagination-lg\";\r\n } else if (this.magnitude==\"small\") {\r\n return \"pagination-sm\";\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * Updates the list of page size options to display to the user. Includes making sure that\r\n * the page size is an option and that the list is sorted.\r\n */\r\n private _updateDisplayedPageSizeOptions() {\r\n if (!this.isInitialized) {\r\n return;\r\n }\r\n\r\n // If no page size is provided, use the first page size option or the default page size.\r\n if (!this.pageSize) {\r\n this._pageSize =\r\n this.pageSizeOptions.length != 0 ? this.pageSizeOptions[0] : DEFAULT_PAGE_SIZE;\r\n }\r\n\r\n this._displayedPageSizeOptions = this.pageSizeOptions.slice();\r\n\r\n if (this._displayedPageSizeOptions.indexOf(this.pageSize) === -1) {\r\n this._displayedPageSizeOptions.push(this.pageSize);\r\n }\r\n\r\n // Sort the numbers using a number-specific sort function.\r\n this._displayedPageSizeOptions.sort((a, b) => a - b);\r\n this.markForCheck();\r\n }\r\n\r\n /** Emits an event notifying that a change of the paginator's properties has been triggered. */\r\n private _emitPageEvent(previousPageIndex: number) {\r\n\r\n this.page.emit({\r\n previousPageIndex,\r\n pageIndex: this.pageIndex,\r\n pageSize: this.pageSize,\r\n length: this.length,\r\n });\r\n }\r\n\r\n protected readonly isNaN = isNaN;\r\n protected readonly onmousedown = onmousedown;\r\n}\r\n","@if (!hidePageSize) {\r\n <div class=\"page-size\">\r\n\r\n <cute-label class=\"page-size-label\"\r\n [magnitude]=\"magnitude\"\r\n [attr.id]=\"_pageSizeLabelId\">\r\n {{_intl.itemsPerPageLabel}}\r\n </cute-label>\r\n\r\n @if (_displayedPageSizeOptions.length > 1) {\r\n\r\n <cute-form-field\r\n class=\"page-size-select\"\r\n [class.me-auto]=\"true\"\r\n subscriptSizing=\"dynamic\"\r\n [color]=\"color\">\r\n\r\n <cute-select\r\n [value]=\"pageSize\"\r\n [disabled]=\"disabled\"\r\n [color]=\"color\"\r\n [magnitude]=\"magnitude\"\r\n [aria-labelledby]=\"_pageSizeLabelId\"\r\n [panelClass]=\"selectConfig.panelClass || 'shadow-lg'\"\r\n [disableOptionCentering]=\"selectConfig.disableOptionCentering\"\r\n (selectionChange)=\"_changePageSize($event.value)\"\r\n hideSingleSelectionIndicator>\r\n @for (pageSizeOption of _displayedPageSizeOptions; track pageSizeOption) {\r\n <cute-option [value]=\"pageSizeOption\">\r\n {{pageSizeOption}}\r\n </cute-option>\r\n }\r\n </cute-select>\r\n </cute-form-field>\r\n } @else {\r\n <div class=\"page-size-value\">{{pageSize}}</div>\r\n }\r\n </div>\r\n}\r\n\r\n<nav [attr.aria-label]=\"ariaLabel\">\r\n\r\n <ul class=\"pagination\"\r\n [class]=\"_getMagnitudeCssClass()+(alignment=='between' ? '' : ' justify-content-'+alignment)\"\r\n [class.gap-1]=\"hideBorders\"\r\n [style.--bs-focus-ring-color]='color ? \"rgba(var(--bs-\"+color+\"-rgb), var(--bs-focus-ring-opacity))\" : \"\"'\r\n [style.--bs-pagination-color]='color ? \"var(--bs-\"+color+\")\" : \"\"'\r\n [style.--bs-pagination-active-bg]='color ? \"var(--bs-\"+color+\")\" : \"\"'\r\n [style.--bs-pagination-active-border-color]='color ? \"rgb(var(--bs-\"+color+\"-rgb))\" : \"\"'\r\n [style.--bs-pagination-border-width]=\"hideBorders ? 0 : undefined\"\r\n >\r\n @if (showFirstLastButtons) {\r\n <li class=\"page-item page-first\">\r\n <a class=\"page-link\"\r\n [tabindex]=\"_previousButtonDisabled() ? -1 : 0\"\r\n [class.disabled]=\"_previousButtonDisabled()\"\r\n [class]=\"color && !_previousButtonDisabled() ? 'link-'+color : ''\"\r\n [class.focus-ring]=\"color != null\"\r\n [style.float]=\"'left'\"\r\n [attr.aria-label]=\"_intl.firstPageLabelHint || _intl.firstPageLabel\"\r\n [cuteTooltip]=\"_intl.firstPageLabelHint || _intl.firstPageLabel\"\r\n [cuteTooltipDisabled]=\"_previousButtonDisabled()\"\r\n [cuteTooltipPosition]=\"'above'\"\r\n (click)=\"firstPage()\"\r\n (keydown.space)=\"firstPage();$event.preventDefault();\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n fill=\"currentColor\" class=\"bi bi-chevron-double-left\"\r\n viewBox=\"0 0 16 16\"\r\n focusable=\"false\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M8.354 1.646a.5.5 0 0 1 0 .708L2.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/>\r\n <path fill-rule=\"evenodd\" d=\"M12.354 1.646a.5.5 0 0 1 0 .708L6.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/>\r\n </svg>\r\n </a>\r\n </li>\r\n }\r\n\r\n <li class=\"page-item\" [class.me-auto]=\"alignment=='between'\">\r\n <a class=\"page-link page-prev rounded-start-1\"\r\n [tabindex]=\"_previousButtonDisabled() ? -1 : 0\"\r\n [class]=\"color && !_previousButtonDisabled() ? 'link-'+color : ''\"\r\n [class.disabled]=\"_previousButtonDisabled()\"\r\n [class.focus-ring]=\"color != null\"\r\n [class.rounded-start-1]=\"hideBorders\"\r\n [attr.aria-label]=\"_intl.previousPageLabelHint || _intl.previousPageLabel\"\r\n [cuteTooltip]=\"_intl.previousPageLabelHint || _intl.previousPageLabel\"\r\n [cuteTooltipDisabled]=\"_previousButtonDisabled()\"\r\n [cuteTooltipPosition]=\"'above'\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (click)=\"previousPage()\"\r\n (keydown.space)=\"previousPage();$event.preventDefault();\"\r\n >\r\n @if (showPrevNextLabels) {\r\n {{_intl.previousPageLabel}}\r\n } @else {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n fill=\"currentColor\" class=\"bi bi-chevron-left\"\r\n viewBox=\"0 0 16 16\"\r\n focusable=\"false\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"/>\r\n </svg>\r\n }\r\n </a>\r\n </li>\r\n\r\n @if (middleSectionStyle.endsWith('pages')) {\r\n @for (pageNo of getPageNumbers(); track pageNo) {\r\n <li class=\"page-item\">\r\n <a [attr.tabindex]=\"isNaN(pageNo)?-1:0\"\r\n class=\"page-link page-number\"\r\n [class.active]=\"isActivePage(pageNo) && !hideActive\"\r\n [class.shadow]=\"isActivePage(pageNo) && !hideActive\"\r\n [class.rounded-1]=\"hideBorders\"\r\n [class]=\"color && !isActivePage(pageNo) ? 'link-'+color : ''\"\r\n [class.focus-ring]=\"color != null\"\r\n [attr.aria-current]=\"isActivePage(pageNo) ? 'page' : ''\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (click)=\"gotoPage(pageNo);\"\r\n (keydown.space)=\"gotoPage(pageNo);$event.preventDefault();\"\r\n >\r\n {{pageNo + 1}}\r\n </a>\r\n </li>\r\n }\r\n\r\n } @else if (middleSectionStyle=='range') {\r\n <li class=\"cute-paginator-range-label\"\r\n [class]=\"color ? 'link-'+color : ''\"\r\n aria-live=\"polite\">\r\n {{_intl.getRangeLabel(pageIndex, pageSize, length)}}\r\n </li>\r\n }\r\n\r\n <li class=\"page-item\" [class.ms-auto]=\"alignment=='between'\">\r\n <a class=\"page-link page-next rounded-end-1\"\r\n [tabindex]=\"_nextButtonDisabled() ? -1 : 0\"\r\n [class]=\"color && !_nextButtonDisabled() ? 'link-'+color : ''\"\r\n [class.disabled]=\"_nextButtonDisabled()\"\r\n [class.focus-ring]=\"color != null\"\r\n [class.rounded-end-1]=\"hideBorders\"\r\n [attr.aria-label]=\"_intl.nextPageLabelHint || _intl.nextPageLabel\"\r\n [cuteTooltip]=\"_intl.nextPageLabelHint || _intl.nextPageLabel\"\r\n [cuteTooltipDisabled]=\"_nextButtonDisabled()\"\r\n [cuteTooltipPosition]=\"'above'\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (click)=\"nextPage()\"\r\n (keydown.space)=\"nextPage();$event.preventDefault();\"\r\n >\r\n @if (showPrevNextLabels) {\r\n {{_intl.nextPageLabel}}\r\n } @else {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n fill=\"currentColor\" class=\"bi bi-chevron-right\"\r\n viewBox=\"0 0 16 16\"\r\n focusable=\"false\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"/>\r\n </svg>\r\n }\r\n </a>\r\n </li>\r\n\r\n @if (showFirstLastButtons) {\r\n <li class=\"page-item\">\r\n <a class=\"page-link page-last\"\r\n [tabindex]=\"_nextButtonDisabled() ? -1 : 0\"\r\n [class.disabled]=\"_nextButtonDisabled()\"\r\n [class]=\"color && !_nextButtonDisabled() ? 'link-'+color : ''\"\r\n [class.focus-ring]=\"color != null\"\r\n [attr.aria-label]=\"_intl.lastPageLabelHint || _intl.lastPageLabel\"\r\n [cuteTooltip]=\"_intl.lastPageLabelHint || _intl.lastPageLabel\"\r\n [cuteTooltipDisabled]=\"_nextButtonDisabled()\"\r\n [cuteTooltipPosition]=\"'above'\"\r\n (click)=\"lastPage()\"\r\n (keydown.space)=\"lastPage();$event.preventDefault();\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n fill=\"currentColor\" class=\"bi bi-chevron-double-right\"\r\n viewBox=\"0 0 16 16\"\r\n focusable=\"false\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M3.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L9.293 8 3.646 2.354a.5.5 0 0 1 0-.708z\"/>\r\n <path fill-rule=\"evenodd\" d=\"M7.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L13.293 8 7.646 2.354a.5.5 0 0 1 0-.708z\"/>\r\n </svg>\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n</nav>\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CutePaginator} from \"./paginator.component\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [CutePaginator];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n})\r\nexport class CutePaginatorModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { booleanAttribute, Input, ChangeDetectionStrategy, ViewEncapsulation, Component, InjectionToken, inject, EventEmitter, numberAttribute, Output, NgModule } from '@angular/core';
|
|
3
|
+
import { CuteBaseControl } from '@cute-widgets/base/abstract';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @license Apache-2.0
|
|
8
|
+
*
|
|
9
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
10
|
+
*
|
|
11
|
+
* You may not use this file except in compliance with the License
|
|
12
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
*/
|
|
14
|
+
const DEFAULT_THICKNESS$1 = "1.125rem";
|
|
15
|
+
class CuteProgressStacked extends CuteBaseControl {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
/** Whether the stack of the containing progress bars is a vertical stack. Default is _false_, horizontal. */
|
|
19
|
+
this.vertical = false;
|
|
20
|
+
/** Bar's height for horizontal progress and width for vertical one. */
|
|
21
|
+
this.thickness = DEFAULT_THICKNESS$1;
|
|
22
|
+
}
|
|
23
|
+
generateId() {
|
|
24
|
+
return "";
|
|
25
|
+
}
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteProgressStacked, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "20.3.15", type: CuteProgressStacked, isStandalone: true, selector: "cute-progress-stacked", inputs: { vertical: ["vertical", "vertical", booleanAttribute], thickness: "thickness" }, host: { properties: { "class.vertical-stack": "vertical", "style.width": "vertical ? thickness : null", "style.height": "!vertical ? thickness : null" }, classAttribute: "cute-progress-stacked progress-stacked" }, exportAs: ["cuteProgressStacked"], usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".progress-stacked.vertical-stack{flex-direction:column-reverse;width:1rem;height:100%}.progress-stacked .cute-progress-bar .progress{overflow:visible}.progress-stacked .cute-progress-bar .progress>.progress-bar{width:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
28
|
+
}
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteProgressStacked, decorators: [{
|
|
30
|
+
type: Component,
|
|
31
|
+
args: [{ selector: 'cute-progress-stacked', template: '<ng-content></ng-content>', exportAs: 'cuteProgressStacked', host: {
|
|
32
|
+
'class': 'cute-progress-stacked progress-stacked',
|
|
33
|
+
'[class.vertical-stack]': 'vertical',
|
|
34
|
+
'[style.width]': 'vertical ? thickness : null',
|
|
35
|
+
'[style.height]': '!vertical ? thickness : null',
|
|
36
|
+
}, standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".progress-stacked.vertical-stack{flex-direction:column-reverse;width:1rem;height:100%}.progress-stacked .cute-progress-bar .progress{overflow:visible}.progress-stacked .cute-progress-bar .progress>.progress-bar{width:100%}\n"] }]
|
|
37
|
+
}], propDecorators: { vertical: [{
|
|
38
|
+
type: Input,
|
|
39
|
+
args: [{ transform: booleanAttribute }]
|
|
40
|
+
}], thickness: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}] } });
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @license Apache-2.0
|
|
46
|
+
*
|
|
47
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
48
|
+
*
|
|
49
|
+
* You may not use this file except in compliance with the License
|
|
50
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
51
|
+
*
|
|
52
|
+
* This code is a modification of the `@angular/material` original
|
|
53
|
+
* code licensed under MIT-style License (https://angular.dev/license).
|
|
54
|
+
*/
|
|
55
|
+
const MIN_VALUE = 0;
|
|
56
|
+
const MAX_VALUE = 100;
|
|
57
|
+
const DEFAULT_THICKNESS = "1.125rem";
|
|
58
|
+
/** Injection token to be used to override the default options for `cute-progress-bar`. */
|
|
59
|
+
const CUTE_PROGRESS_BAR_DEFAULT_OPTIONS = new InjectionToken('CUTE_PROGRESS_BAR_DEFAULT_OPTIONS');
|
|
60
|
+
let nextId = 0;
|
|
61
|
+
class CuteProgressBar extends CuteBaseControl {
|
|
62
|
+
/** Mode of the progress bar. */
|
|
63
|
+
get mode() { return this._mode; }
|
|
64
|
+
set mode(value) {
|
|
65
|
+
// Note that we don't technically need a getter and a setter here,
|
|
66
|
+
// but we use it to match the behavior of the existing cute-progress-bar.
|
|
67
|
+
if (value !== this._mode) {
|
|
68
|
+
this._mode = value;
|
|
69
|
+
if (value == "determinate") {
|
|
70
|
+
const event = this._createProgressEvent();
|
|
71
|
+
this.progressChange.emit(event);
|
|
72
|
+
}
|
|
73
|
+
this.markForCheck();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/** The current progress value. Defaults to _zero_. Mirrored to `aria-valuenow`. */
|
|
77
|
+
get value() { return this._value; }
|
|
78
|
+
;
|
|
79
|
+
set value(v) {
|
|
80
|
+
let changed = true;
|
|
81
|
+
if (v == this._value)
|
|
82
|
+
return;
|
|
83
|
+
if (v >= this.minimum && v <= this.maximum) {
|
|
84
|
+
this._value = v;
|
|
85
|
+
}
|
|
86
|
+
else if (v > this.maximum) {
|
|
87
|
+
if (this.autoReset) {
|
|
88
|
+
this._value = this.minimum;
|
|
89
|
+
if (this.mode == "determinate") {
|
|
90
|
+
this.progressReset.emit();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this._value = this.maximum;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else if (v < this.minimum) {
|
|
98
|
+
this._value = this.minimum;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
changed = false;
|
|
102
|
+
}
|
|
103
|
+
if (changed) {
|
|
104
|
+
if (this.mode == "determinate") {
|
|
105
|
+
this._valueUpdated = true;
|
|
106
|
+
const event = this._createProgressEvent();
|
|
107
|
+
this.progressChange.emit(event);
|
|
108
|
+
}
|
|
109
|
+
this.markForCheck();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/** Progress minimum value. Default is 0. */
|
|
113
|
+
get minimum() { return this._minimum; }
|
|
114
|
+
set minimum(value) {
|
|
115
|
+
if (value >= MIN_VALUE) {
|
|
116
|
+
this._minimum = Math.min(Math.max(value, MIN_VALUE), this.maximum);
|
|
117
|
+
if (this.value < this._minimum) {
|
|
118
|
+
// Correct the current value
|
|
119
|
+
this.value = this._minimum;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/** Progress maximum value. Default is 100. */
|
|
124
|
+
get maximum() { return this._maximum; }
|
|
125
|
+
set maximum(value) {
|
|
126
|
+
if (value >= MIN_VALUE) {
|
|
127
|
+
this._maximum = Math.max(value, this.minimum);
|
|
128
|
+
if (this.value > this._maximum) {
|
|
129
|
+
this.value = this._maximum;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/** Progress step value. Default is 10. */
|
|
134
|
+
get step() { return this._step; }
|
|
135
|
+
set step(value) {
|
|
136
|
+
this._step = Math.max(Math.min(value, this.maximum - this.minimum), 1);
|
|
137
|
+
}
|
|
138
|
+
/** Bar's height for horizontal progress and width for vertical one. The changing this value is ignored if the progress bar is contained in the `cute-progress-bar-stack`. */
|
|
139
|
+
get thickness() { return this.progressStacked?.thickness ?? this._thickness ?? DEFAULT_THICKNESS; }
|
|
140
|
+
set thickness(value) { this._thickness = value; }
|
|
141
|
+
/** Whether the progress bar should be vertical. The changing this value is ignored if the progress bar is contained in the `cute-progress-bar-stack`. */
|
|
142
|
+
get vertical() { return this.progressStacked?.vertical ?? this._vertical; }
|
|
143
|
+
set vertical(value) { this._vertical = value; }
|
|
144
|
+
constructor() {
|
|
145
|
+
super();
|
|
146
|
+
this._valueUpdated = false;
|
|
147
|
+
this.progressStacked = inject(CuteProgressStacked, { optional: true, host: true });
|
|
148
|
+
this._mode = 'determinate';
|
|
149
|
+
this._value = MIN_VALUE;
|
|
150
|
+
this._minimum = MIN_VALUE;
|
|
151
|
+
this._maximum = MAX_VALUE;
|
|
152
|
+
this._step = 10;
|
|
153
|
+
/** Whether the minimum progress value be automatically set when the maximum value is reached. */
|
|
154
|
+
this.autoReset = false;
|
|
155
|
+
/** Whether the component should display the current percentage or message label above the progress. */
|
|
156
|
+
this.showLabel = false;
|
|
157
|
+
/** Whether to apply a stripe via CSS gradient over the progress bar’s background color. */
|
|
158
|
+
this.striped = false;
|
|
159
|
+
/** Whether the striped gradient should be animated. */
|
|
160
|
+
this.stripedAnimated = false;
|
|
161
|
+
this._vertical = false;
|
|
162
|
+
/** Event emitted when the progress value has been changed. */
|
|
163
|
+
this.progressChange = new EventEmitter();
|
|
164
|
+
/** Event emitted when the progress value has been auto reset to the `minimum` value. */
|
|
165
|
+
this.progressReset = new EventEmitter();
|
|
166
|
+
const defaults = inject(CUTE_PROGRESS_BAR_DEFAULT_OPTIONS, {
|
|
167
|
+
optional: true,
|
|
168
|
+
});
|
|
169
|
+
if (defaults) {
|
|
170
|
+
if (defaults.color) {
|
|
171
|
+
this.color = this.defaultColor = defaults.color;
|
|
172
|
+
}
|
|
173
|
+
this.mode = defaults.mode || this.mode;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
_createProgressEvent() {
|
|
177
|
+
return { value: this.value, complete: this.value === this.maximum, sender: this };
|
|
178
|
+
}
|
|
179
|
+
generateId() {
|
|
180
|
+
return `cute-progress-bar-${nextId++}`;
|
|
181
|
+
}
|
|
182
|
+
isStackMember() {
|
|
183
|
+
return this.progressStacked != null;
|
|
184
|
+
}
|
|
185
|
+
getMessageIndex() {
|
|
186
|
+
if (this.messages && this.messages.length > 0) {
|
|
187
|
+
return Math.floor(this.value / (this.maximum - this.minimum) * this.messages.length);
|
|
188
|
+
}
|
|
189
|
+
return -1;
|
|
190
|
+
}
|
|
191
|
+
/** Returns the current completion percentage. */
|
|
192
|
+
getPercent() {
|
|
193
|
+
if (this.mode == "determinate") {
|
|
194
|
+
return Math.round((this.value - this.minimum) / (this.maximum - this.minimum) * 100);
|
|
195
|
+
}
|
|
196
|
+
return 100;
|
|
197
|
+
}
|
|
198
|
+
/** Retrieves the progressbar calculated label. */
|
|
199
|
+
getLabel() {
|
|
200
|
+
const index = this.getMessageIndex();
|
|
201
|
+
if (index >= 0) {
|
|
202
|
+
return this.messages[index];
|
|
203
|
+
}
|
|
204
|
+
return `${this.getPercent()}%`;
|
|
205
|
+
}
|
|
206
|
+
/** Returns the progressbar label color */
|
|
207
|
+
getLabelColor() {
|
|
208
|
+
if (this.messageColors && this.messageColors.length > 0) {
|
|
209
|
+
const index = this.getMessageIndex();
|
|
210
|
+
if (index >= 0) {
|
|
211
|
+
const colorIndex = Math.floor(index / this.messages.length * this.messageColors.length);
|
|
212
|
+
return this.messageColors[colorIndex];
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Increments/decrements progress value.
|
|
219
|
+
* @param nStep Step to increment/decrement the current progress value. Default is the component's {@link step} value.
|
|
220
|
+
*/
|
|
221
|
+
increment(nStep) {
|
|
222
|
+
this.value += nStep ?? this.step;
|
|
223
|
+
}
|
|
224
|
+
ngOnInit() {
|
|
225
|
+
super.ngOnInit();
|
|
226
|
+
if (!this._valueUpdated) {
|
|
227
|
+
// Sending the current value to the realm
|
|
228
|
+
this.progressChange.emit(this._createProgressEvent());
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
232
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: CuteProgressBar, isStandalone: true, selector: "cute-progress-bar", inputs: { mode: "mode", value: ["value", "value", numberAttribute], minimum: ["minimum", "minimum", numberAttribute], maximum: ["maximum", "maximum", numberAttribute], step: ["step", "step", numberAttribute], autoReset: ["autoReset", "autoReset", booleanAttribute], showLabel: ["showLabel", "showLabel", booleanAttribute], striped: ["striped", "striped", booleanAttribute], stripedAnimated: ["stripedAnimated", "stripedAnimated", booleanAttribute], messages: "messages", messageColors: "messageColors", thickness: "thickness", vertical: ["vertical", "vertical", booleanAttribute] }, outputs: { progressChange: "progressChange", progressReset: "progressReset" }, host: { attributes: { "tabindex": "-1" }, properties: { "class.vertical-progress": "vertical", "class.cute-progress-bar-stacked": "isStackMember()", "style.width": "(vertical && (thickness ?? \"1rem\")) || undefined", "attr.mode": "mode", "attr.id": "id || null" }, classAttribute: "cute-progress-bar" }, exportAs: ["cuteProgressBar"], usesInheritance: true, ngImport: i0, template: "@let stacked = isStackMember();\r\n\r\n@if (stacked) {\r\n <div class=\"progress\"\r\n role=\"progressbar\"\r\n [style.width.%]=\"!vertical ? getPercent() : undefined\"\r\n [style.height.%]=\"vertical ? getPercent() : undefined\"\r\n [style.height]=\"(!vertical && thickness) || undefined\"\r\n [attr.aria-label]=\"(messages ? getLabel() : ariaLabel) || null\"\r\n [attr.aria-valuenow]=\"value\"\r\n [attr.aria-valuemin]=\"minimum ?? 0\"\r\n [attr.aria-valuemax]=\"maximum ?? 100\"\r\n >\r\n <div class=\"progress-bar\"\r\n [style.height.%]=\"vertical ? 100 : undefined\"\r\n [class]='color ? \"text-bg-\"+color : \"\"'\r\n [class.progress-bar-striped]=\"striped || stripedAnimated || mode=='indeterminate'\"\r\n [class.progress-bar-animated]=\"stripedAnimated || mode=='indeterminate'\">\r\n @if (showLabel) {\r\n @let labelColor = getLabelColor();\r\n <span class=\"text-truncate\"\r\n [class.vertical-text]=\"vertical\"\r\n [class.horizontal-text]=\"!vertical\"\r\n [class]=\"labelColor ? 'text-'+labelColor : null\">\r\n {{getLabel()}}\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n} @else {\r\n <!-- Standalone progress bar -->\r\n <div class=\"progress\"\r\n role=\"progressbar\"\r\n [style.height]=\"(!vertical && thickness) || null\"\r\n [attr.aria-label]=\"(messages ? getLabel() : ariaLabel) || null\"\r\n [attr.aria-valuenow]=\"value\"\r\n [attr.aria-valuemin]=\"minimum ?? 0\"\r\n [attr.aria-valuemax]=\"maximum ?? 100\"\r\n >\r\n <div class=\"progress-bar\"\r\n [style.width.%]=\"!vertical ? getPercent() : undefined\"\r\n [style.height.%]=\"vertical ? getPercent() : undefined\"\r\n [class]='color ? \"text-bg-\"+color : \"\"'\r\n [class.progress-bar-striped]=\"striped || stripedAnimated || mode=='indeterminate'\"\r\n [class.progress-bar-animated]=\"stripedAnimated || mode=='indeterminate'\">\r\n @if (showLabel) {\r\n @let labelColor = getLabelColor();\r\n <span class=\"text-truncate\"\r\n [class.vertical-text]=\"vertical\"\r\n [class.horizontal-text]=\"!vertical\"\r\n [class]=\"labelColor ? 'text-'+labelColor : null\">\r\n {{getLabel()}}\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n}\r\n\r\n", styles: [".cute-progress-bar{width:100%}.cute-progress-bar.vertical-progress{position:relative;height:100%;display:inline-block}.cute-progress-bar.vertical-progress .progress{height:100%;flex-direction:column-reverse}.cute-progress-bar.vertical-progress .vertical-text{transform:rotate(180deg);writing-mode:vertical-rl;text-orientation:mixed;margin:auto;padding:.5em 0}.cute-progress-bar .horizontal-text{padding:0 .5em}.cute-progress-bar.cute-progress-bar-stacked{display:contents}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
233
|
+
}
|
|
234
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteProgressBar, decorators: [{
|
|
235
|
+
type: Component,
|
|
236
|
+
args: [{ selector: 'cute-progress-bar', exportAs: 'cuteProgressBar', host: {
|
|
237
|
+
'class': 'cute-progress-bar',
|
|
238
|
+
'[class.vertical-progress]': 'vertical',
|
|
239
|
+
'[class.cute-progress-bar-stacked]': 'isStackMember()',
|
|
240
|
+
'[style.width]': '(vertical && (thickness ?? "1rem")) || undefined',
|
|
241
|
+
// set tab index to -1 so screen readers will read the aria-label
|
|
242
|
+
// Note: there is a known issue with JAWS that does not read progressbar aria labels on FireFox
|
|
243
|
+
'tabindex': '-1',
|
|
244
|
+
'[attr.mode]': 'mode',
|
|
245
|
+
'[attr.id]': 'id || null',
|
|
246
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "@let stacked = isStackMember();\r\n\r\n@if (stacked) {\r\n <div class=\"progress\"\r\n role=\"progressbar\"\r\n [style.width.%]=\"!vertical ? getPercent() : undefined\"\r\n [style.height.%]=\"vertical ? getPercent() : undefined\"\r\n [style.height]=\"(!vertical && thickness) || undefined\"\r\n [attr.aria-label]=\"(messages ? getLabel() : ariaLabel) || null\"\r\n [attr.aria-valuenow]=\"value\"\r\n [attr.aria-valuemin]=\"minimum ?? 0\"\r\n [attr.aria-valuemax]=\"maximum ?? 100\"\r\n >\r\n <div class=\"progress-bar\"\r\n [style.height.%]=\"vertical ? 100 : undefined\"\r\n [class]='color ? \"text-bg-\"+color : \"\"'\r\n [class.progress-bar-striped]=\"striped || stripedAnimated || mode=='indeterminate'\"\r\n [class.progress-bar-animated]=\"stripedAnimated || mode=='indeterminate'\">\r\n @if (showLabel) {\r\n @let labelColor = getLabelColor();\r\n <span class=\"text-truncate\"\r\n [class.vertical-text]=\"vertical\"\r\n [class.horizontal-text]=\"!vertical\"\r\n [class]=\"labelColor ? 'text-'+labelColor : null\">\r\n {{getLabel()}}\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n} @else {\r\n <!-- Standalone progress bar -->\r\n <div class=\"progress\"\r\n role=\"progressbar\"\r\n [style.height]=\"(!vertical && thickness) || null\"\r\n [attr.aria-label]=\"(messages ? getLabel() : ariaLabel) || null\"\r\n [attr.aria-valuenow]=\"value\"\r\n [attr.aria-valuemin]=\"minimum ?? 0\"\r\n [attr.aria-valuemax]=\"maximum ?? 100\"\r\n >\r\n <div class=\"progress-bar\"\r\n [style.width.%]=\"!vertical ? getPercent() : undefined\"\r\n [style.height.%]=\"vertical ? getPercent() : undefined\"\r\n [class]='color ? \"text-bg-\"+color : \"\"'\r\n [class.progress-bar-striped]=\"striped || stripedAnimated || mode=='indeterminate'\"\r\n [class.progress-bar-animated]=\"stripedAnimated || mode=='indeterminate'\">\r\n @if (showLabel) {\r\n @let labelColor = getLabelColor();\r\n <span class=\"text-truncate\"\r\n [class.vertical-text]=\"vertical\"\r\n [class.horizontal-text]=\"!vertical\"\r\n [class]=\"labelColor ? 'text-'+labelColor : null\">\r\n {{getLabel()}}\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n}\r\n\r\n", styles: [".cute-progress-bar{width:100%}.cute-progress-bar.vertical-progress{position:relative;height:100%;display:inline-block}.cute-progress-bar.vertical-progress .progress{height:100%;flex-direction:column-reverse}.cute-progress-bar.vertical-progress .vertical-text{transform:rotate(180deg);writing-mode:vertical-rl;text-orientation:mixed;margin:auto;padding:.5em 0}.cute-progress-bar .horizontal-text{padding:0 .5em}.cute-progress-bar.cute-progress-bar-stacked{display:contents}\n"] }]
|
|
247
|
+
}], ctorParameters: () => [], propDecorators: { mode: [{
|
|
248
|
+
type: Input
|
|
249
|
+
}], value: [{
|
|
250
|
+
type: Input,
|
|
251
|
+
args: [{ transform: numberAttribute }]
|
|
252
|
+
}], minimum: [{
|
|
253
|
+
type: Input,
|
|
254
|
+
args: [{ transform: numberAttribute }]
|
|
255
|
+
}], maximum: [{
|
|
256
|
+
type: Input,
|
|
257
|
+
args: [{ transform: numberAttribute }]
|
|
258
|
+
}], step: [{
|
|
259
|
+
type: Input,
|
|
260
|
+
args: [{ transform: numberAttribute }]
|
|
261
|
+
}], autoReset: [{
|
|
262
|
+
type: Input,
|
|
263
|
+
args: [{ transform: booleanAttribute }]
|
|
264
|
+
}], showLabel: [{
|
|
265
|
+
type: Input,
|
|
266
|
+
args: [{ transform: booleanAttribute }]
|
|
267
|
+
}], striped: [{
|
|
268
|
+
type: Input,
|
|
269
|
+
args: [{ transform: booleanAttribute }]
|
|
270
|
+
}], stripedAnimated: [{
|
|
271
|
+
type: Input,
|
|
272
|
+
args: [{ transform: booleanAttribute }]
|
|
273
|
+
}], messages: [{
|
|
274
|
+
type: Input
|
|
275
|
+
}], messageColors: [{
|
|
276
|
+
type: Input
|
|
277
|
+
}], thickness: [{
|
|
278
|
+
type: Input
|
|
279
|
+
}], vertical: [{
|
|
280
|
+
type: Input,
|
|
281
|
+
args: [{ transform: booleanAttribute }]
|
|
282
|
+
}], progressChange: [{
|
|
283
|
+
type: Output
|
|
284
|
+
}], progressReset: [{
|
|
285
|
+
type: Output
|
|
286
|
+
}] } });
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* @license Apache-2.0
|
|
290
|
+
*
|
|
291
|
+
* Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
|
|
292
|
+
*
|
|
293
|
+
* You may not use this file except in compliance with the License
|
|
294
|
+
* that can be found at http://www.apache.org/licenses/LICENSE-2.0
|
|
295
|
+
*/
|
|
296
|
+
const TYPES = [
|
|
297
|
+
CuteProgressBar,
|
|
298
|
+
CuteProgressStacked,
|
|
299
|
+
];
|
|
300
|
+
class CuteProgressBarModule {
|
|
301
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
302
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: CuteProgressBarModule, imports: [CommonModule, CuteProgressBar,
|
|
303
|
+
CuteProgressStacked], exports: [CuteProgressBar,
|
|
304
|
+
CuteProgressStacked] }); }
|
|
305
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteProgressBarModule, imports: [CommonModule] }); }
|
|
306
|
+
}
|
|
307
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteProgressBarModule, decorators: [{
|
|
308
|
+
type: NgModule,
|
|
309
|
+
args: [{
|
|
310
|
+
imports: [CommonModule, ...TYPES],
|
|
311
|
+
exports: TYPES,
|
|
312
|
+
declarations: [],
|
|
313
|
+
}]
|
|
314
|
+
}] });
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Generated bundle index. Do not edit.
|
|
318
|
+
*/
|
|
319
|
+
|
|
320
|
+
export { CUTE_PROGRESS_BAR_DEFAULT_OPTIONS, CuteProgressBar, CuteProgressBarModule, CuteProgressStacked };
|
|
321
|
+
//# sourceMappingURL=cute-widgets-base-progress.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cute-widgets-base-progress.mjs","sources":["../../../../projects/cute-widgets/base/progress/src/progress-stacked.component.ts","../../../../projects/cute-widgets/base/progress/src/progress-bar.component.ts","../../../../projects/cute-widgets/base/progress/src/progress-bar.component.html","../../../../projects/cute-widgets/base/progress/src/progress-bar.module.ts","../../../../projects/cute-widgets/base/progress/cute-widgets-base-progress.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {CuteBaseControl} from \"@cute-widgets/base/abstract\";\r\n\r\nconst DEFAULT_THICKNESS = \"1.125rem\";\r\n\r\n@Component({\r\n selector: 'cute-progress-stacked',\r\n template: '<ng-content></ng-content>',\r\n styles: [`\r\n .progress-stacked {\r\n &.vertical-stack {\r\n flex-direction: column-reverse;\r\n width: 1rem;\r\n height: 100%;\r\n }\r\n\r\n .cute-progress-bar {\r\n .progress {\r\n overflow: visible;\r\n\r\n &> .progress-bar {\r\n width: 100%;\r\n }\r\n }\r\n }\r\n }\r\n `],\r\n exportAs: 'cuteProgressStacked',\r\n host: {\r\n 'class': 'cute-progress-stacked progress-stacked',\r\n '[class.vertical-stack]': 'vertical',\r\n '[style.width]': 'vertical ? thickness : null',\r\n '[style.height]': '!vertical ? thickness : null',\r\n },\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CuteProgressStacked extends CuteBaseControl {\r\n\r\n /** Whether the stack of the containing progress bars is a vertical stack. Default is _false_, horizontal. */\r\n @Input({transform: booleanAttribute}) vertical: boolean = false;\r\n\r\n /** Bar's height for horizontal progress and width for vertical one. */\r\n @Input() thickness: string = DEFAULT_THICKNESS;\r\n\r\n protected override generateId(): string {\r\n return \"\";\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component, Directive,\r\n EventEmitter, inject, InjectionToken,\r\n Input,\r\n numberAttribute,\r\n Output,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {CuteBaseControl} from \"@cute-widgets/base/abstract\";\r\nimport {ThemeColor} from \"@cute-widgets/base/core\";\r\nimport {CuteProgressStacked} from \"./progress-stacked.component\";\r\n\r\nconst MIN_VALUE = 0;\r\nconst MAX_VALUE = 100;\r\nconst DEFAULT_THICKNESS = \"1.125rem\";\r\n\r\nexport type ProgressBarMode = 'determinate' | 'indeterminate' | 'buffer' | 'query';\r\n\r\nexport interface CuteProgressEvent {\r\n value: number;\r\n complete: boolean;\r\n sender: CuteProgressBar,\r\n}\r\n\r\n/** Default `cute-progress-bar` options that can be overridden. */\r\nexport interface CuteProgressBarDefaultOptions {\r\n /**\r\n * Default theme color of the progress bar. */\r\n color?: ThemeColor;\r\n\r\n /** Default mode of the progress bar. */\r\n mode?: ProgressBarMode;\r\n}\r\n\r\n/** Injection token to be used to override the default options for `cute-progress-bar`. */\r\nexport const CUTE_PROGRESS_BAR_DEFAULT_OPTIONS = new InjectionToken<CuteProgressBarDefaultOptions>(\r\n 'CUTE_PROGRESS_BAR_DEFAULT_OPTIONS',\r\n);\r\n\r\nlet nextId: number = 0;\r\n\r\n@Component({\r\n selector: 'cute-progress-bar',\r\n templateUrl: './progress-bar.component.html',\r\n styleUrls: ['./progress-bar.component.scss'],\r\n exportAs: 'cuteProgressBar',\r\n host: {\r\n 'class': 'cute-progress-bar',\r\n '[class.vertical-progress]': 'vertical',\r\n '[class.cute-progress-bar-stacked]': 'isStackMember()',\r\n '[style.width]': '(vertical && (thickness ?? \"1rem\")) || undefined',\r\n // set tab index to -1 so screen readers will read the aria-label\r\n // Note: there is a known issue with JAWS that does not read progressbar aria labels on FireFox\r\n 'tabindex': '-1',\r\n '[attr.mode]': 'mode',\r\n '[attr.id]': 'id || null',\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n})\r\nexport class CuteProgressBar extends CuteBaseControl {\r\n\r\n private _valueUpdated: boolean = false;\r\n protected progressStacked = inject(CuteProgressStacked, {optional: true, host: true})\r\n\r\n /** Mode of the progress bar. */\r\n @Input()\r\n get mode(): ProgressBarMode { return this._mode; }\r\n set mode(value: ProgressBarMode) {\r\n // Note that we don't technically need a getter and a setter here,\r\n // but we use it to match the behavior of the existing cute-progress-bar.\r\n if (value !== this._mode) {\r\n this._mode = value;\r\n if (value==\"determinate\") {\r\n const event = this._createProgressEvent();\r\n this.progressChange.emit(event);\r\n }\r\n this.markForCheck();\r\n }\r\n }\r\n private _mode: ProgressBarMode = 'determinate';\r\n\r\n /** The current progress value. Defaults to _zero_. Mirrored to `aria-valuenow`. */\r\n @Input({transform: numberAttribute})\r\n get value(): number {return this._value};\r\n set value(v: number) {\r\n let changed: boolean = true;\r\n if (v == this._value) return;\r\n if (v >= this.minimum && v <= this.maximum) {\r\n this._value = v;\r\n } else if (v > this.maximum) {\r\n if (this.autoReset) {\r\n this._value = this.minimum;\r\n if (this.mode == \"determinate\") {\r\n this.progressReset.emit();\r\n }\r\n } else {\r\n this._value = this.maximum;\r\n }\r\n } else if (v < this.minimum) {\r\n this._value = this.minimum;\r\n } else {\r\n changed = false;\r\n }\r\n if (changed) {\r\n if (this.mode == \"determinate\") {\r\n this._valueUpdated = true;\r\n const event = this._createProgressEvent();\r\n this.progressChange.emit( event );\r\n }\r\n this.markForCheck();\r\n }\r\n }\r\n private _value: number = MIN_VALUE;\r\n\r\n /** Progress minimum value. Default is 0. */\r\n @Input({transform: numberAttribute})\r\n get minimum(): number {return this._minimum;}\r\n set minimum(value: number) {\r\n if (value >= MIN_VALUE) {\r\n this._minimum = Math.min(Math.max(value, MIN_VALUE), this.maximum);\r\n if (this.value < this._minimum) {\r\n // Correct the current value\r\n this.value = this._minimum;\r\n }\r\n }\r\n }\r\n private _minimum: number = MIN_VALUE;\r\n\r\n /** Progress maximum value. Default is 100. */\r\n @Input({transform: numberAttribute})\r\n get maximum(): number {return this._maximum;}\r\n set maximum(value: number) {\r\n if (value >= MIN_VALUE) {\r\n this._maximum = Math.max(value, this.minimum);\r\n if (this.value > this._maximum) {\r\n this.value = this._maximum;\r\n }\r\n }\r\n }\r\n private _maximum: number = MAX_VALUE;\r\n\r\n /** Progress step value. Default is 10. */\r\n @Input({transform: numberAttribute})\r\n get step(): number {return this._step;}\r\n set step(value: number) {\r\n this._step = Math.max( Math.min(value, this.maximum - this.minimum), 1);\r\n }\r\n private _step: number = 10;\r\n\r\n /** Whether the minimum progress value be automatically set when the maximum value is reached. */\r\n @Input({transform: booleanAttribute}) autoReset: boolean = false;\r\n\r\n /** Whether the component should display the current percentage or message label above the progress. */\r\n @Input({transform: booleanAttribute}) showLabel: boolean = false;\r\n\r\n /** Whether to apply a stripe via CSS gradient over the progress bar’s background color. */\r\n @Input({transform: booleanAttribute}) striped: boolean = false;\r\n\r\n /** Whether the striped gradient should be animated. */\r\n @Input({transform: booleanAttribute}) stripedAnimated: boolean = false;\r\n\r\n /** Messages that are used as progress labels. */\r\n @Input() messages: string[] | undefined;\r\n\r\n /** Message labels colors. The number of items may differ from `messages` array size. */\r\n @Input() messageColors: ThemeColor[] | undefined;\r\n\r\n /** Bar's height for horizontal progress and width for vertical one. The changing this value is ignored if the progress bar is contained in the `cute-progress-bar-stack`. */\r\n @Input()\r\n get thickness(): string|undefined { return this.progressStacked?.thickness ?? this._thickness ?? DEFAULT_THICKNESS; }\r\n set thickness(value: string|undefined) { this._thickness = value;}\r\n private _thickness: string | undefined;\r\n\r\n /** Whether the progress bar should be vertical. The changing this value is ignored if the progress bar is contained in the `cute-progress-bar-stack`. */\r\n @Input({transform: booleanAttribute})\r\n get vertical(): boolean { return this.progressStacked?.vertical ?? this._vertical;}\r\n set vertical(value: boolean) { this._vertical = value; }\r\n private _vertical: boolean = false;\r\n\r\n /** Event emitted when the progress value has been changed. */\r\n @Output() readonly progressChange = new EventEmitter<CuteProgressEvent>();\r\n\r\n /** Event emitted when the progress value has been auto reset to the `minimum` value. */\r\n @Output() readonly progressReset = new EventEmitter<void>();\r\n\r\n constructor() {\r\n super();\r\n\r\n const defaults = inject<CuteProgressBarDefaultOptions>(CUTE_PROGRESS_BAR_DEFAULT_OPTIONS, {\r\n optional: true,\r\n });\r\n\r\n if (defaults) {\r\n if (defaults.color) {\r\n this.color = this.defaultColor = defaults.color;\r\n }\r\n\r\n this.mode = defaults.mode || this.mode;\r\n }\r\n\r\n }\r\n\r\n private _createProgressEvent(): CuteProgressEvent {\r\n return {value: this.value, complete: this.value===this.maximum, sender: this};\r\n }\r\n\r\n protected generateId(): string {\r\n return `cute-progress-bar-${nextId++}`;\r\n }\r\n\r\n protected isStackMember(): boolean {\r\n return this.progressStacked != null;\r\n }\r\n\r\n protected getMessageIndex(): number {\r\n if (this.messages && this.messages.length > 0) {\r\n return Math.floor( this.value / (this.maximum - this.minimum) * this.messages.length);\r\n }\r\n return -1;\r\n }\r\n\r\n /** Returns the current completion percentage. */\r\n getPercent(): number {\r\n if (this.mode==\"determinate\") {\r\n return Math.round((this.value - this.minimum) / (this.maximum - this.minimum) * 100);\r\n }\r\n return 100;\r\n }\r\n\r\n /** Retrieves the progressbar calculated label. */\r\n getLabel(): string {\r\n const index = this.getMessageIndex();\r\n if (index >= 0) {\r\n return this.messages![index];\r\n }\r\n return `${this.getPercent()}%`;\r\n }\r\n\r\n /** Returns the progressbar label color */\r\n getLabelColor(): string | null {\r\n if (this.messageColors && this.messageColors.length > 0) {\r\n const index = this.getMessageIndex();\r\n if (index >= 0) {\r\n const colorIndex = Math.floor(index / this.messages!.length * this.messageColors.length);\r\n return this.messageColors[colorIndex];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Increments/decrements progress value.\r\n * @param nStep Step to increment/decrement the current progress value. Default is the component's {@link step} value.\r\n */\r\n increment(nStep?: number) {\r\n this.value += nStep ?? this.step;\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n if ( !this._valueUpdated ) {\r\n // Sending the current value to the realm\r\n this.progressChange.emit( this._createProgressEvent() );\r\n }\r\n }\r\n\r\n}\r\n","@let stacked = isStackMember();\r\n\r\n@if (stacked) {\r\n <div class=\"progress\"\r\n role=\"progressbar\"\r\n [style.width.%]=\"!vertical ? getPercent() : undefined\"\r\n [style.height.%]=\"vertical ? getPercent() : undefined\"\r\n [style.height]=\"(!vertical && thickness) || undefined\"\r\n [attr.aria-label]=\"(messages ? getLabel() : ariaLabel) || null\"\r\n [attr.aria-valuenow]=\"value\"\r\n [attr.aria-valuemin]=\"minimum ?? 0\"\r\n [attr.aria-valuemax]=\"maximum ?? 100\"\r\n >\r\n <div class=\"progress-bar\"\r\n [style.height.%]=\"vertical ? 100 : undefined\"\r\n [class]='color ? \"text-bg-\"+color : \"\"'\r\n [class.progress-bar-striped]=\"striped || stripedAnimated || mode=='indeterminate'\"\r\n [class.progress-bar-animated]=\"stripedAnimated || mode=='indeterminate'\">\r\n @if (showLabel) {\r\n @let labelColor = getLabelColor();\r\n <span class=\"text-truncate\"\r\n [class.vertical-text]=\"vertical\"\r\n [class.horizontal-text]=\"!vertical\"\r\n [class]=\"labelColor ? 'text-'+labelColor : null\">\r\n {{getLabel()}}\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n} @else {\r\n <!-- Standalone progress bar -->\r\n <div class=\"progress\"\r\n role=\"progressbar\"\r\n [style.height]=\"(!vertical && thickness) || null\"\r\n [attr.aria-label]=\"(messages ? getLabel() : ariaLabel) || null\"\r\n [attr.aria-valuenow]=\"value\"\r\n [attr.aria-valuemin]=\"minimum ?? 0\"\r\n [attr.aria-valuemax]=\"maximum ?? 100\"\r\n >\r\n <div class=\"progress-bar\"\r\n [style.width.%]=\"!vertical ? getPercent() : undefined\"\r\n [style.height.%]=\"vertical ? getPercent() : undefined\"\r\n [class]='color ? \"text-bg-\"+color : \"\"'\r\n [class.progress-bar-striped]=\"striped || stripedAnimated || mode=='indeterminate'\"\r\n [class.progress-bar-animated]=\"stripedAnimated || mode=='indeterminate'\">\r\n @if (showLabel) {\r\n @let labelColor = getLabelColor();\r\n <span class=\"text-truncate\"\r\n [class.vertical-text]=\"vertical\"\r\n [class.horizontal-text]=\"!vertical\"\r\n [class]=\"labelColor ? 'text-'+labelColor : null\">\r\n {{getLabel()}}\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n}\r\n\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CuteProgressBar} from \"./progress-bar.component\";\r\nimport {CuteProgressStacked} from \"./progress-stacked.component\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteProgressBar,\r\n CuteProgressStacked,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n})\r\nexport class CuteProgressBarModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["DEFAULT_THICKNESS"],"mappings":"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"}
|