@bravura/ui 9.0.0 → 9.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 +10 -7
- package/README.md +60 -60
- package/fesm2022/bravura-ui-discrete-input.mjs.map +1 -1
- package/fesm2022/bravura-ui-file-upload.mjs.map +1 -1
- package/fesm2022/bravura-ui-radio-panel.mjs.map +1 -1
- package/fesm2022/bravura-ui-skeletons.mjs.map +1 -1
- package/fesm2022/bravura-ui-stepper.mjs.map +1 -1
- package/fesm2022/bravura-ui-tooltip.mjs +13 -4
- package/fesm2022/bravura-ui-tooltip.mjs.map +1 -1
- package/package.json +1 -1
- package/types/bravura-ui-tooltip.d.ts +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
# Change history
|
|
2
2
|
|
|
3
|
-
## 9.0.
|
|
3
|
+
## <small>9.0.1 (2026-07-10)</small>
|
|
4
4
|
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
### BREAKING CHANGE
|
|
9
|
-
|
|
10
|
-
* upgraded Angular & Storybook
|
|
5
|
+
* fix(tootip): fix html content ([fa8b42c](https://scm.bravurasolutions.net/projects/DIGI/repos/ui-components/commits/fa8b42c))
|
|
11
6
|
|
|
7
|
+
## 9.0.0 (2026-07-09)
|
|
8
|
+
|
|
9
|
+
- build: upgrade Angular to 22 ([2091646](https://scm.bravurasolutions.net/projects/DIGI/repos/ui-components/commits/2091646))
|
|
10
|
+
|
|
11
|
+
### BREAKING CHANGE
|
|
12
|
+
|
|
13
|
+
- upgraded Angular & Storybook
|
|
14
|
+
|
|
12
15
|
## <small>8.0.3 (2026-01-08)</small>
|
|
13
16
|
|
|
14
17
|
- fix: peer dependencies ([0b90169](https://scm.bravurasolutions.net/projects/DIGI/repos/ui-components/commits/0b90169))
|
package/README.md
CHANGED
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
# Bravura UI Components for Angular applications
|
|
2
|
-
|
|
3
|
-
This package contains a set of UI components built on top of [Angular Material library and Component Development Kit](https://material.angular.io/). It supplements Angular Material in implementing Bravura UX Design System, which is an extension of the latest [Material Design Specification](https://material.io/design).
|
|
4
|
-
|
|
5
|
-
[Storybook on Chromatic](https://master--66d58f6d169fef41a850c874.chromatic.com)
|
|
6
|
-
|
|
7
|
-
## Angular version compatibility
|
|
8
|
-
|
|
9
|
-
| BUI versions | Compatible Angular versions |
|
|
10
|
-
| ------------ | --------------------------- |
|
|
11
|
-
| ^9.0.0 | 22 |
|
|
12
|
-
| ^8.0.0 | 21 |
|
|
13
|
-
| ^7.0.0 | 20 |
|
|
14
|
-
| ^6.0.0 | 19 |
|
|
15
|
-
| ^5.0.0 | 18 |
|
|
16
|
-
| ^4.0.0 | 17 |
|
|
17
|
-
| ^3.0.0 | 15, 16 |
|
|
18
|
-
| ^2.0.0 | 14 |
|
|
19
|
-
| ^1.15.x | 12, 13 |
|
|
20
|
-
| 1 .. 1.14.x | 12 |
|
|
21
|
-
|
|
22
|
-
### MDC-based releases
|
|
23
|
-
|
|
24
|
-
From version 3.0 onward, the package `@bravura/ui` is only compatible with `@angular/components` 15.1 and up, which is based on the Offical Material Design Components for web. Please refer to [this document](https://material.angular.io/guide/mdc-migration) for more information.
|
|
25
|
-
|
|
26
|
-
To continue to use `@bravura/ui` at the latest version in your Angular projects, you must upgrade both Angular and Angular Material packages to version 15 or later. You must also you run the migration tool to switch from the legacy component implementations to the new MDC-based ones. The legacy components from `@angular/components` are no longer supported.
|
|
27
|
-
|
|
28
|
-
## Setup
|
|
29
|
-
|
|
30
|
-
Install the package in your Angular project by using one of the commands below, according to the package manager chosen.
|
|
31
|
-
|
|
32
|
-
NPM:
|
|
33
|
-
|
|
34
|
-
```
|
|
35
|
-
npm install --save @bravura/ui
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
Yarn:
|
|
39
|
-
|
|
40
|
-
```
|
|
41
|
-
yarn add @bravura/ui
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Import the `NgModule` from one of the sub-packages where the component is provided. For example:
|
|
45
|
-
|
|
46
|
-
```typescript
|
|
47
|
-
@import {RadioPanelModule} from '@bravura/ui/radio-panel'
|
|
48
|
-
@NgModule({
|
|
49
|
-
declarations: [MyComponent],
|
|
50
|
-
imports: [RadioPanelModule]
|
|
51
|
-
})
|
|
52
|
-
export class MyModule {}
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## Theming
|
|
57
|
-
|
|
58
|
-
To incorporate components' theming with Angular Material, you need to configure a custom theme, following the [theming guide on the Angular Material document site](https://material.angular.io/guide/theming#custom-themes-with-sass). In the global style SASS partial where the Material theme is configured, add the BUI theme mixin reference to activate theming.
|
|
59
|
-
|
|
60
|
-
You may also need to include the CSS of custom font definitions for [Material Icon Font](https://fonts.google.com/icons) into the global stylesheets.
|
|
1
|
+
# Bravura UI Components for Angular applications
|
|
2
|
+
|
|
3
|
+
This package contains a set of UI components built on top of [Angular Material library and Component Development Kit](https://material.angular.io/). It supplements Angular Material in implementing Bravura UX Design System, which is an extension of the latest [Material Design Specification](https://material.io/design).
|
|
4
|
+
|
|
5
|
+
[Storybook on Chromatic](https://master--66d58f6d169fef41a850c874.chromatic.com)
|
|
6
|
+
|
|
7
|
+
## Angular version compatibility
|
|
8
|
+
|
|
9
|
+
| BUI versions | Compatible Angular versions |
|
|
10
|
+
| ------------ | --------------------------- |
|
|
11
|
+
| ^9.0.0 | 22 |
|
|
12
|
+
| ^8.0.0 | 21 |
|
|
13
|
+
| ^7.0.0 | 20 |
|
|
14
|
+
| ^6.0.0 | 19 |
|
|
15
|
+
| ^5.0.0 | 18 |
|
|
16
|
+
| ^4.0.0 | 17 |
|
|
17
|
+
| ^3.0.0 | 15, 16 |
|
|
18
|
+
| ^2.0.0 | 14 |
|
|
19
|
+
| ^1.15.x | 12, 13 |
|
|
20
|
+
| 1 .. 1.14.x | 12 |
|
|
21
|
+
|
|
22
|
+
### MDC-based releases
|
|
23
|
+
|
|
24
|
+
From version 3.0 onward, the package `@bravura/ui` is only compatible with `@angular/components` 15.1 and up, which is based on the Offical Material Design Components for web. Please refer to [this document](https://material.angular.io/guide/mdc-migration) for more information.
|
|
25
|
+
|
|
26
|
+
To continue to use `@bravura/ui` at the latest version in your Angular projects, you must upgrade both Angular and Angular Material packages to version 15 or later. You must also you run the migration tool to switch from the legacy component implementations to the new MDC-based ones. The legacy components from `@angular/components` are no longer supported.
|
|
27
|
+
|
|
28
|
+
## Setup
|
|
29
|
+
|
|
30
|
+
Install the package in your Angular project by using one of the commands below, according to the package manager chosen.
|
|
31
|
+
|
|
32
|
+
NPM:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
npm install --save @bravura/ui
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Yarn:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
yarn add @bravura/ui
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Import the `NgModule` from one of the sub-packages where the component is provided. For example:
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
@import {RadioPanelModule} from '@bravura/ui/radio-panel'
|
|
48
|
+
@NgModule({
|
|
49
|
+
declarations: [MyComponent],
|
|
50
|
+
imports: [RadioPanelModule]
|
|
51
|
+
})
|
|
52
|
+
export class MyModule {}
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Theming
|
|
57
|
+
|
|
58
|
+
To incorporate components' theming with Angular Material, you need to configure a custom theme, following the [theming guide on the Angular Material document site](https://material.angular.io/guide/theming#custom-themes-with-sass). In the global style SASS partial where the Material theme is configured, add the BUI theme mixin reference to activate theming.
|
|
59
|
+
|
|
60
|
+
You may also need to include the CSS of custom font definitions for [Material Icon Font](https://fonts.google.com/icons) into the global stylesheets.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravura-ui-discrete-input.mjs","sources":["../../../projects/ui/discrete-input/discrete-input.component.ts","../../../projects/ui/discrete-input/discrete-input.component.html","../../../projects/ui/discrete-input/discrete-input.module.ts","../../../projects/ui/discrete-input/bravura-ui-discrete-input.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n\tComponent,\n\tElementRef,\n\tInject,\n\tInput,\n\tOnDestroy,\n\tOptional,\n\tQueryList,\n\tSelf,\n\tViewChildren,\n\tChangeDetectionStrategy\n} from '@angular/core';\nimport {\n\tAbstractControl,\n\tControlValueAccessor,\n\tFormGroupDirective,\n\tNgControl,\n\tNgForm,\n\tUntypedFormArray,\n\tUntypedFormControl,\n\tUntypedFormGroup,\n\tValidators\n} from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MAT_FORM_FIELD, MatFormField, MatFormFieldControl } from '@angular/material/form-field';\nimport { Subject } from 'rxjs';\n\n/**\n * Custom `MatFormFieldControl` with an individual input box for each character, suitable for fixed-length fields,\n * such as secondary PIN inputs, TFNs, or BSB code etc.\n *\n * Accessibility features are not yet fully implemented.\n *\n * Example:\n *\n * ```html\n * <mat-form-field>\n * <bui-discrete-input></bui-discrete-input>\n * </mat-form-field>\n * ```\n *\n */\n@Component({\n\tselector: 'bui-discrete-input',\n\ttemplateUrl: 'discrete-input.component.html',\n\tstyleUrls: ['discrete-input.component.scss'],\n\tproviders: [{ provide: MatFormFieldControl, useExisting: DiscreteInputComponent }],\n\thost: {\n\t\tclass: 'bui-discrete-input bui-host'\n\t},\n\tchangeDetection: ChangeDetectionStrategy.Eager,\n\tstandalone: false\n})\nexport class DiscreteInputComponent implements MatFormFieldControl<string>, ControlValueAccessor, OnDestroy {\n\t/** @ignore */\n\tstatic nextId = 0;\n\n\t/** @ignore */\n\tstatic ngAcceptInputType_disabled: boolean | string | null | undefined;\n\t/** @ignore */\n\tstatic ngAcceptInputType_required: boolean | string | null | undefined;\n\n\t/** @ignore */ parts: UntypedFormArray;\n\t/** @ignore */ group: UntypedFormGroup;\n\t/** Emits whenever the component state changes. */\n\tstateChanges = new Subject<void>();\n\t/** Whether the control is focused. */\n\tfocused: boolean;\n\n\t/** The type of input boxes */\n\t@Input()\n\ttype: 'text' | 'number' | 'password' = 'text';\n\n\t/** Input boxes are separated in groups. This specifies the characters displayed between two groups. */\n\t@Input()\n\tseparator = ' ';\n\n\t/**\n\t * A list of characters accepted in the inputs, for example `0-9`, `a-zA-Z0-9`\n\t * @example '0-9'\n\t */\n\t@Input()\n\taccept?: string;\n\n\t/** @ignore */ id = `bui-discrete-input-${DiscreteInputComponent.nextId++}`;\n\n\t/** Value of aria-describedby that should be merged with the described-by ids which are set by the form-field. */\n\t@Input('aria-describedby') userAriaDescribedBy?: string;\n\n\t@ViewChildren('part', { read: ElementRef }) private inputParts!: QueryList<ElementRef<HTMLInputElement>>;\n\n\t/**@ignore */\n\t_formField: MatFormField;\n\n\t/**@ignore */\n\tngControl: NgControl;\n\n\t@Input()\n\tautocomplete?: string = 'off';\n\n\tprivate _sizeSpec: number[] = [];\n\n\tprivate _required = false;\n\n\tprivate _placeholder?: string;\n\tprivate _disabled = false;\n\tprivate _separatorPos: number[] = [];\n\n\t/** @ignore */ onChange = (_: any) => {};\n\t/** @ignore */ onTouched = () => {};\n\n\t/** @ignore */\n\tget shouldLabelFloat() {\n\t\treturn true;\n\t}\n\n\t/** @ignore */\n\tget empty() {\n\t\treturn this.parts.controls.every(c => !c.value);\n\t}\n\n\t/**\n\t * Defines the length and grouping of the input.\n\t * @default [2, 2, 2]\n\t */\n\t@Input()\n\tget sizeSpec(): number[] {\n\t\treturn this._sizeSpec;\n\t}\n\tset sizeSpec(spec: number[]) {\n\t\tlet size = 0;\n\t\tthis._separatorPos = [];\n\t\tspec.forEach((n, i) => {\n\t\t\tsize += n;\n\t\t\tif (i < spec.length - 1) {\n\t\t\t\tthis._separatorPos.push(size);\n\t\t\t}\n\t\t});\n\t\tif (size !== this.parts.length) {\n\t\t\tconst v = this.value;\n\t\t\tthis.parts.clear({ emitEvent: false });\n\t\t\tfor (let i = 0; i < size; i++) {\n\t\t\t\tthis.parts.setControl(\n\t\t\t\t\ti,\n\t\t\t\t\tnew UntypedFormControl(null, [Validators.required, Validators.minLength(1), Validators.maxLength(1)])\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.value = v;\n\t\t\tthis._sizeSpec = spec;\n\t\t}\n\t}\n\n\t/** The placeholder for this control. */\n\t@Input()\n\tget placeholder(): string {\n\t\treturn this._placeholder!;\n\t}\n\tset placeholder(value: string) {\n\t\tthis._placeholder = value;\n\t\tthis.stateChanges.next();\n\t}\n\n\t/** Whether the control is required. */\n\t@Input()\n\tget required(): boolean {\n\t\treturn this._required;\n\t}\n\tset required(value: boolean) {\n\t\tthis._required = coerceBooleanProperty(value);\n\t\tthis.stateChanges.next();\n\t}\n\n\t/** Whether the control is disabled. */\n\t@Input()\n\tget disabled(): boolean {\n\t\treturn this._disabled;\n\t}\n\tset disabled(value: boolean) {\n\t\tthis._disabled = coerceBooleanProperty(value);\n\t\tthis._disabled ? this.parts.disable() : this.parts.enable();\n\t\tthis.stateChanges.next();\n\t}\n\n\t/** The value of the control. */\n\t@Input()\n\tget value(): string {\n\t\treturn this.parts.controls\n\t\t\t.map(c => c.value)\n\t\t\t.filter(c => c)\n\t\t\t.join('');\n\t}\n\tset value(v: string) {\n\t\tv = v || '';\n\t\tfor (let i = 0; i < this.parts.controls.length; i++) {\n\t\t\tthis.parts.controls[i]?.setValue(v[i]);\n\t\t}\n\t\tthis.stateChanges.next();\n\t}\n\n\t/** @ignore */\n\tget _colorSuffix(): string {\n\t\treturn this.errorState ? 'warn' : this._formField?.color || 'primary';\n\t}\n\n\tconstructor(\n\t\tprivate _focusMonitor: FocusMonitor,\n\t\tprivate _elementRef: ElementRef<HTMLElement>,\n\t\t@Optional() @Inject(MAT_FORM_FIELD) formField: MatFormField,\n\t\t@Optional() @Self() control: NgControl,\n\t\t@Optional() _parentForm: NgForm,\n\t\t@Optional() _parentFormGroup: FormGroupDirective,\n\t\t_defaultErrorStateMatcher: ErrorStateMatcher\n\t) {\n\t\tthis.parts = new UntypedFormArray([]);\n\t\tthis.group = new UntypedFormGroup({ parts: this.parts });\n\t\tthis.sizeSpec = [2, 2, 2];\n\t\tthis._formField = formField;\n\t\tthis.focused = false;\n\t\tthis.stateChanges = new Subject<void>();\n\n\t\tthis.ngControl = control;\n\t\tif (this.ngControl != null) {\n\t\t\tthis.ngControl.valueAccessor = this;\n\t\t}\n\n\t\tthis._focusMonitor.monitor(this._elementRef, true).subscribe(origin => {\n\t\t\tif (this.focused && !origin) {\n\t\t\t\tthis.onTouched();\n\t\t\t}\n\t\t\tthis.focused = !!origin;\n\t\t\tthis.stateChanges.next();\n\t\t});\n\t}\n\n\t/** @ignore */ errorState = false;\n\t/** @ignore */ controlType?: string | undefined;\n\t/** @ignore */ autofilled?: boolean | undefined;\n\n\t/** @ignore */\n\tngOnDestroy() {\n\t\tthis.stateChanges.complete();\n\t\tthis._focusMonitor.stopMonitoring(this._elementRef);\n\t}\n\n\t/** @ignore */\n\tsetDescribedByIds(ids: string[]) {\n\t\tconst controlElement = this._elementRef.nativeElement.querySelector('.bui-discrete-input-container');\n\t\tcontrolElement!.setAttribute('aria-describedby', ids.join(' '));\n\t}\n\n\t/** @ignore */\n\tonContainerClick() {\n\t\tconst l = this.parts.controls.length;\n\t\tfor (let i = 0; i < l; i++) {\n\t\t\tif (this.parts.controls[i].invalid || i === l - 1) {\n\t\t\t\tthis._focusMonitor.focusVia(this.inputParts.get(i)!, 'program');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @ignore */\n\twriteValue(v: string): void {\n\t\tthis.value = v;\n\t}\n\n\t/** @ignore */\n\tregisterOnChange(fn: any): void {\n\t\tthis.onChange = fn;\n\t}\n\n\t/** @ignore */\n\tregisterOnTouched(fn: any): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\t/** @ignore */\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.disabled = isDisabled;\n\t}\n\n\t/** @ignore */\n\t_handleInput(control: AbstractControl, index: number, event: Event): void {\n\t\tlet v = control.value && control.value[0];\n\t\tconst rawValue = (event.target as HTMLInputElement).value;\n\t\tif (rawValue.length > 1) {\n\t\t\tthis._replaceText(rawValue, event);\n\t\t\treturn;\n\t\t}\n\t\tcontrol.setValue(v);\n\t\tconst nextElement = this.inputParts.get(index + 1);\n\t\tif (!control.errors && nextElement) {\n\t\t\tthis._focusPart(nextElement);\n\t\t}\n\n\t\tthis.onChange(this.value);\n\t}\n\n\t/** @ignore */\n\t_handleBeforeInput(index: number, event: InputEvent): void {\n\t\tconst v = event.data;\n\t\tif (this.accept && v && !new RegExp(`[${this.accept}]`).test(v)) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn;\n\t\t}\n\t\tconst inp = this.inputParts.get(index)!.nativeElement;\n\t\tif (v && inp.value) {\n\t\t\tinp.value = '';\n\t\t}\n\t}\n\n\t/** @ignore */\n\t_focusPart(elemRef: ElementRef<HTMLInputElement>) {\n\t\tthis._focusMonitor.focusVia(elemRef, 'program');\n\t}\n\n\t/** @ignore */\n\t_consumeKey(event: Event) {\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n\n\t/** @ignore */\n\t_leftArrow(index: number, event: Event) {\n\t\tthis._consumeKey(event);\n\t\tconst prevElement = this.inputParts.get(index - 1);\n\t\tif (prevElement) {\n\t\t\tthis._focusPart(prevElement);\n\t\t}\n\t}\n\n\t/** @ignore */\n\t_rightArrow(index: number, event: Event) {\n\t\tthis._consumeKey(event);\n\t\tconst nextElement = this.inputParts.get(index + 1);\n\t\tif (nextElement) {\n\t\t\tthis._focusPart(nextElement);\n\t\t}\n\t}\n\n\t/** @ignore */\n\t_handleBackspace(control: AbstractControl, index: number): void {\n\t\tconst prevElement = index && this.inputParts.get(index - 1);\n\t\tif (!control.value && prevElement) {\n\t\t\tthis._focusMonitor.focusVia(prevElement, 'program');\n\t\t} else if (control.value) {\n\t\t\tcontrol.setValue('');\n\t\t\tthis.onChange(this.value);\n\t\t}\n\t}\n\n\t/** @ignore */\n\t_onPaste(event: ClipboardEvent) {\n\t\tlet text = event.clipboardData?.getData('text');\n\t\tthis._replaceText(text, event);\n\t}\n\n\t/** @ignore */\n\t_separatorRequired(index: number) {\n\t\treturn this._separatorPos.includes(index + 1);\n\t}\n\n\t/** @ignore */\n\t_placeholderAt(index: number) {\n\t\treturn this._placeholder && this._placeholder[index];\n\t}\n\n\tprivate _replaceText(text: string | undefined, event: Event) {\n\t\tif (text) {\n\t\t\tif (this.accept) {\n\t\t\t\ttext = text.replace(new RegExp(`[^${this.accept}]`, 'gi'), '');\n\t\t\t}\n\t\t\tthis.value = text;\n\t\t\tthis.onChange(this.value);\n\t\t}\n\n\t\tevent.preventDefault();\n\t\tthis.onContainerClick();\n\t}\n}\n","<div\n\trole=\"group\"\n\tclass=\"bui-discrete-input-container\"\n\t[formGroup]=\"group\"\n\t[attr.aria-labelledby]=\"_formField?.getLabelId()\"\n>\n\t<ng-container [formArrayName]=\"'parts'\">\n\t\t@for (p of parts.controls; track p; let i = $index) {\n\t\t\t<input\n\t\t\t\tclass=\"bui-discrete-input-element bui-outline-{{ _colorSuffix }}\"\n\t\t\t\t[formControlName]=\"i\"\n\t\t\t\t[attr.aria-label]=\"'character ' + (i + 1)\"\n\t\t\t\t(input)=\"_handleInput(p, i, $event)\"\n\t\t\t\t(beforeinput)=\"_handleBeforeInput(i, $event)\"\n\t\t\t\t(keydown.backspace)=\"_handleBackspace(p, i)\"\n\t\t\t\t(keydown.arrowup)=\"_consumeKey($event)\"\n\t\t\t\t(keydown.arrowdown)=\"_consumeKey($event)\"\n\t\t\t\t(keydown.arrowleft)=\"_leftArrow(i, $event)\"\n\t\t\t\t(keydown.arrowright)=\"_rightArrow(i, $event)\"\n\t\t\t\t[attr.placeholder]=\"_placeholderAt(i)\"\n\t\t\t\t#part\n\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t(paste)=\"_onPaste($event)\"\n\t\t\t\t[type]=\"['text', 'number', 'password'].includes(type) ? type : 'text'\"\n\t\t\t\t[attr.inputmode]=\"type === 'number' ? 'decimal' : undefined\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t/>\n\t\t\t@if (_separatorRequired(i)) {\n\t\t\t\t<span class=\"bui-discrete-input-spacer\">{{ separator }}</span>\n\t\t\t}\n\t\t}\n\t</ng-container>\n</div>\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DiscreteInputComponent } from './discrete-input.component';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\n\r\n@NgModule({\r\n\tdeclarations: [DiscreteInputComponent],\r\n\timports: [CommonModule, MatFormFieldModule, ReactiveFormsModule, A11yModule],\r\n\texports: [DiscreteInputComponent]\r\n})\r\nexport class DiscreteInputModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bravura-ui-discrete-input.mjs","sources":["../../../projects/ui/discrete-input/discrete-input.component.ts","../../../projects/ui/discrete-input/discrete-input.component.html","../../../projects/ui/discrete-input/discrete-input.module.ts","../../../projects/ui/discrete-input/bravura-ui-discrete-input.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport {\r\n\tComponent,\r\n\tElementRef,\r\n\tInject,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOptional,\r\n\tQueryList,\r\n\tSelf,\r\n\tViewChildren,\r\n\tChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport {\r\n\tAbstractControl,\r\n\tControlValueAccessor,\r\n\tFormGroupDirective,\r\n\tNgControl,\r\n\tNgForm,\r\n\tUntypedFormArray,\r\n\tUntypedFormControl,\r\n\tUntypedFormGroup,\r\n\tValidators\r\n} from '@angular/forms';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { MAT_FORM_FIELD, MatFormField, MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Subject } from 'rxjs';\r\n\r\n/**\r\n * Custom `MatFormFieldControl` with an individual input box for each character, suitable for fixed-length fields,\r\n * such as secondary PIN inputs, TFNs, or BSB code etc.\r\n *\r\n * Accessibility features are not yet fully implemented.\r\n *\r\n * Example:\r\n *\r\n * ```html\r\n * <mat-form-field>\r\n * <bui-discrete-input></bui-discrete-input>\r\n * </mat-form-field>\r\n * ```\r\n *\r\n */\r\n@Component({\r\n\tselector: 'bui-discrete-input',\r\n\ttemplateUrl: 'discrete-input.component.html',\r\n\tstyleUrls: ['discrete-input.component.scss'],\r\n\tproviders: [{ provide: MatFormFieldControl, useExisting: DiscreteInputComponent }],\r\n\thost: {\r\n\t\tclass: 'bui-discrete-input bui-host'\r\n\t},\r\n\tchangeDetection: ChangeDetectionStrategy.Eager,\r\n\tstandalone: false\r\n})\r\nexport class DiscreteInputComponent implements MatFormFieldControl<string>, ControlValueAccessor, OnDestroy {\r\n\t/** @ignore */\r\n\tstatic nextId = 0;\r\n\r\n\t/** @ignore */\r\n\tstatic ngAcceptInputType_disabled: boolean | string | null | undefined;\r\n\t/** @ignore */\r\n\tstatic ngAcceptInputType_required: boolean | string | null | undefined;\r\n\r\n\t/** @ignore */ parts: UntypedFormArray;\r\n\t/** @ignore */ group: UntypedFormGroup;\r\n\t/** Emits whenever the component state changes. */\r\n\tstateChanges = new Subject<void>();\r\n\t/** Whether the control is focused. */\r\n\tfocused: boolean;\r\n\r\n\t/** The type of input boxes */\r\n\t@Input()\r\n\ttype: 'text' | 'number' | 'password' = 'text';\r\n\r\n\t/** Input boxes are separated in groups. This specifies the characters displayed between two groups. */\r\n\t@Input()\r\n\tseparator = ' ';\r\n\r\n\t/**\r\n\t * A list of characters accepted in the inputs, for example `0-9`, `a-zA-Z0-9`\r\n\t * @example '0-9'\r\n\t */\r\n\t@Input()\r\n\taccept?: string;\r\n\r\n\t/** @ignore */ id = `bui-discrete-input-${DiscreteInputComponent.nextId++}`;\r\n\r\n\t/** Value of aria-describedby that should be merged with the described-by ids which are set by the form-field. */\r\n\t@Input('aria-describedby') userAriaDescribedBy?: string;\r\n\r\n\t@ViewChildren('part', { read: ElementRef }) private inputParts!: QueryList<ElementRef<HTMLInputElement>>;\r\n\r\n\t/**@ignore */\r\n\t_formField: MatFormField;\r\n\r\n\t/**@ignore */\r\n\tngControl: NgControl;\r\n\r\n\t@Input()\r\n\tautocomplete?: string = 'off';\r\n\r\n\tprivate _sizeSpec: number[] = [];\r\n\r\n\tprivate _required = false;\r\n\r\n\tprivate _placeholder?: string;\r\n\tprivate _disabled = false;\r\n\tprivate _separatorPos: number[] = [];\r\n\r\n\t/** @ignore */ onChange = (_: any) => {};\r\n\t/** @ignore */ onTouched = () => {};\r\n\r\n\t/** @ignore */\r\n\tget shouldLabelFloat() {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tget empty() {\r\n\t\treturn this.parts.controls.every(c => !c.value);\r\n\t}\r\n\r\n\t/**\r\n\t * Defines the length and grouping of the input.\r\n\t * @default [2, 2, 2]\r\n\t */\r\n\t@Input()\r\n\tget sizeSpec(): number[] {\r\n\t\treturn this._sizeSpec;\r\n\t}\r\n\tset sizeSpec(spec: number[]) {\r\n\t\tlet size = 0;\r\n\t\tthis._separatorPos = [];\r\n\t\tspec.forEach((n, i) => {\r\n\t\t\tsize += n;\r\n\t\t\tif (i < spec.length - 1) {\r\n\t\t\t\tthis._separatorPos.push(size);\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (size !== this.parts.length) {\r\n\t\t\tconst v = this.value;\r\n\t\t\tthis.parts.clear({ emitEvent: false });\r\n\t\t\tfor (let i = 0; i < size; i++) {\r\n\t\t\t\tthis.parts.setControl(\r\n\t\t\t\t\ti,\r\n\t\t\t\t\tnew UntypedFormControl(null, [Validators.required, Validators.minLength(1), Validators.maxLength(1)])\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tthis.value = v;\r\n\t\t\tthis._sizeSpec = spec;\r\n\t\t}\r\n\t}\r\n\r\n\t/** The placeholder for this control. */\r\n\t@Input()\r\n\tget placeholder(): string {\r\n\t\treturn this._placeholder!;\r\n\t}\r\n\tset placeholder(value: string) {\r\n\t\tthis._placeholder = value;\r\n\t\tthis.stateChanges.next();\r\n\t}\r\n\r\n\t/** Whether the control is required. */\r\n\t@Input()\r\n\tget required(): boolean {\r\n\t\treturn this._required;\r\n\t}\r\n\tset required(value: boolean) {\r\n\t\tthis._required = coerceBooleanProperty(value);\r\n\t\tthis.stateChanges.next();\r\n\t}\r\n\r\n\t/** Whether the control is disabled. */\r\n\t@Input()\r\n\tget disabled(): boolean {\r\n\t\treturn this._disabled;\r\n\t}\r\n\tset disabled(value: boolean) {\r\n\t\tthis._disabled = coerceBooleanProperty(value);\r\n\t\tthis._disabled ? this.parts.disable() : this.parts.enable();\r\n\t\tthis.stateChanges.next();\r\n\t}\r\n\r\n\t/** The value of the control. */\r\n\t@Input()\r\n\tget value(): string {\r\n\t\treturn this.parts.controls\r\n\t\t\t.map(c => c.value)\r\n\t\t\t.filter(c => c)\r\n\t\t\t.join('');\r\n\t}\r\n\tset value(v: string) {\r\n\t\tv = v || '';\r\n\t\tfor (let i = 0; i < this.parts.controls.length; i++) {\r\n\t\t\tthis.parts.controls[i]?.setValue(v[i]);\r\n\t\t}\r\n\t\tthis.stateChanges.next();\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tget _colorSuffix(): string {\r\n\t\treturn this.errorState ? 'warn' : this._formField?.color || 'primary';\r\n\t}\r\n\r\n\tconstructor(\r\n\t\tprivate _focusMonitor: FocusMonitor,\r\n\t\tprivate _elementRef: ElementRef<HTMLElement>,\r\n\t\t@Optional() @Inject(MAT_FORM_FIELD) formField: MatFormField,\r\n\t\t@Optional() @Self() control: NgControl,\r\n\t\t@Optional() _parentForm: NgForm,\r\n\t\t@Optional() _parentFormGroup: FormGroupDirective,\r\n\t\t_defaultErrorStateMatcher: ErrorStateMatcher\r\n\t) {\r\n\t\tthis.parts = new UntypedFormArray([]);\r\n\t\tthis.group = new UntypedFormGroup({ parts: this.parts });\r\n\t\tthis.sizeSpec = [2, 2, 2];\r\n\t\tthis._formField = formField;\r\n\t\tthis.focused = false;\r\n\t\tthis.stateChanges = new Subject<void>();\r\n\r\n\t\tthis.ngControl = control;\r\n\t\tif (this.ngControl != null) {\r\n\t\t\tthis.ngControl.valueAccessor = this;\r\n\t\t}\r\n\r\n\t\tthis._focusMonitor.monitor(this._elementRef, true).subscribe(origin => {\r\n\t\t\tif (this.focused && !origin) {\r\n\t\t\t\tthis.onTouched();\r\n\t\t\t}\r\n\t\t\tthis.focused = !!origin;\r\n\t\t\tthis.stateChanges.next();\r\n\t\t});\r\n\t}\r\n\r\n\t/** @ignore */ errorState = false;\r\n\t/** @ignore */ controlType?: string | undefined;\r\n\t/** @ignore */ autofilled?: boolean | undefined;\r\n\r\n\t/** @ignore */\r\n\tngOnDestroy() {\r\n\t\tthis.stateChanges.complete();\r\n\t\tthis._focusMonitor.stopMonitoring(this._elementRef);\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tsetDescribedByIds(ids: string[]) {\r\n\t\tconst controlElement = this._elementRef.nativeElement.querySelector('.bui-discrete-input-container');\r\n\t\tcontrolElement!.setAttribute('aria-describedby', ids.join(' '));\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tonContainerClick() {\r\n\t\tconst l = this.parts.controls.length;\r\n\t\tfor (let i = 0; i < l; i++) {\r\n\t\t\tif (this.parts.controls[i].invalid || i === l - 1) {\r\n\t\t\t\tthis._focusMonitor.focusVia(this.inputParts.get(i)!, 'program');\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/** @ignore */\r\n\twriteValue(v: string): void {\r\n\t\tthis.value = v;\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tregisterOnChange(fn: any): void {\r\n\t\tthis.onChange = fn;\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tregisterOnTouched(fn: any): void {\r\n\t\tthis.onTouched = fn;\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tsetDisabledState(isDisabled: boolean): void {\r\n\t\tthis.disabled = isDisabled;\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_handleInput(control: AbstractControl, index: number, event: Event): void {\r\n\t\tlet v = control.value && control.value[0];\r\n\t\tconst rawValue = (event.target as HTMLInputElement).value;\r\n\t\tif (rawValue.length > 1) {\r\n\t\t\tthis._replaceText(rawValue, event);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcontrol.setValue(v);\r\n\t\tconst nextElement = this.inputParts.get(index + 1);\r\n\t\tif (!control.errors && nextElement) {\r\n\t\t\tthis._focusPart(nextElement);\r\n\t\t}\r\n\r\n\t\tthis.onChange(this.value);\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_handleBeforeInput(index: number, event: InputEvent): void {\r\n\t\tconst v = event.data;\r\n\t\tif (this.accept && v && !new RegExp(`[${this.accept}]`).test(v)) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tevent.stopPropagation();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst inp = this.inputParts.get(index)!.nativeElement;\r\n\t\tif (v && inp.value) {\r\n\t\t\tinp.value = '';\r\n\t\t}\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_focusPart(elemRef: ElementRef<HTMLInputElement>) {\r\n\t\tthis._focusMonitor.focusVia(elemRef, 'program');\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_consumeKey(event: Event) {\r\n\t\tevent.stopPropagation();\r\n\t\tevent.preventDefault();\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_leftArrow(index: number, event: Event) {\r\n\t\tthis._consumeKey(event);\r\n\t\tconst prevElement = this.inputParts.get(index - 1);\r\n\t\tif (prevElement) {\r\n\t\t\tthis._focusPart(prevElement);\r\n\t\t}\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_rightArrow(index: number, event: Event) {\r\n\t\tthis._consumeKey(event);\r\n\t\tconst nextElement = this.inputParts.get(index + 1);\r\n\t\tif (nextElement) {\r\n\t\t\tthis._focusPart(nextElement);\r\n\t\t}\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_handleBackspace(control: AbstractControl, index: number): void {\r\n\t\tconst prevElement = index && this.inputParts.get(index - 1);\r\n\t\tif (!control.value && prevElement) {\r\n\t\t\tthis._focusMonitor.focusVia(prevElement, 'program');\r\n\t\t} else if (control.value) {\r\n\t\t\tcontrol.setValue('');\r\n\t\t\tthis.onChange(this.value);\r\n\t\t}\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_onPaste(event: ClipboardEvent) {\r\n\t\tlet text = event.clipboardData?.getData('text');\r\n\t\tthis._replaceText(text, event);\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_separatorRequired(index: number) {\r\n\t\treturn this._separatorPos.includes(index + 1);\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_placeholderAt(index: number) {\r\n\t\treturn this._placeholder && this._placeholder[index];\r\n\t}\r\n\r\n\tprivate _replaceText(text: string | undefined, event: Event) {\r\n\t\tif (text) {\r\n\t\t\tif (this.accept) {\r\n\t\t\t\ttext = text.replace(new RegExp(`[^${this.accept}]`, 'gi'), '');\r\n\t\t\t}\r\n\t\t\tthis.value = text;\r\n\t\t\tthis.onChange(this.value);\r\n\t\t}\r\n\r\n\t\tevent.preventDefault();\r\n\t\tthis.onContainerClick();\r\n\t}\r\n}\r\n","<div\n\trole=\"group\"\n\tclass=\"bui-discrete-input-container\"\n\t[formGroup]=\"group\"\n\t[attr.aria-labelledby]=\"_formField?.getLabelId()\"\n>\n\t<ng-container [formArrayName]=\"'parts'\">\n\t\t@for (p of parts.controls; track p; let i = $index) {\n\t\t\t<input\n\t\t\t\tclass=\"bui-discrete-input-element bui-outline-{{ _colorSuffix }}\"\n\t\t\t\t[formControlName]=\"i\"\n\t\t\t\t[attr.aria-label]=\"'character ' + (i + 1)\"\n\t\t\t\t(input)=\"_handleInput(p, i, $event)\"\n\t\t\t\t(beforeinput)=\"_handleBeforeInput(i, $event)\"\n\t\t\t\t(keydown.backspace)=\"_handleBackspace(p, i)\"\n\t\t\t\t(keydown.arrowup)=\"_consumeKey($event)\"\n\t\t\t\t(keydown.arrowdown)=\"_consumeKey($event)\"\n\t\t\t\t(keydown.arrowleft)=\"_leftArrow(i, $event)\"\n\t\t\t\t(keydown.arrowright)=\"_rightArrow(i, $event)\"\n\t\t\t\t[attr.placeholder]=\"_placeholderAt(i)\"\n\t\t\t\t#part\n\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t(paste)=\"_onPaste($event)\"\n\t\t\t\t[type]=\"['text', 'number', 'password'].includes(type) ? type : 'text'\"\n\t\t\t\t[attr.inputmode]=\"type === 'number' ? 'decimal' : undefined\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t/>\n\t\t\t@if (_separatorRequired(i)) {\n\t\t\t\t<span class=\"bui-discrete-input-spacer\">{{ separator }}</span>\n\t\t\t}\n\t\t}\n\t</ng-container>\n</div>\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DiscreteInputComponent } from './discrete-input.component';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\n\r\n@NgModule({\r\n\tdeclarations: [DiscreteInputComponent],\r\n\timports: [CommonModule, MatFormFieldModule, ReactiveFormsModule, A11yModule],\r\n\texports: [DiscreteInputComponent]\r\n})\r\nexport class DiscreteInputModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravura-ui-file-upload.mjs","sources":["../../../projects/ui/file-upload/file-upload.service.ts","../../../projects/ui/file-upload/file-upload.component.ts","../../../projects/ui/file-upload/file-upload.component.html","../../../projects/ui/file-upload/file-upload.module.ts","../../../projects/ui/file-upload/bravura-ui-file-upload.ts"],"sourcesContent":["import { HttpEvent } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n/**\r\n * This type represents a file or form item that has been sent as part of a multipart/form-data POST request.\r\n */\r\nexport class FileUploadItem {\r\n\t/** The original filename in the client's filesystem, as provided by the browser. */\r\n\tname: string;\r\n\r\n\t/** The size of the file item. */\r\n\tsize: number;\r\n\r\n\t/** An alpha-numeric string that uniquely identifies the file item. */\r\n\tid: string;\r\n\r\n\t/** The content type (MIME type) of the file. */\r\n\ttype: string;\r\n\r\n\t/** @internal */\r\n\tconstructor(_id: string, _name: string, _size: number, _type: string) {\r\n\t\tthis.id = _id;\r\n\t\tthis.name = _name;\r\n\t\tthis.size = _size;\r\n\t\tthis.type = _type;\r\n\t}\r\n}\r\n\r\n/**\r\n * This is an API for processing file upload requests.\r\n *\r\n * A sub class of this type handles multiple file requests, sent using multipart/form-data encoding type, as specified by RFC 1867.\r\n *\r\n * Please extend this type and provide it in an injector at the same level, or ancestral to that, of the `FileUploadComponent`.\r\n */\r\n@Injectable()\r\nexport abstract class FileUploadService {\r\n\t/**\r\n\t * Upload a list of selected files from the browser. The returned `Observable` array provides the update of the uploading progress\r\n\t * through HTTP events.\r\n\t */\r\n\tabstract upload(files: File[]): Array<Observable<HttpEvent<FileUploadItem>>>;\r\n\r\n\t/** List all the uploaded file items in the current HTTP session. This list excludes the files still in the process of being uploaded*/\r\n\tabstract list(): Observable<FileUploadItem[]>;\r\n\r\n\t/** Get the content of an uploaded file item as a `Blob`. */\r\n\tabstract get(id: string): Observable<Blob>;\r\n\r\n\t/** Delete an uploaded file item from the server. */\r\n\tabstract delete(id: string): Observable<void>;\r\n\r\n\t/** Delete all uploaded file items in the current HTTP session. */\r\n\tabstract clear?(): Observable<void>;\r\n}\r\n","import { animate, query, stagger, style, transition, trigger } from '@angular/animations';\nimport { HttpEvent, HttpEventType } from '@angular/common/http';\nimport {\n\tComponent,\n\tElementRef,\n\tHostListener,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tViewChild,\n\tforwardRef,\n\tChangeDetectionStrategy\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, Subject, Subscription, of } from 'rxjs';\nimport { FileUploadItem, FileUploadService } from './file-upload.service';\n\n/** @ignore */\nclass UploadingItem {\n\tprogress = 0;\n\tuploadedItem: FileUploadItem | null | undefined;\n\tdownloadingSubs?: Subscription;\n\tprivate subscription: Subscription;\n\tprivate file?: File;\n\n\tconstructor(item: FileUploadItem, oncancel: (item: UploadingItem) => void);\n\tconstructor(\n\t\tevent$: Observable<HttpEvent<FileUploadItem>> | FileUploadItem,\n\t\tfile: File,\n\t\toncomplete: () => void,\n\t\toncancel: (item: UploadingItem) => void\n\t);\n\tconstructor(\n\t\tevent$: Observable<HttpEvent<FileUploadItem>> | FileUploadItem,\n\t\tfileOrOncancel?: File | ((item: UploadingItem) => void),\n\t\toncomplete?: () => void,\n\t\tprivate oncancel?: (item: UploadingItem) => void\n\t) {\n\t\tif (event$ instanceof Observable) {\n\t\t\tthis.file = fileOrOncancel as File;\n\t\t\tthis.subscription = event$.subscribe({\n\t\t\t\tnext: evt => {\n\t\t\t\t\tif (evt.type === HttpEventType.UploadProgress) {\n\t\t\t\t\t\tthis.progress = evt.loaded / (this.file as File).size;\n\t\t\t\t\t} else if (evt.type === HttpEventType.Response) {\n\t\t\t\t\t\tthis.uploadedItem = evt.body;\n\t\t\t\t\t\tthis.progress = 1;\n\t\t\t\t\t\toncomplete!();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.subscription = of(event$).subscribe();\n\t\t\tthis.uploadedItem = event$;\n\t\t\tthis.oncancel = fileOrOncancel as (item: UploadingItem) => void;\n\t\t}\n\t}\n\n\tcancel() {\n\t\tthis.subscription.unsubscribe();\n\t\tthis.oncancel!(this);\n\t}\n\n\tget done() {\n\t\treturn !!this.uploadedItem;\n\t}\n\n\tget name() {\n\t\treturn this.uploadedItem?.name || this.file?.name;\n\t}\n\n\tget downloading() {\n\t\treturn this.downloadingSubs && !this.downloadingSubs.closed;\n\t}\n}\n/**\n * A control value accessor component to provide the user interface for uploading files.\n *\n * The application that integrates this UI must provide an implementation of `FileUploadService`.\n *\n * The control's value is a list of alpha-numerical strings, which are the identifiers to the uploaded files.\n *\n * Example:\n *\n * ```html\n * <form>\n * <bui-file-upload [(ngModel)]=\"uploadedFileIds\" name=\"myFiles\"></bui-file-upload>\n * </form>\n * ```\n *\n * @see FileUploadService\n */\n@Component({\n\thost: {\n\t\tclass: 'bui-host bui-file-upload',\n\t\t'[class.bui-dnd-active]': '_overFrame && remaining >= _numberOfFilesDragged',\n\t\t'[class.bui-dnd-over]': '_overDropZone && remaining >= _numberOfFilesDragged',\n\t\t'[class.bui-dnd-invalid]': '_invalidFilesDragged'\n\t},\n\tselector: 'bui-file-upload',\n\ttemplateUrl: './file-upload.component.html',\n\tstyleUrls: ['./file-upload.component.scss'],\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => FileUploadComponent), multi: true }],\n\tanimations: [\n\t\ttrigger('slideOut', [\n\t\t\ttransition('* => *', [\n\t\t\t\tquery(':leave', stagger(100, animate('0.25s', style({ height: 0, overflow: 'hidden' }))), { optional: true })\n\t\t\t])\n\t\t])\n\t],\n\tchangeDetection: ChangeDetectionStrategy.Eager,\n\tstandalone: false\n})\nexport class FileUploadComponent implements OnInit, OnDestroy, ControlValueAccessor {\n\t/** @ignore */\n\t_value: string[] | null = null;\n\n\t/**\n\t * The caption of the button for opening file selection dialog.\n\t */\n\t@Input()\n\tuploadActionText = 'Drag files here to attach or browse';\n\n\t/**\n\t * The label for listing successful uploaded files.\n\t */\n\t@Input()\n\tfileUploadedLabel = 'List of files uploaded successfully';\n\n\t/**\n\t * The text to be displayed when the user starts to drag file items over the browser window.\n\t */\n\t@Input()\n\tdragHint = 'Please drag the files here.';\n\n\t/**\n\t * The text to be displayed when the user is dragging the file items over the drop zone.\n\t */\n\t@Input()\n\tdropHint = 'Please release the mouse button to start uploading.';\n\n\t/** Specifies the total number of files accepted. A falsy value removes the limit.*/\n\t@Input()\n\tlimit = 0;\n\n\t/**\n\t * specify the number of maximum bytes that can be uploaded.\n\t * if number is specified, bytes are assumed, otherwise enter a string for specific size type.\n\t */\n\t@Input()\n\tfileSize: number | string = '10MB';\n\n\t/**\n\t * Accepted MIME types\n\t *\n\t * @example ['text/*', 'image/png']\n\t */\n\t@Input()\n\tget types(): string[] {\n\t\treturn this._types;\n\t}\n\tset types(types: string[]) {\n\t\tif (Array.isArray(types) && types?.length) {\n\t\t\tthis._typeRegExps = [];\n\t\t\tthis._types = Array.from(types);\n\t\t\tthis._accept = this._types.join(',');\n\t\t\ttypes.forEach(t => this._typeRegExps.push(new RegExp(t.replace(/\\*/g, '.*'))));\n\t\t}\n\t}\n\n\t/** @ignore */\n\t_fileSizeExceedMsg: string = '';\n\n\t/** @ignore */\n\t_uploadingItems: UploadingItem[] = [];\n\n\t/** @ignore */\n\t_accept = '*/*';\n\n\t/** @ignore */\n\t_itemAnimationStart = new Subject<void>();\n\t/** @ignore */\n\t_itemAnimationDone = new Subject<void>();\n\t/** @ignore */\n\t_itemAnimationInProgress = false;\n\n\tprivate _onChange = (_: string[]) => {};\n\tprivate _onTouch = () => {};\n\tprivate _frameDndEnter: (event: DragEvent) => void;\n\tprivate _frameDndLeave: () => void;\n\tprivate _frameDndOver: (event: DragEvent) => void;\n\tprivate _frameDndStop: () => void;\n\tprivate _overFrameCounter = 0;\n\tprivate _overCounter = 0;\n\tprivate _typeRegExps: RegExp[] = [/.*\\/.*/];\n\tprivate _types: string[] = ['*/*'];\n\tprivate _initSubs?: Subscription;\n\tprotected _numberOfFilesDragged = 0;\n\n\t@ViewChild('fileInput', { read: ElementRef, static: true })\n\tprivate _fileInput!: ElementRef<HTMLInputElement>;\n\n\tconstructor(private _service: FileUploadService) {\n\t\tthis._onChange([]);\n\t\tthis._onTouch();\n\t\tthis._frameDndEnter = this._onDndEnterFrame.bind(this);\n\t\tthis._frameDndLeave = this._onDndLeaveFrame.bind(this);\n\t\tthis._frameDndStop = this._onDndStopFrame.bind(this);\n\t\tthis._frameDndOver = event => event.preventDefault();\n\t}\n\n\t/** @internal */\n\tngOnInit(): void {\n\t\tdocument.addEventListener('dragenter', this._frameDndEnter);\n\t\tdocument.addEventListener('dragleave', this._frameDndLeave);\n\t\tdocument.addEventListener('dragend', this._frameDndStop);\n\t\tdocument.addEventListener('drop', this._frameDndStop);\n\t\tdocument.addEventListener('dragover', this._frameDndOver);\n\t\tthis._itemAnimationStart.subscribe(() => (this._itemAnimationInProgress = true));\n\t\tthis._itemAnimationDone.subscribe(() => (this._itemAnimationInProgress = false));\n\t}\n\n\tngOnDestroy(): void {\n\t\tdocument.removeEventListener('dragenter', this._frameDndEnter);\n\t\tdocument.removeEventListener('dragleave', this._frameDndLeave);\n\t\tdocument.removeEventListener('dragend', this._frameDndStop);\n\t\tdocument.removeEventListener('drop', this._frameDndStop);\n\t\tdocument.removeEventListener('dragover', this._frameDndOver);\n\t\tthis._itemAnimationStart.complete();\n\t\tthis._itemAnimationDone.complete();\n\t}\n\n\t/** @internal */\n\twriteValue(obj: any): void {\n\t\tif (Array.isArray(obj)) {\n\t\t\tif (!this._value) {\n\t\t\t\tthis._acceptChange(obj);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst common = obj.filter(v => this._value!.includes(v));\n\t\t\tif (common.length === obj.length && common.length === this._value.length) {\n\t\t\t\treturn; // no change\n\t\t\t}\n\t\t\tthis._acceptChange(obj);\n\t\t} else {\n\t\t\tthis._value = null;\n\t\t}\n\t}\n\n\t/** @internal */\n\tregisterOnChange(fn: any): void {\n\t\tthis._onChange = fn;\n\t}\n\n\t/** @internal */\n\tregisterOnTouched(fn: any): void {\n\t\tthis._onTouch = fn;\n\t}\n\n\t/** @internal */\n\t@HostListener('dragenter', ['$event'])\n\tonDragEnter(event: DragEvent) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._overCounter++;\n\t}\n\n\t/** @internal */\n\t@HostListener('dragover', ['$event'])\n\tonDragOver(event: Event) {\n\t\tevent.preventDefault();\n\t}\n\n\t/** @internal */\n\t@HostListener('dragleave', ['$event'])\n\tonDragLeave(event: Event) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._overCounter--;\n\t}\n\n\t/** @internal */\n\t@HostListener('drop', ['$event'])\n\tonDndDrop(event: DragEvent) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tthis._onDndStopFrame();\n\t\tconst files = event.dataTransfer?.files;\n\t\tif (files?.length && this._validateFileSize(files)) {\n\t\t\tthis._uploadFiles(Array.from(files));\n\t\t}\n\t}\n\n\t/** Open the file selection dialog */\n\tselectFiles() {\n\t\tthis._fileInput.nativeElement.click();\n\t}\n\n\t/** @ignore */\n\t_openItem(item: UploadingItem) {\n\t\titem.downloadingSubs = this._service.get(item.uploadedItem!.id).subscribe(blob => {\n\t\t\tconst url = URL.createObjectURL(blob);\n\t\t\twindow.open(url, '_blank');\n\t\t});\n\t}\n\n\t/** @ignore */\n\tget _overFrame(): boolean {\n\t\treturn this._overFrameCounter > 0;\n\t}\n\n\t/** @ignore */\n\tget _overDropZone(): boolean {\n\t\treturn this._overCounter > 0;\n\t}\n\n\t/** Whether file uploading is in progress */\n\tget uploading(): boolean {\n\t\treturn this._uploadingItems.some(i => !i.done);\n\t}\n\n\t/** The remaining number of files allowed.*/\n\tget remaining(): number {\n\t\treturn this.limit ? this.limit - this._uploadingItems.length : Infinity;\n\t}\n\n\t/** @ignore */\n\t_handleFileSelection() {\n\t\tconst fileList = this._fileInput.nativeElement.files;\n\t\tif (fileList?.length && this._validateFileSize(fileList)) {\n\t\t\tthis._uploadFiles(Array.from(fileList));\n\t\t\tthis._fileInput.nativeElement.value = '';\n\t\t}\n\t}\n\n\t/** @ignore */\n\tget _invalidFilesDragged(): boolean {\n\t\treturn this._numberOfFilesDragged > this.remaining && (this._overFrame || this._overDropZone);\n\t}\n\n\t/** @ignore */\n\tget _initialising(): boolean {\n\t\treturn !!this._initSubs && !this._initSubs.closed;\n\t}\n\n\tprivate returnFileSize(size: number) {\n\t\tif (size < 1024) {\n\t\t\treturn `${size} bytes`;\n\t\t} else if (size >= 1024 && size < 1048576) {\n\t\t\treturn `${(size / 1024).toFixed(1)} KB`;\n\t\t} else {\n\t\t\treturn `${(size / 1048576).toFixed(1)} MB`;\n\t\t}\n\t}\n\n\tprivate _validateFileSize(files: FileList) {\n\t\tthis._fileSizeExceedMsg = '';\n\t\tconst maxSize = this.returnFileSize(this._getMaxBytes());\n\t\tfor (let i = 0; i < files.length; i++) {\n\t\t\tif (files[i]!.size > this._getMaxBytes()) {\n\t\t\t\tthis._fileSizeExceedMsg = `Selected file/s has exceeded the allowable size of ${maxSize} per file`;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate _getMaxBytes(): number {\n\t\tif (typeof this.fileSize === 'string') {\n\t\t\tif (this.fileSize.toUpperCase().endsWith('KB')) {\n\t\t\t\tconst kiloBytes = this.fileSize.substring(0, this.fileSize.indexOf('KB'));\n\t\t\t\treturn Number(kiloBytes) * 1024;\n\t\t\t} else if (this.fileSize.toUpperCase().endsWith('MB')) {\n\t\t\t\tconst megaBytes = this.fileSize.substring(0, this.fileSize.indexOf('MB'));\n\t\t\t\treturn Number(megaBytes) * 1048576;\n\t\t\t}\n\t\t}\n\t\treturn this.fileSize as number;\n\t}\n\n\tprivate _uploadFiles(files: File[]) {\n\t\tif (this._initialising || files.length > this.remaining) {\n\t\t\treturn;\n\t\t}\n\t\tconst filtered = files.filter(\n\t\t\tf =>\n\t\t\t\t(!f.type || this._typeRegExps.some(regexp => f.type.match(regexp))) &&\n\t\t\t\t!this._uploadingItems.some(i => i.name === f.name)\n\t\t);\n\t\tconst observables = this._service.upload(filtered);\n\t\tconst items = filtered.map(\n\t\t\t(f, i) => new UploadingItem(observables[i], f, this._updateItems.bind(this), this._deleteItem.bind(this))\n\t\t);\n\t\tthis._uploadingItems = [...this._uploadingItems, ...items];\n\t}\n\n\tprivate _onDndEnterFrame(event: DragEvent) {\n\t\tevent.preventDefault();\n\t\tthis._numberOfFilesDragged = event.dataTransfer?.items?.length || 0;\n\t\tthis._overFrameCounter++;\n\t}\n\n\tprivate _onDndLeaveFrame() {\n\t\tthis._overFrameCounter--;\n\t}\n\n\tprivate _onDndStopFrame() {\n\t\tthis._overFrameCounter = 0;\n\t\tthis._overCounter = 0;\n\t}\n\n\tprivate _acceptChange(v: string[]) {\n\t\tthis._initSubs = this._service.list().subscribe(list => {\n\t\t\tthis._uploadingItems = list\n\t\t\t\t.filter(i => v.includes(i.id))\n\t\t\t\t.map(f => new UploadingItem(f, this._deleteItem.bind(this)));\n\t\t});\n\t}\n\n\tprivate _updateItems() {\n\t\tconst completed = this._uploadingItems.filter(i => !!i.uploadedItem);\n\t\tthis._uploadingItems = [...completed, ...this._uploadingItems.filter(i => !i.uploadedItem)];\n\t\tthis._updateValue(completed);\n\t}\n\n\tprivate _deleteItem(item: UploadingItem) {\n\t\tconst key = item.uploadedItem?.id;\n\t\tif (key) {\n\t\t\tthis._service.delete(key).subscribe(() => {\n\t\t\t\tthis._uploadingItems = this._uploadingItems.filter(i => i !== item);\n\t\t\t\tconst completed = this._uploadingItems.filter(i => !!i.uploadedItem);\n\t\t\t\tthis._updateValue(completed);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._uploadingItems = this._uploadingItems.filter(i => i !== item);\n\t\t\tconst completed = this._uploadingItems.filter(i => !!i.uploadedItem);\n\t\t\tthis._updateValue(completed);\n\t\t}\n\t}\n\n\tprivate _updateValue(completed: UploadingItem[]) {\n\t\tconst completedIds = completed.map(c => c.uploadedItem!.id);\n\t\tthis._value = completedIds;\n\t\tif (!this._value.length) {\n\t\t\tthis._value = null;\n\t\t}\n\t\tthis._onChange(completedIds);\n\t}\n}\n","<div class=\"bui-file-upload-container\">\n\t@if (!_initialising && remaining > 0 && (!_itemAnimationInProgress || remaining > 1)) {\n\t\t<div class=\"bui-file-upload-hint\">\n\t\t\t@if (_invalidFilesDragged) {\n\t\t\t\t<mat-icon [buiIcon]=\"'block'\" [size]=\"32\" color=\"warn\" variant=\"outlined\" style=\"opacity: 0.6\"></mat-icon>\n\t\t\t} @else {\n\t\t\t\t@if (!_overFrame && !_overDropZone) {\n\t\t\t\t\t<div class=\"bui-color-muted bui-upload-icon-link\" (click)=\"selectFiles()\">\n\t\t\t\t\t\t<mat-icon [buiIcon]=\"'fas fa-cloud-upload-alt'\" [size]=\"32\"></mat-icon>\n\t\t\t\t\t\t<a role=\"button\">{{ uploadActionText }}</a>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (_overFrame && !_overDropZone) {\n\t\t\t\t\t<div class=\"bui-color-light\">{{ dragHint }}</div>\n\t\t\t\t}\n\t\t\t\t@if (_overDropZone) {\n\t\t\t\t\t<div class=\"bui-color-light\">{{ dropHint }}</div>\n\t\t\t\t}\n\t\t\t}\n\t\t</div>\n\t}\n\t@if (_uploadingItems.length) {\n\t\t<div\n\t\t\tclass=\"bui-file-upload-list\"\n\t\t\t[@slideOut]=\"_uploadingItems.length\"\n\t\t\t(@slideOut.start)=\"_itemAnimationStart.next()\"\n\t\t\t(@slideOut.done)=\"_itemAnimationDone.next()\"\n\t\t>\n\t\t\t<span class=\"bui-file-uploaded-label\">{{ fileUploadedLabel }}</span>\n\t\t\t@for (item of _uploadingItems; track item; let idx = $index) {\n\t\t\t\t<div class=\"bui-file-upload-item\" [class.in-progress]=\"!item.done\" #itemDiv>\n\t\t\t\t\t<div class=\"bui-file-upload-item-name\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<mat-icon class=\"bui-color-muted\">description</mat-icon>\n\t\t\t\t\t\t\t@if (item.done && !item.downloading) {\n\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\tclass=\"text\"\n\t\t\t\t\t\t\t\t\thref=\"#{{ item.uploadedItem?.id }}\"\n\t\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); _openItem(item)\"\n\t\t\t\t\t\t\t\t\tcontextmenu=\"false\"\n\t\t\t\t\t\t\t\t\tmatTooltip=\"Download\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{{ item.name }}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<span class=\"text\">{{ item.name }}</span>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div class=\"bui-file-upload-item-progress\">\n\t\t\t\t\t\t\t@if (!item.downloading) {\n\t\t\t\t\t\t\t\t<mat-progress-bar\n\t\t\t\t\t\t\t\t\tmode=\"determinate\"\n\t\t\t\t\t\t\t\t\t[class.upload-completed]=\"item.done\"\n\t\t\t\t\t\t\t\t\t[value]=\"item.done ? 100 : item.progress * 100\"\n\t\t\t\t\t\t\t\t></mat-progress-bar>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@if (item.downloading) {\n\t\t\t\t\t\t\t\t<mat-progress-bar mode=\"buffer\"></mat-progress-bar>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t@if (item.done) {\n\t\t\t\t\t\t\t\t\t100%\n\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t{{ item.progress | percent }}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"bui-file-upload-item-action\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t(click)=\"item.cancel()\"\n\t\t\t\t\t\t\t(mouseenter)=\"itemDiv.classList.add('bui-file-upload-item-deleting')\"\n\t\t\t\t\t\t\t(mouseleave)=\"itemDiv.classList.remove('bui-file-upload-item-deleting')\"\n\t\t\t\t\t\t\tmatTooltip=\"Delete\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<mat-icon [buiIcon]=\"'cancel'\" style=\"line-height: 0.9\"></mat-icon>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t@if (idx < _uploadingItems.length - 1) {\n\t\t\t\t\t<mat-divider></mat-divider>\n\t\t\t\t}\n\t\t\t}\n\t\t</div>\n\t}\n\t<input\n\t\ttype=\"file\"\n\t\t#fileInput\n\t\tstyle=\"display: none\"\n\t\taccept=\"{{ _accept }}\"\n\t\t(change)=\"_handleFileSelection()\"\n\t\t[multiple]=\"remaining > 1\"\n\t/>\n\n\t@if (_fileSizeExceedMsg) {\n\t\t<div class=\"bui-color-warn bui-file-size-exceed\">\n\t\t\t<span> {{ _fileSizeExceedMsg }}</span> <mat-icon role=\"button\" (click)=\"_fileSizeExceedMsg = ''\">cancel</mat-icon>\n\t\t</div>\n\t}\n</div>\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FileUploadComponent } from './file-upload.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { IconFontModule } from '@bravura/ui/icon-font';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@NgModule({\r\n\tdeclarations: [FileUploadComponent],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tMatIconModule,\r\n\t\tIconFontModule,\r\n\t\tMatProgressBarModule,\r\n\t\tMatButtonModule,\r\n\t\tMatDividerModule,\r\n\t\tMatTooltipModule\r\n\t],\r\n\texports: [FileUploadComponent]\r\n})\r\nexport class FileUploadModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FileUploadService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bravura-ui-file-upload.mjs","sources":["../../../projects/ui/file-upload/file-upload.service.ts","../../../projects/ui/file-upload/file-upload.component.ts","../../../projects/ui/file-upload/file-upload.component.html","../../../projects/ui/file-upload/file-upload.module.ts","../../../projects/ui/file-upload/bravura-ui-file-upload.ts"],"sourcesContent":["import { HttpEvent } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n/**\r\n * This type represents a file or form item that has been sent as part of a multipart/form-data POST request.\r\n */\r\nexport class FileUploadItem {\r\n\t/** The original filename in the client's filesystem, as provided by the browser. */\r\n\tname: string;\r\n\r\n\t/** The size of the file item. */\r\n\tsize: number;\r\n\r\n\t/** An alpha-numeric string that uniquely identifies the file item. */\r\n\tid: string;\r\n\r\n\t/** The content type (MIME type) of the file. */\r\n\ttype: string;\r\n\r\n\t/** @internal */\r\n\tconstructor(_id: string, _name: string, _size: number, _type: string) {\r\n\t\tthis.id = _id;\r\n\t\tthis.name = _name;\r\n\t\tthis.size = _size;\r\n\t\tthis.type = _type;\r\n\t}\r\n}\r\n\r\n/**\r\n * This is an API for processing file upload requests.\r\n *\r\n * A sub class of this type handles multiple file requests, sent using multipart/form-data encoding type, as specified by RFC 1867.\r\n *\r\n * Please extend this type and provide it in an injector at the same level, or ancestral to that, of the `FileUploadComponent`.\r\n */\r\n@Injectable()\r\nexport abstract class FileUploadService {\r\n\t/**\r\n\t * Upload a list of selected files from the browser. The returned `Observable` array provides the update of the uploading progress\r\n\t * through HTTP events.\r\n\t */\r\n\tabstract upload(files: File[]): Array<Observable<HttpEvent<FileUploadItem>>>;\r\n\r\n\t/** List all the uploaded file items in the current HTTP session. This list excludes the files still in the process of being uploaded*/\r\n\tabstract list(): Observable<FileUploadItem[]>;\r\n\r\n\t/** Get the content of an uploaded file item as a `Blob`. */\r\n\tabstract get(id: string): Observable<Blob>;\r\n\r\n\t/** Delete an uploaded file item from the server. */\r\n\tabstract delete(id: string): Observable<void>;\r\n\r\n\t/** Delete all uploaded file items in the current HTTP session. */\r\n\tabstract clear?(): Observable<void>;\r\n}\r\n","import { animate, query, stagger, style, transition, trigger } from '@angular/animations';\r\nimport { HttpEvent, HttpEventType } from '@angular/common/http';\r\nimport {\r\n\tComponent,\r\n\tElementRef,\r\n\tHostListener,\r\n\tInput,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tViewChild,\r\n\tforwardRef,\r\n\tChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Observable, Subject, Subscription, of } from 'rxjs';\r\nimport { FileUploadItem, FileUploadService } from './file-upload.service';\r\n\r\n/** @ignore */\r\nclass UploadingItem {\r\n\tprogress = 0;\r\n\tuploadedItem: FileUploadItem | null | undefined;\r\n\tdownloadingSubs?: Subscription;\r\n\tprivate subscription: Subscription;\r\n\tprivate file?: File;\r\n\r\n\tconstructor(item: FileUploadItem, oncancel: (item: UploadingItem) => void);\r\n\tconstructor(\r\n\t\tevent$: Observable<HttpEvent<FileUploadItem>> | FileUploadItem,\r\n\t\tfile: File,\r\n\t\toncomplete: () => void,\r\n\t\toncancel: (item: UploadingItem) => void\r\n\t);\r\n\tconstructor(\r\n\t\tevent$: Observable<HttpEvent<FileUploadItem>> | FileUploadItem,\r\n\t\tfileOrOncancel?: File | ((item: UploadingItem) => void),\r\n\t\toncomplete?: () => void,\r\n\t\tprivate oncancel?: (item: UploadingItem) => void\r\n\t) {\r\n\t\tif (event$ instanceof Observable) {\r\n\t\t\tthis.file = fileOrOncancel as File;\r\n\t\t\tthis.subscription = event$.subscribe({\r\n\t\t\t\tnext: evt => {\r\n\t\t\t\t\tif (evt.type === HttpEventType.UploadProgress) {\r\n\t\t\t\t\t\tthis.progress = evt.loaded / (this.file as File).size;\r\n\t\t\t\t\t} else if (evt.type === HttpEventType.Response) {\r\n\t\t\t\t\t\tthis.uploadedItem = evt.body;\r\n\t\t\t\t\t\tthis.progress = 1;\r\n\t\t\t\t\t\toncomplete!();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.subscription = of(event$).subscribe();\r\n\t\t\tthis.uploadedItem = event$;\r\n\t\t\tthis.oncancel = fileOrOncancel as (item: UploadingItem) => void;\r\n\t\t}\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis.subscription.unsubscribe();\r\n\t\tthis.oncancel!(this);\r\n\t}\r\n\r\n\tget done() {\r\n\t\treturn !!this.uploadedItem;\r\n\t}\r\n\r\n\tget name() {\r\n\t\treturn this.uploadedItem?.name || this.file?.name;\r\n\t}\r\n\r\n\tget downloading() {\r\n\t\treturn this.downloadingSubs && !this.downloadingSubs.closed;\r\n\t}\r\n}\r\n/**\r\n * A control value accessor component to provide the user interface for uploading files.\r\n *\r\n * The application that integrates this UI must provide an implementation of `FileUploadService`.\r\n *\r\n * The control's value is a list of alpha-numerical strings, which are the identifiers to the uploaded files.\r\n *\r\n * Example:\r\n *\r\n * ```html\r\n * <form>\r\n * <bui-file-upload [(ngModel)]=\"uploadedFileIds\" name=\"myFiles\"></bui-file-upload>\r\n * </form>\r\n * ```\r\n *\r\n * @see FileUploadService\r\n */\r\n@Component({\r\n\thost: {\r\n\t\tclass: 'bui-host bui-file-upload',\r\n\t\t'[class.bui-dnd-active]': '_overFrame && remaining >= _numberOfFilesDragged',\r\n\t\t'[class.bui-dnd-over]': '_overDropZone && remaining >= _numberOfFilesDragged',\r\n\t\t'[class.bui-dnd-invalid]': '_invalidFilesDragged'\r\n\t},\r\n\tselector: 'bui-file-upload',\r\n\ttemplateUrl: './file-upload.component.html',\r\n\tstyleUrls: ['./file-upload.component.scss'],\r\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => FileUploadComponent), multi: true }],\r\n\tanimations: [\r\n\t\ttrigger('slideOut', [\r\n\t\t\ttransition('* => *', [\r\n\t\t\t\tquery(':leave', stagger(100, animate('0.25s', style({ height: 0, overflow: 'hidden' }))), { optional: true })\r\n\t\t\t])\r\n\t\t])\r\n\t],\r\n\tchangeDetection: ChangeDetectionStrategy.Eager,\r\n\tstandalone: false\r\n})\r\nexport class FileUploadComponent implements OnInit, OnDestroy, ControlValueAccessor {\r\n\t/** @ignore */\r\n\t_value: string[] | null = null;\r\n\r\n\t/**\r\n\t * The caption of the button for opening file selection dialog.\r\n\t */\r\n\t@Input()\r\n\tuploadActionText = 'Drag files here to attach or browse';\r\n\r\n\t/**\r\n\t * The label for listing successful uploaded files.\r\n\t */\r\n\t@Input()\r\n\tfileUploadedLabel = 'List of files uploaded successfully';\r\n\r\n\t/**\r\n\t * The text to be displayed when the user starts to drag file items over the browser window.\r\n\t */\r\n\t@Input()\r\n\tdragHint = 'Please drag the files here.';\r\n\r\n\t/**\r\n\t * The text to be displayed when the user is dragging the file items over the drop zone.\r\n\t */\r\n\t@Input()\r\n\tdropHint = 'Please release the mouse button to start uploading.';\r\n\r\n\t/** Specifies the total number of files accepted. A falsy value removes the limit.*/\r\n\t@Input()\r\n\tlimit = 0;\r\n\r\n\t/**\r\n\t * specify the number of maximum bytes that can be uploaded.\r\n\t * if number is specified, bytes are assumed, otherwise enter a string for specific size type.\r\n\t */\r\n\t@Input()\r\n\tfileSize: number | string = '10MB';\r\n\r\n\t/**\r\n\t * Accepted MIME types\r\n\t *\r\n\t * @example ['text/*', 'image/png']\r\n\t */\r\n\t@Input()\r\n\tget types(): string[] {\r\n\t\treturn this._types;\r\n\t}\r\n\tset types(types: string[]) {\r\n\t\tif (Array.isArray(types) && types?.length) {\r\n\t\t\tthis._typeRegExps = [];\r\n\t\t\tthis._types = Array.from(types);\r\n\t\t\tthis._accept = this._types.join(',');\r\n\t\t\ttypes.forEach(t => this._typeRegExps.push(new RegExp(t.replace(/\\*/g, '.*'))));\r\n\t\t}\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_fileSizeExceedMsg: string = '';\r\n\r\n\t/** @ignore */\r\n\t_uploadingItems: UploadingItem[] = [];\r\n\r\n\t/** @ignore */\r\n\t_accept = '*/*';\r\n\r\n\t/** @ignore */\r\n\t_itemAnimationStart = new Subject<void>();\r\n\t/** @ignore */\r\n\t_itemAnimationDone = new Subject<void>();\r\n\t/** @ignore */\r\n\t_itemAnimationInProgress = false;\r\n\r\n\tprivate _onChange = (_: string[]) => {};\r\n\tprivate _onTouch = () => {};\r\n\tprivate _frameDndEnter: (event: DragEvent) => void;\r\n\tprivate _frameDndLeave: () => void;\r\n\tprivate _frameDndOver: (event: DragEvent) => void;\r\n\tprivate _frameDndStop: () => void;\r\n\tprivate _overFrameCounter = 0;\r\n\tprivate _overCounter = 0;\r\n\tprivate _typeRegExps: RegExp[] = [/.*\\/.*/];\r\n\tprivate _types: string[] = ['*/*'];\r\n\tprivate _initSubs?: Subscription;\r\n\tprotected _numberOfFilesDragged = 0;\r\n\r\n\t@ViewChild('fileInput', { read: ElementRef, static: true })\r\n\tprivate _fileInput!: ElementRef<HTMLInputElement>;\r\n\r\n\tconstructor(private _service: FileUploadService) {\r\n\t\tthis._onChange([]);\r\n\t\tthis._onTouch();\r\n\t\tthis._frameDndEnter = this._onDndEnterFrame.bind(this);\r\n\t\tthis._frameDndLeave = this._onDndLeaveFrame.bind(this);\r\n\t\tthis._frameDndStop = this._onDndStopFrame.bind(this);\r\n\t\tthis._frameDndOver = event => event.preventDefault();\r\n\t}\r\n\r\n\t/** @internal */\r\n\tngOnInit(): void {\r\n\t\tdocument.addEventListener('dragenter', this._frameDndEnter);\r\n\t\tdocument.addEventListener('dragleave', this._frameDndLeave);\r\n\t\tdocument.addEventListener('dragend', this._frameDndStop);\r\n\t\tdocument.addEventListener('drop', this._frameDndStop);\r\n\t\tdocument.addEventListener('dragover', this._frameDndOver);\r\n\t\tthis._itemAnimationStart.subscribe(() => (this._itemAnimationInProgress = true));\r\n\t\tthis._itemAnimationDone.subscribe(() => (this._itemAnimationInProgress = false));\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tdocument.removeEventListener('dragenter', this._frameDndEnter);\r\n\t\tdocument.removeEventListener('dragleave', this._frameDndLeave);\r\n\t\tdocument.removeEventListener('dragend', this._frameDndStop);\r\n\t\tdocument.removeEventListener('drop', this._frameDndStop);\r\n\t\tdocument.removeEventListener('dragover', this._frameDndOver);\r\n\t\tthis._itemAnimationStart.complete();\r\n\t\tthis._itemAnimationDone.complete();\r\n\t}\r\n\r\n\t/** @internal */\r\n\twriteValue(obj: any): void {\r\n\t\tif (Array.isArray(obj)) {\r\n\t\t\tif (!this._value) {\r\n\t\t\t\tthis._acceptChange(obj);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst common = obj.filter(v => this._value!.includes(v));\r\n\t\t\tif (common.length === obj.length && common.length === this._value.length) {\r\n\t\t\t\treturn; // no change\r\n\t\t\t}\r\n\t\t\tthis._acceptChange(obj);\r\n\t\t} else {\r\n\t\t\tthis._value = null;\r\n\t\t}\r\n\t}\r\n\r\n\t/** @internal */\r\n\tregisterOnChange(fn: any): void {\r\n\t\tthis._onChange = fn;\r\n\t}\r\n\r\n\t/** @internal */\r\n\tregisterOnTouched(fn: any): void {\r\n\t\tthis._onTouch = fn;\r\n\t}\r\n\r\n\t/** @internal */\r\n\t@HostListener('dragenter', ['$event'])\r\n\tonDragEnter(event: DragEvent) {\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t\tthis._overCounter++;\r\n\t}\r\n\r\n\t/** @internal */\r\n\t@HostListener('dragover', ['$event'])\r\n\tonDragOver(event: Event) {\r\n\t\tevent.preventDefault();\r\n\t}\r\n\r\n\t/** @internal */\r\n\t@HostListener('dragleave', ['$event'])\r\n\tonDragLeave(event: Event) {\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t\tthis._overCounter--;\r\n\t}\r\n\r\n\t/** @internal */\r\n\t@HostListener('drop', ['$event'])\r\n\tonDndDrop(event: DragEvent) {\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\t\tthis._onDndStopFrame();\r\n\t\tconst files = event.dataTransfer?.files;\r\n\t\tif (files?.length && this._validateFileSize(files)) {\r\n\t\t\tthis._uploadFiles(Array.from(files));\r\n\t\t}\r\n\t}\r\n\r\n\t/** Open the file selection dialog */\r\n\tselectFiles() {\r\n\t\tthis._fileInput.nativeElement.click();\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_openItem(item: UploadingItem) {\r\n\t\titem.downloadingSubs = this._service.get(item.uploadedItem!.id).subscribe(blob => {\r\n\t\t\tconst url = URL.createObjectURL(blob);\r\n\t\t\twindow.open(url, '_blank');\r\n\t\t});\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tget _overFrame(): boolean {\r\n\t\treturn this._overFrameCounter > 0;\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tget _overDropZone(): boolean {\r\n\t\treturn this._overCounter > 0;\r\n\t}\r\n\r\n\t/** Whether file uploading is in progress */\r\n\tget uploading(): boolean {\r\n\t\treturn this._uploadingItems.some(i => !i.done);\r\n\t}\r\n\r\n\t/** The remaining number of files allowed.*/\r\n\tget remaining(): number {\r\n\t\treturn this.limit ? this.limit - this._uploadingItems.length : Infinity;\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_handleFileSelection() {\r\n\t\tconst fileList = this._fileInput.nativeElement.files;\r\n\t\tif (fileList?.length && this._validateFileSize(fileList)) {\r\n\t\t\tthis._uploadFiles(Array.from(fileList));\r\n\t\t\tthis._fileInput.nativeElement.value = '';\r\n\t\t}\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tget _invalidFilesDragged(): boolean {\r\n\t\treturn this._numberOfFilesDragged > this.remaining && (this._overFrame || this._overDropZone);\r\n\t}\r\n\r\n\t/** @ignore */\r\n\tget _initialising(): boolean {\r\n\t\treturn !!this._initSubs && !this._initSubs.closed;\r\n\t}\r\n\r\n\tprivate returnFileSize(size: number) {\r\n\t\tif (size < 1024) {\r\n\t\t\treturn `${size} bytes`;\r\n\t\t} else if (size >= 1024 && size < 1048576) {\r\n\t\t\treturn `${(size / 1024).toFixed(1)} KB`;\r\n\t\t} else {\r\n\t\t\treturn `${(size / 1048576).toFixed(1)} MB`;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _validateFileSize(files: FileList) {\r\n\t\tthis._fileSizeExceedMsg = '';\r\n\t\tconst maxSize = this.returnFileSize(this._getMaxBytes());\r\n\t\tfor (let i = 0; i < files.length; i++) {\r\n\t\t\tif (files[i]!.size > this._getMaxBytes()) {\r\n\t\t\t\tthis._fileSizeExceedMsg = `Selected file/s has exceeded the allowable size of ${maxSize} per file`;\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate _getMaxBytes(): number {\r\n\t\tif (typeof this.fileSize === 'string') {\r\n\t\t\tif (this.fileSize.toUpperCase().endsWith('KB')) {\r\n\t\t\t\tconst kiloBytes = this.fileSize.substring(0, this.fileSize.indexOf('KB'));\r\n\t\t\t\treturn Number(kiloBytes) * 1024;\r\n\t\t\t} else if (this.fileSize.toUpperCase().endsWith('MB')) {\r\n\t\t\t\tconst megaBytes = this.fileSize.substring(0, this.fileSize.indexOf('MB'));\r\n\t\t\t\treturn Number(megaBytes) * 1048576;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.fileSize as number;\r\n\t}\r\n\r\n\tprivate _uploadFiles(files: File[]) {\r\n\t\tif (this._initialising || files.length > this.remaining) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst filtered = files.filter(\r\n\t\t\tf =>\r\n\t\t\t\t(!f.type || this._typeRegExps.some(regexp => f.type.match(regexp))) &&\r\n\t\t\t\t!this._uploadingItems.some(i => i.name === f.name)\r\n\t\t);\r\n\t\tconst observables = this._service.upload(filtered);\r\n\t\tconst items = filtered.map(\r\n\t\t\t(f, i) => new UploadingItem(observables[i], f, this._updateItems.bind(this), this._deleteItem.bind(this))\r\n\t\t);\r\n\t\tthis._uploadingItems = [...this._uploadingItems, ...items];\r\n\t}\r\n\r\n\tprivate _onDndEnterFrame(event: DragEvent) {\r\n\t\tevent.preventDefault();\r\n\t\tthis._numberOfFilesDragged = event.dataTransfer?.items?.length || 0;\r\n\t\tthis._overFrameCounter++;\r\n\t}\r\n\r\n\tprivate _onDndLeaveFrame() {\r\n\t\tthis._overFrameCounter--;\r\n\t}\r\n\r\n\tprivate _onDndStopFrame() {\r\n\t\tthis._overFrameCounter = 0;\r\n\t\tthis._overCounter = 0;\r\n\t}\r\n\r\n\tprivate _acceptChange(v: string[]) {\r\n\t\tthis._initSubs = this._service.list().subscribe(list => {\r\n\t\t\tthis._uploadingItems = list\r\n\t\t\t\t.filter(i => v.includes(i.id))\r\n\t\t\t\t.map(f => new UploadingItem(f, this._deleteItem.bind(this)));\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _updateItems() {\r\n\t\tconst completed = this._uploadingItems.filter(i => !!i.uploadedItem);\r\n\t\tthis._uploadingItems = [...completed, ...this._uploadingItems.filter(i => !i.uploadedItem)];\r\n\t\tthis._updateValue(completed);\r\n\t}\r\n\r\n\tprivate _deleteItem(item: UploadingItem) {\r\n\t\tconst key = item.uploadedItem?.id;\r\n\t\tif (key) {\r\n\t\t\tthis._service.delete(key).subscribe(() => {\r\n\t\t\t\tthis._uploadingItems = this._uploadingItems.filter(i => i !== item);\r\n\t\t\t\tconst completed = this._uploadingItems.filter(i => !!i.uploadedItem);\r\n\t\t\t\tthis._updateValue(completed);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis._uploadingItems = this._uploadingItems.filter(i => i !== item);\r\n\t\t\tconst completed = this._uploadingItems.filter(i => !!i.uploadedItem);\r\n\t\t\tthis._updateValue(completed);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _updateValue(completed: UploadingItem[]) {\r\n\t\tconst completedIds = completed.map(c => c.uploadedItem!.id);\r\n\t\tthis._value = completedIds;\r\n\t\tif (!this._value.length) {\r\n\t\t\tthis._value = null;\r\n\t\t}\r\n\t\tthis._onChange(completedIds);\r\n\t}\r\n}\r\n","<div class=\"bui-file-upload-container\">\n\t@if (!_initialising && remaining > 0 && (!_itemAnimationInProgress || remaining > 1)) {\n\t\t<div class=\"bui-file-upload-hint\">\n\t\t\t@if (_invalidFilesDragged) {\n\t\t\t\t<mat-icon [buiIcon]=\"'block'\" [size]=\"32\" color=\"warn\" variant=\"outlined\" style=\"opacity: 0.6\"></mat-icon>\n\t\t\t} @else {\n\t\t\t\t@if (!_overFrame && !_overDropZone) {\n\t\t\t\t\t<div class=\"bui-color-muted bui-upload-icon-link\" (click)=\"selectFiles()\">\n\t\t\t\t\t\t<mat-icon [buiIcon]=\"'fas fa-cloud-upload-alt'\" [size]=\"32\"></mat-icon>\n\t\t\t\t\t\t<a role=\"button\">{{ uploadActionText }}</a>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (_overFrame && !_overDropZone) {\n\t\t\t\t\t<div class=\"bui-color-light\">{{ dragHint }}</div>\n\t\t\t\t}\n\t\t\t\t@if (_overDropZone) {\n\t\t\t\t\t<div class=\"bui-color-light\">{{ dropHint }}</div>\n\t\t\t\t}\n\t\t\t}\n\t\t</div>\n\t}\n\t@if (_uploadingItems.length) {\n\t\t<div\n\t\t\tclass=\"bui-file-upload-list\"\n\t\t\t[@slideOut]=\"_uploadingItems.length\"\n\t\t\t(@slideOut.start)=\"_itemAnimationStart.next()\"\n\t\t\t(@slideOut.done)=\"_itemAnimationDone.next()\"\n\t\t>\n\t\t\t<span class=\"bui-file-uploaded-label\">{{ fileUploadedLabel }}</span>\n\t\t\t@for (item of _uploadingItems; track item; let idx = $index) {\n\t\t\t\t<div class=\"bui-file-upload-item\" [class.in-progress]=\"!item.done\" #itemDiv>\n\t\t\t\t\t<div class=\"bui-file-upload-item-name\">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<mat-icon class=\"bui-color-muted\">description</mat-icon>\n\t\t\t\t\t\t\t@if (item.done && !item.downloading) {\n\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\tclass=\"text\"\n\t\t\t\t\t\t\t\t\thref=\"#{{ item.uploadedItem?.id }}\"\n\t\t\t\t\t\t\t\t\t(click)=\"$event.preventDefault(); _openItem(item)\"\n\t\t\t\t\t\t\t\t\tcontextmenu=\"false\"\n\t\t\t\t\t\t\t\t\tmatTooltip=\"Download\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{{ item.name }}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<span class=\"text\">{{ item.name }}</span>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div class=\"bui-file-upload-item-progress\">\n\t\t\t\t\t\t\t@if (!item.downloading) {\n\t\t\t\t\t\t\t\t<mat-progress-bar\n\t\t\t\t\t\t\t\t\tmode=\"determinate\"\n\t\t\t\t\t\t\t\t\t[class.upload-completed]=\"item.done\"\n\t\t\t\t\t\t\t\t\t[value]=\"item.done ? 100 : item.progress * 100\"\n\t\t\t\t\t\t\t\t></mat-progress-bar>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t@if (item.downloading) {\n\t\t\t\t\t\t\t\t<mat-progress-bar mode=\"buffer\"></mat-progress-bar>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t@if (item.done) {\n\t\t\t\t\t\t\t\t\t100%\n\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t{{ item.progress | percent }}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"bui-file-upload-item-action\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tmat-icon-button\n\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\t(click)=\"item.cancel()\"\n\t\t\t\t\t\t\t(mouseenter)=\"itemDiv.classList.add('bui-file-upload-item-deleting')\"\n\t\t\t\t\t\t\t(mouseleave)=\"itemDiv.classList.remove('bui-file-upload-item-deleting')\"\n\t\t\t\t\t\t\tmatTooltip=\"Delete\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<mat-icon [buiIcon]=\"'cancel'\" style=\"line-height: 0.9\"></mat-icon>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t@if (idx < _uploadingItems.length - 1) {\n\t\t\t\t\t<mat-divider></mat-divider>\n\t\t\t\t}\n\t\t\t}\n\t\t</div>\n\t}\n\t<input\n\t\ttype=\"file\"\n\t\t#fileInput\n\t\tstyle=\"display: none\"\n\t\taccept=\"{{ _accept }}\"\n\t\t(change)=\"_handleFileSelection()\"\n\t\t[multiple]=\"remaining > 1\"\n\t/>\n\n\t@if (_fileSizeExceedMsg) {\n\t\t<div class=\"bui-color-warn bui-file-size-exceed\">\n\t\t\t<span> {{ _fileSizeExceedMsg }}</span> <mat-icon role=\"button\" (click)=\"_fileSizeExceedMsg = ''\">cancel</mat-icon>\n\t\t</div>\n\t}\n</div>\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FileUploadComponent } from './file-upload.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { IconFontModule } from '@bravura/ui/icon-font';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@NgModule({\r\n\tdeclarations: [FileUploadComponent],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tMatIconModule,\r\n\t\tIconFontModule,\r\n\t\tMatProgressBarModule,\r\n\t\tMatButtonModule,\r\n\t\tMatDividerModule,\r\n\t\tMatTooltipModule\r\n\t],\r\n\texports: [FileUploadComponent]\r\n})\r\nexport class FileUploadModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FileUploadService"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravura-ui-radio-panel.mjs","sources":["../../../projects/ui/radio-panel/radio-panel-item.component.ts","../../../projects/ui/radio-panel/radio-panel-item.component.html","../../../projects/ui/radio-panel/radio-panel.component.ts","../../../projects/ui/radio-panel/radio-panel.module.ts","../../../projects/ui/radio-panel/bravura-ui-radio-panel.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\n\nimport { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef } from '@angular/core';\nimport { MatRadioButton } from '@angular/material/radio';\n\n/**\n * Use `bui-radio-panel-item` instead of `mat-radio-button` in a `bui-radio-panel` to display an option.\n */\n@Component({\n\tselector: 'bui-radio-panel-item',\n\ttemplateUrl: './radio-panel-item.component.html',\n\tstyleUrls: ['./radio-panel-item.component.scss'],\n\t// tslint:disable-next-line: no-inputs-metadata-property\n\tinputs: ['disableRipple', 'tabIndex'],\n\texportAs: 'matRadioButton',\n\t// tslint:disable-next-line: no-host-metadata-property\n\thost: {\n\t\tclass: 'bui-radio-panel-item',\n\t\t'[class.bui-radio-checked]': 'checked',\n\t\t'[class.bui-disabled]': 'disabled',\n\t\t'[class._mat-animation-noopable]': '_noopAnimations',\n\t\t'[class.mat-primary]': 'color === \"primary\"',\n\t\t'[class.mat-accent]': 'color === \"accent\"',\n\t\t'[class.mat-warn]': 'color === \"warn\"',\n\t\t// Needs to be removed since it causes some a11y issues (see #21266).\n\t\t'[attr.tabindex]': 'null',\n\t\t'[attr.id]': 'id',\n\t\t'[attr.aria-label]': 'null',\n\t\t'[attr.aria-labelledby]': 'null',\n\t\t'[attr.aria-describedby]': 'null',\n\t\t// Note: under normal conditions focus shouldn't land on this element, however it may be\n\t\t// programmatically set, for example inside of a focus trap, in this case we want to forward\n\t\t// the focus to the native element.\n\t\t'(focus)': '_inputElement.nativeElement.focus()'\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tanimations: [\n\t\ttrigger('slideInOut', [\n\t\t\tstate('void', style({ height: '0px', overflow: 'hidden' })),\n\t\t\ttransition(':enter, :leave', animate('.25s'))\n\t\t])\n\t],\n\tstandalone: false\n})\nexport class RadioPanelItemComponent extends MatRadioButton {\n\t/**\n\t * This will be displayed as the panel header\n\t */\n\t@Input()\n\ttitle = '';\n\n\t/** The default position of the 'tick' icon relative to the title. */\n\t@Input() private _tickPosition: 'start' | 'end' | undefined;\n\n\t@Input()\n\tget tickPosition(): 'start' | 'end' {\n\t\treturn this._tickPosition || (this.radioGroup as any)?.tickPosition;\n\t}\n\tset tickPosition(pos: 'start' | 'end') {\n\t\tthis._tickPosition = pos;\n\t}\n\n\t@ContentChild('contentOnSelect')\n\t//@ts-ignore\n\tcontentOnSelect: TemplateRef<any>;\n}\n","<label\n\tmatRipple\n\tmatRippleColor=\"rgba(128,128,128,.1)\"\n\t[matRippleDisabled]=\"disabled || checked\"\n\t[attr.for]=\"inputId\"\n\t#label\n\tclass=\"bui-radio-panel-item-label bui-border-{{ checked ? color : 'default' }}\"\n>\n\t<div class=\"bui-radio-panel-item-wrapper\" [class.bui-radio-tick-at-end]=\"tickPosition === 'end'\">\n\t\t<div class=\"bui-label-header\">\n\t\t\t<span class=\"bui-label-title\" [innerHTML]=\"title\"></span>\n\t\t\t<ng-content select=\"[buiRadioItemHeadingEnd]\"></ng-content>\n\t\t\t<span class=\"bui-radio-panel-item-circle\">\n\t\t\t\t@if (!disabled) {\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"bui-persistent-ripple\"\n\t\t\t\t\t\tmatRipple\n\t\t\t\t\t\tmatRippleColor=\"rgba(128,128,128,.1)\"\n\t\t\t\t\t\t[matRippleCentered]=\"true\"\n\t\t\t\t\t\t[matRippleUnbounded]=\"true\"\n\t\t\t\t\t\t[matRippleTrigger]=\"label\"\n\t\t\t\t\t\t[matRippleRadius]=\"20\"\n\t\t\t\t\t></span>\n\t\t\t\t}\n\t\t\t\t@if (checked) {\n\t\t\t\t\t<mat-icon class=\"bui-radio-panel-checked-icon\">check_circle</mat-icon>\n\t\t\t\t}\n\t\t\t\t@if (!checked) {\n\t\t\t\t\t<mat-icon class=\"bui-radio-panel-item-circle-unchecked\">radio_button_unchecked</mat-icon>\n\t\t\t\t}\n\t\t\t</span>\n\t\t</div>\n\t\t<!-- The actual 'radio' part of the control. -->\n\t\t<span class=\"radio-container\">\n\t\t\t<input\n\t\t\t\t#input\n\t\t\t\tclass=\"mat-radio-input cdk-visually-hidden\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\t[id]=\"inputId\"\n\t\t\t\t[checked]=\"checked\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t[tabIndex]=\"tabIndex\"\n\t\t\t\t[attr.name]=\"name\"\n\t\t\t\t[attr.value]=\"value\"\n\t\t\t\t[required]=\"required\"\n\t\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\t\t[attr.aria-labelledby]=\"ariaLabelledby\"\n\t\t\t\t[attr.aria-describedby]=\"ariaDescribedby\"\n\t\t\t\t(change)=\"_onInputInteraction($event)\"\n\t\t\t\t(click)=\"_onInputInteraction($event)\"\n\t\t\t/>\n\t\t</span>\n\n\t\t<div class=\"bui-label-content-gap\"></div>\n\t\t<!-- The label content for radio control. -->\n\t\t<div class=\"bui-label-content\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t\t@if (contentOnSelect && checked) {\n\t\t\t<div class=\"bui-label-content\" @slideInOut>\n\t\t\t\t<ng-container *ngTemplateOutlet=\"contentOnSelect\"></ng-container>\n\t\t\t</div>\n\t\t}\n\t</div>\n</label>\n","import {\n\tComponent,\n\tContentChildren,\n\tforwardRef,\n\tHostBinding,\n\tInput,\n\tOnChanges,\n\tQueryList,\n\tSimpleChanges,\n\tChangeDetectionStrategy\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThemePalette } from '@angular/material/core';\nimport { MAT_RADIO_GROUP, MatRadioGroup } from '@angular/material/radio';\nimport { RadioPanelItemComponent } from './radio-panel-item.component';\n/**\n * Radio panel is a [control value accessor](https://angular.io/api/forms/ControlValueAccessor)\n * that extends Angular Material's [radio group component](https://material.angular.io/components/radio/overview).\n * It inherits all the features of `MatRadioGroup`, and arranges the child items in panels,\n * with the `title` attributes rendered as captions. The check box icon and the borders will be displayed\n * in the color selected by the theme attribute `color`.\n *\n */\n@Component({\n\t// tslint:disable-next-line: directive-selector\n\tselector: 'bui-radio-panel',\n\texportAs: 'buiRadioPanel',\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => RadioPanelComponent),\n\t\t\tmulti: true\n\t\t},\n\t\t{ provide: MAT_RADIO_GROUP, useExisting: forwardRef(() => RadioPanelComponent) }\n\t],\n\t// tslint:disable-next-line: no-host-metadata-property\n\thost: {\n\t\trole: 'radiogroup',\n\t\tclass: 'bui-radio-panel bui-host',\n\t\t'[style.--bui-panel-width]': \"panelWidth +'px'\"\n\t},\n\ttemplate: ` <ng-content></ng-content> `,\n\tstyleUrls: ['radio-panel.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.Eager,\n\tstandalone: false\n})\nexport class RadioPanelComponent extends MatRadioGroup implements OnChanges {\n\t/**\n\t * @ignore\n\t */\n\t@HostBinding('attr.class')\n\tclassAttr: string = '';\n\n\t/**\n\t * The default width of each panel when the `direction` is `row`\n\t */\n\t@Input()\n\tpanelWidth = 300;\n\n\t/** The flow direction of the radio panel items */\n\t@Input()\n\tdirection: 'row' | 'column' = 'row';\n\n\t/** Theme color for all of the radio panels in the group. */\n\t@Input() color: ThemePalette;\n\n\t/** The default position of the 'tick' icon relative to the title. */\n\t@Input() tickPosition: 'start' | 'end' = 'start';\n\n\t/**\n\t * @ignore\n\t */\n\t@ContentChildren(RadioPanelItemComponent, { descendants: true })\n\t_radios!: QueryList<RadioPanelItemComponent>;\n\n\t/** @ignore */\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (['color', 'tickPosition'].some(p => changes[p]) && this._radios) {\n\t\t\tthis._radios.forEach(item => item._markForCheck());\n\t\t}\n\n\t\tif (this.direction === 'row') {\n\t\t\tthis.classAttr = 'bui-radio-panel bui-host radio-dir-row';\n\t\t} else {\n\t\t\tthis.classAttr = 'bui-radio-panel bui-host radio-dir-column';\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\r\nimport { MatRipple } from '@angular/material/core';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { RadioPanelItemComponent } from './radio-panel-item.component';\r\nimport { RadioPanelComponent } from './radio-panel.component';\r\n\r\n/**\r\n * Import this NgModule for the radio panel component\r\n */\r\n@NgModule({\r\n\tdeclarations: [RadioPanelItemComponent, RadioPanelComponent],\r\n\timports: [MatRipple, MatIcon],\r\n\texports: [RadioPanelItemComponent, RadioPanelComponent]\r\n})\r\nexport class RadioPanelModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;AAKA;;AAEG;AAqCG,MAAO,uBAAwB,SAAQ,cAAc,CAAA;AApC3D,IAAA,WAAA,GAAA;;AAqCC;;AAEG;QAEH,IAAA,CAAA,KAAK,GAAG,EAAE;AAgBV,IAAA;AAXA,IAAA,IACI,YAAY,GAAA;QACf,OAAO,IAAI,CAAC,aAAa,IAAK,IAAI,CAAC,UAAkB,EAAE,YAAY;IACpE;IACA,IAAI,YAAY,CAAC,GAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,aAAa,GAAG,GAAG;IACzB;8GAhBY,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qCAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5CpC,6vEAiEA,EAAA,MAAA,EAAA,CAAA,wvEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,ED7Ba;YACX,OAAO,CAAC,YAAY,EAAE;AACrB,gBAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC3D,gBAAA,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC;aAC5C;AACD,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGW,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBApCnC,SAAS;+BACC,sBAAsB,EAAA,MAAA,EAIxB,CAAC,eAAe,EAAE,UAAU,CAAC,EAAA,QAAA,EAC3B,gBAAgB,EAAA,IAAA,EAEpB;AACL,wBAAA,KAAK,EAAE,sBAAsB;AAC7B,wBAAA,2BAA2B,EAAE,SAAS;AACtC,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,iCAAiC,EAAE,iBAAiB;AACpD,wBAAA,qBAAqB,EAAE,qBAAqB;AAC5C,wBAAA,oBAAoB,EAAE,oBAAoB;AAC1C,wBAAA,kBAAkB,EAAE,kBAAkB;;AAEtC,wBAAA,iBAAiB,EAAE,MAAM;AACzB,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,wBAAwB,EAAE,MAAM;AAChC,wBAAA,yBAAyB,EAAE,MAAM;;;;AAIjC,wBAAA,SAAS,EAAE;qBACX,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC;wBACX,OAAO,CAAC,YAAY,EAAE;AACrB,4BAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC3D,4BAAA,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC;yBAC5C;AACD,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,6vEAAA,EAAA,MAAA,EAAA,CAAA,wvEAAA,CAAA,EAAA;;sBAMhB;;sBAIA;;sBAEA;;sBAQA,YAAY;uBAAC,iBAAiB;;;AE/ChC;;;;;;;AAOG;AAwBG,MAAO,mBAAoB,SAAQ,aAAa,CAAA;AAvBtD,IAAA,WAAA,GAAA;;AAwBC;;AAEG;QAEH,IAAA,CAAA,SAAS,GAAW,EAAE;AAEtB;;AAEG;QAEH,IAAA,CAAA,UAAU,GAAG,GAAG;;QAIhB,IAAA,CAAA,SAAS,GAAqB,KAAK;;QAM1B,IAAA,CAAA,YAAY,GAAoB,OAAO;AAoBhD,IAAA;;AAXA,IAAA,WAAW,CAAC,OAAsB,EAAA;QACjC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;AACpE,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACnD;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,wCAAwC;QAC1D;aAAO;AACN,YAAA,IAAI,CAAC,SAAS,GAAG,2CAA2C;QAC7D;IACD;8GAxCY,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,EAAA,SAAA,EAnBpB;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE;AACP,aAAA;AACD,YAAA,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;SAC9E,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAsCgB,uBAAuB,yHA/B9B,CAAA,2BAAA,CAA6B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uJAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;;2FAK3B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAvB/B,SAAS;+BAEC,iBAAiB,EAAA,QAAA,EACjB,eAAe,EAAA,SAAA,EACd;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE;AACP,yBAAA;AACD,wBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,mBAAoB,CAAC;qBAC9E,EAAA,IAAA,EAEK;AACL,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,KAAK,EAAE,0BAA0B;AACjC,wBAAA,2BAA2B,EAAE;AAC7B,qBAAA,EAAA,QAAA,EACS,6BAA6B,EAAA,eAAA,EAEtB,uBAAuB,CAAC,KAAK,cAClC,KAAK,EAAA,MAAA,EAAA,CAAA,uJAAA,CAAA,EAAA;;sBAMhB,WAAW;uBAAC,YAAY;;sBAMxB;;sBAIA;;sBAIA;;sBAGA;;sBAKA,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;;AClEhE;;AAEG;MAMU,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,CAJb,uBAAuB,EAAE,mBAAmB,CAAA,EAAA,OAAA,EAAA,CACjD,SAAS,EAAE,OAAO,CAAA,EAAA,OAAA,EAAA,CAClB,uBAAuB,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAE1C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHP,OAAO,CAAA,EAAA,CAAA,CAAA;;2FAGhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,YAAY,EAAE,CAAC,uBAAuB,EAAE,mBAAmB,CAAC;AAC5D,oBAAA,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;AAC7B,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,mBAAmB;AACtD,iBAAA;;;ACbD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"bravura-ui-radio-panel.mjs","sources":["../../../projects/ui/radio-panel/radio-panel-item.component.ts","../../../projects/ui/radio-panel/radio-panel-item.component.html","../../../projects/ui/radio-panel/radio-panel.component.ts","../../../projects/ui/radio-panel/radio-panel.module.ts","../../../projects/ui/radio-panel/bravura-ui-radio-panel.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\r\n\r\nimport { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef } from '@angular/core';\r\nimport { MatRadioButton } from '@angular/material/radio';\r\n\r\n/**\r\n * Use `bui-radio-panel-item` instead of `mat-radio-button` in a `bui-radio-panel` to display an option.\r\n */\r\n@Component({\r\n\tselector: 'bui-radio-panel-item',\r\n\ttemplateUrl: './radio-panel-item.component.html',\r\n\tstyleUrls: ['./radio-panel-item.component.scss'],\r\n\t// tslint:disable-next-line: no-inputs-metadata-property\r\n\tinputs: ['disableRipple', 'tabIndex'],\r\n\texportAs: 'matRadioButton',\r\n\t// tslint:disable-next-line: no-host-metadata-property\r\n\thost: {\r\n\t\tclass: 'bui-radio-panel-item',\r\n\t\t'[class.bui-radio-checked]': 'checked',\r\n\t\t'[class.bui-disabled]': 'disabled',\r\n\t\t'[class._mat-animation-noopable]': '_noopAnimations',\r\n\t\t'[class.mat-primary]': 'color === \"primary\"',\r\n\t\t'[class.mat-accent]': 'color === \"accent\"',\r\n\t\t'[class.mat-warn]': 'color === \"warn\"',\r\n\t\t// Needs to be removed since it causes some a11y issues (see #21266).\r\n\t\t'[attr.tabindex]': 'null',\r\n\t\t'[attr.id]': 'id',\r\n\t\t'[attr.aria-label]': 'null',\r\n\t\t'[attr.aria-labelledby]': 'null',\r\n\t\t'[attr.aria-describedby]': 'null',\r\n\t\t// Note: under normal conditions focus shouldn't land on this element, however it may be\r\n\t\t// programmatically set, for example inside of a focus trap, in this case we want to forward\r\n\t\t// the focus to the native element.\r\n\t\t'(focus)': '_inputElement.nativeElement.focus()'\r\n\t},\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n\tanimations: [\r\n\t\ttrigger('slideInOut', [\r\n\t\t\tstate('void', style({ height: '0px', overflow: 'hidden' })),\r\n\t\t\ttransition(':enter, :leave', animate('.25s'))\r\n\t\t])\r\n\t],\r\n\tstandalone: false\r\n})\r\nexport class RadioPanelItemComponent extends MatRadioButton {\r\n\t/**\r\n\t * This will be displayed as the panel header\r\n\t */\r\n\t@Input()\r\n\ttitle = '';\r\n\r\n\t/** The default position of the 'tick' icon relative to the title. */\r\n\t@Input() private _tickPosition: 'start' | 'end' | undefined;\r\n\r\n\t@Input()\r\n\tget tickPosition(): 'start' | 'end' {\r\n\t\treturn this._tickPosition || (this.radioGroup as any)?.tickPosition;\r\n\t}\r\n\tset tickPosition(pos: 'start' | 'end') {\r\n\t\tthis._tickPosition = pos;\r\n\t}\r\n\r\n\t@ContentChild('contentOnSelect')\r\n\t//@ts-ignore\r\n\tcontentOnSelect: TemplateRef<any>;\r\n}\r\n","<label\n\tmatRipple\n\tmatRippleColor=\"rgba(128,128,128,.1)\"\n\t[matRippleDisabled]=\"disabled || checked\"\n\t[attr.for]=\"inputId\"\n\t#label\n\tclass=\"bui-radio-panel-item-label bui-border-{{ checked ? color : 'default' }}\"\n>\n\t<div class=\"bui-radio-panel-item-wrapper\" [class.bui-radio-tick-at-end]=\"tickPosition === 'end'\">\n\t\t<div class=\"bui-label-header\">\n\t\t\t<span class=\"bui-label-title\" [innerHTML]=\"title\"></span>\n\t\t\t<ng-content select=\"[buiRadioItemHeadingEnd]\"></ng-content>\n\t\t\t<span class=\"bui-radio-panel-item-circle\">\n\t\t\t\t@if (!disabled) {\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"bui-persistent-ripple\"\n\t\t\t\t\t\tmatRipple\n\t\t\t\t\t\tmatRippleColor=\"rgba(128,128,128,.1)\"\n\t\t\t\t\t\t[matRippleCentered]=\"true\"\n\t\t\t\t\t\t[matRippleUnbounded]=\"true\"\n\t\t\t\t\t\t[matRippleTrigger]=\"label\"\n\t\t\t\t\t\t[matRippleRadius]=\"20\"\n\t\t\t\t\t></span>\n\t\t\t\t}\n\t\t\t\t@if (checked) {\n\t\t\t\t\t<mat-icon class=\"bui-radio-panel-checked-icon\">check_circle</mat-icon>\n\t\t\t\t}\n\t\t\t\t@if (!checked) {\n\t\t\t\t\t<mat-icon class=\"bui-radio-panel-item-circle-unchecked\">radio_button_unchecked</mat-icon>\n\t\t\t\t}\n\t\t\t</span>\n\t\t</div>\n\t\t<!-- The actual 'radio' part of the control. -->\n\t\t<span class=\"radio-container\">\n\t\t\t<input\n\t\t\t\t#input\n\t\t\t\tclass=\"mat-radio-input cdk-visually-hidden\"\n\t\t\t\ttype=\"radio\"\n\t\t\t\t[id]=\"inputId\"\n\t\t\t\t[checked]=\"checked\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t[tabIndex]=\"tabIndex\"\n\t\t\t\t[attr.name]=\"name\"\n\t\t\t\t[attr.value]=\"value\"\n\t\t\t\t[required]=\"required\"\n\t\t\t\t[attr.aria-label]=\"ariaLabel\"\n\t\t\t\t[attr.aria-labelledby]=\"ariaLabelledby\"\n\t\t\t\t[attr.aria-describedby]=\"ariaDescribedby\"\n\t\t\t\t(change)=\"_onInputInteraction($event)\"\n\t\t\t\t(click)=\"_onInputInteraction($event)\"\n\t\t\t/>\n\t\t</span>\n\n\t\t<div class=\"bui-label-content-gap\"></div>\n\t\t<!-- The label content for radio control. -->\n\t\t<div class=\"bui-label-content\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t\t@if (contentOnSelect && checked) {\n\t\t\t<div class=\"bui-label-content\" @slideInOut>\n\t\t\t\t<ng-container *ngTemplateOutlet=\"contentOnSelect\"></ng-container>\n\t\t\t</div>\n\t\t}\n\t</div>\n</label>\n","import {\r\n\tComponent,\r\n\tContentChildren,\r\n\tforwardRef,\r\n\tHostBinding,\r\n\tInput,\r\n\tOnChanges,\r\n\tQueryList,\r\n\tSimpleChanges,\r\n\tChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { MAT_RADIO_GROUP, MatRadioGroup } from '@angular/material/radio';\r\nimport { RadioPanelItemComponent } from './radio-panel-item.component';\r\n/**\r\n * Radio panel is a [control value accessor](https://angular.io/api/forms/ControlValueAccessor)\r\n * that extends Angular Material's [radio group component](https://material.angular.io/components/radio/overview).\r\n * It inherits all the features of `MatRadioGroup`, and arranges the child items in panels,\r\n * with the `title` attributes rendered as captions. The check box icon and the borders will be displayed\r\n * in the color selected by the theme attribute `color`.\r\n *\r\n */\r\n@Component({\r\n\t// tslint:disable-next-line: directive-selector\r\n\tselector: 'bui-radio-panel',\r\n\texportAs: 'buiRadioPanel',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => RadioPanelComponent),\r\n\t\t\tmulti: true\r\n\t\t},\r\n\t\t{ provide: MAT_RADIO_GROUP, useExisting: forwardRef(() => RadioPanelComponent) }\r\n\t],\r\n\t// tslint:disable-next-line: no-host-metadata-property\r\n\thost: {\r\n\t\trole: 'radiogroup',\r\n\t\tclass: 'bui-radio-panel bui-host',\r\n\t\t'[style.--bui-panel-width]': \"panelWidth +'px'\"\r\n\t},\r\n\ttemplate: ` <ng-content></ng-content> `,\r\n\tstyleUrls: ['radio-panel.component.scss'],\r\n\tchangeDetection: ChangeDetectionStrategy.Eager,\r\n\tstandalone: false\r\n})\r\nexport class RadioPanelComponent extends MatRadioGroup implements OnChanges {\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\t@HostBinding('attr.class')\r\n\tclassAttr: string = '';\r\n\r\n\t/**\r\n\t * The default width of each panel when the `direction` is `row`\r\n\t */\r\n\t@Input()\r\n\tpanelWidth = 300;\r\n\r\n\t/** The flow direction of the radio panel items */\r\n\t@Input()\r\n\tdirection: 'row' | 'column' = 'row';\r\n\r\n\t/** Theme color for all of the radio panels in the group. */\r\n\t@Input() color: ThemePalette;\r\n\r\n\t/** The default position of the 'tick' icon relative to the title. */\r\n\t@Input() tickPosition: 'start' | 'end' = 'start';\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\t@ContentChildren(RadioPanelItemComponent, { descendants: true })\r\n\t_radios!: QueryList<RadioPanelItemComponent>;\r\n\r\n\t/** @ignore */\r\n\tngOnChanges(changes: SimpleChanges): void {\r\n\t\tif (['color', 'tickPosition'].some(p => changes[p]) && this._radios) {\r\n\t\t\tthis._radios.forEach(item => item._markForCheck());\r\n\t\t}\r\n\r\n\t\tif (this.direction === 'row') {\r\n\t\t\tthis.classAttr = 'bui-radio-panel bui-host radio-dir-row';\r\n\t\t} else {\r\n\t\t\tthis.classAttr = 'bui-radio-panel bui-host radio-dir-column';\r\n\t\t}\r\n\t}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatRipple } from '@angular/material/core';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { RadioPanelItemComponent } from './radio-panel-item.component';\r\nimport { RadioPanelComponent } from './radio-panel.component';\r\n\r\n/**\r\n * Import this NgModule for the radio panel component\r\n */\r\n@NgModule({\r\n\tdeclarations: [RadioPanelItemComponent, RadioPanelComponent],\r\n\timports: [MatRipple, MatIcon],\r\n\texports: [RadioPanelItemComponent, RadioPanelComponent]\r\n})\r\nexport class RadioPanelModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravura-ui-skeletons.mjs","sources":["../../../projects/ui/skeletons/skeleton-loader.component.ts","../../../projects/ui/skeletons/skeleton-loader-presets.directive.ts","../../../projects/ui/skeletons/skeletons.module.ts","../../../projects/ui/skeletons/bravura-ui-skeletons.ts"],"sourcesContent":["import { Directionality } from '@angular/cdk/bidi';\nimport {\n\tChangeDetectorRef,\n\tComponent,\n\tElementRef,\n\tOnChanges,\n\tOnDestroy,\n\tSimpleChanges,\n\tChangeDetectionStrategy\n} from '@angular/core';\nimport { ContentLoaderComponent } from '@ngneat/content-loader';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * Use the [Create React Content Loader](https://skeletonreact.com/) to create your custom skeleton loaders;\n *\n * Add the resulting `svg` elements as the content children of a `<bui-skeleton>` component.\n *\n * The component `bui-skeleton` extends `content-loader` from [ngneat/content-loader](https://github.com/ngneat/content-loader).\n *\n * You can also choose from one of the presets registered by the `SKELETON_PRESETS` injection token.\n *\n * The following code snippets demonstrate how to register a preset:\n *\n * ```typescript\n * @import {SkeletonsModule} from '@bravura/ui/skeletons';\n * @import htmlWithSvgElements from './custom-loader1.html';\n *\n * @NgModule({\n * imports: [SkeletonsModule.forConfig({ presets: {\n * custom1: { viewBox: '0 0 400 100', content: htmlWithSvgElements }\n * }})]\n * })\n * export class MyModule {}\n * ```\n *\n * custom-loader1.html:\n *\n * ```html\n * <rect x=\"50\" y=\"6\" rx=\"4\" ry=\"4\" width=\"343\" height=\"38\" />\n * <rect x=\"8\" y=\"6\" rx=\"4\" ry=\"4\" width=\"35\" height=\"38\" />\n * ```\n */\n@Component({\n\tselector: 'bui-skeleton',\n\ttemplate: '',\n\tchangeDetection: ChangeDetectionStrategy.Eager,\n\tstandalone: false\n})\nexport class SkeletonLoaderComponent extends ContentLoaderComponent implements OnChanges, OnDestroy {\n\tprivate _destroyed$ = new Subject<void>();\n\n\tconstructor(\n\t\telemRef: ElementRef<HTMLElement>,\n\t\tprivate _cdRef: ChangeDetectorRef,\n\t\tprivate _dir: Directionality\n\t) {\n\t\tsuper();\n\n\t\telemRef.nativeElement.classList.add('bui-host');\n\t\tthis.backgroundColor = 'rgba(128,128,128,0.2)';\n\t\tthis.foregroundColor = 'rgba(128,128,128,0.1)';\n\t\tthis.rtl = this._dir.value === 'rtl';\n\t\tthis._dir.change.pipe(takeUntil(this._destroyed$)).subscribe(v => {\n\t\t\tthis.style = {};\n\t\t\tthis.rtl = v === 'rtl';\n\t\t\tthis.ngOnInit();\n\t\t\tthis._cdRef.markForCheck();\n\t\t});\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (Object.keys(changes).some(k => changes[k] && !changes[k].isFirstChange())) {\n\t\t\tsuper.ngOnInit();\n\t\t\tthis._cdRef.markForCheck();\n\t\t}\n\t}\n}\n\nconst componentType: any = SkeletonLoaderComponent;\nconst superType: any = ContentLoaderComponent;\n\nObject.keys(superType.ɵcmp)\n\t.filter(k => !['selectors', 'type'].includes(k))\n\t.forEach(k => (componentType.ɵcmp[k] = superType.ɵcmp[k]));\n","import { AfterViewChecked, Directive, ElementRef, Host, Inject, InjectionToken, Input } from '@angular/core';\r\nimport { SkeletonLoaderComponent } from './skeleton-loader.component';\r\n\r\nexport type SkeletonPreset = {\r\n\tviewBox: string;\r\n\tcontent: string;\r\n};\r\n\r\nexport type SkeletonPresets = { [key: string]: SkeletonPreset };\r\n\r\nexport const SKELETON_PRESETS = new InjectionToken<SkeletonPresets>('bui-skeleton-presets');\r\n\r\nexport const DEFAULT_PRESETS: SkeletonPresets = {\r\n\tfacebook: {\r\n\t\tviewBox: '0 0 425 124',\r\n\t\tcontent: `\r\n\t\t<rect x=\"48\" y=\"8\" rx=\"3\" ry=\"3\" width=\"88\" height=\"6\" /> \r\n\t\t<rect x=\"48\" y=\"26\" rx=\"3\" ry=\"3\" width=\"52\" height=\"6\" /> \r\n\t\t<rect x=\"0\" y=\"56\" rx=\"3\" ry=\"3\" width=\"410\" height=\"6\" /> \r\n\t\t<rect x=\"0\" y=\"72\" rx=\"3\" ry=\"3\" width=\"380\" height=\"6\" /> \r\n\t\t<rect x=\"0\" y=\"88\" rx=\"3\" ry=\"3\" width=\"178\" height=\"6\" /> \r\n\t\t<circle cx=\"20\" cy=\"20\" r=\"20\" />\r\n\t\t`\r\n\t},\r\n\tcode: {\r\n\t\tviewBox: '0 0 340 84',\r\n\t\tcontent: `\r\n\t\t<rect x=\"0\" y=\"0\" rx=\"3\" ry=\"3\" width=\"67\" height=\"11\" /> \r\n\t\t<rect x=\"76\" y=\"0\" rx=\"3\" ry=\"3\" width=\"140\" height=\"11\" /> \r\n\t\t<rect x=\"127\" y=\"48\" rx=\"3\" ry=\"3\" width=\"53\" height=\"11\" /> \r\n\t\t<rect x=\"187\" y=\"48\" rx=\"3\" ry=\"3\" width=\"72\" height=\"11\" /> \r\n\t\t<rect x=\"18\" y=\"48\" rx=\"3\" ry=\"3\" width=\"100\" height=\"11\" /> \r\n\t\t<rect x=\"0\" y=\"71\" rx=\"3\" ry=\"3\" width=\"37\" height=\"11\" /> \r\n\t\t<rect x=\"18\" y=\"23\" rx=\"3\" ry=\"3\" width=\"140\" height=\"11\" /> \r\n\t\t<rect x=\"166\" y=\"23\" rx=\"3\" ry=\"3\" width=\"173\" height=\"11\" />\r\n\t\t`\r\n\t},\r\n\tinstagram: {\r\n\t\tviewBox: '0 0 400 460',\r\n\t\tcontent: `\r\n\t\t<circle cx=\"31\" cy=\"31\" r=\"15\" /> \r\n\t\t<rect x=\"58\" y=\"18\" rx=\"2\" ry=\"2\" width=\"140\" height=\"10\" /> \r\n\t\t<rect x=\"58\" y=\"34\" rx=\"2\" ry=\"2\" width=\"140\" height=\"10\" /> \r\n\t\t<rect x=\"0\" y=\"60\" rx=\"2\" ry=\"2\" width=\"400\" height=\"400\" />\r\n\t\t`\r\n\t},\r\n\tbulletList: {\r\n\t\tviewBox: '0 0 250 150',\r\n\t\tcontent: `\r\n\t\t<circle cx=\"10\" cy=\"20\" r=\"8\" /> \r\n\t\t<rect x=\"25\" y=\"15\" rx=\"5\" ry=\"5\" width=\"220\" height=\"10\" /> \r\n\t\t<circle cx=\"10\" cy=\"50\" r=\"8\" /> \r\n\t\t<rect x=\"25\" y=\"45\" rx=\"5\" ry=\"5\" width=\"220\" height=\"10\" /> \r\n\t\t<circle cx=\"10\" cy=\"80\" r=\"8\" /> \r\n\t\t<rect x=\"25\" y=\"75\" rx=\"5\" ry=\"5\" width=\"220\" height=\"10\" /> \r\n\t\t<circle cx=\"10\" cy=\"110\" r=\"8\" /> \r\n\t\t<rect x=\"25\" y=\"105\" rx=\"5\" ry=\"5\" width=\"220\" height=\"10\" />\r\n\t\t`\r\n\t}\r\n};\r\n\r\n@Directive({\r\n\tselector: 'bui-skeleton[preset]',\r\n\tstandalone: false\r\n})\r\nexport class SkeletonLoaderPresetsDirective implements AfterViewChecked {\r\n\t/** Select the SVG elements from one of the presets. */\r\n\t@Input()\r\n\tpreset?: string;\r\n\r\n\tprivate _allPresets: SkeletonPresets;\r\n\r\n\tconstructor(\r\n\t\t@Host() private _skeletonComponent: SkeletonLoaderComponent,\r\n\t\tprivate _elementRef: ElementRef<HTMLElement>,\r\n\t\t@Inject(SKELETON_PRESETS) _presetList: SkeletonPresets[]\r\n\t) {\r\n\t\tthis._allPresets = _presetList.reduce((p, c) => ({ ...p, ...c }), {});\r\n\t}\r\n\r\n\tngAfterViewChecked(): void {\r\n\t\tconst preset = this._allPresets[(this.preset || '') as any];\r\n\t\tif (preset) {\r\n\t\t\tconst clipPathElem = this._elementRef.nativeElement.querySelector(`[id='${this._skeletonComponent.idClip}']`)!;\r\n\t\t\tthis._skeletonComponent.viewBox = preset.viewBox;\r\n\t\t\tclipPathElem.innerHTML = preset.content;\r\n\t\t}\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule, ValueProvider } from '@angular/core';\r\nimport { BuiCommonModule } from '@bravura/ui/common';\r\nimport { ContentLoaderModule } from '@ngneat/content-loader';\r\nimport {\r\n\tDEFAULT_PRESETS,\r\n\tSkeletonLoaderPresetsDirective,\r\n\tSkeletonPresets,\r\n\tSKELETON_PRESETS\r\n} from './skeleton-loader-presets.directive';\r\nimport { SkeletonLoaderComponent } from './skeleton-loader.component';\r\n\r\nfunction provideSkeletonPresets(presets: SkeletonPresets): ValueProvider {\r\n\treturn {\r\n\t\tprovide: SKELETON_PRESETS,\r\n\t\tuseValue: presets,\r\n\t\tmulti: true\r\n\t};\r\n}\r\n\r\n@NgModule({\r\n\tdeclarations: [SkeletonLoaderComponent, SkeletonLoaderPresetsDirective],\r\n\timports: [CommonModule, ContentLoaderModule, BuiCommonModule],\r\n\texports: [ContentLoaderModule, BuiCommonModule, SkeletonLoaderComponent, SkeletonLoaderPresetsDirective],\r\n\tproviders: [provideSkeletonPresets(DEFAULT_PRESETS)]\r\n})\r\nexport class SkeletonsModule {\r\n\tstatic forConfig(config?: { presets?: SkeletonPresets }): ModuleWithProviders<SkeletonsModule> {\r\n\t\treturn {\r\n\t\t\tngModule: SkeletonsModule,\r\n\t\t\tproviders: [provideSkeletonPresets(config?.presets || {}), provideSkeletonPresets(DEFAULT_PRESETS)]\r\n\t\t};\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bravura-ui-skeletons.mjs","sources":["../../../projects/ui/skeletons/skeleton-loader.component.ts","../../../projects/ui/skeletons/skeleton-loader-presets.directive.ts","../../../projects/ui/skeletons/skeletons.module.ts","../../../projects/ui/skeletons/bravura-ui-skeletons.ts"],"sourcesContent":["import { Directionality } from '@angular/cdk/bidi';\r\nimport {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tElementRef,\r\n\tOnChanges,\r\n\tOnDestroy,\r\n\tSimpleChanges,\r\n\tChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { ContentLoaderComponent } from '@ngneat/content-loader';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n/**\r\n * Use the [Create React Content Loader](https://skeletonreact.com/) to create your custom skeleton loaders;\r\n *\r\n * Add the resulting `svg` elements as the content children of a `<bui-skeleton>` component.\r\n *\r\n * The component `bui-skeleton` extends `content-loader` from [ngneat/content-loader](https://github.com/ngneat/content-loader).\r\n *\r\n * You can also choose from one of the presets registered by the `SKELETON_PRESETS` injection token.\r\n *\r\n * The following code snippets demonstrate how to register a preset:\r\n *\r\n * ```typescript\r\n * @import {SkeletonsModule} from '@bravura/ui/skeletons';\r\n * @import htmlWithSvgElements from './custom-loader1.html';\r\n *\r\n * @NgModule({\r\n * imports: [SkeletonsModule.forConfig({ presets: {\r\n * custom1: { viewBox: '0 0 400 100', content: htmlWithSvgElements }\r\n * }})]\r\n * })\r\n * export class MyModule {}\r\n * ```\r\n *\r\n * custom-loader1.html:\r\n *\r\n * ```html\r\n * <rect x=\"50\" y=\"6\" rx=\"4\" ry=\"4\" width=\"343\" height=\"38\" />\r\n * <rect x=\"8\" y=\"6\" rx=\"4\" ry=\"4\" width=\"35\" height=\"38\" />\r\n * ```\r\n */\r\n@Component({\r\n\tselector: 'bui-skeleton',\r\n\ttemplate: '',\r\n\tchangeDetection: ChangeDetectionStrategy.Eager,\r\n\tstandalone: false\r\n})\r\nexport class SkeletonLoaderComponent extends ContentLoaderComponent implements OnChanges, OnDestroy {\r\n\tprivate _destroyed$ = new Subject<void>();\r\n\r\n\tconstructor(\r\n\t\telemRef: ElementRef<HTMLElement>,\r\n\t\tprivate _cdRef: ChangeDetectorRef,\r\n\t\tprivate _dir: Directionality\r\n\t) {\r\n\t\tsuper();\r\n\r\n\t\telemRef.nativeElement.classList.add('bui-host');\r\n\t\tthis.backgroundColor = 'rgba(128,128,128,0.2)';\r\n\t\tthis.foregroundColor = 'rgba(128,128,128,0.1)';\r\n\t\tthis.rtl = this._dir.value === 'rtl';\r\n\t\tthis._dir.change.pipe(takeUntil(this._destroyed$)).subscribe(v => {\r\n\t\t\tthis.style = {};\r\n\t\t\tthis.rtl = v === 'rtl';\r\n\t\t\tthis.ngOnInit();\r\n\t\t\tthis._cdRef.markForCheck();\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis._destroyed$.next();\r\n\t\tthis._destroyed$.complete();\r\n\t}\r\n\r\n\tngOnChanges(changes: SimpleChanges): void {\r\n\t\tif (Object.keys(changes).some(k => changes[k] && !changes[k].isFirstChange())) {\r\n\t\t\tsuper.ngOnInit();\r\n\t\t\tthis._cdRef.markForCheck();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nconst componentType: any = SkeletonLoaderComponent;\r\nconst superType: any = ContentLoaderComponent;\r\n\r\nObject.keys(superType.ɵcmp)\r\n\t.filter(k => !['selectors', 'type'].includes(k))\r\n\t.forEach(k => (componentType.ɵcmp[k] = superType.ɵcmp[k]));\r\n","import { AfterViewChecked, Directive, ElementRef, Host, Inject, InjectionToken, Input } from '@angular/core';\r\nimport { SkeletonLoaderComponent } from './skeleton-loader.component';\r\n\r\nexport type SkeletonPreset = {\r\n\tviewBox: string;\r\n\tcontent: string;\r\n};\r\n\r\nexport type SkeletonPresets = { [key: string]: SkeletonPreset };\r\n\r\nexport const SKELETON_PRESETS = new InjectionToken<SkeletonPresets>('bui-skeleton-presets');\r\n\r\nexport const DEFAULT_PRESETS: SkeletonPresets = {\r\n\tfacebook: {\r\n\t\tviewBox: '0 0 425 124',\r\n\t\tcontent: `\r\n\t\t<rect x=\"48\" y=\"8\" rx=\"3\" ry=\"3\" width=\"88\" height=\"6\" /> \r\n\t\t<rect x=\"48\" y=\"26\" rx=\"3\" ry=\"3\" width=\"52\" height=\"6\" /> \r\n\t\t<rect x=\"0\" y=\"56\" rx=\"3\" ry=\"3\" width=\"410\" height=\"6\" /> \r\n\t\t<rect x=\"0\" y=\"72\" rx=\"3\" ry=\"3\" width=\"380\" height=\"6\" /> \r\n\t\t<rect x=\"0\" y=\"88\" rx=\"3\" ry=\"3\" width=\"178\" height=\"6\" /> \r\n\t\t<circle cx=\"20\" cy=\"20\" r=\"20\" />\r\n\t\t`\r\n\t},\r\n\tcode: {\r\n\t\tviewBox: '0 0 340 84',\r\n\t\tcontent: `\r\n\t\t<rect x=\"0\" y=\"0\" rx=\"3\" ry=\"3\" width=\"67\" height=\"11\" /> \r\n\t\t<rect x=\"76\" y=\"0\" rx=\"3\" ry=\"3\" width=\"140\" height=\"11\" /> \r\n\t\t<rect x=\"127\" y=\"48\" rx=\"3\" ry=\"3\" width=\"53\" height=\"11\" /> \r\n\t\t<rect x=\"187\" y=\"48\" rx=\"3\" ry=\"3\" width=\"72\" height=\"11\" /> \r\n\t\t<rect x=\"18\" y=\"48\" rx=\"3\" ry=\"3\" width=\"100\" height=\"11\" /> \r\n\t\t<rect x=\"0\" y=\"71\" rx=\"3\" ry=\"3\" width=\"37\" height=\"11\" /> \r\n\t\t<rect x=\"18\" y=\"23\" rx=\"3\" ry=\"3\" width=\"140\" height=\"11\" /> \r\n\t\t<rect x=\"166\" y=\"23\" rx=\"3\" ry=\"3\" width=\"173\" height=\"11\" />\r\n\t\t`\r\n\t},\r\n\tinstagram: {\r\n\t\tviewBox: '0 0 400 460',\r\n\t\tcontent: `\r\n\t\t<circle cx=\"31\" cy=\"31\" r=\"15\" /> \r\n\t\t<rect x=\"58\" y=\"18\" rx=\"2\" ry=\"2\" width=\"140\" height=\"10\" /> \r\n\t\t<rect x=\"58\" y=\"34\" rx=\"2\" ry=\"2\" width=\"140\" height=\"10\" /> \r\n\t\t<rect x=\"0\" y=\"60\" rx=\"2\" ry=\"2\" width=\"400\" height=\"400\" />\r\n\t\t`\r\n\t},\r\n\tbulletList: {\r\n\t\tviewBox: '0 0 250 150',\r\n\t\tcontent: `\r\n\t\t<circle cx=\"10\" cy=\"20\" r=\"8\" /> \r\n\t\t<rect x=\"25\" y=\"15\" rx=\"5\" ry=\"5\" width=\"220\" height=\"10\" /> \r\n\t\t<circle cx=\"10\" cy=\"50\" r=\"8\" /> \r\n\t\t<rect x=\"25\" y=\"45\" rx=\"5\" ry=\"5\" width=\"220\" height=\"10\" /> \r\n\t\t<circle cx=\"10\" cy=\"80\" r=\"8\" /> \r\n\t\t<rect x=\"25\" y=\"75\" rx=\"5\" ry=\"5\" width=\"220\" height=\"10\" /> \r\n\t\t<circle cx=\"10\" cy=\"110\" r=\"8\" /> \r\n\t\t<rect x=\"25\" y=\"105\" rx=\"5\" ry=\"5\" width=\"220\" height=\"10\" />\r\n\t\t`\r\n\t}\r\n};\r\n\r\n@Directive({\r\n\tselector: 'bui-skeleton[preset]',\r\n\tstandalone: false\r\n})\r\nexport class SkeletonLoaderPresetsDirective implements AfterViewChecked {\r\n\t/** Select the SVG elements from one of the presets. */\r\n\t@Input()\r\n\tpreset?: string;\r\n\r\n\tprivate _allPresets: SkeletonPresets;\r\n\r\n\tconstructor(\r\n\t\t@Host() private _skeletonComponent: SkeletonLoaderComponent,\r\n\t\tprivate _elementRef: ElementRef<HTMLElement>,\r\n\t\t@Inject(SKELETON_PRESETS) _presetList: SkeletonPresets[]\r\n\t) {\r\n\t\tthis._allPresets = _presetList.reduce((p, c) => ({ ...p, ...c }), {});\r\n\t}\r\n\r\n\tngAfterViewChecked(): void {\r\n\t\tconst preset = this._allPresets[(this.preset || '') as any];\r\n\t\tif (preset) {\r\n\t\t\tconst clipPathElem = this._elementRef.nativeElement.querySelector(`[id='${this._skeletonComponent.idClip}']`)!;\r\n\t\t\tthis._skeletonComponent.viewBox = preset.viewBox;\r\n\t\t\tclipPathElem.innerHTML = preset.content;\r\n\t\t}\r\n\t}\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule, ValueProvider } from '@angular/core';\r\nimport { BuiCommonModule } from '@bravura/ui/common';\r\nimport { ContentLoaderModule } from '@ngneat/content-loader';\r\nimport {\r\n\tDEFAULT_PRESETS,\r\n\tSkeletonLoaderPresetsDirective,\r\n\tSkeletonPresets,\r\n\tSKELETON_PRESETS\r\n} from './skeleton-loader-presets.directive';\r\nimport { SkeletonLoaderComponent } from './skeleton-loader.component';\r\n\r\nfunction provideSkeletonPresets(presets: SkeletonPresets): ValueProvider {\r\n\treturn {\r\n\t\tprovide: SKELETON_PRESETS,\r\n\t\tuseValue: presets,\r\n\t\tmulti: true\r\n\t};\r\n}\r\n\r\n@NgModule({\r\n\tdeclarations: [SkeletonLoaderComponent, SkeletonLoaderPresetsDirective],\r\n\timports: [CommonModule, ContentLoaderModule, BuiCommonModule],\r\n\texports: [ContentLoaderModule, BuiCommonModule, SkeletonLoaderComponent, SkeletonLoaderPresetsDirective],\r\n\tproviders: [provideSkeletonPresets(DEFAULT_PRESETS)]\r\n})\r\nexport class SkeletonsModule {\r\n\tstatic forConfig(config?: { presets?: SkeletonPresets }): ModuleWithProviders<SkeletonsModule> {\r\n\t\treturn {\r\n\t\t\tngModule: SkeletonsModule,\r\n\t\t\tproviders: [provideSkeletonPresets(config?.presets || {}), provideSkeletonPresets(DEFAULT_PRESETS)]\r\n\t\t};\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravura-ui-stepper.mjs","sources":["../../../projects/ui/stepper/step-label-top.directive.ts","../../../projects/ui/stepper/stepper-animation.ts","../../../projects/ui/stepper/stepper.component.ts","../../../projects/ui/stepper/stepper.component.html","../../../projects/ui/stepper/stepper.module.ts","../../../projects/ui/stepper/bravura-ui-stepper.ts"],"sourcesContent":["import { AfterContentInit, ContentChild, Directive, inject, Optional, TemplateRef } from '@angular/core';\r\nimport { MatStep } from '@angular/material/stepper';\r\n\r\n@Directive({\r\n\tselector: '[buiStepLabelTop]',\r\n\tstandalone: false\r\n})\r\nexport class StepLabelTopDirective {\r\n\tconstructor(@Optional() public templateRef: TemplateRef<any>) {}\r\n}\r\n\r\n@Directive({\r\n\tselector: 'mat-step',\r\n\tstandalone: false\r\n})\r\nexport class StepDirective implements AfterContentInit {\r\n\t@ContentChild(StepLabelTopDirective)\r\n\t@Optional()\r\n\tstepLabelTopDirective: StepLabelTopDirective;\r\n\r\n\tstep = inject(MatStep);\r\n\r\n\tconstructor() {}\r\n\r\n\tngAfterContentInit(): void {\r\n\t\t(this.step as any).stepLabelTopTemplate = this.stepLabelTopDirective?.templateRef;\r\n\t}\r\n}\r\n","import {\r\n\tanimate,\r\n\tAnimationStateMetadata,\r\n\tAnimationTransitionMetadata,\r\n\tstate,\r\n\tstyle,\r\n\ttransition,\r\n\ttrigger\r\n} from '@angular/animations';\r\n\r\nfunction drawerAnimations(isLeft: boolean): (AnimationStateMetadata | AnimationTransitionMetadata)[] {\r\n\tconst closedStyle = { opacity: '0', height: 0, width: 0, visibility: 'hidden' };\r\n\tconst left = { ...closedStyle, transform: 'translateX(50%)' };\r\n\tconst height = { ...closedStyle, transform: 'scaleY(0.5)' };\r\n\treturn [\r\n\t\tstate('open, open-instant', style({ visibility: 'visible' })),\r\n\t\tstate('void', style(isLeft ? left : height)),\r\n\t\ttransition('void => open-instant', animate('0ms')),\r\n\t\ttransition('void <=> open, open-instant => void', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\r\n\t];\r\n}\r\n\r\nexport default {\r\n\tstepTransition: trigger('stepTransition', [\r\n\t\tstate('previous', style({ transform: 'translate3d(0, -100%, 0)', visibility: 'hidden' })),\r\n\t\tstate('current', style({ transform: 'none', visibility: 'inherit' })),\r\n\t\tstate('next', style({ transform: 'translate3d(0, 100%, 0)', visibility: 'hidden' })),\r\n\t\ttransition('* => *', animate('500ms cubic-bezier(0.35, 0, 0.25, 1)'))\r\n\t]),\r\n\r\n\tleftDrawer: trigger('leftDrawer', drawerAnimations(true)),\r\n\ttopDrawer: trigger('topDrawer', drawerAnimations(false))\r\n};\r\n","import { AnimationEvent } from '@angular/animations';\nimport { CdkStepper, STEPPER_GLOBAL_OPTIONS, StepContentPositionState, StepperOptions } from '@angular/cdk/stepper';\n\nimport {\n\tAfterContentInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tContentChildren,\n\tElementRef,\n\tEventEmitter,\n\tInject,\n\tInput,\n\tOptional,\n\tOutput,\n\tQueryList,\n\tSelf,\n\tSkipSelf,\n\tTemplateRef,\n\tViewChild,\n\tViewChildren,\n\tViewEncapsulation,\n\tDOCUMENT\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatStep, MatStepHeader, MatStepper, MatStepperIcon, MatStepperIconContext } from '@angular/material/stepper';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\nimport animation from './stepper-animation';\n\n/** @ignore */\nconst BREAKPOINT = 768;\n\n/**\n * [Angular Material's stepper](https://material.angular.io/components/stepper/overview) provides a wizard-like workflow by dividing\n * content into logical steps.\n *\n * This stepper extends Angular's to customise the presentation of its headers to achieve a better user experience in both mobile and\n * desktop browsers.\n *\n */\n\n@Component({\n\tselector: 'bui-stepper, [buiStepper]',\n\texportAs: 'buiStepper, matStepper, matVerticalStepper, matHorizontalStepper',\n\ttemplateUrl: './stepper.component.html',\n\tstyleUrls: ['./stepper.component.scss'],\n\tinputs: ['selectedIndex'],\n\thost: {\n\t\tclass: 'bui-stepper bui-host',\n\t\t'[attr.aria-orientation]': 'orientation',\n\t\trole: 'tablist'\n\t},\n\tanimations: [animation.stepTransition, animation.leftDrawer, animation.topDrawer],\n\tproviders: [\n\t\t{ provide: MatStepper, useExisting: StepperComponent },\n\t\t{ provide: CdkStepper, useExisting: StepperComponent },\n\t\t{ provide: STEPPER_GLOBAL_OPTIONS, useValue: { displayDefaultIndicatorType: false } }\n\t],\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: false\n})\nexport class StepperComponent extends CdkStepper implements AfterContentInit {\n\t/** @ignore The list of step headers of the steps in the stepper. */\n\t@ViewChildren(MatStepHeader) override _stepHeader!: QueryList<MatStepHeader>;\n\n\t/** @ignore Full list of steps inside the stepper, including inside nested steppers. */\n\t@ContentChildren(MatStep, { descendants: true }) override _steps!: QueryList<MatStep>;\n\n\t/** @ignore Steps that belong to the current stepper, excluding ones from nested steppers. */\n\toverride readonly steps: QueryList<MatStep> = new QueryList<MatStep>();\n\n\t/** @ignore Custom icon overrides passed in by the consumer. */\n\t@ContentChildren(MatStepperIcon, { descendants: true }) _icons!: QueryList<MatStepperIcon>;\n\n\t/** @ignore Event emitted when the current step is done transitioning in. */\n\t@Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n\t/** Whether ripples should be disabled for the step headers. */\n\t@Input() disableRipple?: boolean;\n\n\t/** Theme color for all of the steps in stepper. */\n\t@Input() color: ThemePalette;\n\n\t/**\n\t * A function that constructs the text in the progress cycle for the 'narrow' view.\n\t *\n\t * Default value: `'{selected step} of {total number of steps}'`\n\t */\n\t@Input() indicatorFormatter: (index: number, total: number) => string;\n\n\t/** The text that precedes the name of the next step label, used in the 'narrow' view. */\n\t@Input() nextStepLabelPrefix = 'Next: ';\n\n\t/** @ignore Consumer-specified template-refs to be used to override the header icons. */\n\t_iconOverrides: Record<string, TemplateRef<MatStepperIconContext>> = {};\n\n\t/** @ignore Stream of animation `done` events when the body expands/collapses. */\n\treadonly _animationDone = new Subject<AnimationEvent>();\n\n\t/** @ignore Whether the stepper is in a narrow container */\n\t_narrow = false;\n\n\t/** @ignore Emits whenever the drawer has started animating. */\n\treadonly _leftDrawerStarted = new Subject<AnimationEvent>();\n\t/** @ignore Emits whenever the drawer is done animating. */\n\treadonly _leftDrawerEnded = new Subject<AnimationEvent>();\n\t/** @ignore Current state of the sidenav animation. */\n\t_leftDrawerState: 'open-instant' | 'open' | 'void' = 'open-instant';\n\n\t/** @ignore Emits whenever the drawer has started animating. */\n\treadonly _topDrawerStarted = new Subject<AnimationEvent>();\n\t/** @ignore Emits whenever the drawer is done animating. */\n\treadonly _topDrawerEnded = new Subject<AnimationEvent>();\n\t/** @ignore Current state of the sidenav animation. */\n\t_topDrawerState: 'open-instant' | 'open' | 'void' = 'void';\n\n\t/** @ignore */ readonly _progressCircleSize = 80;\n\t/** @ignore */ readonly _progressCircleWidth = 5;\n\t/** @ignore */ _stepTransitioning = false;\n\n\t@ViewChild('editIconTemplate', { static: true })\n\tprivate _editIconTemplate!: TemplateRef<any>;\n\n\tconstructor(\n\t\tprivate changeDetectorRef: ChangeDetectorRef,\n\t\tprivate _buiElRef: ElementRef<HTMLElement>,\n\t\t@Inject(DOCUMENT) _document: any,\n\t\t@Self() @Inject(STEPPER_GLOBAL_OPTIONS) stepperOptions: StepperOptions,\n\t\t@Optional() @SkipSelf() @Inject(STEPPER_GLOBAL_OPTIONS) defaultStepperOptions?: StepperOptions\n\t) {\n\t\tsuper();\n\t\tthis.orientation = 'vertical';\n\t\tthis.indicatorFormatter = (index, total) => `${index} of ${total}`;\n\t\tObject.keys(defaultStepperOptions || {})\n\t\t\t.filter(k => k !== 'displayDefaultIndicatorType')\n\t\t\t.forEach(((k: keyof StepperOptions) => (stepperOptions[k] = defaultStepperOptions![k])) as any);\n\t}\n\n\toverride ngAfterContentInit() {\n\t\tsuper.ngAfterContentInit();\n\t\tthis._icons.forEach(({ name, templateRef }) => (this._iconOverrides[name] = templateRef));\n\n\t\t// Mark the component for change detection whenever the content children query changes\n\t\tthis.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\n\t\t\tthis._stateChanged();\n\t\t});\n\n\t\tthis._animationDone\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState),\n\t\t\t\ttakeUntil(this._destroyed)\n\t\t\t)\n\t\t\t.subscribe(event => {\n\t\t\t\tif ((event.toState as StepContentPositionState) === 'current') {\n\t\t\t\t\tthis.animationDone.emit();\n\t\t\t\t\tthis._stepTransitioning = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\tthis._leftDrawerEnded\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState),\n\t\t\t\tfilter(ev => ev.toState === 'void' && ev.toState !== ev.fromState),\n\t\t\t\ttakeUntil(this._destroyed)\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis._topDrawerState = 'open';\n\t\t\t});\n\n\t\tthis._topDrawerEnded\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState),\n\t\t\t\tfilter(ev => ev.toState === 'void' && ev.toState !== ev.fromState),\n\t\t\t\ttakeUntil(this._destroyed)\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis._leftDrawerState = 'open';\n\t\t\t});\n\t\tthis._iconOverrides.edit = this._iconOverrides.edit || this._editIconTemplate;\n\t}\n\n\t/** @ignore */\n\t_stepIsNavigable(index: number, step: MatStep): boolean {\n\t\treturn step.completed || this.selectedIndex === index || !this.linear;\n\t}\n\n\t/** @ignore */\n\t_widthChanged(w: number) {\n\t\tconst narrow = Math.abs(w - BREAKPOINT) < 20 ? this._narrow : w < BREAKPOINT;\n\t\tconst cls = 'bui-stepper-narrow';\n\t\tconst classList = this._buiElRef.nativeElement.classList;\n\t\tif (narrow) {\n\t\t\tthis._leftDrawerState = 'void';\n\t\t\tclassList.add(cls);\n\t\t} else {\n\t\t\tthis._topDrawerState = 'void';\n\t\t\tclassList.remove(cls);\n\t\t}\n\t\tif (this._narrow !== narrow) {\n\t\t\tthis._narrow = narrow;\n\t\t\tthis._stateChanged();\n\t\t}\n\t}\n\n\t/** @ignore */\n\t_startStepTransition() {\n\t\tsetTimeout(() => {\n\t\t\tthis._stepTransitioning = true;\n\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t});\n\t}\n\n\ttoCustomStep(step: any) {\n\t\treturn <any>step;\n\t}\n}\n","<div class=\"bui-stepper-wrapper\" [style.display]=\"_leftDrawerState.startsWith('open') ? 'flex' : 'block'\" #sizeMonitor>\n\t<div\n\t\tclass=\"bui-stepper-left-header-container\"\n\t\t[@leftDrawer]=\"_leftDrawerState\"\n\t\t(@leftDrawer.start)=\"_leftDrawerStarted.next($event)\"\n\t\t(@leftDrawer.done)=\"_leftDrawerEnded.next($event)\"\n\t>\n\t\t<div class=\"bui-step-progress-label\">Step {{ selectedIndex + 1 }} of {{ steps.length }}</div>\n\t\t@for (step of steps; track step; let i = $index; let isLast = $last) {\n\t\t\t<div class=\"bui-stepper-header-wrapper\" [class.bui-stepper-vertical-line]=\"!isLast\">\n\t\t\t\t<mat-step-header\n\t\t\t\t\tclass=\"bui-stepper-header\"\n\t\t\t\t\t(click)=\"step.select()\"\n\t\t\t\t\t(keydown)=\"_onKeydown($event)\"\n\t\t\t\t\t[tabIndex]=\"_getFocusIndex() === i ? 0 : -1\"\n\t\t\t\t\t[id]=\"_getStepLabelId(i)\"\n\t\t\t\t\t[attr.aria-posinset]=\"i + 1\"\n\t\t\t\t\t[attr.aria-setsize]=\"steps.length\"\n\t\t\t\t\t[attr.aria-controls]=\"_getStepContentId(i)\"\n\t\t\t\t\t[attr.aria-selected]=\"selectedIndex == i\"\n\t\t\t\t\t[attr.aria-label]=\"step.ariaLabel || null\"\n\t\t\t\t\t[attr.aria-labelledby]=\"!step.ariaLabel && step.ariaLabelledby ? step.ariaLabelledby : null\"\n\t\t\t\t\t[attr.aria-disabled]=\"_stepIsNavigable(i, step) ? null : true\"\n\t\t\t\t\t[index]=\"i\"\n\t\t\t\t\t[state]=\"step.indicatorType()\"\n\t\t\t\t\t[label]=\"step.stepLabel || step.label\"\n\t\t\t\t\t[selected]=\"selectedIndex === i\"\n\t\t\t\t\t[active]=\"_stepIsNavigable(i, step)\"\n\t\t\t\t\t[optional]=\"step.optional\"\n\t\t\t\t\t[errorMessage]=\"step.errorMessage\"\n\t\t\t\t\t[iconOverrides]=\"_iconOverrides\"\n\t\t\t\t\t[disableRipple]=\"disableRipple || !_stepIsNavigable(i, step)\"\n\t\t\t\t\t[color]=\"step.color || color\"\n\t\t\t\t></mat-step-header>\n\t\t\t</div>\n\t\t}\n\t</div>\n\n\t<div class=\"bui-stepper-content-container\" [buiSizingBy]=\"sizeMonitor\" (buiResized)=\"_widthChanged($event.width)\">\n\t\t<div\n\t\t\tclass=\"bui-stepper-top-header-container\"\n\t\t\t[class.bui-stepper-header-active]=\"_leftDrawerState === 'void'\"\n\t\t\t[@topDrawer]=\"_topDrawerState\"\n\t\t\t(@topDrawer.start)=\"_topDrawerStarted.next($event)\"\n\t\t\t(@topDrawer.done)=\"_topDrawerEnded.next($event)\"\n\t\t>\n\t\t\t<div class=\"bui-stepper-top-header-progress\">\n\t\t\t\t<span class=\"bui-stepper-top-header-indicator\">\n\t\t\t\t\tStep {{ indicatorFormatter(selectedIndex + 1, steps.length) }}\n\t\t\t\t</span>\n\t\t\t</div>\n\n\t\t\t<div class=\"bui-stepper-progress-indicator\">\n\t\t\t\t@for (s of steps; track s; let i = $index) {\n\t\t\t\t\t<div\n\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t(click)=\"selectedIndex = i\"\n\t\t\t\t\t\tclass=\"bui-stepper-progress-indicator-section\"\n\t\t\t\t\t\t[class.bui-step-section-interacted]=\"i <= selectedIndex\"\n\t\t\t\t\t></div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t@if (selectedIndex < steps.length - 1) {\n\t\t\t\t<div class=\"bui-stepper-top-header-title-next\">\n\t\t\t\t\t{{ nextStepLabelPrefix }}\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"labelTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: steps.get(selectedIndex + 1) }\"\n\t\t\t\t\t></ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\n\t\t\t@if (selected) {\n\t\t\t\t<div class=\"bui-stepper-top-header-titles-wrapper\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"toCustomStep(selected).stepLabelTopTemplate\"></ng-container>\n\t\t\t\t\t<div class=\"bui-stepper-top-header-title\">\n\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"labelTemplate\"\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: selected }\"\n\t\t\t\t\t\t></ng-template>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t\t<div class=\"bui-stepper-content-wrapper\" [class.bui-stepper-content-wrapper-transitioning]=\"_stepTransitioning\">\n\t\t\t@for (step of steps; track step; let i = $index) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"bui-stepper-content\"\n\t\t\t\t\trole=\"tabpanel\"\n\t\t\t\t\t[@stepTransition]=\"_getAnimationDirection(i)\"\n\t\t\t\t\t(@stepTransition.start)=\"_startStepTransition()\"\n\t\t\t\t\t(@stepTransition.done)=\"_animationDone.next($event)\"\n\t\t\t\t\t[id]=\"_getStepContentId(i)\"\n\t\t\t\t\t[attr.aria-labelledby]=\"_getStepLabelId(i)\"\n\t\t\t\t\t[attr.aria-expanded]=\"selectedIndex === i\"\n\t\t\t\t>\n\t\t\t\t\t@if (!_narrow) {\n\t\t\t\t\t\t<div class=\"bui-stepper-content-header-label\">\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"toCustomStep(step).stepLabelTopTemplate\"></ng-container>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"labelTemplate\"\n\t\t\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: step }\"\n\t\t\t\t\t\t\t\t></ng-template>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"step.content\"></ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t</div>\n</div>\n\n<ng-template #labelTemplate let-step>\n\t@if (step.stepLabel) {\n\t\t<ng-template [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-template>\n\t} @else {\n\t\t{{ step.label }}\n\t}\n\t<ng-template #stringLabelTempl>{{ step.label }}</ng-template>\n</ng-template>\n\n<ng-template #editIconTemplate let-index=\"index\">\n\t<span>{{ index + 1 }}</span>\n</ng-template>\n","import { PortalModule } from '@angular/cdk/portal';\r\nimport { CdkStepperModule } from '@angular/cdk/stepper';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatRippleModule } from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { BehaviorModule } from '@bravura/ui/behavior';\r\nimport { StepDirective, StepLabelTopDirective } from './step-label-top.directive';\r\nimport { StepperComponent } from './stepper.component';\r\n\r\n@NgModule({\r\n\tdeclarations: [StepperComponent, StepDirective, StepLabelTopDirective],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tPortalModule,\r\n\t\tCdkStepperModule,\r\n\t\tMatStepperModule,\r\n\t\tMatButtonModule,\r\n\t\tMatIconModule,\r\n\t\tMatRippleModule,\r\n\t\tMatProgressSpinnerModule,\r\n\t\tBehaviorModule\r\n\t],\r\n\texports: [StepperComponent, MatStepperModule, StepLabelTopDirective, StepDirective]\r\n})\r\nexport class StepperModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bravura-ui-stepper.mjs","sources":["../../../projects/ui/stepper/step-label-top.directive.ts","../../../projects/ui/stepper/stepper-animation.ts","../../../projects/ui/stepper/stepper.component.ts","../../../projects/ui/stepper/stepper.component.html","../../../projects/ui/stepper/stepper.module.ts","../../../projects/ui/stepper/bravura-ui-stepper.ts"],"sourcesContent":["import { AfterContentInit, ContentChild, Directive, inject, Optional, TemplateRef } from '@angular/core';\r\nimport { MatStep } from '@angular/material/stepper';\r\n\r\n@Directive({\r\n\tselector: '[buiStepLabelTop]',\r\n\tstandalone: false\r\n})\r\nexport class StepLabelTopDirective {\r\n\tconstructor(@Optional() public templateRef: TemplateRef<any>) {}\r\n}\r\n\r\n@Directive({\r\n\tselector: 'mat-step',\r\n\tstandalone: false\r\n})\r\nexport class StepDirective implements AfterContentInit {\r\n\t@ContentChild(StepLabelTopDirective)\r\n\t@Optional()\r\n\tstepLabelTopDirective: StepLabelTopDirective;\r\n\r\n\tstep = inject(MatStep);\r\n\r\n\tconstructor() {}\r\n\r\n\tngAfterContentInit(): void {\r\n\t\t(this.step as any).stepLabelTopTemplate = this.stepLabelTopDirective?.templateRef;\r\n\t}\r\n}\r\n","import {\r\n\tanimate,\r\n\tAnimationStateMetadata,\r\n\tAnimationTransitionMetadata,\r\n\tstate,\r\n\tstyle,\r\n\ttransition,\r\n\ttrigger\r\n} from '@angular/animations';\r\n\r\nfunction drawerAnimations(isLeft: boolean): (AnimationStateMetadata | AnimationTransitionMetadata)[] {\r\n\tconst closedStyle = { opacity: '0', height: 0, width: 0, visibility: 'hidden' };\r\n\tconst left = { ...closedStyle, transform: 'translateX(50%)' };\r\n\tconst height = { ...closedStyle, transform: 'scaleY(0.5)' };\r\n\treturn [\r\n\t\tstate('open, open-instant', style({ visibility: 'visible' })),\r\n\t\tstate('void', style(isLeft ? left : height)),\r\n\t\ttransition('void => open-instant', animate('0ms')),\r\n\t\ttransition('void <=> open, open-instant => void', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\r\n\t];\r\n}\r\n\r\nexport default {\r\n\tstepTransition: trigger('stepTransition', [\r\n\t\tstate('previous', style({ transform: 'translate3d(0, -100%, 0)', visibility: 'hidden' })),\r\n\t\tstate('current', style({ transform: 'none', visibility: 'inherit' })),\r\n\t\tstate('next', style({ transform: 'translate3d(0, 100%, 0)', visibility: 'hidden' })),\r\n\t\ttransition('* => *', animate('500ms cubic-bezier(0.35, 0, 0.25, 1)'))\r\n\t]),\r\n\r\n\tleftDrawer: trigger('leftDrawer', drawerAnimations(true)),\r\n\ttopDrawer: trigger('topDrawer', drawerAnimations(false))\r\n};\r\n","import { AnimationEvent } from '@angular/animations';\r\nimport { CdkStepper, STEPPER_GLOBAL_OPTIONS, StepContentPositionState, StepperOptions } from '@angular/cdk/stepper';\r\n\r\nimport {\r\n\tAfterContentInit,\r\n\tChangeDetectionStrategy,\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tContentChildren,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tInject,\r\n\tInput,\r\n\tOptional,\r\n\tOutput,\r\n\tQueryList,\r\n\tSelf,\r\n\tSkipSelf,\r\n\tTemplateRef,\r\n\tViewChild,\r\n\tViewChildren,\r\n\tViewEncapsulation,\r\n\tDOCUMENT\r\n} from '@angular/core';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { MatStep, MatStepHeader, MatStepper, MatStepperIcon, MatStepperIconContext } from '@angular/material/stepper';\r\nimport { Subject } from 'rxjs';\r\nimport { distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\r\nimport animation from './stepper-animation';\r\n\r\n/** @ignore */\r\nconst BREAKPOINT = 768;\r\n\r\n/**\r\n * [Angular Material's stepper](https://material.angular.io/components/stepper/overview) provides a wizard-like workflow by dividing\r\n * content into logical steps.\r\n *\r\n * This stepper extends Angular's to customise the presentation of its headers to achieve a better user experience in both mobile and\r\n * desktop browsers.\r\n *\r\n */\r\n\r\n@Component({\r\n\tselector: 'bui-stepper, [buiStepper]',\r\n\texportAs: 'buiStepper, matStepper, matVerticalStepper, matHorizontalStepper',\r\n\ttemplateUrl: './stepper.component.html',\r\n\tstyleUrls: ['./stepper.component.scss'],\r\n\tinputs: ['selectedIndex'],\r\n\thost: {\r\n\t\tclass: 'bui-stepper bui-host',\r\n\t\t'[attr.aria-orientation]': 'orientation',\r\n\t\trole: 'tablist'\r\n\t},\r\n\tanimations: [animation.stepTransition, animation.leftDrawer, animation.topDrawer],\r\n\tproviders: [\r\n\t\t{ provide: MatStepper, useExisting: StepperComponent },\r\n\t\t{ provide: CdkStepper, useExisting: StepperComponent },\r\n\t\t{ provide: STEPPER_GLOBAL_OPTIONS, useValue: { displayDefaultIndicatorType: false } }\r\n\t],\r\n\tencapsulation: ViewEncapsulation.None,\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n\tstandalone: false\r\n})\r\nexport class StepperComponent extends CdkStepper implements AfterContentInit {\r\n\t/** @ignore The list of step headers of the steps in the stepper. */\r\n\t@ViewChildren(MatStepHeader) override _stepHeader!: QueryList<MatStepHeader>;\r\n\r\n\t/** @ignore Full list of steps inside the stepper, including inside nested steppers. */\r\n\t@ContentChildren(MatStep, { descendants: true }) override _steps!: QueryList<MatStep>;\r\n\r\n\t/** @ignore Steps that belong to the current stepper, excluding ones from nested steppers. */\r\n\toverride readonly steps: QueryList<MatStep> = new QueryList<MatStep>();\r\n\r\n\t/** @ignore Custom icon overrides passed in by the consumer. */\r\n\t@ContentChildren(MatStepperIcon, { descendants: true }) _icons!: QueryList<MatStepperIcon>;\r\n\r\n\t/** @ignore Event emitted when the current step is done transitioning in. */\r\n\t@Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\t/** Whether ripples should be disabled for the step headers. */\r\n\t@Input() disableRipple?: boolean;\r\n\r\n\t/** Theme color for all of the steps in stepper. */\r\n\t@Input() color: ThemePalette;\r\n\r\n\t/**\r\n\t * A function that constructs the text in the progress cycle for the 'narrow' view.\r\n\t *\r\n\t * Default value: `'{selected step} of {total number of steps}'`\r\n\t */\r\n\t@Input() indicatorFormatter: (index: number, total: number) => string;\r\n\r\n\t/** The text that precedes the name of the next step label, used in the 'narrow' view. */\r\n\t@Input() nextStepLabelPrefix = 'Next: ';\r\n\r\n\t/** @ignore Consumer-specified template-refs to be used to override the header icons. */\r\n\t_iconOverrides: Record<string, TemplateRef<MatStepperIconContext>> = {};\r\n\r\n\t/** @ignore Stream of animation `done` events when the body expands/collapses. */\r\n\treadonly _animationDone = new Subject<AnimationEvent>();\r\n\r\n\t/** @ignore Whether the stepper is in a narrow container */\r\n\t_narrow = false;\r\n\r\n\t/** @ignore Emits whenever the drawer has started animating. */\r\n\treadonly _leftDrawerStarted = new Subject<AnimationEvent>();\r\n\t/** @ignore Emits whenever the drawer is done animating. */\r\n\treadonly _leftDrawerEnded = new Subject<AnimationEvent>();\r\n\t/** @ignore Current state of the sidenav animation. */\r\n\t_leftDrawerState: 'open-instant' | 'open' | 'void' = 'open-instant';\r\n\r\n\t/** @ignore Emits whenever the drawer has started animating. */\r\n\treadonly _topDrawerStarted = new Subject<AnimationEvent>();\r\n\t/** @ignore Emits whenever the drawer is done animating. */\r\n\treadonly _topDrawerEnded = new Subject<AnimationEvent>();\r\n\t/** @ignore Current state of the sidenav animation. */\r\n\t_topDrawerState: 'open-instant' | 'open' | 'void' = 'void';\r\n\r\n\t/** @ignore */ readonly _progressCircleSize = 80;\r\n\t/** @ignore */ readonly _progressCircleWidth = 5;\r\n\t/** @ignore */ _stepTransitioning = false;\r\n\r\n\t@ViewChild('editIconTemplate', { static: true })\r\n\tprivate _editIconTemplate!: TemplateRef<any>;\r\n\r\n\tconstructor(\r\n\t\tprivate changeDetectorRef: ChangeDetectorRef,\r\n\t\tprivate _buiElRef: ElementRef<HTMLElement>,\r\n\t\t@Inject(DOCUMENT) _document: any,\r\n\t\t@Self() @Inject(STEPPER_GLOBAL_OPTIONS) stepperOptions: StepperOptions,\r\n\t\t@Optional() @SkipSelf() @Inject(STEPPER_GLOBAL_OPTIONS) defaultStepperOptions?: StepperOptions\r\n\t) {\r\n\t\tsuper();\r\n\t\tthis.orientation = 'vertical';\r\n\t\tthis.indicatorFormatter = (index, total) => `${index} of ${total}`;\r\n\t\tObject.keys(defaultStepperOptions || {})\r\n\t\t\t.filter(k => k !== 'displayDefaultIndicatorType')\r\n\t\t\t.forEach(((k: keyof StepperOptions) => (stepperOptions[k] = defaultStepperOptions![k])) as any);\r\n\t}\r\n\r\n\toverride ngAfterContentInit() {\r\n\t\tsuper.ngAfterContentInit();\r\n\t\tthis._icons.forEach(({ name, templateRef }) => (this._iconOverrides[name] = templateRef));\r\n\r\n\t\t// Mark the component for change detection whenever the content children query changes\r\n\t\tthis.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\r\n\t\t\tthis._stateChanged();\r\n\t\t});\r\n\r\n\t\tthis._animationDone\r\n\t\t\t.pipe(\r\n\t\t\t\tdistinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState),\r\n\t\t\t\ttakeUntil(this._destroyed)\r\n\t\t\t)\r\n\t\t\t.subscribe(event => {\r\n\t\t\t\tif ((event.toState as StepContentPositionState) === 'current') {\r\n\t\t\t\t\tthis.animationDone.emit();\r\n\t\t\t\t\tthis._stepTransitioning = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\tthis._leftDrawerEnded\r\n\t\t\t.pipe(\r\n\t\t\t\tdistinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState),\r\n\t\t\t\tfilter(ev => ev.toState === 'void' && ev.toState !== ev.fromState),\r\n\t\t\t\ttakeUntil(this._destroyed)\r\n\t\t\t)\r\n\t\t\t.subscribe(() => {\r\n\t\t\t\tthis._topDrawerState = 'open';\r\n\t\t\t});\r\n\r\n\t\tthis._topDrawerEnded\r\n\t\t\t.pipe(\r\n\t\t\t\tdistinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState),\r\n\t\t\t\tfilter(ev => ev.toState === 'void' && ev.toState !== ev.fromState),\r\n\t\t\t\ttakeUntil(this._destroyed)\r\n\t\t\t)\r\n\t\t\t.subscribe(() => {\r\n\t\t\t\tthis._leftDrawerState = 'open';\r\n\t\t\t});\r\n\t\tthis._iconOverrides.edit = this._iconOverrides.edit || this._editIconTemplate;\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_stepIsNavigable(index: number, step: MatStep): boolean {\r\n\t\treturn step.completed || this.selectedIndex === index || !this.linear;\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_widthChanged(w: number) {\r\n\t\tconst narrow = Math.abs(w - BREAKPOINT) < 20 ? this._narrow : w < BREAKPOINT;\r\n\t\tconst cls = 'bui-stepper-narrow';\r\n\t\tconst classList = this._buiElRef.nativeElement.classList;\r\n\t\tif (narrow) {\r\n\t\t\tthis._leftDrawerState = 'void';\r\n\t\t\tclassList.add(cls);\r\n\t\t} else {\r\n\t\t\tthis._topDrawerState = 'void';\r\n\t\t\tclassList.remove(cls);\r\n\t\t}\r\n\t\tif (this._narrow !== narrow) {\r\n\t\t\tthis._narrow = narrow;\r\n\t\t\tthis._stateChanged();\r\n\t\t}\r\n\t}\r\n\r\n\t/** @ignore */\r\n\t_startStepTransition() {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis._stepTransitioning = true;\r\n\t\t\tthis.changeDetectorRef.markForCheck();\r\n\t\t});\r\n\t}\r\n\r\n\ttoCustomStep(step: any) {\r\n\t\treturn <any>step;\r\n\t}\r\n}\r\n","<div class=\"bui-stepper-wrapper\" [style.display]=\"_leftDrawerState.startsWith('open') ? 'flex' : 'block'\" #sizeMonitor>\n\t<div\n\t\tclass=\"bui-stepper-left-header-container\"\n\t\t[@leftDrawer]=\"_leftDrawerState\"\n\t\t(@leftDrawer.start)=\"_leftDrawerStarted.next($event)\"\n\t\t(@leftDrawer.done)=\"_leftDrawerEnded.next($event)\"\n\t>\n\t\t<div class=\"bui-step-progress-label\">Step {{ selectedIndex + 1 }} of {{ steps.length }}</div>\n\t\t@for (step of steps; track step; let i = $index; let isLast = $last) {\n\t\t\t<div class=\"bui-stepper-header-wrapper\" [class.bui-stepper-vertical-line]=\"!isLast\">\n\t\t\t\t<mat-step-header\n\t\t\t\t\tclass=\"bui-stepper-header\"\n\t\t\t\t\t(click)=\"step.select()\"\n\t\t\t\t\t(keydown)=\"_onKeydown($event)\"\n\t\t\t\t\t[tabIndex]=\"_getFocusIndex() === i ? 0 : -1\"\n\t\t\t\t\t[id]=\"_getStepLabelId(i)\"\n\t\t\t\t\t[attr.aria-posinset]=\"i + 1\"\n\t\t\t\t\t[attr.aria-setsize]=\"steps.length\"\n\t\t\t\t\t[attr.aria-controls]=\"_getStepContentId(i)\"\n\t\t\t\t\t[attr.aria-selected]=\"selectedIndex == i\"\n\t\t\t\t\t[attr.aria-label]=\"step.ariaLabel || null\"\n\t\t\t\t\t[attr.aria-labelledby]=\"!step.ariaLabel && step.ariaLabelledby ? step.ariaLabelledby : null\"\n\t\t\t\t\t[attr.aria-disabled]=\"_stepIsNavigable(i, step) ? null : true\"\n\t\t\t\t\t[index]=\"i\"\n\t\t\t\t\t[state]=\"step.indicatorType()\"\n\t\t\t\t\t[label]=\"step.stepLabel || step.label\"\n\t\t\t\t\t[selected]=\"selectedIndex === i\"\n\t\t\t\t\t[active]=\"_stepIsNavigable(i, step)\"\n\t\t\t\t\t[optional]=\"step.optional\"\n\t\t\t\t\t[errorMessage]=\"step.errorMessage\"\n\t\t\t\t\t[iconOverrides]=\"_iconOverrides\"\n\t\t\t\t\t[disableRipple]=\"disableRipple || !_stepIsNavigable(i, step)\"\n\t\t\t\t\t[color]=\"step.color || color\"\n\t\t\t\t></mat-step-header>\n\t\t\t</div>\n\t\t}\n\t</div>\n\n\t<div class=\"bui-stepper-content-container\" [buiSizingBy]=\"sizeMonitor\" (buiResized)=\"_widthChanged($event.width)\">\n\t\t<div\n\t\t\tclass=\"bui-stepper-top-header-container\"\n\t\t\t[class.bui-stepper-header-active]=\"_leftDrawerState === 'void'\"\n\t\t\t[@topDrawer]=\"_topDrawerState\"\n\t\t\t(@topDrawer.start)=\"_topDrawerStarted.next($event)\"\n\t\t\t(@topDrawer.done)=\"_topDrawerEnded.next($event)\"\n\t\t>\n\t\t\t<div class=\"bui-stepper-top-header-progress\">\n\t\t\t\t<span class=\"bui-stepper-top-header-indicator\">\n\t\t\t\t\tStep {{ indicatorFormatter(selectedIndex + 1, steps.length) }}\n\t\t\t\t</span>\n\t\t\t</div>\n\n\t\t\t<div class=\"bui-stepper-progress-indicator\">\n\t\t\t\t@for (s of steps; track s; let i = $index) {\n\t\t\t\t\t<div\n\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t(click)=\"selectedIndex = i\"\n\t\t\t\t\t\tclass=\"bui-stepper-progress-indicator-section\"\n\t\t\t\t\t\t[class.bui-step-section-interacted]=\"i <= selectedIndex\"\n\t\t\t\t\t></div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t@if (selectedIndex < steps.length - 1) {\n\t\t\t\t<div class=\"bui-stepper-top-header-title-next\">\n\t\t\t\t\t{{ nextStepLabelPrefix }}\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"labelTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: steps.get(selectedIndex + 1) }\"\n\t\t\t\t\t></ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\n\t\t\t@if (selected) {\n\t\t\t\t<div class=\"bui-stepper-top-header-titles-wrapper\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"toCustomStep(selected).stepLabelTopTemplate\"></ng-container>\n\t\t\t\t\t<div class=\"bui-stepper-top-header-title\">\n\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"labelTemplate\"\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: selected }\"\n\t\t\t\t\t\t></ng-template>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t\t<div class=\"bui-stepper-content-wrapper\" [class.bui-stepper-content-wrapper-transitioning]=\"_stepTransitioning\">\n\t\t\t@for (step of steps; track step; let i = $index) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"bui-stepper-content\"\n\t\t\t\t\trole=\"tabpanel\"\n\t\t\t\t\t[@stepTransition]=\"_getAnimationDirection(i)\"\n\t\t\t\t\t(@stepTransition.start)=\"_startStepTransition()\"\n\t\t\t\t\t(@stepTransition.done)=\"_animationDone.next($event)\"\n\t\t\t\t\t[id]=\"_getStepContentId(i)\"\n\t\t\t\t\t[attr.aria-labelledby]=\"_getStepLabelId(i)\"\n\t\t\t\t\t[attr.aria-expanded]=\"selectedIndex === i\"\n\t\t\t\t>\n\t\t\t\t\t@if (!_narrow) {\n\t\t\t\t\t\t<div class=\"bui-stepper-content-header-label\">\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"toCustomStep(step).stepLabelTopTemplate\"></ng-container>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"labelTemplate\"\n\t\t\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: step }\"\n\t\t\t\t\t\t\t\t></ng-template>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"step.content\"></ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t</div>\n</div>\n\n<ng-template #labelTemplate let-step>\n\t@if (step.stepLabel) {\n\t\t<ng-template [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-template>\n\t} @else {\n\t\t{{ step.label }}\n\t}\n\t<ng-template #stringLabelTempl>{{ step.label }}</ng-template>\n</ng-template>\n\n<ng-template #editIconTemplate let-index=\"index\">\n\t<span>{{ index + 1 }}</span>\n</ng-template>\n","import { PortalModule } from '@angular/cdk/portal';\r\nimport { CdkStepperModule } from '@angular/cdk/stepper';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatRippleModule } from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { BehaviorModule } from '@bravura/ui/behavior';\r\nimport { StepDirective, StepLabelTopDirective } from './step-label-top.directive';\r\nimport { StepperComponent } from './stepper.component';\r\n\r\n@NgModule({\r\n\tdeclarations: [StepperComponent, StepDirective, StepLabelTopDirective],\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tPortalModule,\r\n\t\tCdkStepperModule,\r\n\t\tMatStepperModule,\r\n\t\tMatButtonModule,\r\n\t\tMatIconModule,\r\n\t\tMatRippleModule,\r\n\t\tMatProgressSpinnerModule,\r\n\t\tBehaviorModule\r\n\t],\r\n\texports: [StepperComponent, MatStepperModule, StepLabelTopDirective, StepDirective]\r\n})\r\nexport class StepperModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -65,9 +65,18 @@ TooltipComponent.ɵcmp.styles.push(...TooltipComponent$1.ɵcmp.styles);
|
|
|
65
65
|
* All the other features are identical as those in Angular Material tooltip.
|
|
66
66
|
*/
|
|
67
67
|
class TooltipDirective extends MatTooltip {
|
|
68
|
-
constructor() {
|
|
69
|
-
super(
|
|
68
|
+
constructor(elementRef) {
|
|
69
|
+
super();
|
|
70
70
|
this._contentSub = new Subject().subscribe();
|
|
71
|
+
const _self = this;
|
|
72
|
+
_self._tooltipComponent = TooltipComponent;
|
|
73
|
+
this.touchGestures = 'off';
|
|
74
|
+
const element = elementRef.nativeElement;
|
|
75
|
+
element.setAttribute('aria-hidden', 'false');
|
|
76
|
+
if (element.tabIndex === -1) {
|
|
77
|
+
element.tabIndex = 0;
|
|
78
|
+
element.setAttribute('aria-roledescription', 'tooltip');
|
|
79
|
+
}
|
|
71
80
|
}
|
|
72
81
|
/** Allows the user to define the position of the tooltip relative to the parent element */
|
|
73
82
|
get buiTooltipPosition() {
|
|
@@ -140,7 +149,7 @@ class TooltipDirective extends MatTooltip {
|
|
|
140
149
|
ngOnDestroy() {
|
|
141
150
|
this._contentSub.unsubscribe();
|
|
142
151
|
}
|
|
143
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: TooltipDirective, deps:
|
|
152
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: TooltipDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
144
153
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.6", type: TooltipDirective, isStandalone: true, selector: "[buiTooltip]", inputs: { buiTooltipPosition: "buiTooltipPosition", buiTooltipDisabled: "buiTooltipDisabled", buiTooltip: "buiTooltip", buiTooltipClass: "buiTooltipClass" }, host: { listeners: { "click": "clicked()" }, classAttribute: "mat-tooltip-trigger bui-tooltip-trigger" }, providers: [
|
|
145
154
|
{
|
|
146
155
|
provide: BUI_TOOLTIP_TEMPLATE_REF,
|
|
@@ -163,7 +172,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
163
172
|
}
|
|
164
173
|
]
|
|
165
174
|
}]
|
|
166
|
-
}], propDecorators: { buiTooltipPosition: [{
|
|
175
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { buiTooltipPosition: [{
|
|
167
176
|
type: Input
|
|
168
177
|
}], buiTooltipDisabled: [{
|
|
169
178
|
type: Input
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravura-ui-tooltip.mjs","sources":["../../../projects/ui/tooltip/tooltip.component.ts","../../../projects/ui/tooltip/tooltip.component.html","../../../projects/ui/tooltip/tooltip.directive.ts","../../../projects/ui/tooltip/bravura-ui-tooltip.ts"],"sourcesContent":["import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tinject,\n\tInjectionToken,\n\tTemplateRef,\n\tViewChild,\n\tViewContainerRef,\n\tViewEncapsulation\n} from '@angular/core';\nimport { TooltipComponent as MatTooltipComponent } from '@angular/material/tooltip';\nimport { getTextWidth } from '@bravura/ui/common';\n\n/**\n * @ignore\n */\ninterface TooltipTemplateContainer {\n\ttemplate?: TemplateRef<any>;\n\tmessage?: string;\n}\n\n/**\n * @ignore\n */\nexport const BUI_TOOLTIP_TEMPLATE_REF = new InjectionToken<TooltipTemplateContainer>(\n\t'@bravura/ui/tooltip/templateContainer'\n);\n\n@Component({\n\tselector: 'bui-tooltip-component',\n\ttemplateUrl: './tooltip.component.html',\n\tstyleUrls: ['./tooltip.component.scss'],\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'bui-tooltip-component bui-host',\n\t\t// Forces the element to have a layout in IE and Edge. This fixes issues where the element\n\t\t// won't be rendered if the animations are disabled or there is no web animations polyfill.\n\t\t'[style.zoom]': 'isVisible() ? 1 : null',\n\t\t'(mouseleave)': '_handleMouseLeave($event)',\n\t\t'aria-hidden': 'true'\n\t},\n\timports: [A11yModule, CommonModule, OverlayModule]\n})\nexport class TooltipComponent extends MatTooltipComponent {\n\tprivate _messageCopy = '';\n\n\t@ViewChild('tooltip', { static: true })\n\t_tooltip!: ElementRef<HTMLElement>;\n\n\t@ViewChild('tooltipDiv', { static: true })\n\tprivate tooltipDiv!: ElementRef<HTMLDivElement>;\n\n\t@ViewChild('messageCont', { static: true, read: ViewContainerRef })\n\tprivate messageCont!: ViewContainerRef;\n\n\tprivate _tooltipInst = inject(BUI_TOOLTIP_TEMPLATE_REF);\n\n\tshow(delay: number): void {\n\t\tif (this._messageCopy !== this.message && !this._tooltipInst.template) {\n\t\t\tthis.tooltipDiv.nativeElement.innerHTML = this.message;\n\t\t\tthis._messageCopy = this.message;\n\t\t\tconst width = Math.max(Math.sqrt(getTextWidth(this.message) * 40), 360);\n\t\t\tthis._tooltip.nativeElement.style.maxWidth = `${width}px`;\n\t\t} else if (this._tooltipInst.template) {\n\t\t\tthis.messageCont.clear();\n\t\t\tconst ref = this.messageCont.createEmbeddedView(this._tooltipInst.template);\n\t\t\tref.detectChanges();\n\t\t\tthis._tooltipInst.message = this.message = this.tooltipDiv.nativeElement.textContent as string;\n\t\t}\n\t\tsuper.show(delay);\n\t}\n}\n\n(TooltipComponent as any).ɵcmp.styles.push(...(MatTooltipComponent as any).ɵcmp.styles);\n","<div\r\n\t#tooltip\r\n\tclass=\"mdc-tooltip mdc-tooltip--shown mat-mdc-tooltip bui-tooltip\"\r\n\t[ngClass]=\"tooltipClass\"\r\n\t(animationend)=\"_handleAnimationEnd($event)\"\r\n\t[class.mdc-tooltip--multiline]=\"_isMultiline\"\r\n>\r\n\t<div #tooltipDiv>\r\n\t\t<ng-container #messageCont></ng-container>\r\n\t</div>\r\n</div>\r\n","import { Directive, HostListener, Input, TemplateRef, forwardRef } from '@angular/core';\nimport { MatTooltip, TooltipPosition } from '@angular/material/tooltip';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { BUI_TOOLTIP_TEMPLATE_REF, TooltipComponent } from './tooltip.component';\n\n/**\n * This directive extends [Angular Material tooltip](https://material.angular.io/components/tooltip/overview), with the additional capability of displaying\n * HTML content in the overlay area.\n *\n * All the other features are identical as those in Angular Material tooltip.\n */\n@Directive({\n\tselector: '[buiTooltip]',\n\texportAs: 'buiTooltip',\n\thost: {\n\t\tclass: 'mat-tooltip-trigger bui-tooltip-trigger'\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: BUI_TOOLTIP_TEMPLATE_REF,\n\t\t\tuseExisting: forwardRef(() => TooltipDirective)\n\t\t}\n\t]\n})\nexport class TooltipDirective extends MatTooltip {\n\tprivate _templateRef?: TemplateRef<any>;\n\tprivate _contentSub: Subscription = new Subject<void>().subscribe();\n\tprivate _contentObs?: Observable<string>;\n\n\t/** Allows the user to define the position of the tooltip relative to the parent element */\n\t@Input()\n\tget buiTooltipPosition(): TooltipPosition {\n\t\treturn this.position;\n\t}\n\tset buiTooltipPosition(value: TooltipPosition) {\n\t\tthis.position = value;\n\t}\n\n\t/** Disables the display of the tooltip. */\n\t@Input()\n\tget buiTooltipDisabled(): boolean {\n\t\treturn this.disabled;\n\t}\n\tset buiTooltipDisabled(value) {\n\t\tthis.disabled = value;\n\t}\n\n\t/** The message to be displayed in the tooltip. */\n\t@Input()\n\tget buiTooltip(): string | TemplateRef<any> | Observable<string> {\n\t\treturn this._templateRef || this.message;\n\t}\n\tset buiTooltip(value) {\n\t\tthis._contentSub.unsubscribe();\n\t\tthis._contentObs = undefined;\n\t\tif (typeof value === 'string') {\n\t\t\tthis.message = value;\n\t\t} else if (value instanceof TemplateRef) {\n\t\t\tthis._templateRef = value;\n\t\t\tif (value) {\n\t\t\t\tthis.message = '[bui-tooltip-template]';\n\t\t\t} else {\n\t\t\t\tthis._templateRef = undefined;\n\t\t\t\tthis.message = '';\n\t\t\t}\n\t\t} else if (value instanceof Observable) {\n\t\t\tthis.message = '...';\n\t\t\tthis._contentObs = value;\n\t\t}\n\t}\n\n\t/** @ignore */\n\tget template(): TemplateRef<any> | undefined {\n\t\treturn this._templateRef;\n\t}\n\n\t/** Classes to be passed to the tooltip. Supports the same syntax as `ngClass`. */\n\t@Input()\n\tget buiTooltipClass() {\n\t\treturn this.tooltipClass;\n\t}\n\tset buiTooltipClass(value: string | string[] | Set<string> | { [key: string]: any }) {\n\t\tthis.tooltipClass = value;\n\t}\n\n\t/** @ignore */\n\t@HostListener('click')\n\tclicked() {\n\t\tthis.toggle();\n\t}\n\n\t/** Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input */\n\tshow(\n\t\tdelay: number = this.showDelay,\n\t\torigin?:\n\t\t\t| {\n\t\t\t\t\tx: number;\n\t\t\t\t\ty: number;\n\t\t\t }\n\t\t\t| undefined\n\t): void {\n\t\tif (this._contentObs) {\n\t\t\tthis._contentSub.unsubscribe();\n\t\t\tthis._contentSub = this._contentObs.subscribe(c => {\n\t\t\t\tthis.message = c;\n\t\t\t\tthis._contentSub.unsubscribe();\n\t\t\t\tsuper.show(delay, origin);\n\t\t\t});\n\t\t} else {\n\t\t\tsuper.show(delay, origin);\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tthis._contentSub.unsubscribe();\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["MatTooltipComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bravura-ui-tooltip.mjs","sources":["../../../projects/ui/tooltip/tooltip.component.ts","../../../projects/ui/tooltip/tooltip.component.html","../../../projects/ui/tooltip/tooltip.directive.ts","../../../projects/ui/tooltip/bravura-ui-tooltip.ts"],"sourcesContent":["import { A11yModule } from '@angular/cdk/a11y';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n\tChangeDetectionStrategy,\r\n\tComponent,\r\n\tElementRef,\r\n\tinject,\r\n\tInjectionToken,\r\n\tTemplateRef,\r\n\tViewChild,\r\n\tViewContainerRef,\r\n\tViewEncapsulation\r\n} from '@angular/core';\r\nimport { TooltipComponent as MatTooltipComponent } from '@angular/material/tooltip';\r\nimport { getTextWidth } from '@bravura/ui/common';\r\n\r\n/**\r\n * @ignore\r\n */\r\ninterface TooltipTemplateContainer {\r\n\ttemplate?: TemplateRef<any>;\r\n\tmessage?: string;\r\n}\r\n\r\n/**\r\n * @ignore\r\n */\r\nexport const BUI_TOOLTIP_TEMPLATE_REF = new InjectionToken<TooltipTemplateContainer>(\r\n\t'@bravura/ui/tooltip/templateContainer'\r\n);\r\n\r\n@Component({\r\n\tselector: 'bui-tooltip-component',\r\n\ttemplateUrl: './tooltip.component.html',\r\n\tstyleUrls: ['./tooltip.component.scss'],\r\n\tencapsulation: ViewEncapsulation.None,\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n\thost: {\r\n\t\tclass: 'bui-tooltip-component bui-host',\r\n\t\t// Forces the element to have a layout in IE and Edge. This fixes issues where the element\r\n\t\t// won't be rendered if the animations are disabled or there is no web animations polyfill.\r\n\t\t'[style.zoom]': 'isVisible() ? 1 : null',\r\n\t\t'(mouseleave)': '_handleMouseLeave($event)',\r\n\t\t'aria-hidden': 'true'\r\n\t},\r\n\timports: [A11yModule, CommonModule, OverlayModule]\r\n})\r\nexport class TooltipComponent extends MatTooltipComponent {\r\n\tprivate _messageCopy = '';\r\n\r\n\t@ViewChild('tooltip', { static: true })\r\n\t_tooltip!: ElementRef<HTMLElement>;\r\n\r\n\t@ViewChild('tooltipDiv', { static: true })\r\n\tprivate tooltipDiv!: ElementRef<HTMLDivElement>;\r\n\r\n\t@ViewChild('messageCont', { static: true, read: ViewContainerRef })\r\n\tprivate messageCont!: ViewContainerRef;\r\n\r\n\tprivate _tooltipInst = inject(BUI_TOOLTIP_TEMPLATE_REF);\r\n\r\n\tshow(delay: number): void {\r\n\t\tif (this._messageCopy !== this.message && !this._tooltipInst.template) {\r\n\t\t\tthis.tooltipDiv.nativeElement.innerHTML = this.message;\r\n\t\t\tthis._messageCopy = this.message;\r\n\t\t\tconst width = Math.max(Math.sqrt(getTextWidth(this.message) * 40), 360);\r\n\t\t\tthis._tooltip.nativeElement.style.maxWidth = `${width}px`;\r\n\t\t} else if (this._tooltipInst.template) {\r\n\t\t\tthis.messageCont.clear();\r\n\t\t\tconst ref = this.messageCont.createEmbeddedView(this._tooltipInst.template);\r\n\t\t\tref.detectChanges();\r\n\t\t\tthis._tooltipInst.message = this.message = this.tooltipDiv.nativeElement.textContent as string;\r\n\t\t}\r\n\t\tsuper.show(delay);\r\n\t}\r\n}\r\n\r\n(TooltipComponent as any).ɵcmp.styles.push(...(MatTooltipComponent as any).ɵcmp.styles);\r\n","<div\r\n\t#tooltip\r\n\tclass=\"mdc-tooltip mdc-tooltip--shown mat-mdc-tooltip bui-tooltip\"\r\n\t[ngClass]=\"tooltipClass\"\r\n\t(animationend)=\"_handleAnimationEnd($event)\"\r\n\t[class.mdc-tooltip--multiline]=\"_isMultiline\"\r\n>\r\n\t<div #tooltipDiv>\r\n\t\t<ng-container #messageCont></ng-container>\r\n\t</div>\r\n</div>\r\n","import { Directive, ElementRef, HostListener, Input, TemplateRef, forwardRef } from '@angular/core';\nimport { MatTooltip, TooltipPosition } from '@angular/material/tooltip';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { BUI_TOOLTIP_TEMPLATE_REF, TooltipComponent } from './tooltip.component';\n\n/**\n * This directive extends [Angular Material tooltip](https://material.angular.io/components/tooltip/overview), with the additional capability of displaying\n * HTML content in the overlay area.\n *\n * All the other features are identical as those in Angular Material tooltip.\n */\n@Directive({\n\tselector: '[buiTooltip]',\n\texportAs: 'buiTooltip',\n\thost: {\n\t\tclass: 'mat-tooltip-trigger bui-tooltip-trigger'\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: BUI_TOOLTIP_TEMPLATE_REF,\n\t\t\tuseExisting: forwardRef(() => TooltipDirective)\n\t\t}\n\t]\n})\nexport class TooltipDirective extends MatTooltip {\n\tprivate _templateRef?: TemplateRef<any>;\n\tprivate _contentSub: Subscription = new Subject<void>().subscribe();\n\tprivate _contentObs?: Observable<string>;\n\n\tconstructor(elementRef: ElementRef<HTMLElement>) {\n\t\tsuper();\n\t\tconst _self = this as any;\n\t\t_self._tooltipComponent = TooltipComponent;\n\t\tthis.touchGestures = 'off';\n\t\tconst element = elementRef.nativeElement;\n\t\telement.setAttribute('aria-hidden', 'false');\n\t\tif (element.tabIndex === -1) {\n\t\t\telement.tabIndex = 0;\n\t\t\telement.setAttribute('aria-roledescription', 'tooltip');\n\t\t}\n\t}\n\n\t/** Allows the user to define the position of the tooltip relative to the parent element */\n\t@Input()\n\tget buiTooltipPosition(): TooltipPosition {\n\t\treturn this.position;\n\t}\n\tset buiTooltipPosition(value: TooltipPosition) {\n\t\tthis.position = value;\n\t}\n\n\t/** Disables the display of the tooltip. */\n\t@Input()\n\tget buiTooltipDisabled(): boolean {\n\t\treturn this.disabled;\n\t}\n\tset buiTooltipDisabled(value) {\n\t\tthis.disabled = value;\n\t}\n\n\t/** The message to be displayed in the tooltip. */\n\t@Input()\n\tget buiTooltip(): string | TemplateRef<any> | Observable<string> {\n\t\treturn this._templateRef || this.message;\n\t}\n\tset buiTooltip(value) {\n\t\tthis._contentSub.unsubscribe();\n\t\tthis._contentObs = undefined;\n\t\tif (typeof value === 'string') {\n\t\t\tthis.message = value;\n\t\t} else if (value instanceof TemplateRef) {\n\t\t\tthis._templateRef = value;\n\t\t\tif (value) {\n\t\t\t\tthis.message = '[bui-tooltip-template]';\n\t\t\t} else {\n\t\t\t\tthis._templateRef = undefined;\n\t\t\t\tthis.message = '';\n\t\t\t}\n\t\t} else if (value instanceof Observable) {\n\t\t\tthis.message = '...';\n\t\t\tthis._contentObs = value;\n\t\t}\n\t}\n\n\t/** @ignore */\n\tget template(): TemplateRef<any> | undefined {\n\t\treturn this._templateRef;\n\t}\n\n\t/** Classes to be passed to the tooltip. Supports the same syntax as `ngClass`. */\n\t@Input()\n\tget buiTooltipClass() {\n\t\treturn this.tooltipClass;\n\t}\n\tset buiTooltipClass(value: string | string[] | Set<string> | { [key: string]: any }) {\n\t\tthis.tooltipClass = value;\n\t}\n\n\t/** @ignore */\n\t@HostListener('click')\n\tclicked() {\n\t\tthis.toggle();\n\t}\n\n\t/** Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input */\n\tshow(\n\t\tdelay: number = this.showDelay,\n\t\torigin?:\n\t\t\t| {\n\t\t\t\t\tx: number;\n\t\t\t\t\ty: number;\n\t\t\t }\n\t\t\t| undefined\n\t): void {\n\t\tif (this._contentObs) {\n\t\t\tthis._contentSub.unsubscribe();\n\t\t\tthis._contentSub = this._contentObs.subscribe(c => {\n\t\t\t\tthis.message = c;\n\t\t\t\tthis._contentSub.unsubscribe();\n\t\t\t\tsuper.show(delay, origin);\n\t\t\t});\n\t\t} else {\n\t\t\tsuper.show(delay, origin);\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tthis._contentSub.unsubscribe();\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["MatTooltipComponent"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, TemplateRef } from '@angular/core';
|
|
2
|
+
import { InjectionToken, TemplateRef, ElementRef } from '@angular/core';
|
|
3
3
|
import { MatTooltip, TooltipPosition } from '@angular/material/tooltip';
|
|
4
4
|
import { Observable } from 'rxjs';
|
|
5
5
|
|
|
@@ -25,6 +25,7 @@ declare class TooltipDirective extends MatTooltip {
|
|
|
25
25
|
private _templateRef?;
|
|
26
26
|
private _contentSub;
|
|
27
27
|
private _contentObs?;
|
|
28
|
+
constructor(elementRef: ElementRef<HTMLElement>);
|
|
28
29
|
/** Allows the user to define the position of the tooltip relative to the parent element */
|
|
29
30
|
get buiTooltipPosition(): TooltipPosition;
|
|
30
31
|
set buiTooltipPosition(value: TooltipPosition);
|